使用 INFORMATION_SCHEMA 取得檢視表中繼資料

INFORMATION_SCHEMA 是一系列檢視表,可提供資料集、資料表與檢視表相關中繼資料的存取權。

您可以查詢 INFORMATION_SCHEMA.VIEWS 檢視表,以擷取資料集中的檢視表相關中繼資料。

所需權限

您至少必須擁有 bigquery.tables.get 權限,才能取得檢視表相關資訊。以下是擁有 bigquery.tables.get 權限的預先定義 Cloud IAM 角色:

  • bigquery.metadataViewer
  • bigquery.dataViewer
  • bigquery.dataOwner
  • bigquery.dataEditor
  • bigquery.admin

此外,當具備 bigquery.datasets.create 權限的使用者建立資料集時,會獲得 bigquery.dataOwner 存取權。 bigquery.dataOwner 存取權可讓使用者取得資料集中的檢視表相關資訊。

如要深入瞭解 BigQuery 中的 Cloud IAM 角色和相關權限,請參閱存取權控管一文。

VIEWS 檢視表

當您查詢 INFORMATION_SCHEMA.VIEWS 檢視表時,資料集中的每個檢視表都會有一列相對應的查詢結果。

INFORMATION_SCHEMA.VIEWS 檢視表進行查詢必須具有資料集限定詞,且提交查詢的使用者必須能夠存取包含檢視表的資料集。

INFORMATION_SCHEMA.VIEWS 檢視表具有下列結構定義:

資料欄名稱 資料類型
TABLE_CATALOG STRING 包含資料集的專案名稱
TABLE_SCHEMA STRING 包含檢視表的資料集名稱 (又稱為資料集 id)
TABLE_NAME STRING 檢視表的名稱 (又稱為資料表 id)
VIEW_DEFINITION STRING 定義檢視表的 SQL 查詢
CHECK_OPTION STRING 傳回的值一律為 NULL
USE_STANDARD_SQL STRING 如果檢視表是使用標準 SQL 查詢建立,即為 YES;如果 useLegacySql 設為 true,則為 NO

如要深入瞭解資料表和檢視表屬性,請參閱 REST API 說明文件中的資料表資源頁面。

示例

範例 1:

下列範例從 INFORMATION_SCHEMA.VIEWS 檢視表擷取了所有資料欄,但保留 check_option 以供未來使用。系統傳回的是預設專案 myprojectmydataset 內所有檢視表的中繼資料。

INFORMATION_SCHEMA.VIEWS 檢視表進行查詢必須具有資料集限定詞,且提交查詢的使用者必須能夠存取包含檢視表的資料集。

如要對預設專案以外的專案執行查詢,請使用下列格式將專案 ID 新增到資料集:`project_id`.dataset.INFORMATION_SCHEMA.view;例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

執行查詢:

主控台

  1. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。

    前往 GCP 主控台

  2. 在「Query editor」(查詢編輯器) 方塊中輸入下列標準 SQL 查詢。 INFORMATION_SCHEMA 需要標準 SQL 語法。標準 SQL 是 GCP 主控台的預設語法。

    SELECT
     * EXCEPT(check_option)
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    
  3. 按一下 [Run] (執行)

CLI

使用 query 指令並透過 --nouse_legacy_sql--use_legacy_sql=false 標記指定標準 SQL 語法。INFORMATION_SCHEMA 查詢需要標準 SQL 語法。

如要執行查詢,請輸入以下指令:

bq query --nouse_legacy_sql \
'SELECT
   * EXCEPT(check_option)
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS'

結果如下所示:

  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | table_catalog  | table_schema  |  table_name   |                        view_definition                              | use_standard_sql |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  | myproject      | mydataset     | myview        | SELECT column1, column2 FROM [myproject:mydataset.mytable] LIMIT 10 | NO               |
  +----------------+---------------+---------------+---------------------------------------------------------------------+------------------+
  

請注意,結果顯示這個檢視表是使用舊版 SQL 查詢建立。

範例 2:

以下範例擷取了用來在預設專案 myprojectmydataset 中定義 myview 的 SQL 查詢與查詢語法。

INFORMATION_SCHEMA.VIEWS 檢視表進行查詢必須具有資料集限定詞,且提交查詢的使用者必須能夠存取包含檢視表的資料集。

如要對預設專案以外的專案執行查詢,請使用下列格式將專案 ID 新增到資料集:`project_id`.dataset.INFORMATION_SCHEMA.view;例如 `myproject`.mydataset.INFORMATION_SCHEMA.VIEWS

執行查詢:

主控台

  1. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。

    前往 GCP 主控台

  2. 在「Query editor」(查詢編輯器) 方塊中輸入下列標準 SQL 查詢。 INFORMATION_SCHEMA 需要標準 SQL 語法。標準 SQL 是 GCP 主控台的預設語法。

    SELECT
     table_name, view_definition, use_standard_sql
    FROM
     mydataset.INFORMATION_SCHEMA.VIEWS
    WHERE
     table_name="myview"
    
  3. 按一下 [Run] (執行)

CLI

使用 query 指令並透過 --nouse_legacy_sql--use_legacy_sql=false 標記指定標準 SQL 語法。INFORMATION_SCHEMA 查詢需要標準 SQL 語法。

如要執行查詢,請輸入以下指令:

bq query --nouse_legacy_sql \
'SELECT
   table_name, view_definition, use_standard_sql
 FROM
   mydataset.INFORMATION_SCHEMA.VIEWS
 WHERE
   table_name="myview"'

結果如下所示:

  +---------------+---------------------------------------------------------------+------------------+
  |  table_name   |                        view_definition                        | use_standard_sql |
  +---------------+---------------------------------------------------------------+------------------+
  | myview        | SELECT column1, column2, column3 FROM mydataset.mytable       | YES              |
  +---------------+---------------------------------------------------------------+------------------+
  

請注意,結果顯示這個檢視表是使用標準 SQL 查詢建立。

後續步驟

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
需要協助嗎?請前往我們的支援網頁