取得資料集相關資訊

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

您可以透過以下方式取得資料集資訊:

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

必要權限

如要取得資料集相關資訊或中繼資料,您必須取得資料集層級的 READER 角色,或取得擁有 bigquery.datasets.get 權限的專案層級身分與存取權管理 (IAM) 角色。所有預先定義的專案層級身分與存取權管理角色都具備 bigquery.datasets.get 權限,但 bigquery.jobUser 除外

如要深入瞭解 BigQuery 中的身分與存取權管理角色和權限,請參閱存取權控管一文。如要深入瞭解資料集層級角色,請參閱資料集的原始角色

取得資料集資訊

如何取得專案中的資料集相關資訊:

主控台

在「Resources」(資源) 面板中按一下所需資料集名稱。「Query editor」(查詢編輯器) 的下方會列出資料集的說明和詳細資訊。 在「Resources」(資源) 面板中,資料集下方會列出其巢狀結構的資料表。

查看資料集

BigQuery 網頁版 UI 預設不顯示匿名資料集。如要顯示匿名資料集的相關資訊,請使用 CLI 或 API。

傳統版 UI

按一下資料集名稱。[Dataset Details] 頁面會顯示資料集的說明、詳細資料和資料表。

查看資料集

BigQuery 網頁版 UI 預設不顯示匿名資料集。如要顯示匿名資料集的相關資訊,請使用 CLI 或 API。

指令列

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

如要顯示匿名資料集的相關資訊,請使用 bq ls --all 指令列出所有資料集,接著在 bq show 指令中使用匿名資料集名稱。

bq show --format=prettyjson [PROJECT_ID]:[DATASET]

其中:

  • [PROJECT_ID] 是您的專案名稱。
  • [DATASET] 是資料集的名稱。

範例:

輸入下列指令,顯示您預設專案中的 mydataset 相關資訊。

bq show --format=prettyjson mydataset

輸入下列指令,顯示 myotherproject 中的 mydataset 相關資訊。

bq show --format=prettyjson myotherproject:mydataset

輸入下列指令,顯示預設專案中匿名資料集 _1234abcd56efgh78ijkl1234 的相關資訊。

bq show --format=prettyjson _1234abcd56efgh78ijkl1234

API

呼叫 datasets.get API 方法並提供任何相關參數。

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")
meta, err := client.Dataset(datasetID).Metadata(ctx)
if err != nil {
	return err
}

fmt.Printf("Dataset ID: %s\n", datasetID)
fmt.Printf("Description: %s\n", meta.Description)
fmt.Println("Labels:")
for k, v := range meta.Labels {
	fmt.Printf("\t%s: %s", k, v)
}
fmt.Println("Tables:")
it := client.Dataset(datasetID).Tables(ctx)

cnt := 0
for {
	t, err := it.Next()
	if err == iterator.Done {
		break
	}
	cnt++
	fmt.Printf("\t%s\n", t.TableID)
}
if cnt == 0 {
	fmt.Println("\tThis dataset does not contain any tables.")
}

Java

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

DatasetId datasetId = DatasetId.of(projectId, datasetName);
Dataset dataset = bigquery.getDataset(datasetId);

Python

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

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
# client = bigquery.Client()

# TODO(developer): Set dataset_id to the ID of the dataset to fetch.
# dataset_id = 'your-project.your_dataset'

dataset = client.get_dataset(dataset_id)

full_dataset_id = "{}.{}".format(dataset.project, dataset.dataset_id)
friendly_name = dataset.friendly_name
print(
    "Got dataset '{}' with friendly_name '{}'.".format(
        full_dataset_id, friendly_name
    )
)

# View dataset properties
print("Description: {}".format(dataset.description))
print("Labels:")
labels = dataset.labels
if labels:
    for label, value in labels.items():
        print("\t{}: {}".format(label, value))
else:
    print("\tDataset has no labels defined.")

# View tables in dataset
print("Tables:")
tables = list(client.list_tables(dataset))  # API request(s)
if tables:
    for table in tables:
        print("\t{}".format(table.table_id))
else:
    print("\tThis dataset does not contain any tables.")

INFORMATION_SCHEMA (Beta 版)

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

SCHEMATA 資料檢視

當您查詢 INFORMATION_SCHEMA.SCHEMATA 資料檢視時,系統會針對當前使用者可存取的專案下的每個資料集,都列出一個相對應的資料列在查詢結果中。

INFORMATION_SCHEMA.SCHEMATA 資料檢視具有下列結構定義:

資料欄名稱 資料類型
CATALOG_NAME STRING 包含資料集的專案名稱
SCHEMA_NAME STRING 資料集的名稱 (又稱為 datasetId)
SCHEMA_OWNER STRING 此值一律為 NULL
CREATION_TIME TIMESTAMP 資料集的建立時間
LAST_MODIFIED_TIME TIMESTAMP 資料集的上次修改時間
LOCATION STRING 資料集的地理位置

