TABLE_OPTIONS 檢視表

INFORMATION_SCHEMA.TABLE_OPTIONS 檢視表會針對資料集中的每個資料表或檢視表,為每個選項列出一個資料列。TABLESTABLE_OPTIONS 檢視表也包含檢視表的相關高階資訊。如需詳細資訊,請查詢 INFORMATION_SCHEMA.VIEWS 檢視區塊。

所需權限

如要查詢 INFORMATION_SCHEMA.TABLE_OPTIONS 檢視畫面,您必須具備下列身分與存取權管理 (IAM) 權限:

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

以下每個預先定義的 IAM 角色都包含上述權限:

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

如要進一步瞭解 BigQuery 權限,請參閱「使用身分與存取權管理功能控管存取權」。

結構定義

查詢 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 外部資料表。

以 JSON 格式指定 Bigtable 外部資料表的結構定義。

如需 Bigtable 資料表定義選項清單,請參閱 REST API 參考資料中的 BigtableOptions

column_name_character_map

STRING

定義支援的資料欄名稱字元範圍,以及如何處理不支援的字元。預設設定為 STRICT,表示不支援的字元會導致 BigQuery 擲回錯誤。V1V2 會將任何不支援的字元替換為底線。

支援的值包括:

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 試算表資料。

tags <ARRAY<STRUCT<STRING, STRING>>>

資料表的 IAM 標記陣列,以鍵/值組合表示。鍵應為命名空間限定鍵名稱,值則應為簡稱

time_zone

STRING

(預覽)

如果剖析的時間戳記值沒有特定時區,就會採用這個預設時區。

請查看有效的時區名稱

如果沒有這個值,則會使用預設時區 (UTC) 剖析沒有特定時區的時間戳記值。

適用於 CSV 和 JSON 資料。

date_format

STRING

(預覽)

格式元素,可定義輸入檔案中的 DATE 值格式 (例如 MM/DD/YYYY)。

如果存在這個值,這個格式是唯一相容的日期格式。結構定義自動偵測功能也會根據這個格式,而非現有格式,決定 DATE 欄的類型。

如果沒有這個值,系統會使用預設格式剖析日期欄位。

適用於 CSV 和 JSON 資料。

datetime_format

STRING

(預覽)

格式元素,可定義輸入檔案中的 DATETIME 值格式 (例如 MM/DD/YYYY HH24:MI:SS.FF3)。

如果存在這個值,這個格式是唯一相容的 DATETIME 格式。結構定義自動偵測功能也會根據這個格式,而非現有格式,決定 DATETIME 欄類型。

如果沒有這個值,系統會使用預設格式剖析 DATETIME 欄位。

適用於 CSV 和 JSON 資料。

time_format

STRING

(預覽)

格式元素,可定義輸入檔案中的 TIME 值格式 (例如 HH24:MI:SS.FF3)。

如果存在這個值,這個格式是唯一相容的 TIME 格式。結構定義自動偵測功能也會根據這個格式,而非現有格式,決定 TIME 欄的類型。

如果沒有這個值,系統會使用預設格式剖析 TIME 欄位。

適用於 CSV 和 JSON 資料。

timestamp_format

STRING

(預覽)

格式元素,可定義輸入檔案中的 TIMESTAMP 值格式 (例如 MM/DD/YYYY HH24:MI:SS.FF3)。

如果存在這個值,這個格式是唯一相容的 TIMESTAMP 格式。結構定義自動偵測功能也會根據這個格式,而非現有格式,決定 TIMESTAMP 欄類型。

如果沒有這個值,系統會使用預設格式剖析 TIMESTAMP 欄位。

適用於 CSV 和 JSON 資料。

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

這個 URI 會標示要用來做為資料來源的 Bigtable 資料表。您只能指定一個 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 內所有資料表的預設資料表到期時間。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view;例如 `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) 中。

如要對預設專案以外的專案執行查詢,請使用以下格式將專案 ID 新增至資料集:`project_id`.dataset.INFORMATION_SCHEMA.view;例如 `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"  |
  +----------------+---------------+------------+-------------+-------------+--------------+