次の方法で共有


情報スキーマ

適用対象:check marked yes Databricks SQL Databricks Runtime 10.4 LTS 以降 「はい」のチェック マーク Unity Catalog のみ

SYSTEM カタログでは、INFORMATION_SCHEMAは、メタストア内のすべてのカタログのオブジェクトに関するメタデータを提供する SQL 標準スキーマです。 hive_metastore オブジェクトに関するメタデータは含まれません。

個別に、Unity カタログで作成された各カタログには、そのカタログ内のオブジェクトに関するメタデータのみを記述する information_schema も自動的に含まれます。

どちらの種類の情報スキーマでも、Unity カタログ権限を持つオブジェクトのみが含まれるように結果が自動的にフィルター処理されます。 この動作は、他の Azure Databricks システム テーブルとは異なります。 情報 スキーマ・システム表が権限を処理する方法を参照してください。

情報スキーマの目的は、カタログ メタデータにアクセスするための SQL ベースの特権対応の自己記述型 API を提供することです。

情報スキーマ システム テーブルがアクセス許可を処理する方法

system.information_schema は、自動フィルター処理を実装するという点で、他のシステム テーブルとは異なります。 つまり、Unity カタログにアクセスする権限を持っているオブジェクト (カタログ、スキーマ、テーブル、列など) のみが表示されます。 権限が変更されると、情報スキーマに表示される内容が適宜変更されます。 たとえば、 information_schema.tablesクエリを実行すると、表示する権限を持つテーブルの行のみが返されます。

他のすべてのシステム テーブルと同様に、情報スキーマにアクセスしてクエリを実行するには、明示的な USESELECT のアクセス許可が必要です。

情報スキーマのエンティティ リレーションシップ ダイアグラム

次のエンティティ リレーションシップ (ER) ダイアグラムは、情報スキーマ ビューのサブセットの概要と、それらの相互の関連を示しています。

情報スキーマの 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を一覧表示します。
CREDENTIALS 資格情報について説明します。
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 ボリュームに適用されるボリューム タグ付けメタデータが含まれます。

メモ

  • 情報スキーマは、特権対応のフィルター処理を実装します。 Unity カタログにアクセスするアクセス許可を持っているオブジェクトのみが自動的に表示されます。 情報 スキーマ・システム表が権限を処理する方法を参照してください。
  • 一部のカタログ メタデータの変更を情報スキーマに反映するには、 REPAIR TABLE を使用した手動同期が必要になる場合があります。 詳細については、REPAIR TABLEを参照してください。
  • 列名とタグ名 を除く すべての識別子は、情報スキーマに小文字の STRINGとして格納されます。 クエリのパフォーマンスを向上させるには、識別子列で LOWER()UPPER() などの関数を使用しないでください。 代わりに、小文字の値を使用して識別子を直接比較します。
  • クエリのタイムアウトを防ぐには、情報スキーマに対してクエリを実行するときに選択的フィルターを適用します (例: WHERE table_catalog = 'main' AND table_schema = 'default')。 各 Information Schema テーブルのフィルターとして使用できる列の完全な一覧については、上記のドキュメントを参照してください。
    • LIMITプッシュダウンは現在サポートされていないため、結果を切り捨てることはできますが、パフォーマンスは向上しません。

> 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