2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Databricks Unity Catalog のカタログ情報を収集するには? (Information Schemaって何?)

Last updated at Posted at 2022-10-30

はじめに

DatabricksのUnity CatalogにはInformation Schemaというシステム情報を格納しているテーブルが作成されます。これを利用する事でUnity Catalogのテーブル情報や権限情報などのカタログ情報が取得できるとのこと。

Information Schema について
https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-information-schema.html

Unity Catalogを利用すると、以下のような構造のテーブルがinformation_schemaというスキーマ下に作成されます。
これをチェックすれば好きな情報が取得できるのです。
image.png

Information Schemaを使って情報をチェックしてみる

それでは早速に上記のInformation Schemaを見てどんな事ができるかチェックしてみましょう。

その前にUnity Catalogを利用すると自動的に4つのカタログが表示されます。(hive_metastore, main, samples, system)
この中のsystemというカタログにはメタストアに格納される全カタログの情報が収集されるため、全体をチェックしたい場合はこちらのsystemカタログにあるInformation Schemaを見るといいでしょう。

また、hive_metastoreカタログの情報はUnity Catalogではないため、このInformation Schemaには含まれない点をご注意ください。こちらは従来のHiveカタログにアクセスするためのものになります。

1. 全てのカタログ、スキーマ(データベース)とテーブル一覧の収集

SELECT
  table_catalog,
  table_schema,
  table_name,
  table_owner,
  comment,
  table_type,
  data_source_format
FROM
  system.information_schema.tables
WHERE
  table_schema != 'information_schema'

image.png

2. テーブルの権限確認

SELECT
  *
FROM
  system.information_schema.table_privileges
WHERE
  table_schema != 'information_schema'

Databricks SQLでは下記のようにフィルターも作成出来るため特定のカタログやスキーマに絞るのも簡単にできます。
image.png

3.最近1時間以内に作成されたテーブル情報

SELECT
  table_name,
  table_owner,
  created_by,
  last_altered,
  last_altered_by,
  table_catalog
FROM
  system.information_schema.tables
WHERE
  datediff(now(), last_altered) < 1;

image.png

4. カラム数の多いテーブルを多い順にリストする

SELECT
  table_schema,
  table_name,
  count(column_name)
FROM
  system.information_schema.columns
WHERE
  table_schema != 'information_schema'
GROUP BY
  table_schema,
  table_name
ORDER BY
  3 DESC

image.png

最後に

Information_schemaのテーブル情報はまだまだあるのでいろんな分析が出来そうです。

また、これらをすぐにチェック出来るようにダッシュボードを作成しておいたり、特定条件のテーブルなどを見つけたらアラートをあげるなどしておけば運用にも役にたちそうですね。

UnityCatalogセットアップについてはこちらもご覧ください。
https://qiita.com/maroon-db/items/57cee03cef202c839b94

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?