範例

下列範例從 INFORMATION_SCHEMA.SCHEMATA 資料檢視擷取了所有資料欄,但保留 schema_owner,以供未來使用。系統傳回的是預設專案 (myproject) 中所有資料集的中繼資料。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] ,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA

如何執行查詢:

主控台

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

    前往 BigQuery 網頁版 UI

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

    SELECT
     * EXCEPT(schema_owner)
    FROM
     INFORMATION_SCHEMA.SCHEMATA
    
  3. 按一下 [Run] (執行)。

指令列

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

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

bq query --nouse_legacy_sql \
'SELECT * EXCEPT(schema_owner) FROM INFORMATION_SCHEMA.SCHEMATA'

結果如下所示:

  +----------------+---------------+---------------------+---------------------+-----------------+
  |  catalog_name  |  schema_name  |    creation_time    | last_modified_time  |    location     |
  +----------------+---------------+---------------------+---------------------+-----------------+
  | myproject      | mydataset1    | 2018-11-07 19:50:24 | 2018-11-07 19:50:24 | US              |
  | myproject      | mydataset2    | 2018-07-16 04:24:22 | 2018-07-16 04:24:22 | US              |
  | myproject      | mydataset3    | 2018-02-07 21:08:45 | 2018-05-01 23:32:53 | asia-northeast1 |
  +----------------+---------------+---------------------+---------------------+-----------------+
  

SCHEMATA_OPTIONS 資料檢視

當您查詢 INFORMATION_SCHEMA.SCHEMATA_OPTIONS 資料檢視時,系統會針對當前使用者可存取的專案下的每個資料集,都列出一個相對應的資料列在查詢結果中。

INFORMATION_SCHEMA.SCHEMATA_OPTIONS 資料檢視具有下列結構定義:

資料欄名稱 資料類型
CATALOG_NAME STRING 包含資料集的專案名稱
SCHEMA_NAME STRING 資料集的名稱 (又稱為 datasetId)
OPTION_NAME STRING 選項表格中的其中一個名稱值
OPTION_TYPE STRING 選項表格中的其中一個資料類型值
OPTION_VALUE STRING 選項表格中的其中一個值選項
選項表格
OPTION_NAME OPTION_TYPE OPTION_VALUE
default_table_expiration_days FLOAT64 資料集中所有資料表的預設生命週期 (以天為單位)
friendly_name STRING 資料集的描述性名稱
description STRING 資料集的說明
labels ARRAY<STRUCT<STRING, STRING>> 代表資料集標籤的 STRUCT 陣列

範例

範例 1:

以下範例查詢了 INFORMATION_SCHEMATA.SCHEMATA_OPTIONS 資料檢視,藉以擷取預設專案 (myproject) 中所有資料集的預設資料表到期時間。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] ,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

如何執行查詢:

主控台

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

    前往 BigQuery 網頁版 UI

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

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="default_table_expiration_days"
    
  3. 按一下 [Run] (執行)。

指令列

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

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

bq query --nouse_legacy_sql \
'SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name="default_table_expiration_days"'

結果如下所示:

  +----------------+---------------+-------------------------------+-------------+---------------------+
  |  catalog_name  |  schema_name  |          option_name          | option_type |    option_value     |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  | myproject      | mydataset3    | default_table_expiration_days | FLOAT64     | 0.08333333333333333 |
  | myproject      | mydataset2    | default_table_expiration_days | FLOAT64     | 90.0                |
  | myproject      | mydataset1    | default_table_expiration_days | FLOAT64     | 30.0                |
  +----------------+---------------+-------------------------------+-------------+---------------------+
  

範例 2:

以下範例查詢了 INFORMATION_SCHEMATA.SCHEMATA_OPTIONS 資料檢視,藉以擷取預設專案 (myproject) 中所有資料集的標籤。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`[PROJECT_ID]`.INFORMATION_SCHEMA.[VIEW] ,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

如何執行查詢:

主控台

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

    前往 BigQuery 網頁版 UI

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

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  3. 按一下 [Run] (執行)。

指令列

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

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

bq query --nouse_legacy_sql \
'SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS
WHERE option_name="labels"'

結果如下所示:

  +----------------+---------------+-------------+---------------------------------+------------------------+
  |  catalog_name  |  schema_name  | option_name |          option_type            |      option_value      |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  | myproject      | mydataset1    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  | myproject      | mydataset2    | labels      | ARRAY<STRUCT<STRING, STRING>>   | [STRUCT("org", "dev")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

後續步驟

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

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

這個網頁