使用 INFORMATION_SCHEMA 获取数据集元数据

INFORMATION_SCHEMA 包含数据集元数据的这些视图:

  • SCHEMATA
  • SCHEMATA_OPTIONS

所需权限

对于 SCHEMATASCHEMATA_OPTIONS,您必须获得 bigquery.datasets.get 权限。

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

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

控制台

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

    转到 Cloud Console

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 Cloud 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) 中所有数据集的默认表过期时间。

如需对非默认项目运行查询,请按 `project_id`.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

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

控制台

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

    转到 Cloud Console

  2. 查询编辑器框中输入以下标准 SQL 查询。 INFORMATION_SCHEMA 要求使用标准 SQL 语法。标准 SQL 是 Cloud 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) 中所有数据集的标签。

如需对非默认项目运行查询,请按 `project_id`.INFORMATION_SCHEMA.view 格式将相应的项目 ID 添加到数据集,例如 `myproject`.INFORMATION_SCHEMA.SCHEMATA_OPTIONS

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

控制台

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

    转到 Cloud Console

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

    SELECT
     *
    FROM
     INFORMATION_SCHEMA.SCHEMATA_OPTIONS
    WHERE
     option_name="labels"
    
  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="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")] |
  +----------------+---------------+-------------+---------------------------------+------------------------+