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 中的 STRING 、ARRAY<STRING> 或 STRING 字段,则返回排序规则规范(如果存在);否则返回 NULL 。 |
ROUNDING_MODE |
STRING |
如果将精度和标度应用于参数化的 NUMERIC 或 BIGNUMERIC 值,则为要采用的舍入模式;否则,值为 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
列
要查看有关 author
和 difference
列的元数据,请运行以下查询。
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 | +------------+-------------+---------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------+-------------+