取得檢視表相關資訊

本文件將說明如何在 BigQuery 中取得檢視表的相關資訊或中繼資料。

您可以透過以下方式取得檢視表中繼資料:

  • 使用 Cloud Console 或 BigQuery 傳統網頁版 UI
  • 使用 bq show CLI 指令
  • 呼叫 tables.get API 方法
  • 使用用戶端程式庫
  • 查詢 INFORMATION_SCHEMA 檢視表 (Beta 版)

所需權限

您至少必須具備 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 角色和權限,請參閱存取權控管

取得檢視表相關資訊

取得檢視表相關資訊的方法和取得資料表資訊相同。

如何取得檢視表的相關資訊:

主控台

  1. 展開資料集。

  2. 按一下資料集名稱。

  3. 按一下 [Details] (詳細資料)。「Details」(詳細資料) 分頁會顯示檢視表的說明、相關資訊,以及定義該檢視表的 SQL 查詢。

    查看詳細資料

傳統版 UI

  1. 展開資料集。

  2. 按一下資料集名稱。

  3. 按一下 [Details] (詳細資料)。「View Details」(查看詳細資料) 頁面會顯示檢視表的說明、相關資訊,以及定義該檢視表的 SQL 查詢。

    查看詳細資料

CLI

發出 bq show 指令。--format 旗標可用來控管輸出。如果您要取得預設專案以外的專案檢視表相關資訊,請使用下列格式將專案 ID 新增至資料集:[PROJECT_ID]:[DATASET]

bq show \
--format=prettyjson \
project_id:dataset.view

其中:

  • 「project_id」是您的專案 ID。
  • 「dataset」是資料集名稱。
  • 「view」是檢視表名稱。

範例:

輸入下列指令,系統即會顯示您預設專案中 mydataset 資料集中的 myview 相關資訊。

bq show --format=prettyjson mydataset.myview

輸入下列指令,系統即會顯示 myotherprojectmydataset 資料集中的 myview 相關資訊。

bq show --format=prettyjson myotherproject:mydataset.myview

API

呼叫 tables.get 方法,並提供所有相關參數。

Go

在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Go 設定操作說明來進行。詳情請參閱 BigQuery Go API 參考說明文件

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
view := client.Dataset(datasetID).Table(viewID)
meta, err := view.Metadata(ctx)
if err != nil {
	return err
}
fmt.Printf("View %s, query: %s\n", view.FullyQualifiedName(), meta.ViewQuery)

Python

在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Python 設定操作說明來進行。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()
# shared_dataset_id = 'my_shared_dataset'

view_ref = client.dataset(shared_dataset_id).table("my_shared_view")
view = client.get_table(view_ref)  # API Request

# Display view properties
print("View at {}".format(view.full_table_id))
print("View Query:\n{}".format(view.view_query))

INFORMATION_SCHEMA (Beta 版)

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

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 以供未來使用。系統傳回的是預設專案 (myproject) 中 mydataset 內所有檢視表的中繼資料。

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

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

執行查詢的方式如下:

主控台

  1. 在 Cloud Console 中開啟 BigQuery 網頁版 UI。

    前往 Cloud Console

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

    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:

以下範例會擷取用來在預設專案 (myproject) 中的 mydataset 內定義 myview 的 SQL 查詢與查詢語法。

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

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

執行查詢的方式如下:

主控台

  1. 在 Cloud Console 中開啟 BigQuery 網頁版 UI。

    前往 Cloud Console

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

    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 查詢建立。

後續步驟