「TABLES」檢視畫面
INFORMATION_SCHEMA.TABLES
檢視表會針對資料集中的每個資料表或檢視表,分別列出一個相對應的資料列。TABLES
和 TABLE_OPTIONS
檢視表也包含檢視表的高階資訊。如需詳細資訊,請查詢 INFORMATION_SCHEMA.VIEWS
檢視畫面。
所需權限
如要查詢 INFORMATION_SCHEMA.TABLES
檢視畫面,您必須具備下列 Identity and Access Management (IAM) 權限:
bigquery.tables.get
bigquery.tables.list
bigquery.routines.get
bigquery.routines.list
下列每個預先定義的 IAM 角色都包含上述權限:
roles/bigquery.admin
roles/bigquery.dataViewer
roles/bigquery.metadataViewer
如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」一文。
結構定義
查詢 INFORMATION_SCHEMA.TABLES
檢視表時,查詢結果會為資料集中的每個資料表或檢視表包含一個資料列。如要進一步瞭解檢視區塊,請改為查詢 INFORMATION_SCHEMA.VIEWS
檢視區塊。
INFORMATION_SCHEMA.TABLES
檢視表具有下列結構定義:
資料欄名稱 | 資料類型 | 值 |
---|---|---|
table_catalog |
STRING |
資料集所屬專案的專案 ID。 |
table_schema |
STRING |
包含資料表或檢視區塊的資料集名稱。也稱為「datasetId 」。 |
table_name |
STRING |
資料表或檢視表的名稱。也稱為「tableId 」。 |
table_type |
STRING |
資料表類型,可能是下列其中一個值: |
is_insertable_into |
STRING |
YES 或 NO ,視資料表是否支援 DML INSERT 陳述式而定 |
is_fine_grained_mutations_enabled |
STRING |
YES 或 NO ,視資料表是否啟用細微 DML 突變而定 |
is_typed |
STRING |
此值一律為 NO |
is_change_history_enabled |
STRING |
YES 或 NO ,視是否已啟用變更記錄而定 |
creation_time |
TIMESTAMP |
資料表的建立時間 |
base_table_catalog |
STRING |
如果是資料表本機副本和資料表快照,則為基本資料表的專案。僅適用於 table_type 設為 CLONE 或 SNAPSHOT 的資料表。
|
base_table_schema |
STRING |
如果是資料表副本和資料表快照,則為基礎資料表的資料集。僅適用於將 table_type 設為 CLONE 或 SNAPSHOT 的資料表。 |
base_table_name |
STRING |
如果是資料表副本和資料表快照,則為基礎資料表的名稱。僅適用於將 table_type 設為 CLONE 或 SNAPSHOT 的資料表。 |
snapshot_time_ms |
TIMESTAMP |
如果是資料表本機副本和資料表快照,則為在基本資料表上執行本機副本或快照作業,以建立這個資料表的時間。如果使用時空旅行,這個欄位會包含時空旅行時間戳記。否則,snapshot_time_ms 欄位與 creation_time 欄位相同。僅適用於 table_type 設為 CLONE 或 SNAPSHOT 的資料表。
|
replica_source_catalog |
STRING |
如果是具體化檢視表副本,則為基礎具體化檢視表的專案。 |
replica_source_schema |
STRING |
如果是具體化檢視表副本,則為基礎具體化檢視表的資料集。 |
replica_source_name |
STRING |
如果是具體化檢視表副本,則為基礎具體化檢視表的名稱。 |
replication_status |
STRING |
如果是具體化檢視表副本,則為從基礎具體化檢視表複製到具體化檢視表副本的狀態,可能為下列其中一種: |
replication_error |
STRING |
如果 replication_status 表示具體化檢視區副本有複寫問題,replication_error 會提供問題的詳細資訊。 |
ddl |
STRING |
可用於重新建立資料表的 DDL 陳述式,例如 CREATE TABLE 或 CREATE VIEW |
default_collation_name |
STRING |
預設排序規格的名稱 (如有),否則為 NULL 。
|
upsert_stream_apply_watermark |
TIMESTAMP |
如果資料表使用變更資料擷取 (CDC),則為上次套用資料列修改的時間。詳情請參閱「監控資料表 upsert 作業進度」。 |
範圍和語法
對這個檢視表執行的查詢必須包含資料集或區域限定詞。如果是含有資料集限定符的查詢,您必須具備該資料集的權限。如要查詢含有區域限定符的資料,您必須具備專案權限。 詳情請參閱語法。 下表說明這個檢視畫面的區域和資源範圍:
檢視表名稱 | 資源範圍 | 區域範圍 |
---|---|---|
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES |
專案層級 | REGION |
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES |
資料集層級 | 資料集位置 |
-
選用:
PROJECT_ID
:您的 Trusted Cloud 專案 ID。如未指定,系統會使用預設專案。 -
REGION
:任何資料集區域名稱。 例如:`region-us`
。 -
DATASET_ID
:資料集的 ID。詳情請參閱資料集限定符。
示例
-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;
範例
範例 1:
以下範例會擷取名為 mydataset
的資料集中所有資料表的資料表中繼資料。系統傳回的是預設專案中 mydataset
內所有類型的資料表中繼資料。
mydataset
包含下列資料表:
mytable1
:標準的 BigQuery 資料表myview1
:BigQuery 檢視表
如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view
;例如 `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
。
SELECT table_catalog, table_schema, table_name, table_type, is_insertable_into, creation_time, ddl FROM mydataset.INFORMATION_SCHEMA.TABLES;
結果大致如下。為了方便閱讀,部分資料欄已從結果中排除。
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | table_catalog | table_schema | table_name | table_type | is_insertable_into | creation_time | ddl | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+ | myproject | mydataset | mytable1 | BASE TABLE | YES | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` | | | | | | | | ( | | | | | | | | id INT64 | | | | | | | | ); | | myproject | mydataset | myview1 | VIEW | NO | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1` | | | | | | | | AS SELECT 100 as id; | +----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
範例 2:
以下範例會從 INFORMATION_SCHEMA.TABLES
檢視表,擷取 CLONE
或 SNAPSHOT
類型所有資料表的資料表中繼資料。系統傳回的是預設專案中 mydataset
內的資料表中繼資料。
如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view
;例如 `myproject`.mydataset.INFORMATION_SCHEMA.TABLES
。
SELECT table_name, table_type, base_table_catalog, base_table_schema, base_table_name, snapshot_time_ms FROM mydataset.INFORMATION_SCHEMA.TABLES WHERE table_type = 'CLONE' OR table_type = 'SNAPSHOT';
結果大致如下。為了方便閱讀,部分資料欄已從結果中排除。
+--------------+------------+--------------------+-------------------+-----------------+---------------------+ | table_name | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms | +--------------+------------+--------------------+-------------------+-----------------+---------------------+ | items_clone | CLONE | myproject | mydataset | items | 2018-10-31 22:40:05 | | orders_bk | SNAPSHOT | myproject | mydataset | orders | 2018-11-01 08:22:39 | +--------------+------------+--------------------+-------------------+-----------------+---------------------+
範例 3:
以下範例會從 census_bureau_usa
資料集中的 population_by_zip_2010
資料表,擷取 INFORMATION_SCHEMA.TABLES
檢視表的 table_name
和 ddl
資料欄。這個資料集是 BigQuery 公開資料集方案的一部分。
由於您要查詢的資料表位於另一個專案中,因此您應使用下列格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view
。在本範例中,這個值為 `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
。
SELECT table_name, ddl FROM `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES WHERE table_name = 'population_by_zip_2010';
結果大致如下:
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | table_name | ddl | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010` | | | ( | | | geo_id STRING OPTIONS(description="Geo code"), | | | zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"), | | | population INT64 OPTIONS(description="The total count of the population for this segment."), | | | minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."), | | | maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), | | | gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.") | | | ) | | | OPTIONS( | | | labels=[("freebqcovid", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+