COLUMNS ビュー
INFORMATION_SCHEMA.COLUMNS ビューは、テーブル内の列(フィールド)ごとに 1 行が表示されます。
必要な権限
INFORMATION_SCHEMA.COLUMNS ビューをクエリするには、次の Identity and Access Management(IAM)権限が必要です。
bigquery.tables.getbigquery.tables.list
次の各 IAM 事前定義ロールには、上の権限が含まれています。
roles/bigquery.adminroles/bigquery.dataViewerroles/bigquery.dataEditorroles/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 | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+-------------+