COLUMN_FIELD_PATHS 视图

INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图包含 RECORD(或 STRUCT)列内嵌套的每一列对应的一行。

所需权限

如需查询 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图,您需要拥有以下 Identity and Access Management (IAM) 权限:

  • bigquery.tables.get
  • bigquery.tables.list

以下每个预定义的 IAM 角色均可提供上述权限:

  • roles/bigquery.admin
  • roles/bigquery.dataViewer
  • roles/bigquery.dataEditor
  • roles/bigquery.metadataViewer

如需详细了解 BigQuery 权限,请参阅使用 IAM 进行访问权限控制

架构

对于嵌套RECORD(或STRUCT)列中的每一列,查询结果都包含对应的一行。

当您查询 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图时,查询为嵌套RECORD(或 STRUCT)列中的每一列返回一行结果。

INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图具有如下架构:

列名 数据类型
TABLE_CATALOG STRING 该数据集所属项目的项目 ID
TABLE_SCHEMA STRING 包含表的数据集的名称,也称为 datasetId
TABLE_NAME STRING 表或视图的名称,也称为 tableId
COLUMN_NAME STRING 列的名称
FIELD_PATH STRING 嵌套在 `RECORD` 或 `STRUCT` 列中的列的路径
DATA_TYPE STRING 列的 GoogleSQL 数据类型
DESCRIPTION STRING 列的说明
COLLATION_NAME STRING 排序规则规范的名称(如果存在);否则为 NULL

如果传入了 STRUCT 中的 STRINGARRAY<STRING>STRING 字段,则返回排序规则规范(如果存在);否则返回 NULL
ROUNDING_MODE STRING 如果将精度和标度应用于参数化的 NUMERICBIGNUMERIC 值,则为要采用的舍入模式;否则,值为 NULL

范围和语法

针对此视图的查询必须包含数据集或区域限定符。对于包含数据集限定符的查询,您必须拥有数据集的权限。对于包含区域限定符的查询,您必须拥有项目的权限。如需了解详情,请参阅语法。下表说明了此视图的区域和资源范围:

视图名称 资源范围 区域范围
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 项目级 REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 数据集级 数据集位置
替换以下内容:

  • 可选:PROJECT_ID:您的 Google Cloud 项目的 ID。如果未指定,则使用默认项目。
  • REGION:任何数据集区域名称。例如 region-us
  • DATASET_ID:您的数据集的 ID。如需了解详情,请参阅数据集限定符

示例

以下示例从 github_repos 数据集commits 表的 INFORMATION_SCHEMA.COLUMN_FIELD_PATHS 视图中检索元数据。此数据集是 BigQuery 公共数据集计划的一部分。

由于您查询的表属于 bigquery-public-data 项目,因此您应按 `project_id`.dataset.INFORMATION_SCHEMA.view 格式将相应项目 ID 添加到数据集;例如 `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS

commits 表包含以下嵌套列以及嵌套和重复列:

  • author:嵌套的 RECORD
  • committer:嵌套的 RECORD
  • trailer:嵌套且重复的 RECORD
  • difference:嵌套且重复的 RECORD

要查看有关 authordifference 列的元数据,请运行以下查询。

SELECT
  *
FROM
  `bigquery-public-data`.github_repos.INFORMATION_SCHEMA.COLUMN_FIELD_PATHS
WHERE
  table_name = 'commits'
  AND (column_name = 'author' OR column_name = 'difference');

结果类似于以下内容。为改善可读性,结果中没有保留某些列。

  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | table_name | column_name |     field_path      |                                                                      data_type                                                                      | description |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+
  | commits    | author      | author              | STRUCT<name STRING, email STRING, time_sec INT64, tz_offset INT64, date TIMESTAMP>                                                                  | NULL        |
  | commits    | author      | author.name         | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.email        | STRING                                                                                                                                              | NULL        |
  | commits    | author      | author.time_sec     | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.tz_offset    | INT64                                                                                                                                               | NULL        |
  | commits    | author      | author.date         | TIMESTAMP                                                                                                                                           | NULL        |
  | commits    | difference  | difference          | ARRAY<STRUCT<old_mode INT64, new_mode INT64, old_path STRING, new_path STRING, old_sha1 STRING, new_sha1 STRING, old_repo STRING, new_repo STRING>> | NULL        |
  | commits    | difference  | difference.old_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.new_mode | INT64                                                                                                                                               | NULL        |
  | commits    | difference  | difference.old_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_path | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_sha1 | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.old_repo | STRING                                                                                                                                              | NULL        |
  | commits    | difference  | difference.new_repo | STRING                                                                                                                                              | NULL        |
  +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+