同步與掃描資料庫

Metabase 執行不同類型的查詢,以保持資料庫的最新狀態。

  • 同步會更新結構描述,以便在資料瀏覽器中顯示。
  • 掃描會取樣欄位值,以填入篩選下拉式選單,並建議有用的視覺化。Metabase 不會儲存資料庫中的完整表格。
  • 指紋辨識會額外取樣欄位值,以協助智慧行為,例如長條圖的自動分箱。

初始同步、掃描和指紋辨識

當 Metabase 首次連線到您的資料庫時,Metabase 會執行同步,以判斷表格中欄位的元數據,並自動為每個欄位指派語意類型。同步成功後,Metabase 會執行每個表格的掃描,以尋找 URL、JSON、編碼字串等。指紋辨識查詢會在同步完成後執行。

您可以從管理員 > 疑難排解 > 記錄追蹤這些查詢的進度。

查詢執行完成後,您可以從管理設定 > 表格元數據檢視和編輯同步的元數據。如需更多資訊,請參閱編輯元數據

選擇 Metabase 同步和掃描的時間

如果您想要變更同步掃描查詢的預設排程

  1. 前往管理員 > 資料庫 > 您的資料庫。
  2. 展開顯示進階選項
  3. 開啟選擇同步和掃描發生的時間

排程資料庫同步

如果您已開啟選擇同步和掃描發生的時間,您將可以設定

  • 同步的頻率:每小時(預設)或每天。
  • 執行同步的時間,以 Metabase 應用程式執行所在的伺服器時區為準。

排程資料庫掃描

如果您已開啟選擇同步和掃描發生的時間,您將看到以下掃描選項

  • 定期排程可讓您以符合資料庫變更頻率的頻率執行掃描查詢。時間設定為 Metabase 應用程式執行所在的伺服器時區。對於小型資料庫或具有經常更新的不同值的表格,這是最佳選項。
  • 如果您想要隨需執行掃描查詢,僅在新增篩選器小工具時是絕佳選項。開啟此選項開啟表示當新的篩選器新增至儀表板或 SQL 問題時,Metabase 只會掃描和快取使用的欄位值。
  • 永不,如果需要,我會手動執行適用於過於龐大或永遠不會新增值的資料庫。使用立即重新掃描欄位值按鈕執行手動掃描,並更新您的篩選器值。

手動同步表格和欄位

  1. 前往管理設定 > 資料庫 > 您的資料庫。
  2. 按一下立即同步資料庫結構描述

手動掃描欄位值

若要掃描表格中所有欄位的值

  1. 前往管理設定 > 表格元數據 > 您的資料庫。
  2. 選取您想要更新為最新資料庫狀態的表格。
  3. 按一下頁面頂端的齒輪圖示
  4. 按一下重新掃描此表格

若要掃描特定欄位的值

  1. 前往管理設定 > 表格元數據 > 您的資料庫。
  2. 選取表格。
  3. 尋找您想要更新為最新資料庫狀態的欄位。
  4. 按一下該欄位面板中的齒輪圖示
  5. 按一下重新掃描此欄位

清除表格或欄位的快取值

若要清除表格的掃描欄位值

  1. 前往管理設定 > 表格元數據
  2. 選取資料庫和表格。
  3. 按一下右上角的齒輪圖示
  4. 按一下捨棄快取的欄位值

您也可以指示 Metabase 忘記個別欄位的快取值,方法是按一下欄位上的齒輪圖示,然後按一下捨棄快取的欄位值

停用特定表格的同步和掃描

若要防止 Metabase 對特定表格執行同步和掃描,請將表格可見性變更為隱藏

  1. 前往管理設定 > 表格元數據 > 您的資料庫。
  2. 將滑鼠游標停留在側邊欄中的表格名稱上方。
  3. 按一下眼睛圖示。

隱藏表格也會防止它顯示在查詢產生器資料參考中。人員仍然可以從SQL 編輯器查詢隱藏的表格。

使用 API 同步和掃描

