情報スキーマ
適用対象: Databricks SQL Databricks Runtime 10.4 LTS 以降 Unity Catalog のみ
INFORMATION_SCHEMA
は、Unity Catalog で作成されたすべてのカタログで提供される SQL 標準ベースのスキーマです。
情報スキーマ内には、スキーマのカタログに認識されており、ユーザー自身が参照を許可されているオブジェクトを説明しているビューのセットがあります。
SYSTEM
カタログの情報スキーマは、メタストア内のすべてのカタログのオブジェクトに関する情報を返します。 情報スキーマ システム テーブルには、hive_metastore
オブジェクトに関するメタデータは含まれません。
情報スキーマの目的は、SQL ベースの自己記述型 API をメタデータに提供することです。
情報スキーマのエンティティ リレーションシップ ダイアグラム
次のエンティティ リレーションシップ (ER) ダイアグラムは、情報スキーマ ビューのサブセットの概要と、それらの相互の関連を示しています。
情報スキーマ ビュー
名前 | 説明 |
---|---|
CATALOG_PRIVILEGES | カタログに対する権限を持つプリンシパルを一覧表示します。 |
CATALOG_PROVIDER_SHARE_USAGE | カタログにマウントされたプロバイダー共有について説明します。 |
CATALOG_TAGS | カタログに適用されているタグが含まれます。 |
CATALOGS | カタログについて説明します。 |
CHECK_CONSTRAINTS | 将来利用するために予約されています。 |
COLUMN_MASKS | カタログ内のテーブル列の列マスクについて説明します。 |
COLUMN_TAGS | テーブル内の列タグ付けメタデータが含まれます。 |
COLUMNS | カタログ内のテーブルとビューの列について説明します。 |
CONNECTION_PRIVILEGES | 外部接続に対する権限を持つプリンシパルを一覧表示します。 |
CONNECTIONS | 外部接続について説明します。 |
CONSTRAINT_COLUMN_USAGE | カタログ内の列を参照する制約について説明します。 |
CONSTRAINT_TABLE_USAGE | カタログ内のテーブルを参照する制約について説明します。 |
CREDENTIAL_PRIVILEGES | 資格情報に privileges を持つprincipalsを一覧表示します。 |
資格 情報 | 資格情報について説明します。 |
EXTERNAL_LOCATION_PRIVILEGES | 外部の場所に対する権限を持つプリンシパルを一覧表示します。 |
EXTERNAL_LOCATIONS | 外部の場所について説明します。 |
INFORMATION_SCHEMA_CATALOG_NAME | この情報スキーマのカタログの名前を返します。 |
KEY_COLUMN_USAGE | カタログ内の主キー制約または外部キー制約の列をリストアップします。 |
METASTORE_PRIVILEGES | 現在のメタストアに対する権限を持つプリンシパルを一覧表示します。 |
METASTORES | 現在のメタストアについて説明します。 |
PARAMETERS | カタログ内のルーチン (関数) のパラメーターについて説明します。 |
PROVIDERS | プロバイダーについて説明します。 |
RECIPIENT_ALLOWED_IP_RANGES | 受信者に許可されている IP 範囲を一覧表示します。 |
RECIPIENT_TOKENS | 受信者のトークンを一覧表示します。 |
RECIPIENTS | 受信者について説明します。 |
REFERENTIAL_CONSTRAINTS | カタログ内に定義されている参照 (外部キー) に関する制約について説明します。 |
ROUTINE_COLUMNS | テーブル値関数の結果列について説明します。 |
ROUTINE_PRIVILEGES | カタログ内のルーチンに対する権限を持つプリンシパルを一覧表示します。 |
ROUTINES | カタログ内のルーチン (関数) について説明します。 |
ROW_FILTERS | カタログ内のテーブルに対する行フィルターについて説明します。 |
SCHEMA_PRIVILEGES | カタログ内のスキーマに対する権限を持つプリンシパルを一覧表示します。 |
SCHEMA_TAGS | スキーマ内のスキーマ タグ付けメタデータが含まれます。 |
SCHEMA_SHARE_USAGE | 共有で参照されるテーブルについて説明します。 |
SCHEMATA | カタログ内のスキーマについて説明します。 |
SHARE_RECIPIENT_PRIVILEGES | 共有へのアクセスを許可されている受信者について説明します。 |
SHARES | 共有について説明します。 |
STORAGE_CREDENTIAL_PRIVILEGES | [非推奨]ストレージ資格情報にprivilegesを持つprincipalsを一覧表示します。 |
STORAGE_CREDENTIALS | [非推奨]ストレージ資格情報について説明します。 |
TABLE_CONSTRAINTS | カタログ内のすべての主および外部キー制約のメタデータについて説明します。 |
TABLE_PRIVILEGES | カタログ内のテーブルとビューに対する権限を持つプリンシパルを一覧表示します。 |
TABLE_SHARE_USAGE | 共有で参照されるテーブルについて説明します。 |
TABLE_TAGS | テーブル内のテーブル タグ付けメタデータが含まれます。 |
TABLES | カタログ内で定義されているテーブルとビューについて説明します。 |
VIEWS | カタログ内のビューに関するビュー固有の情報について説明します。 |
VOLUMES | カタログ内の定義済みボリュームを説明します。 |
VOLUME_PRIVILEGES | カタログ内のボリュームに対する権限を持つプリンシパルを一覧表示します。 |
VOLUME_TAGS | ボリュームに適用されるボリューム タグ付けメタデータが含まれます。 |
メモ
識別子は SQL ステートメントで参照されるときには大文字と小文字が区別されませんが、情報スキーマには STRING
として格納されます。
これは、識別子が格納されている大文字と小文字のいずれかに合わせて検索するか、ilike などの関数を使用する必要があることを意味します。
例
> SELECT table_name, column_name
FROM information_schema.columns
WHERE data_type = 'DOUBLE'
AND table_schema = 'information_schema';
システム レベルの情報スキーマ テーブルが使用されているワークフローの例を次に示します。
過去 24 時間以内に作成されたすべてのテーブルを表示する場合、クエリは次のようになります。
> 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;
各スキーマに含まれるテーブルの数を表示する場合は、次の例を検討してください。
> SELECT table_schema, count(table_name)
FROM system.information_schema.tables
WHERE table_schema = 'tpch'
GROUP BY table_schema
ORDER BY 2 DESC