情報スキーマ

Snowflake情報スキーマ(別名「データディクショナリ」)は、アカウントで作成されたオブジェクトに関する広範なメタデータ情報を提供するシステム定義のビューとテーブル関数のセットで構成されています。Snowflake情報スキーマは SQL-92 ANSI 情報スキーマに基づいていますが、Snowflakeに固有のビューと機能が追加されています。

注釈

ANSI は、「カタログ」という用語を使用してデータベースを参照します。標準との互換性を維持するために、Snowflake情報スキーマのトピックでは、「データベース」の代わりに「カタログ」を使用します(該当する場合)。すべての意図と目的について、用語は概念的に同等であり、交換可能です。

このトピックの内容:

INFORMATION_SCHEMA スキーマとは何ですか?

アカウントで作成された各データベースには、 INFORMATION_SCHEMA という名前の組み込み、読み取り専用スキーマが自動的に含まれます。スキーマには次のオブジェクトが含まれます。

  • データベースに含まれるすべてのオブジェクトのビュー、およびアカウントレベルのオブジェクト(ロール、ウェアハウス、データベースなどの非データベースオブジェクト)のビュー

  • アカウント全体の履歴データと使用データのテーブル関数。

情報スキーマビューとテーブル関数

ビューのリスト

INFORMATION_SCHEMA のビューには、データベースで定義されたオブジェクトに関するメタデータと、すべてのデータベースで共通の非データベースアカウントレベルオブジェクトのメタデータが表示されます。INFORMATION_SCHEMA の各インスタンスには次が含まれます。

  • Snowflakeに関連するデータベースおよびアカウントレベルのオブジェクトのANSI標準ビュー。

  • Snowflakeがサポートする非標準オブジェクト(ステージ、ファイル形式など)のSnowflake固有のビュー。

特に断りのない限り、Snowflake情報スキーマビューは ANSI標準です。

ビュー

Snowflake固有

メモ

APPLICABLE_ROLES

アカウント

COLUMNS

データベース

DATABASES

アカウント

ENABLED_ROLES

アカウント

EXTERNAL_TABLES

データベース

FILE FORMATS

データベース

FUNCTIONS

データベース

INFORMATION_SCHEMA_CATALOG_NAME

アカウント

LOAD_HISTORY

アカウント

データは14日間保持されます。

OBJECT_PRIVILEGES

アカウント

PIPES

データベース

PROCEDURES

データベース

REFERENTIAL_CONSTRAINTS

データベース

REPLICATION_DATABASES

アカウント

SCHEMATA

データベース

SEQUENCES

データベース

STAGES

データベース

TABLE_CONSTRAINTS

データベース

TABLE_PRIVILEGES

データベース

TABLE_STORAGE_METRICS

データベース

TABLES

データベース

テーブルとビューを表示します。

USAGE_PRIVILEGES

データベース

シーケンスの権限のみを表示します。他の型のオブジェクトの権限を表示するには、 OBJECT_PRIVILEGES を使用します。

VIEWS

データベース

テーブル関数のリスト

INFORMATION_SCHEMA のテーブル関数を使用して、ストレージ、ウェアハウス、ユーザーログイン、クエリのアカウントレベルの使用状況と履歴情報を返すことができます。

テーブル関数

データ 保持

メモ

AUTOMATIC_CLUSTERING_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

COPY_HISTORY

7日間

ACCOUNTADMIN ロールに対してのみ結果が返されます。

DATA_TRANSFER_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

DATABASE_REFRESH_HISTORY

14日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

DATABASE_REFRESH_PROGRESS , DATABASE_REFRESH_PROGRESS_BY_JOB

14日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

DATABASE_STORAGE_USAGE_HISTORY

6か月間

結果は MONITOR USAGE 権限に依存します。 [1]

EXTERNAL_FUNCTIONS_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

EXTERNAL_TABLE_FILES

N/A

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

EXTERNAL_TABLE_FILE_REGISTRATION_HISTORY

14日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

LOGIN_HISTORY , LOGIN_HISTORY_BY_USER

7日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

MATERIALIZED_VIEW_REFRESH_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

PIPE_USAGE_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

POLICY_REFERENCES

N/A

ACCOUNTADMIN ロールに対してのみ結果が返されます。

QUERY_HISTORY , QUERY_HISTORY_BY_*

7日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

REPLICATION_USAGE_HISTORY

14日間

ACCOUNTADMIN ロールに対してのみ結果が返されます。

REST_EVENT_HISTORY

7日間

ACCOUNTADMIN ロールに対してのみ結果が返されます。

SEARCH_OPTIMIZATION_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

STAGE_STORAGE_USAGE_HISTORY

6か月間

結果は MONITOR USAGE 権限に依存します。 [1]

TASK_DEPENDENTS

N/A

ACCOUNTADMIN ロールまたはタスク所有者(タスクに対する OWNERSHIP 権限を持つロール)に対してのみ結果が返されます。

TASK_HISTORY

7日間

結果は、 ACCOUNTADMIN ロール、タスク所有者(つまり、タスクに対する OWNERSHIP 権限を持つロール)、またはグローバル MONITOR EXECUTION 権限を持つロールに対してのみ返されます。

