INFORMATION_SCHEMA を使用したビュー メタデータの取得

INFORMATION_SCHEMA は、データセット、テーブル、ビューに関するメタデータへのアクセスを提供する一連のビューです。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行し、データセット内のビューのメタデータを取得できます。

必要な権限

ビューに関する情報を取得するには、少なくとも bigquery.tables.get 権限が付与されている必要があります。事前定義された以下の Cloud IAM 役割には、bigquery.tables.get 権限が含まれています。

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

また、bigquery.datasets.create 権限を持つユーザーがデータセットを作成すると、そのデータセットに対する bigquery.dataOwner アクセス権がユーザーに付与されます。 bigquery.dataOwner アクセス権により、データセットに含まれるビューに関する情報を取得できます。

BigQuery での Cloud IAM 役割と権限については、アクセス制御をご覧ください。

VIEWS ビュー

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行すると、データセット内の各ビューが 1 行で返されます。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

INFORMATION_SCHEMA.VIEWS ビューのスキーマは次のとおりです。

列名 データ型
TABLE_CATALOG STRING データセットを含むプロジェクトの名前
TABLE_SCHEMA STRING ビューを含むデータセットの名前(データセット id と呼ぶこともある)
TABLE_NAME STRING ビューの名前(テーブル id と呼ぶこともある)
VIEW_DEFINITION STRING ビューを定義する SQL クエリ
CHECK_OPTION STRING 常に NULL が返されます。
USE_STANDARD_SQL STRING 標準 SQL クエリでビューが作成された場合は YESuseLegacySqltrue に設定されている場合は NO

テーブルとビューのプロパティの詳細については、REST API ドキュメントのテーブル リソースのページをご覧ください。

例 1:

次の例では、将来用に予約されている check_option を除き、すべての列を INFORMATION_SCHEMA.VIEWS ビューから取得します。デフォルト プロジェクト(myproject)にある mydataset のすべてのビューに対するメタデータが返されます。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

デフォルト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します(例: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

クエリを実行するには:

Console

  1. GCP Console で BigQuery ウェブ UI を開きます。

    GCP Console に移動する

  2. [クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。 INFORMATION_SCHEMA では標準 SQL 構文が必要です。標準 SQL は GCP Console のデフォルトの構文です。

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. [実行] をクリックします。

CLI

query コマンドで、--nouse_legacy_sql または --use_legacy_sql=false フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA クエリには標準 SQL 構文が必要です。

クエリを実行するには、次のように入力します。

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

結果は次のようになります。

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

結果から、このビューはレガシー SQL クエリを使用して作成されたことがわかります。

例 2:

次の例では、デフォルト プロジェクト(myproject)の mydatasetmyview を定義するときに使用する SQL クエリとクエリ構文を取得します。

INFORMATION_SCHEMA.VIEWS ビューにクエリを実行する場合は、データセット修飾子を使用する必要があります。クエリを送信するユーザーには、ビューを含むデータセットへのアクセス権が必要です。

デフォルト以外のプロジェクトに対してクエリを実行するには、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します(例: `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

クエリを実行するには:

Console

  1. GCP Console で BigQuery ウェブ UI を開きます。

    GCP Console に移動する

  2. [クエリエディタ] ボックスに、次の標準 SQL クエリを入力します。 INFORMATION_SCHEMA では標準 SQL 構文が必要です。標準 SQL は GCP Console のデフォルトの構文です。

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. [実行] をクリックします。

CLI

query コマンドで、--nouse_legacy_sql または --use_legacy_sql=false フラグを使用して標準 SQL 構文を指定します。INFORMATION_SCHEMA クエリには標準 SQL 構文が必要です。

クエリを実行するには、次のように入力します。

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

結果は次のようになります。

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

結果から、このビューは標準の SQL クエリで作成されたことがわかります。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。