欄檢視表
INFORMATION_SCHEMA.COLUMNS
檢視表會針對資料集中的每個資料欄 (欄位),分別列出一個相對應的資料列。
所需權限
如要查詢 INFORMATION_SCHEMA.COLUMNS
檢視畫面,您必須具備下列身分與存取權管理 (IAM) 權限:
bigquery.tables.get
bigquery.tables.list
以下每個預先定義的 IAM 角色都包含上述權限:
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.dataEditor
roles/bigquery.metadataViewer
如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」。
結構定義
當您查詢 INFORMATION_SCHEMA.COLUMNS
檢視表時,系統會在查詢結果中,針對資料集中的每個資料欄 (欄位),分別列出一個相對應的資料列。
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 |
YES 或 NO ,視資料欄的模式是否允許使用 NULL 值而定 |
DATA_TYPE |
STRING |
資料欄的 GoogleSQL 資料類型 |
IS_GENERATED |
STRING |
此值一律為 NEVER |
GENERATION_EXPRESSION |
STRING |
此值一律為 NULL |
IS_STORED |
STRING |
此值一律為 NULL |
IS_HIDDEN |
STRING |
YES 或 NO ,視資料欄是否為虛擬資料欄 (例如 _PARTITIONTIME 或 _PARTITIONDATE) 而定 |
IS_UPDATABLE |
STRING |
此值一律為 NULL |
IS_SYSTEM_DEFINED |
STRING |
YES 或 NO ,視資料欄是否為虛擬資料欄 (例如 _PARTITIONTIME 或 _PARTITIONDATE) 而定 |
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 |
範圍和語法
對這個檢視表執行的查詢必須包含資料集或區域限定詞。如果查詢含有資料集限定條件,您必須具備該資料集的權限。如果查詢含有區域限定條件,您必須具備專案權限。詳情請參閱「語法」一節。下表說明這個檢視畫面的區域和資源範圍:
檢視表名稱 | 資源範圍 | 區域範圍 |
---|---|---|
[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
) 中,因此您應使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view
;例如 `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
。
目前以下資料欄會從查詢結果中排除,保留供未來使用:
IS_GENERATED
GENERATION_EXPRESSION
IS_STORED
IS_UPDATABLE
SELECT * EXCEPT(is_generated, generation_expression, is_stored, 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 | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+ | population_by_zip_2010 | zipcode | 1 | NO | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | geo_id | 2 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | minimum_age | 3 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | maximum_age | 4 | YES | INT64 | NO | NO | NO | NULL | | population_by_zip_2010 | gender | 5 | YES | STRING | NO | NO | NO | NULL | | population_by_zip_2010 | population | 6 | YES | INT64 | NO | NO | NO | NULL | +------------------------+-------------+------------------+-------------+-----------+-----------+-------------------+------------------------+-----------------------------+