取得檢視表相關資訊

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

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

  • 使用 GCP 主控台或傳統 BigQuery 網頁版 UI
  • 使用 bq show CLI 指令
  • 呼叫 API 方法 tables.get
  • 使用用戶端程式庫
  • 查詢 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. 按一下 [詳細資料]。「查看詳細資料」頁面會顯示資料檢視的說明、相關資訊,以及定義該資料檢視的 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 以供未來使用。系統傳回的是預設專案 myprojectmydataset 內所有檢視表的中繼資料。

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

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

執行查詢:

主控台

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

    前往 GCP 主控台

  2. 在「Query editor」(查詢編輯器) 方塊中輸入下列標準 SQL 查詢。 INFORMATION_SCHEMA 需要標準 SQL 語法。標準 SQL 是 GCP 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:

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

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

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

執行查詢:

主控台

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

    前往 GCP 主控台

  2. 在「Query editor」(查詢編輯器) 方塊中輸入下列標準 SQL 查詢。 INFORMATION_SCHEMA 需要標準 SQL 語法。標準 SQL 是 GCP 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 查詢建立。

後續步驟

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

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

這個網頁