同步與掃描資料庫
Metabase 執行不同類型的查詢,以保持資料庫的最新狀態。
- 同步會更新結構描述,以便在資料瀏覽器中顯示。
- 掃描會取樣欄位值,以填入篩選下拉式選單,並建議有用的視覺化。Metabase 不會儲存資料庫中的完整表格。
- 指紋辨識會額外取樣欄位值,以協助智慧行為,例如長條圖的自動分箱。
初始同步、掃描和指紋辨識
當 Metabase 首次連線到您的資料庫時,Metabase 會執行同步,以判斷表格中欄位的元數據,並自動為每個欄位指派語意類型。同步成功後,Metabase 會執行每個表格的掃描,以尋找 URL、JSON、編碼字串等。指紋辨識查詢會在同步完成後執行。
您可以從管理員 > 疑難排解 > 記錄追蹤這些查詢的進度。
查詢執行完成後,您可以從管理設定 > 表格元數據檢視和編輯同步的元數據。如需更多資訊,請參閱編輯元數據。
選擇 Metabase 同步和掃描的時間
- 前往管理員 > 資料庫 > 您的資料庫。
- 展開顯示進階選項。
- 開啟選擇同步和掃描發生的時間。
排程資料庫同步
如果您已開啟選擇同步和掃描發生的時間,您將可以設定
- 同步的頻率:每小時(預設)或每天。
- 執行同步的時間,以 Metabase 應用程式執行所在的伺服器時區為準。
排程資料庫掃描
如果您已開啟選擇同步和掃描發生的時間,您將看到以下掃描選項
- 定期排程可讓您以符合資料庫變更頻率的頻率執行掃描查詢。時間設定為 Metabase 應用程式執行所在的伺服器時區。對於小型資料庫或具有經常更新的不同值的表格,這是最佳選項。
- 如果您想要隨需執行掃描查詢,僅在新增篩選器小工具時是絕佳選項。開啟此選項開啟表示當新的篩選器新增至儀表板或 SQL 問題時,Metabase 只會掃描和快取使用的欄位值。
- 永不,如果需要,我會手動執行適用於過於龐大或永遠不會新增值的資料庫。使用立即重新掃描欄位值按鈕執行手動掃描,並更新您的篩選器值。
手動同步表格和欄位
- 前往管理設定 > 資料庫 > 您的資料庫。
- 按一下立即同步資料庫結構描述。
手動掃描欄位值
若要掃描表格中所有欄位的值
- 前往管理設定 > 表格元數據 > 您的資料庫。
- 選取您想要更新為最新資料庫狀態的表格。
- 按一下頁面頂端的齒輪圖示。
- 按一下重新掃描此表格。
若要掃描特定欄位的值
- 前往管理設定 > 表格元數據 > 您的資料庫。
- 選取表格。
- 尋找您想要更新為最新資料庫狀態的欄位。
- 按一下該欄位面板中的齒輪圖示。
- 按一下重新掃描此欄位。
清除表格或欄位的快取值
若要清除表格的掃描欄位值
- 前往管理設定 > 表格元數據。
- 選取資料庫和表格。
- 按一下右上角的齒輪圖示。
- 按一下捨棄快取的欄位值。
您也可以指示 Metabase 忘記個別欄位的快取值,方法是按一下欄位上的齒輪圖示,然後按一下捨棄快取的欄位值。
停用特定表格的同步和掃描
若要防止 Metabase 對特定表格執行同步和掃描,請將表格可見性變更為隱藏
- 前往管理設定 > 表格元數據 > 您的資料庫。
- 將滑鼠游標停留在側邊欄中的表格名稱上方。
- 按一下眼睛圖示。
使用 API 同步和掃描
Metabase 會定期同步和掃描,但如果資料庫管理員剛變更資料庫結構描述,或者如果大量資料在特定時間自動新增,您可能會想要編寫指令碼,使用Metabase API 強制同步或掃描。我們的 API 提供兩種方法來啟動資料庫的同步或掃描
- 使用工作階段權杖:
/api/database/:id/sync_schema
或api/database/:id/rescan_values
端點。這些端點的作用與前往管理面板中的資料庫,然後選擇立即同步資料庫結構描述或立即重新掃描欄位值相同。若要使用這些端點,您必須使用使用者 ID 進行身份驗證,並在要求標頭中傳遞工作階段權杖。 - 使用 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 中提出建議時使用更大的欄位值範例,請開啟此設定
- 前往管理員 > 資料庫 > 您的資料庫。
- 展開顯示進階選項。
- 開啟定期重新指紋辨識表格。
資料庫指紋辨識的運作方式
指紋辨識查詢會查看資料庫中指定表格或檢視的前 10,000 列
SELECT
*
FROM
"your_schema"."your_table_or_view"
LIMIT 10000
此查詢的結果用於在 Metabase UI 中提供更好的建議(例如篩選下拉式選單和自動分箱)。為了避免對資料庫造成負擔,Metabase 只會在您第一次設定資料庫連線時執行指紋辨識查詢。若要變更此預設值,您可以開啟定期重新指紋辨識表格。
延伸閱讀
Metabase 在同步和掃描過程中不會執行任何快取或速率限制。如果您的資料似乎遺失或過時,請查看
閱讀其他Metabase 版本的文件。