TABLES 檢視

INFORMATION_SCHEMA.TABLES 檢視表會針對資料集中的每個資料表或檢視表,分別列出一個資料列。TABLESTABLE_OPTIONS 檢視表也包含檢視表的相關高階資訊。如需詳細資訊,請查詢 INFORMATION_SCHEMA.VIEWS 檢視區塊。

所需權限

如要查詢 INFORMATION_SCHEMA.TABLES 檢視畫面,您必須具備下列身分與存取權管理 (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 YESNO,視資料表是否支援 DML INSERT 陳述式而定
is_typed STRING 此值一律為 NO
is_change_history_enabled STRING YESNO,視是否啟用變更記錄而定
creation_time TIMESTAMP 資料表的建立時間
base_table_catalog STRING 對於資料表本機副本資料表快照,則為基本資料表的專案。僅適用於 table_type 設為 CLONESNAPSHOT 的資料表。
base_table_schema STRING 對於資料表複本資料表快照,則是基本資料表的資料集。僅適用於 table_type 設為 CLONESNAPSHOT 的資料表。
base_table_name STRING 對於資料表複本資料表快照,則是基礎資料表的名稱。僅適用於 table_type 設為 CLONESNAPSHOT 的資料表。
snapshot_time_ms TIMESTAMP 對於資料表本機副本資料表快照,則是指在基本資料表上執行本機副本快照作業以建立此資料表的時間。如果使用時間旅行,這個欄位就會包含時間旅行時間戳記。否則,snapshot_time_ms 欄位與 creation_time 欄位相同。僅適用於 table_type 設為 CLONESNAPSHOT 的資料表。
replica_source_catalog STRING 對於具體化檢視表備用資源,則為基礎具體化檢視表的專案。
replica_source_schema STRING 對於具體化檢視表備用資源,則是基本具體化檢視表的資料集。
replica_source_name STRING 對於具體化檢視表備用資源,則為基礎具體化檢視表的名稱。
replication_status STRING 對於具體化檢視表備用資源,從基本具體化檢視表到具體化檢視表備用資源的複製狀態;以下任一項:
  • REPLICATION_STATUS_UNSPECIFIED
  • ACTIVE:複製功能已啟用,且沒有錯誤
  • SOURCE_DELETED:已刪除來源具體化檢視表
  • PERMISSION_DENIED:在包含用於建立具體化檢視表的查詢中使用的來源 Amazon S3 BigLake 資料表的資料集中,來源具體化檢視表尚未經過授權
  • UNSUPPORTED_CONFIGURATION:備份資源的前置條件 (除了來源 materialized view 授權) 有問題。
replication_error STRING 如果 replication_status 指出已實體化的檢視區塊副本有複製問題,replication_error 會提供問題的詳細資訊。
ddl STRING 可用來重新建立資料表的 DDL 陳述式,例如 CREATE TABLECREATE VIEW
default_collation_name STRING 預設排序規格的名稱 (如果有的話);否則為 NULL
upsert_stream_apply_watermark TIMESTAMP 如果是使用變更資料擷取 (CDC) 的資料表,則是上次套用資料列修改時間。詳情請參閱「監控資料表上傳/插入作業進度」。

範圍和語法

對這個檢視表執行的查詢必須包含資料集或區域限定詞。如果查詢含有資料集限定條件,您必須具備該資料集的權限。如果查詢包含區域限定條件,您必須具備專案權限。詳情請參閱「語法」。下表說明這個檢視畫面的區域和資源範圍:

檢視表名稱 資源範圍 區域範圍
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES 專案層級 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES 資料集層級 資料集位置
替換下列內容:
  • 選用:PROJECT_ID: Google Cloud 專案的 ID。如果未指定,系統會使用預設專案。
  • REGION:任一資料集區域名稱。例如:`region-us`
  • DATASET_ID:資料集 ID。詳情請參閱「資料集限定條件」。

示例

-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;

範例

範例 1:

以下範例會擷取名為 mydataset 的資料集中所有資料表的資料表中繼資料。系統傳回的是預設專案 mydatasetmydataset 內所有類型的資料表中繼資料。

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 檢視表擷取 CLONESNAPSHOT 類型的所有資料表中繼資料。系統傳回的是預設專案 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_nameddl 欄。這個資料集是 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", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+