Metabase 會定期同步和掃描,但如果資料庫管理員剛變更資料庫結構描述,或者如果大量資料在特定時間自動新增,您可能會想要編寫指令碼,使用Metabase API 強制同步或掃描。我們的 API 提供兩種方法來啟動資料庫的同步或掃描

  1. 使用工作階段權杖:/api/database/:id/sync_schemaapi/database/:id/rescan_values 端點。這些端點的作用與前往管理面板中的資料庫,然後選擇立即同步資料庫結構描述立即重新掃描欄位值相同。若要使用這些端點,您必須使用使用者 ID 進行身份驗證,並在要求標頭中傳遞工作階段權杖。
  2. 使用 API 金鑰:/api/notify/db/:id。我們建立此端點,以便人員可以在 ETL 作業完成後通知其 Metabase 進行同步。若要使用此端點,您必須透過定義 MB_API_KEY 環境變數來傳遞 API 金鑰。

資料庫同步的運作方式

Metabase 同步是一個查詢,可從資料庫取得更新的表格和檢視名稱、欄位名稱和欄位資料類型清單

SELECT
    TRUE
FROM
    "your_schema"."your_table_or_view"
WHERE
    1 <> 1
LIMIT 0

此查詢會在設定期間針對您的資料庫執行,預設情況下每小時再次執行。此掃描查詢在大多數關聯式資料庫中速度很快,但在 MongoDB 和某些社群建置的資料庫驅動程式中可能會較慢。同步無法完全關閉,否則 Metabase 將無法運作。

資料庫掃描的運作方式

Metabase 掃描是一個查詢,會透過查看每個表格的前 1,000 筆不同記錄(依遞增順序排列)來快取篩選下拉式選單的欄位

SELECT
    "your_table_or_view"."column" AS "column"
FROM
    "your_schema"."your_table_or_view"
GROUP BY
    "your_table_or_view"."column"
ORDER BY
    "your_table_or_view"."column" ASC
LIMIT 1000

對於每筆記錄,Metabase 只會儲存前 100 KB 的文字,因此如果您擁有的資料每個都有 1,000 個字元(例如地址),而且您的欄位有超過 100 個唯一地址,則 Metabase 只會快取掃描查詢中的前 100 個值。

快取的欄位值會顯示在篩選下拉式選單中。如果人員在篩選搜尋方塊中輸入不在前 1,000 筆不同記錄或 100KB 文字中的值,Metabase 將會針對您的資料庫執行查詢,以即時尋找這些值。

掃描比同步查詢更密集,因此它只會在設定期間執行一次,預設情況下每天再次執行一次。如果您停用掃描,您需要執行手動掃描以更新內容。

為了減少 Metabase 保持連線資料庫最新狀態所需的掃描表格和欄位數量,Metabase 只會掃描在過去十四天內有人查詢過的欄位值。

定期重新指紋辨識表格

定期重新指紋辨識將會增加資料庫的負載。

依預設,Metabase 只會在您首次連線資料庫時執行指紋辨識查詢。

如果您希望 Metabase 在 UI 中提出建議時使用更大的欄位值範例,請開啟此設定

  1. 前往管理員 > 資料庫 > 您的資料庫。
  2. 展開顯示進階選項
  3. 開啟定期重新指紋辨識表格

資料庫指紋辨識的運作方式

指紋辨識查詢會查看資料庫中指定表格或檢視的前 10,000 列

SELECT
    *
FROM
    "your_schema"."your_table_or_view"
LIMIT 10000

此查詢的結果用於在 Metabase UI 中提供更好的建議(例如篩選下拉式選單和自動分箱)。為了避免對資料庫造成負擔,Metabase 只會在您第一次設定資料庫連線時執行指紋辨識查詢。若要變更此預設值,您可以開啟定期重新指紋辨識表格

延伸閱讀

Metabase 在同步和掃描過程中不會執行任何快取或速率限制。如果您的資料似乎遺失或過時,請查看

閱讀其他Metabase 版本的文件。