TABLE_OPTIONS 视图

INFORMATION_SCHEMA.TABLE_OPTIONS 视图中的每一行对应数据集中每个表或视图的每个选项。TABLESTABLE_OPTIONS 视图还包含关于视图的概要信息。如需查看详细信息,请查询 INFORMATION_SCHEMA.VIEWS 视图。

所需权限

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

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

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

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

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

架构

当您查询 INFORMATION_SCHEMA.TABLE_OPTIONS 视图时,对于数据集中的每个表或视图,查询结果都会为每个选项返回一行结果。如需详细了解视图,请改为查询 INFORMATION_SCHEMA.VIEWS 视图

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

列名 数据类型
TABLE_CATALOG STRING 该数据集所属项目的项目 ID
TABLE_SCHEMA STRING 包含表或视图的数据集的名称,也称为 datasetId
TABLE_NAME STRING 表或视图的名称,也称为 tableId
OPTION_NAME STRING 选项表中的一个名称值
OPTION_TYPE STRING 选项表中的一个数据类型值
OPTION_VALUE STRING 选项表中的一个值选项
选项表
OPTION_NAME OPTION_TYPE OPTION_VALUE
partition_expiration_days FLOAT64 分区表中所有分区的默认生命周期(以天为单位)
expiration_timestamp TIMESTAMP 此表的到期时间
kms_key_name STRING 用于加密表的 Cloud KMS 密钥的名称
friendly_name STRING 表的描述性名称
description STRING 表的说明
labels ARRAY<STRUCT<STRING, STRING>> 一组 STRUCT,表示表的标签
require_partition_filter BOOL 对于表执行的查询是否需要分区过滤条件
enable_refresh BOOL 此标志表示是否为具体化视图启用自动刷新
refresh_interval_minutes FLOAT64 具体化视图的刷新频率

对于外部表,可以使用以下选项:

选项
allow_jagged_rows

BOOL

如果为 true,则表示允许末尾处缺少可选列的行。

适用于 CSV 数据。

allow_quoted_newlines

BOOL

如果为 true,则表示文件中允许引号括起来的数据部分中包含换行符。

适用于 CSV 数据。

bigtable_options

STRING

仅在创建 Bigtable 外部表时才需要。

指定 Bigtable 外部表的架构(采用 JSON 格式)。

如需查看 Bigtable 表定义选项列表,请参阅 REST API 参考文档中的 BigtableOptions

compression

STRING

数据源的压缩类型。支持的值包括:GZIP。如果未指定,则数据源未压缩。

适用于 CSV 和 JSON 数据。

decimal_target_types

ARRAY<STRING>

确定如何转换 Decimal 类型。相当于 ExternalDataConfiguration.decimal_target_types

示例:["NUMERIC", "BIGNUMERIC"]

description

STRING

此表的说明。

enable_list_inference

BOOL

如果为 true,则专门为 Parquet LIST 逻辑类型使用架构推断。

适用于 Parquet 数据。

enable_logical_types

BOOL

如果为 true,则将 Avro 逻辑类型转换为相应的 SQL 类型。如需了解详情,请参阅逻辑类型

适用于 Avro 数据。

encoding

STRING

数据的字符编码。支持的值包括:UTF8(或 UTF-8)、ISO_8859_1(或 ISO-8859-1)。

适用于 CSV 数据。

enum_as_string

BOOL

如果为 true,则默认将 Parquet ENUM 逻辑类型推断为 STRING 而不是 BYTES。

适用于 Parquet 数据。

expiration_timestamp

TIMESTAMP

此表的到期时间。如果未指定,则该表不会过期。

示例:"2025-01-01 00:00:00 UTC"

field_delimiter

STRING

CSV 文件中的字段的分隔符。

适用于 CSV 数据。

format

STRING

外部数据的格式。 支持的 CREATE EXTERNAL TABLE 值包括:AVROCLOUD_BIGTABLECSVDATASTORE_BACKUPDELTA_LAKE预览版)、GOOGLE_SHEETSNEWLINE_DELIMITED_JSON(或 JSON)、ORCPARQUET

支持的 LOAD DATA 值包括:AVROCSVDELTA_LAKE预览版)、NEWLINE_DELIMITED_JSON(或 JSON)、ORCPARQUET

JSON 相当于 NEWLINE_DELIMITED_JSON

hive_partition_uri_prefix

STRING

分区键编码开始之前所有源 URI 的通用前缀。仅适用于 Hive 分区的外部表。

适用于 Avro、CSV、JSON、Parquet、ORC 数据。

示例:"gs://bucket/path"

file_set_spec_type

STRING

指定如何解读加载作业和外部表的源 URI。目前为预览版

支持的值包括:

  • FILE_SYSTEM_MATCH。通过列出对象存储中的文件来扩展源 URI。如果未设置 FileSetSpecType,则这是默认行为。
  • NEW_LINE_DELIMITED_MANIFEST。表示提供的 URI 是以换行符分隔的清单文件,每行一个 URI。清单文件不支持通配符 URI。

例如,如果您的源 URI 为 "gs://bucket/path/file"file_set_spec_typeFILE_SYSTEM_MATCH,则该文件会直接用作数据文件。如果 file_set_spec_typeNEW_LINE_DELIMITED_MANIFEST,则文件中的每一行都会被解读为指向一个数据文件的 URI。

ignore_unknown_values

BOOL

如果为 true,则系统会忽略表架构中不存在的额外值,而不返回错误。

适用于 CSV 和 JSON 数据。

json_extension

STRING

