COLUMNS ビュー

INFORMATION_SCHEMA.COLUMNS ビューは、テーブル内の列(フィールド)ごとに 1 行が表示されます。

必要な権限

INFORMATION_SCHEMA.COLUMNS ビューをクエリするには、次の Identity and Access Management(IAM)権限が必要です。

  • bigquery.tables.get
  • bigquery.tables.list

次の各 IAM 事前定義ロールには、上の権限が含まれています。

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

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

スキーマ

INFORMATION_SCHEMA.COLUMNS ビューにクエリを実行すると、クエリ結果として、テーブル内の列(フィールド)ごとに 1 行が表示されます。

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

列名 データ型
table_catalog STRING データセットを含むプロジェクトのプロジェクト ID。
table_schema STRING テーブルを含むデータセットの名前(datasetId とも呼ばれる)。
table_name STRING テーブルまたはビューの名前(tableId とも呼ばれる)。
column_name STRING 列の名前。
ordinal_position INT64 テーブル内の列の 1 から始まるオフセット。_PARTITIONTIME や _PARTITIONDATE などの疑似列である場合、値は NULL
is_nullable STRING (列のモードで NULL 値が許可されるかどうかに応じて)YES または NO
data_type STRING 列の GoogleSQL データ型
is_generated STRING 列が自動生成されたエンベディング列である場合、値は ALWAYS。それ以外の場合、値は NEVER
generation_expression STRING 列が自動生成されたエンベディング列である場合、値は列の定義に使用された生成式。それ以外の場合、値は NULL
is_stored STRING 列が自動生成されたエンベディング列である場合、値は YES。それ以外の場合、値は NULL
is_hidden STRING (列が _PARTITIONTIME や _PARTITIONDATE などの疑似列であるかどうかに応じて)YES または NO
is_updatable STRING 値は常に NULL
is_system_defined STRING (列が _PARTITIONTIME や _PARTITIONDATE などの疑似列であるかどうかに応じて)YES または NO
is_partitioning_column STRING (列がパーティショニング列であるかどうかに応じて)YES または NO
clustering_ordinal_position INT64 テーブルのクラスタリング列内の列の 1 から始まるオフセット。テーブルがクラスタ化テーブルでない場合、値は NULL
collation_name STRING 照合順序の仕様の名前(存在する場合)。存在しない場合は NULL

STRING または ARRAY<STRING> が渡された場合の返り値は、照合順序(存在する場合)または NULL(存在しない場合)。
column_default STRING 列のデフォルト値(存在する場合)。存在しない場合、値は NULL
rounding_mode STRING フィールドの型がパラメータ化された NUMERIC または BIGNUMERIC である場合、フィールドに書き込まれる値に使用される丸めモード。それ以外の場合、値は NULL
data_policies.name STRING アクセスとマスキングを制御するために列に適用されているデータポリシーのリスト。このフィールドはプレビュー版です。
policy_tags ARRAY<STRING> 列に適用されているポリシータグのリスト。

安定性を確保するため、情報スキーマクエリではワイルドカード(SELECT *)を使用するのではなく、列を明示的にリストすることをおすすめします。列を明示的にリストすると、基盤となるスキーマが変更されてもクエリは中断されません。

スコープと構文

このビューに対するクエリでは、データセット修飾子またはリージョン修飾子を指定する必要があります。データセット修飾子が指定されたクエリの場合は、データセットに対する権限が必要です。リージョン修飾子が指定されたクエリの場合は、プロジェクトに対する権限が必要です。詳細については、構文をご覧ください。次の表に、このビューのリージョン スコープとリソース スコープを示します。

ビュー名 リソース スコープ リージョン スコープ
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMNS プロジェクト レベル REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMNS データセット レベル データセットのロケーション
次のように置き換えます。
  • 省略可: PROJECT_ID: Google Cloud プロジェクトの ID。指定しない場合は、デフォルトのプロジェクトが使用されます。
  • REGION: 任意のデータセット リージョン名。例: `region-us`
  • DATASET_ID: データセットの ID。詳しくは、データセット修飾子をご覧ください。

次の例では、census_bureau_usa データセットにある population_by_zip_2010 テーブルの INFORMATION_SCHEMA.COLUMNS ビューからメタデータを取得しています。このデータセットは、BigQuery の一般公開データセット プログラムの一部です。

クエリ対象のテーブルは別のプロジェクト(bigquery-public-data プロジェクト)にあるため、`project_id`.dataset.INFORMATION_SCHEMA.view の形式でプロジェクト ID をデータセットに追加します。例: `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES

次の列はクエリ結果から除外されます。

  • IS_UPDATABLE
  SELECT
    * EXCEPT(is_updatable)
  FROM
    `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.COLUMNS
  WHERE
    table_name = 'population_by_zip_2010';

次のような結果になります。読みやすくするため、一部の列は結果から除外されています。

+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
|       table_name       | column_name | ordinal_position | is_nullable | data_type | is_hidden | is_system_defined | is_partitioning_column | clustering_ordinal_position | policy_tags |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+
| population_by_zip_2010 | zipcode     |                1 | NO          | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | geo_id      |                2 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | minimum_age |                3 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | maximum_age |                4 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | gender      |                5 | YES         | STRING    | NO        | NO                | NO                     |                        NULL | 0 rows      |
| population_by_zip_2010 | population  |                6 | YES         | INT64     | NO        | NO                | NO                     |                        NULL | 0 rows      |
+------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+