最近Databricksで、以下のシステムテーブルが追加されました。
- 監査ログ(Audit logs)
- 使用量ログ(Billable usage logs)
- リネージ(Table and column lineage)
いずれも別個の機能でデータを取得することは可能でしたが、今回これら全てがUnity Catalogに統合された形になります。
本書では監査ログと使用量ログを有効化してみます。
システムテーブルの有効化
デフォルトではinformation_schema
しか有効化されていません。有効化するには、ローカルマシンからアカウントオーナーとしてREST APIを呼び出す必要があります。jqをインストールしておくと結果が確認しやすいです。
有効化状況の確認
まず、Unity CatalogメタストアのIDを確認します。APIを使う場合はこちら。
curl -v -X GET -u <アカウントオーナーのメールアドレス>:<パスワード> "https://<ワークスペースのホスト名>/api/2.1/unity-catalog/metastores" | jq
以下のmetastore_id
がメタストアIDです。
{
"metastores": [
{
"name": "taka-uc-metastore",
"storage_root": "<メタストアルートバケット>",
"default_data_access_config_id": "<資格情報ID>",
"storage_root_credential_id": "<資格情報ID>",
"delta_sharing_scope": "INTERNAL",
"owner": "メタストア管理者",
"privilege_model_version": "1.0",
"region": "ap-northeast-1",
"metastore_id": "<メタストアID>",
"metastore_account_id": "<DatabricksアカウントID>",
"created_at": 1672031902957,
"created_by": "<作成者>",
"updated_at": 1689054900612,
"updated_by": "<更新者>",
"storage_root_credential_name": "<資格情報名>",
"cloud": "aws",
"global_metastore_id": "<グローバルメタストアID>",
"full_name": "taka-uc-metastore",
"securable_type": "METASTORE",
"securable_kind": "METASTORE_STANDARD"
}
]
}
なお、アカウントコンソールのメタストア詳細画面でも確認できます。バケット名以降のIDです。
システムテーブルの有効化状態を確認します。
curl -v -X GET -u <アカウントオーナーのメールアドレス>:<パスワード> "https://<ワークスペースのホスト名>/api/2.0/unity-catalog/metastores/<メタストアID>/systemschemas" | jq
{
"schemas": [
{
"schema": "operational_data",
"state": "AVAILABLE"
},
{
"schema": "access",
"state": "AVAILABLE"
},
{
"schema": "billing",
"state": "AVAILABLE"
},
{
"schema": "information_schema",
"state": "ENABLE_COMPLETED"
}
]
}
information_schema
以外はAVAILABLE
で有効化できることがわかります。
監査ログテーブルの有効化
access
を指定して有効化します。
curl -v -X PUT -u <アカウントオーナーのメールアドレス>:<パスワード> "https://<ワークスペースのホスト名>/api/2.0/unity-catalog/metastores/4c55425f-e291-45f8-a4e7-29a103c19e29/systemschemas/access" | jq
operational_data
はプレビュー中のスキーマですので、access
を有効化してください。
問題なければ空のJSONが返ってきます。
{}
データエクスプローラにアクセスします。system.access.audit
が表示されています。
使用量ログテーブルの有効化
billing
を指定して有効化します。
curl -v -X PUT -u <アカウントオーナーのメールアドレス>:<パスワード> "https://<ワークスペースのホスト名>/api/2.0/unity-catalog/metastores/4c55425f-e291-45f8-a4e7-29a103c19e29/systemschemas/billing" | jq
問題なければ空のJSONが返ってきます。
{}
データエクスプローラにアクセスします。system.billing.usage
が表示されています。
再度有効化状態を確認してみます。
{
"schemas": [
{
"schema": "operational_data",
"state": "AVAILABLE"
},
{
"schema": "access",
"state": "ENABLE_COMPLETED"
},
{
"schema": "billing",
"state": "ENABLE_COMPLETED"
},
{
"schema": "information_schema",
"state": "ENABLE_COMPLETED"
}
]
}
すぐにはデータは反映されない(1日程度のラグがあるとのこと)ので、データが蓄積されたらこれらを分析してみます。