使用 INFORMATION_SCHEMA 获取数据集元数据

INFORMATION_SCHEMA 是一系列视图,可以访问有关数据集、表和视图的元数据。

您可以查询 INFORMATION_SCHEMA.SCHEMATAINFORMATION_SCHEMA.SCHEMATA_OPTIONS 视图,以检索有关项目中数据集的元数据。

所需权限

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

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

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

后续步骤

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

发送以下问题的反馈:

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