本文档介绍了如何在 BigQuery 中获取数据集的相关信息或元数据。
您可以通过以下方式获取数据集信息:
- 使用 Cloud Console。
- 在
bq
命令行工具中使用bq show
命令。 - 调用
datasets.get
API 方法。 - 查询
INFORMATION_SCHEMA
视图(Beta 版。 - 使用客户端库。
所需权限
如需获取数据集的相关信息或元数据,您必须至少具备 bigquery.datasets.get
权限。以下预定义的 IAM 角色具有 bigquery.datasets.get
权限:
bigquery.user
bigquery.metadataViewer
bigquery.dataViewer
bigquery.dataOwner
bigquery.dataEditor
bigquery.admin
如需详细了解 BigQuery 中的 IAM 角色和权限,请参阅访问权限控制。
获取数据集信息
如需获取项目中数据集的相关信息,请执行以下操作:
控制台
在探索器面板中,展开您的项目并选择数据集。 说明和详细信息会显示在详细信息面板中。数据集的表在分层图表面板中列出并列出数据集名称。
默认情况下,Cloud Console 会隐藏匿名数据集。如需显示匿名数据集的相关信息,请使用 bq
命令行工具或 API。
bq
发出 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 参考文档。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
Node.js
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Node.js 设置说明进行操作。如需了解详情,请参阅 BigQuery Node.js API 参考文档。
Python
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。
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
中所有数据集的元数据。
如需对非默认项目运行查询,请按 `project_id`.INFORMATION_SCHEMA.view
格式将相应的项目 ID 添加到数据集,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA
。
要运行查询,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在查询编辑器框中输入以下标准 SQL 查询。
INFORMATION_SCHEMA
要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。SELECT * EXCEPT(schema_owner) FROM INFORMATION_SCHEMA.SCHEMATA
点击运行。
bq
使用 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_SCHEMA.SCHEMATA_OPTIONS
视图来检索默认项目 (myproject
) 中所有数据集的默认表过期时间。
如需对非默认项目运行查询,请按 `project_id`.INFORMATION_SCHEMA.view
格式将相应的项目 ID 添加到数据集,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS
。
要运行查询,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在查询编辑器框中输入以下标准 SQL 查询。
INFORMATION_SCHEMA
要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name="default_table_expiration_days"
点击运行。
bq
使用 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_SCHEMA.SCHEMATA_OPTIONS
视图来检索默认项目 (myproject
) 中所有数据集的标签。
如需对非默认项目运行查询,请按 `project_id`.INFORMATION_SCHEMA.view
格式将相应的项目 ID 添加到数据集,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS
。
要运行查询,请执行以下操作:
控制台
在 Cloud Console 中打开 BigQuery 页面。
在查询编辑器框中输入以下标准 SQL 查询。
INFORMATION_SCHEMA
要求使用标准 SQL 语法。标准 SQL 是 Cloud Console 中的默认语法。SELECT * FROM INFORMATION_SCHEMA.SCHEMATA_OPTIONS WHERE option_name="labels"
点击运行。
bq
使用 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")] | +----------------+---------------+-------------+---------------------------------+------------------------+
后续步骤
- 如需详细了解如何创建数据集,请参阅创建数据集。
- 如需详细了解如何分配对数据集的访问权限控制,请参阅控制对数据集的访问权限。
- 如需详细了解如何列出项目中的数据集,请参阅列出数据集。
- 如需详细了解如何更改数据集属性,请参阅更新数据集。
- 如需详细了解如何创建和管理标签,请参阅创建和管理标签。
- 如需查看
INFORMATION_SCHEMA
的概览,请转到 BigQueryINFORMATION_SCHEMA
简介。