取得檢視表的相關資訊

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

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

  • 使用 GCP 主控台或傳統 BigQuery 網頁版 UI
  • 使用 bq show CLI 指令
  • 呼叫 tables.get API 方法
  • 查詢 INFORMATION_SCHEMA 檢視表 (Beta 版)

所需權限

如要取得檢視表的相關資訊,您必須取得資料集的 READER 角色,或取得具備 bigquery.tables.get 權限的專案層級身分與存取權管理 (IAM) 角色。如果您取得專案層級的 bigquery.tables.get 權限,就可以取得專案中所有檢視表的相關資訊。所有預先定義的專案層級 IAM 角色都具備 bigquery.tables.get 權限,但 bigquery.jobUserbigquery.user 除外

此外,獲指派 bigquery.user 角色的使用者還擁有 bigquery.datasets.create 權限。換句話說,具備bigquery.user 角色身分的使用者可以取得自己建立的任何資料集中的資料檢視相關資訊。具備 bigquery.user 角色身分的使用者建立資料集後,即可取得該資料集的 OWNER 存取權。資料集的 OWNER 存取權可讓使用者完全控管該資料集以及其中的所有資料檢視。

如要深入瞭解 BigQuery 中的 IAM 角色和權限,請參閱存取權控制。如要深入瞭解資料集層級角色,請參閱資料集的原始角色

取得資料檢視的資訊

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

如要取得資料檢視的相關資訊:

主控台

  1. 展開資料集。

  2. 按一下資料集名稱。

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

    查看詳細資料

傳統版 UI

  1. 展開資料集。

  2. 按一下資料集名稱。

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

    查看詳細資料

指令列

發出 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. 在 GCP 主控台中開啟 BigQuery 網頁版 UI。

    前往 BigQuery 網頁版 UI

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

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

指令列

使用 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。

    前往 BigQuery 網頁版 UI

  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] (執行)

指令列

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

後續步驟

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

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

這個網頁