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

description

STRING

表的说明

enable_refresh

BOOL

是否为物化视图启用了自动刷新

expiration_timestamp

TIMESTAMP

此表的到期时间

friendly_name

STRING

表的描述性名称

kms_key_name

STRING

用于加密表的 Cloud KMS 密钥的名称

labels

ARRAY<STRUCT<STRING, STRING>>

一个 STRUCT 数组,表示表的标签

partition_expiration_days

FLOAT64

分区表中所有分区的默认生命周期(以天为单位)

refresh_interval_minutes

FLOAT64

物化视图的刷新频率

require_partition_filter

BOOL

对于表执行的查询是否需要分区过滤条件

tags

ARRAY<STRUCT<STRING, STRING>>

以命名空间型 <key, value> 语法附加到表的标记。如需了解详情,请参阅标记和条件式访问

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

选项
allow_jagged_rows

BOOL

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

适用于 CSV 数据。

allow_quoted_newlines

BOOL

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

适用于 CSV 数据。

bigtable_options

STRING

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

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

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

column_name_character_map

STRING

定义受支持的列名称字符的范围以及不受支持字符的处理方式。 默认设置为 STRICT,这意味着不支持的字符会导致 BigQuery 抛出错误。V1V2 会将任何不受支持的字符替换为下划线。

支持的值包括:

  • STRICT。支持灵活的列名称。此设置为默认值。 列名称中含有不受支持的字符的加载作业会失败,并显示错误消息。如需配置将不受支持的字符替换为下划线,以使加载作业成功,请指定 default_column_name_character_map 配置设置。
  • V1。列名称只能包含标准列名称字符。不受支持的字符会被替换为下划线。 这是在引入 column_name_character_map 之前创建的表的默认行为。
  • V2。除了标准列名称字符之外,它还支持灵活的列名称。 不受支持的字符会被替换为下划线。
  • 适用于 CSV 和 Parquet 数据。

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 检索元数据。

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。如果未指定,则使用默认项目。

    示例

    示例 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"  |
      +----------------+---------------+------------+-------------+-------------+--------------+