使用系統數據表監視帳戶活動
本文說明 Azure Databricks 中系統資料表的概念,並強調可用來充分利用系統資料表資料的資源。
什麼是系統資料表?
系統資料表是 system
目錄中,帳戶操作資料的 Azure Databricks 託管分析存放區。 系統資料表可用於回顧整個帳戶的歷程記錄。
注意
如需 system.information_schema
的文件,請參閱資訊結構描述。
需求
若要存取系統資料表,必須為 Unity Catalog 啟用工作區。 如需詳細資訊,請參閱啟用系統資料表結構描述。
下列區域無法使用系統資料表:
- Azure 中國區域
- Azure Government 區域
- 印度西部
- 瑞士西部
有哪些系統資料表可供使用?
目前,Azure Databricks 託管的系統資料表如下:
資料表 | Description | Location | 支援串流 | 免費保留期間 | 包含全域或區域資料 |
---|---|---|---|---|---|
稽核記錄 (公開預覽) | 包含您區域中工作區所有稽核事件的記錄。 如需可用稽核事件的清單,請參閱診斷記錄參考。 | system.access.audit |
Yes | 365 天 | 工作區層級的區域性事件。 帳戶層級的全域事件。 |
資料表譜系 (公開預覽) | 在 Unity Catalog 資料表或路徑包含每個讀取或寫入事件的記錄。 | system.access.table_lineage |
Yes | 365 天 | Regional |
資料行譜系 (公開預覽) | 在 Unity Catalog 資料行包含每個讀取或寫入事件的記錄 (但不包含沒有來源的事件)。 | system.access.column_lineage |
Yes | 365 天 | Regional |
計費使用量 | 包含帳戶中所有可計費使用量的記錄。 | system.billing.usage |
Yes | 365 天 | 全球 |
定價 | SKU 價格的歷程記錄。 凡是 SKU 價格變更,就會新增記錄。 | system.billing.list_prices |
No | 不限定 | 全球 |
叢集 (公開預覽) | 變化緩慢的維度資料表,內容包含任何叢集一段時間運算組態的完整歷程記錄。 | system.compute.clusters |
Yes | N/A | Regional |
節點時間軸 (公開預覽) | 擷取通用和工作運算資源的使用率計量。 | system.compute.node_timeline |
Yes | 30 天 | Regional |
節點類型 (公開預覽) | 使用基本硬體資訊擷取目前可用的節點類型。 | system.compute.node_types |
No | N/A | Regional |
SQL 倉儲 (公開預覽) | 包含任何 SQL 倉儲一段時間的組態完整歷程記錄。 | system.compute.warehouses |
Yes | 365 天 | Regional |
SQL 倉儲事件 (公開預覽) | 擷取與 SQL 倉儲相關的事件。 例如,啟動、停止、執行、擴大和縮小。 | system.compute.warehouse_events |
Yes | 365 天 | Regional |
工作工作 (公開預覽) | 追蹤在帳戶中建立的所有工作。 | system.lakeflow.jobs |
Yes | 365 天 | Regional |
工作任務 (公開預覽) | 追蹤在帳戶中執行的所有工作任務。 | system.lakeflow.job_tasks |
Yes | 365 天 | Regional |
工作執行時間軸 (公開預覽) | 追蹤工作執行的開始和結束時間。 | system.lakeflow. job_run_timeline |
Yes | 365 天 | Regional |
工作任務時間軸 (公開預覽) | 追蹤用於工作任務執行的開始和結束時間和運算資源。 | system.lakeflow. job_task_run_timeline |
Yes | 365 天 | Regional |
Marketplace 漏斗圖事件 (公開預覽) | 包含清單的家庭用戶印象和漏斗圖資料。 | system.marketplace.listing_ funnel_events |
Yes | 365 天 | Regional |
Marketplace 清單存取權 (公開預覽) | 包含已完成之要求資料的家庭用戶資訊,或清單上的取得資料事件。 | system.marketplace.listing_ access_events |
Yes | 365 天 | Regional |
預測性最佳化 (公開預覽) | 追蹤預測性最佳化功能的操作歷程記錄。 | system.storage.predictive_ optimization_operations_history |
No | 180 天 | Regional |
Databricks Assistant 活動 (公開預覽) | 追蹤傳送至 Databricks Assistant 的使用者訊息。 | system.access.assistant_events |
No | 365 天 | Regional |
查詢歷史記錄 (公開預覽) | 擷取 SQL 倉儲執行之所有查詢的記錄。 | system.query.history |
No | 90 天 | Regional |
無塵室活動 (公開預覽) | 擷取與無塵室相關的事件。 | system.access.clean_room_events |
Yes | 365 天 | Regional |
模型服務端點的使用量 (公開預覽) | 擷取模型服務端點每項要求及其回覆的權杖計數。 若要擷取此資料表中的端點使用量,您必須 在服務端點上啟用使用量追蹤。 |
system.serving.endpoint_usage . |
Yes | 90 天 | Regional |
模型服務端點資料 (公開預覽) | 變化緩慢的維度資料表,將每個服務外部模型中繼資料儲存於模型服務端點。 | system.serving.served_entities |
Yes | 365 天 | Regional |
網路存取事件 (公開預覽) | 每當您的帳戶被拒絕存取因特網時,這張表格會記錄下該事件。 | system.access.outbound_network |
Yes | 365 天 | Regional |
計費使用量資料表和價格資料表是免費的。 公開預覽的資料表在預覽期間也可免費使用,但未來可能產生費用。
注意
除了上面所列的系統資料表,您還可能在帳戶看到其他系統資料表。 這些數據表目前為私人預覽版,預設為空白。 如果您有興趣使用上述任何資料表,請連絡 Databricks 帳戶團隊。
啟用系統資料表結構描述
由於系統資料表受 Unity Catalog 控管,因此這個帳戶中至少需要一個啟用 Unity Catalog 的工作區,才能啟用及存取系統資料表。 系統資料表包含您帳戶中所有工作區的資料,但只能從啟用 Unity Catalog 的工作區存取這些資料。
系統資料表已在結構描述層級啟用。 如果您啟用系統結構描述,同時也啟用了該結構描述內的所有資料表。 釋出新的結構描述時,帳戶管理員必須手動啟用結構描述。
系統數據表必須由帳戶管理員啟用。您可以在 system-schemas
中使用 命令,或使用 SystemSchemas API來啟用系統數據表。
注意
預設會啟用 billing
結構描述。 其他結構描述必須手動啟用。
列出可用的系統結構描述
使用下列 curl 命令以列出可用的系統結構描述:
curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas"
下列是 GET
命令的輸出範例:
{"schemas":[{"schema":"access","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"billing","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"information_schema","state":"<AVAILABLE OR EnableCompleted>"}]}
state: AVAILABLE
:系統結構描述可供使用,但尚未啟用。
state: EnableCompleted
:您已啟用系統結構描述,而且會顯示於目錄總管。
啟用系統結構描述
使用下列 curl 命令以啟用系統結構描述:
curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
如果成功啟用系統結構描述,則會傳回結果碼 200
。
如果您嘗試重新啟用系統結構描述,則會傳回下列項目:"error_code":"SCHEMA_ALREADY_EXISTS","message":"Schema <schema-name> already exists"
。
停用系統結構描述
使用下列 curl 命令停用系統結構描述:
curl -v -X DELETE -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
授與系統資料表的存取權
系統資料表的存取權由 Unity Catalog 控管。 根據預設,使用者無法存取這些系統結構描述。 若要授與存取權,身兼中繼存放區管理員和帳戶管理員的使用者必須授與系統結構描述的 USE
與 SELECT
權限。 請參閱管理 Unity Catalog 中的權限。
系統資料表是唯讀,無法修改。
注意
如果帳戶是在 2023 年 11 月 9 日之後建立,您預設可能沒有中繼存放區管理員。 如需更多資訊,請參閱設定和管理 Unity Catalog。
系統資料表是否包含您帳戶中所有工作區的資料?
系統資料表包含您帳戶中部署在相同雲端區域之所有工作區的操作資料。 計費系統資料表包含全帳戶資料。
即使系統資料表只能透過 Unity Catalog 工作區存取,但資料表也會包含您帳戶中非 Unity Catalog 工作區的操作資料。
系統資料表資料儲存在哪裡?
您的帳戶系統資料表資料會儲存在與中繼存放區位於相同區域的 Azure Databricks 託管的儲存體帳戶中。 使用 Delta Sharing 安全地與您共用資料。
每個資料表都有免費的資料保留期間。 如需有關延長保留期間的資訊,請連絡您的 Azure Databricks 帳戶團隊。
系統資料表位於目錄總管中的什麼地方?
帳戶中的系統資料表位於名為 system
的目錄,每個 Unity Catalog 中繼存放區都包含該目錄。 您會在 system
目錄看到結構描述,例如 access
和 billing
,其中包含系統資料表。
串流系統資料表的考量事項
Azure Databricks 使用 Delta Sharing 與客戶共用系統資料表資料。 使用 Delta Sharing 串流時,請注意下列考量事項:
- 如果您使用系統資料表進行串流,請將
skipChangeCommits
選項設定為true
。 這可確保串流工作不會因為系統資料表中的刪除而中斷。 請參閱忽略更新和刪除。 - Delta Sharing 串流不支援
Trigger.AvailableNow
。 它會轉換成Trigger.Once
。
如果您在串流工作使用觸發程序,卻發現它無法趕上最新的系統資料表版本,Databricks 建議增加工作的排程頻率。
從串流系統資料表讀取累加變更
spark.readStream.option("skipChangeCommits", "true").table("system.billing.usage")
已知問題
目前不支援即時監視。 資料會全天更新。 如果您沒有看到最近的事件記錄,請稍後再返回檢查。
若要啟用系統資料表,您可能需要將網路存取授與系統資料表 Blob 儲存體端點。 若要檢視每個區域的系統資料表儲存體端點清單,請參閱儲存體端點 IP 位址。
系統結構描述
system.operational_data
和system.lineage
已被取代,將包含空的資料表。__internal_logging
系統資料表結構描述用於支援使用推斷資料表的酬載記錄。 帳戶管理員看得到這個結構描述,但無法啟用,也不應該用於客戶工作流程。