VALIDATE_PIPE_LOAD

14日間

結果は、ユーザーに現在割り当てられているロールの権限に応じて異なります。

WAREHOUSE_LOAD_HISTORY

14日間

結果は MONITOR USAGE 権限に依存します。 [1]

WAREHOUSE_METERING_HISTORY

6か月間

結果は MONITOR USAGE 権限に依存します。 [1]

[1] ロールに MONITOR USAGE グローバル権限が割り当てられている場合に結果を返します。それ以外の場合は、 ACCOUNTADMIN ロールのみの結果を返します。

ビューのエンティティ関係図(ERD)

INFORMATION_SCHEMAスキーマのビューの ERD は大きすぎるため、このトピックに表示できません。PDF 形式の ERD を表示またはダウンロードするには、次の画像をクリックしてください。

ER diagram of Information Schema views

一般的な使用上の注意

  • 各 INFORMATION_SCHEMA スキーマは読み取り専用です(スキーマ、およびスキーマ内のすべてのビューとテーブル関数は変更または削除できません)。

  • INFORMATION_SCHEMA ビューでのクエリは、同時 DDL に関する一貫性を保証しません。例えば、長時間実行される INFORMATION_SCHEMA クエリの実行中にテーブルのセットが作成された場合、クエリの結果には、作成されたテーブルの一部、またはすべてが含まれる場合とテーブルが含まれない場合があります。

  • ビューまたはテーブル関数の出力は、ユーザーの現在のロールに付与されている権限に依存します。INFORMATION_SCHEMA ビューまたはテーブル関数をクエリすると、現在のロールにアクセス権限が付与されているオブジェクトのみが返されます。

  • パフォーマンスの問題を防ぐため、 INFORMATION_SCHEMA クエリで指定されたフィルターが十分に選択的でない場合、次のエラーが返されます。

    Information schema query returned too much data.Please repeat query with more selective predicates.

ちなみに

情報スキーマビューは、辞書からオブジェクトの小さなサブセットを取得するクエリ用に最適化されています。可能な限り、スキーマ名とオブジェクト名でフィルタリングすることで、クエリのパフォーマンスを最大化します。

使用法および詳細については、 Snowflake情報スキーマのブログ投稿 をご参照ください。

SHOW コマンドを情報スキーマビューに置き換えるための考慮事項

INFORMATION_SCHEMA ビューは、 SHOW <オブジェクト> コマンドによって提供される同じ情報への SQL インターフェイスを提供します。ビューを使用して、これらのコマンドを置き換えることができます。ただし、切り替える前に考慮すべき重要な違いがいくつかあります。

考慮事項

SHOW コマンド

情報スキーマビュー

ウェアハウス

実行の必要なし。

ビューをクエリするには、ウェアハウスが実行中であり、現在使用されている必要があります。

パターンマッチング/フィルタリング

大文字と小文字を区別しない( LIKEを使用してフィルタリングする場合)。

標準(大文字と小文字を区別する)SQLセマンティクス。Snowflakeは、引用符なしの大文字と小文字を区別しない識別子を内部で自動的に大文字に変換するため、情報スキーマビューで引用符なしのオブジェクト名を大文字でクエリする必要があります。

クエリ結果

ほとんどの SHOW コマンドは、デフォルトで結果を現在のスキーマに制限します。

ビューには、現在の/指定されたデータベース内のすべてのオブジェクトが表示されます。特定のスキーマに対してクエリを実行するには、フィルター述語を使用する必要があります(例: ... WHERE table_schema = CURRENT_SCHEMA()...)。十分に選択的なフィルターがない情報スキーマクエリはエラーを返し、実行されません(このトピック内の 一般的な使用上の注意 をご参照ください)。

クエリの情報スキーマビューとテーブル関数の名前の修飾

INFORMATION_SCHEMA ビューまたはテーブル関数をクエリする場合、ビュー/テーブル関数 または の修飾名を使用する必要があります。INFORMATION_SCHEMA スキーマはセッションで使用する必要があります。

例:

  • データベース.information_schema.名前 の形式で、ビューおよびテーブル関数の完全修飾名を使用してクエリするには:

    SELECT * FROM testdb.INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'PUBLIC' ... ;
    
    SELECT * FROM TABLE(testdb.INFORMATION_SCHEMA.LOGIN_HISTORY( ... ));
    
  • ビューとテーブル関数の修飾名を使用して、 information_schema.名前 の形式でクエリするには:

    USE DATABASE testdb;
    
    SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'PUBLIC' ... ;
    
    SELECT * FROM TABLE(INFORMATION_SCHEMA.LOGIN_HISTORY( ... ));
    
  • セッションで使用中の INFORMATION_SCHEMA スキーマでクエリするには:

    USE SCHEMA testdb.INFORMATION_SCHEMA;
    
    SELECT * FROM TABLES WHERE TABLE_SCHEMA = 'PUBLIC' ... ;
    
    SELECT * FROM TABLE(LOGIN_HISTORY( ... ));
    

より詳細な例については、各ビュー/テーブル関数のリファレンスドキュメントをご参照ください。