对于 JSON 数据,指示特定的 JSON 交换格式。如果未指定,BigQuery 会以通用 JSON 记录的形式读取数据。

支持的值包括:
GEOJSON。以换行符分隔的 GeoJSON 数据。如需了解详情,请参阅根据以换行符分隔的 GeoJSON 文件创建外部表

max_bad_records

INT64

读取数据时要忽略的错误记录数上限。

适用于 CSV、JSON 和 Google 表格数据。

max_staleness

INTERVAL

适用于 BigLake 表对象表

指定对表执行的操作是否使用缓存的元数据,以及操作使用的缓存元数据的新鲜度。

如需停用元数据缓存,请指定 0。这是默认设置。

如需启用元数据缓存,请指定 30 分钟到 7 天之间的间隔时间字面量值。例如,指定 INTERVAL 4 HOUR 表示 4 小时过时间隔时间。使用此值时,如果缓存的元数据在过去 4 小时内刷新,则对表执行的操作会使用缓存的元数据。如果缓存的元数据早于该值,则操作会回退到从 Cloud Storage 检索元数据。

metadata_cache_mode

STRING

适用于 BigLake 表对象表

指定表的元数据缓存是自动刷新还是手动刷新。

如果设置为 AUTOMATIC,元数据缓存会按系统定义的间隔时间刷新,通常在 30 到 60 分钟之间。

如果要根据您确定的时间表刷新元数据缓存,请设置为 MANUAL。在这种情况下,您可以调用 BQ.REFRESH_EXTERNAL_METADATA_CACHE 系统过程来刷新缓存。

如果 max_staleness 设置为大于 0 的值,您必须设置 metadata_cache_mode

null_marker

STRING

表示 CSV 文件中 NULL 值的字符串。

适用于 CSV 数据。

object_metadata

STRING

仅在创建对象表时是必需的。

在创建对象表时,请将此选项的值设置为 SIMPLE

preserve_ascii_control_characters

BOOL

如果为 true,则系统会保留嵌入的 ASCII 控制字符,即 ASCII 表中的前 32 个字符(范围从“\x00”到“\x1F”)。

适用于 CSV 数据。

projection_fields

STRING

要加载的实体属性的列表。

适用于 Datastore 数据。

quote

STRING

用于括起 CSV 文件中数据部分的字符串。如果您的数据包含括起的换行符,另请将 allow_quoted_newlines 属性设置为 true

适用于 CSV 数据。

reference_file_schema_uri

STRING

用户提供的包含表架构的参考文件。

适用于 Parquet/ORC/AVRO 数据。

示例:"gs://bucket/path/reference_schema_file.parquet"

require_hive_partition_filter

BOOL

如果为 true,则对此表进行的所有查询都需要分区过滤条件,该过滤条件可用于在读取数据时清除分区。仅适用于 Hive 分区的外部表。

适用于 Avro、CSV、JSON、Parquet、ORC 数据。

sheet_range

STRING

要查询的 Google 表格的电子表格范围。

适用于 Google 表格数据。

示例:“sheet1!A1:B20”

skip_leading_rows

INT64

读取数据时要跳过的文件顶部行数。

适用于 CSV 和 Google 表格数据。

uris

对于非 Bigtable 表的外部表(包括对象表):

ARRAY<STRING>

外部数据位置的完全限定 URI 数组。 每个 URI 都可以包含一个星号 (*) 通配符,该通配符必须位于存储桶名称之后。如果指定以多个文件为目标的 uris 值,则所有这些文件都必须共享一个兼容的架构。

以下示例展示了有效的 uris 值:

  • ['gs://bucket/path1/myfile.csv']
  • ['gs://bucket/path1/*.csv']
  • ['gs://bucket/path1/*', 'gs://bucket/path2/file00*']

对于 Bigtable 表:

STRING

标识用作数据源的 Bigtable 表的 URI;只能指定一个 Bigtable URI。

示例:https://googleapis.com/bigtable/projects/project_id/instances/instance_id[/appProfiles/app_profile]/tables/table_name

如需详细了解如何构建 Bigtable URI,请参阅检索 Bigtable URI

范围和语法

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

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

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

示例

示例 1:

以下示例通过查询 INFORMATION_SCHEMA.TABLE_OPTIONS 视图来检索默认项目 (myproject) 中的 mydataset 中的所有表的默认表到期时间。

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

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'expiration_timestamp';

结果类似于以下内容:

  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | table_catalog  | table_schema  | table_name |     option_name      | option_type |             option_value             |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  | myproject      | mydataset     | mytable1   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2020-01-16T21:12:28.000Z" |
  | myproject      | mydataset     | mytable2   | expiration_timestamp | TIMESTAMP   | TIMESTAMP "2021-01-01T21:12:28.000Z" |
  +----------------+---------------+------------+----------------------+-------------+--------------------------------------+
  

示例 2:

以下示例检索 mydataset 中包含测试数据的所有表的元数据。该查询使用 description 选项中的值查找在说明的任何位置包含“test”的表。mydataset 位于默认项目 myproject 中。

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

  SELECT
    *
  FROM
    mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS
  WHERE
    option_name = 'description'
    AND option_value LIKE '%test%';

结果类似于以下内容:

  +----------------+---------------+------------+-------------+-------------+--------------+
  | table_catalog  | table_schema  | table_name | option_name | option_type | option_value |
  +----------------+---------------+------------+-------------+-------------+--------------+
  | myproject      | mydataset     | mytable1   | description | STRING      | "test data"  |
  | myproject      | mydataset     | mytable2   | description | STRING      | "test data"  |
  +----------------+---------------+------------+-------------+-------------+--------------+