获取数据集的相关信息

本文档介绍了如何在 BigQuery 中获取有关数据集的信息或元数据。

您可以通过以下方式获取数据集信息:

  • 使用 GCP Console 或经典版 BigQuery 网页界面
  • 使用 bq show CLI 命令
  • 调用 datasets.get API 方法
  • 查询 INFORMATION_SCHEMA 视图(测试版

所需权限

要获取有关数据集的信息或元数据,您必须被指定为数据集级层 READER 角色,或者必须被指定为具有 bigquery.datasets.get 权限的项目级层 IAM 角色。除了 bigquery.jobUser,其他所有预定义的项目级层 IAM 角色都具有 bigquery.datasets.get 权限。

要详细了解 BigQuery 中的 IAM 角色和权限,请参阅访问权限控制。要详细了解数据集级层角色,请参阅数据集的初始角色

获取数据集信息

要获取项目中数据集相关信息,请执行以下操作:

经典版界面

点击数据集名称。数据集详细信息 (Dataset Details) 页面会显示数据集的说明、详情和表。

查看数据集

默认情况下,匿名数据集在 BigQuery 网页界面中是隐藏的。要显示匿名数据集的相关信息,请使用 CLI 或 API。

命令行

发出 bq show 命令。--format 标志可用于控制输出。如果您要获取默认项目以外某个项目中的数据集的相关信息,请按照 [PROJECT_ID]:[DATASET] 格式将项目 ID 添加到数据集名称中。

要显示匿名数据集的相关信息,请使用 bq ls --all 命令列出所有数据集,然后在 bq show 命令中使用匿名数据集的名称。

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

其中:

  • [PROJECT_ID] 是项目的名称。
  • [DATASET] 是数据集的名称。

示例:

输入以下命令以显示默认项目 mydataset 的相关信息。

bq show --format=prettyjson mydataset

输入以下命令,以显示 myotherprojectmydataset 的相关信息。

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
# client = bigquery.Client()
# dataset_id = 'my_dataset'

dataset_ref = client.dataset(dataset_id)
dataset = client.get_dataset(dataset_ref)  # API request

# View dataset properties
print('Dataset ID: {}'.format(dataset_id))
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_ref))  # 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测试版

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]:[DATASET].INFORMATION_SCHEMA.[VIEW]`,例如 `myproject:mydataset.INFORMATION_SCHEMA.SCHEMATA`

要运行查询,请执行以下操作:

Console

  1. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 需要标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     * EXCEPT(schema_owner)
    FROM
     `INFORMATION_SCHEMA.SCHEMATA`
    
  3. 点击运行

命令行

使用 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]:[DATASET].INFORMATION_SCHEMA.[VIEW]`,例如 `myproject:mydataset.INFORMATION_SCHEMA.SCHEMATA_OPTIONS`

要运行查询,请执行以下操作:

Console

  1. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 需要标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     *
    FROM
     `INFORMATION_SCHEMA.SCHEMATA_OPTIONS`
    WHERE
     option_name="default_table_expiration_days"
    
  3. 点击运行

命令行

使用 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]:[DATASET].INFORMATION_SCHEMA.[VIEW]`,例如 `myproject:mydataset.INFORMATION_SCHEMA.SCHEMATA_OPTIONS`

要运行查询,请执行以下操作:

Console

  1. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 BigQuery 网页界面

  2. 在 GCP Console 中打开 BigQuery 网页界面。

    转到 BigQuery 网页界面

  3. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 需要标准 SQL 语法。标准 SQL 是 GCP Console 中的默认语法。

    SELECT
     *
    FROM
     `INFORMATION_SCHEMA.SCHEMATA_OPTIONS`
    WHERE
     option_name="labels"
    
  4. 点击运行

命令行

使用 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")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+
  

后续步骤

此页内容是否有用?请给出您的反馈和评价:

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面