Visualização de TABLE_OPTIONS

A visualização INFORMATION_SCHEMA.TABLE_OPTIONS contém uma linha para cada opção, para cada tabela ou visualização em um conjunto de dados. As visualizações TABLES e TABLE_OPTIONS também contêm informações de alto nível sobre visualizações. Para informações detalhadas, consulte a visualização INFORMATION_SCHEMA.VIEWS.

Permissões necessárias

Para consultar a visualização INFORMATION_SCHEMA.TABLE_OPTIONS, você precisa das seguintes permissões de gerenciamento de identidade e acesso (IAM, na sigla em inglês):

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

Cada um dos seguintes papéis predefinidos do IAM inclui as permissões anteriores:

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

Para mais informações sobre as permissões do BigQuery, consulte Controle de acesso com o IAM.

Schema

Os resultados das consultas na visualização INFORMATION_SCHEMA.TABLE_OPTIONS contêm uma linha para cada opção, para cada tabela ou visualização do conjunto de dados. Para informações detalhadas sobre visualizações, consulte a visualização INFORMATION_SCHEMA.VIEWS.

A visualização INFORMATION_SCHEMA.TABLE_OPTIONS tem o seguinte esquema:

Nome da coluna Tipo de dados Valor
TABLE_CATALOG STRING O ID do projeto que contém o conjunto de dados
TABLE_SCHEMA STRING O nome do conjunto de dados que contém a tabela ou visualização, também conhecido como datasetId
TABLE_NAME STRING O nome da tabela ou visualização, também conhecido como tableId
OPTION_NAME STRING Um dos valores de nome na tabela opções.
OPTION_TYPE STRING Um dos valores de tipo de dados na tabela de opções.
OPTION_VALUE STRING Uma das opções de valor na tabela de opções.
Tabela de opções
OPTION_NAME OPTION_TYPE OPTION_VALUE
partition_expiration_days FLOAT64 A vida útil padrão, em dias, de todas as partições em uma tabela particionada
expiration_timestamp TIMESTAMP A hora em que esta tabela expira
kms_key_name STRING O nome da chave do Cloud KMS usada para criptografar a tabela
friendly_name STRING O nome descritivo da tabela.
description STRING Uma descrição da tabela
labels ARRAY<STRUCT<STRING, STRING>> Uma matriz de STRUCTs que representa as identificações na tabela
require_partition_filter BOOL Se as consultas na tabela exigem um filtro de partição
enable_refresh BOOL Se a atualização automática está ativada para uma visualização materializada.
refresh_interval_minutes FLOAT64 Com que frequência uma visualização materializada é atualizada

Em tabelas externas, as seguintes opções podem ser usadas:

Opções
allow_jagged_rows

BOOL

Se true, permita linhas que não têm colunas opcionais posteriores.

Aplica-se a dados CSV.

allow_quoted_newlines

BOOL

Se true, permita seções de dados entre aspas que contenham caracteres de nova linha no arquivo.

Aplica-se a dados CSV.

bigtable_options

STRING

Obrigatório apenas ao criar uma tabela externa do Bigtable.

Especifica o esquema da tabela externa do Bigtable no formato JSON.

Para conferir uma lista de opções de definição de tabela do Bigtable, consulte BigtableOptions na Referência da API REST.

compression

STRING

O tipo de compactação da fonte de dados. Os valores aceitos são: GZIP. Se não for especificada, a fonte de dados será descompactada.

Aplica-se a dados CSV e JSON.

decimal_target_types

ARRAY<STRING>

Determina como converter um tipo Decimal. Equivalente a ExternalDataConfiguration.decimal_target_types

Exemplo: ["NUMERIC", "BIGNUMERIC"].

description

STRING

Uma descrição da tabela.

enable_list_inference

BOOL

Se true, use a inferência de esquema especificamente para o tipo lógico Parquet LIST.

Aplicável a dados Parquet.

enable_logical_types

BOOL

Se true, converta tipos lógicos Avro nos tipos SQL correspondentes. Para mais informações, consulte Tipos lógicos.

Aplica-se a dados Avro.

encoding

STRING

A codificação de caracteres dos dados. Os valores aceitos incluem: UTF8 (ou UTF-8), ISO_8859_1 (ou ISO-8859-1).

Aplica-se a dados CSV.

enum_as_string

BOOL

Se true, inferir o tipo lógico Parquet ENUM como STRING em vez de BYTES por padrão.

Aplicável a dados Parquet.

expiration_timestamp

TIMESTAMP

A hora em que esta tabela expira. Se não for especificado, a tabela não expirará.

Exemplo: "2025-01-01 00:00:00 UTC".

field_delimiter

STRING

O separador de campos em um arquivo CSV.

Aplica-se a dados CSV.

format

STRING

O formato dos dados externos. Os valores compatíveis para CREATE EXTERNAL TABLE incluem: AVRO, CLOUD_BIGTABLE, CSV, DATASTORE_BACKUP, DELTA_LAKE (pré-lançamento), GOOGLE_SHEETS, NEWLINE_DELIMITED_JSON (ou JSON), ORC, PARQUET.

Os valores compatíveis para LOAD DATA incluem: AVRO, CSV, DELTA_LAKE (pré-lançamento ), NEWLINE_DELIMITED_JSON (ou JSON)ORC, PARQUET.

O valor JSON é equivalente a NEWLINE_DELIMITED_JSON.

hive_partition_uri_prefix

STRING

Um prefixo comum para todos os URIs de origem antes do início da codificação da chave de partição. Aplica-se apenas a tabelas externas particionadas pelo Hive.

Aplica-se aos dados Avro, CSV, JSON, Parquet e ORC.

Exemplo: "gs://bucket/path".

file_set_spec_type

STRING

Especifica como interpretar URIs de origem para jobs de carregamento e tabelas externas. Em pré-lançamento.

Os valores aceitos são:

  • FILE_SYSTEM_MATCH. Expande URIs de origem listando arquivos do armazenamento de objetos. Esse é o comportamento padrão se FileSetSpecType não estiver definido.
  • NEW_LINE_DELIMITED_MANIFEST. Indica que os URIs fornecidos são arquivos de manifesto delimitados por nova linha, com um URI por linha. URIs curinga não são compatíveis com os arquivos de manifesto.

Por exemplo, se você tiver um URI de origem de "gs://bucket/path/file" e file_set_spec_type for FILE_SYSTEM_MATCH, o arquivo será usado diretamente como um arquivo de dados. Se file_set_spec_type for NEW_LINE_DELIMITED_MANIFEST, cada linha no arquivo será interpretada como um URI que aponta para um arquivo de dados.

ignore_unknown_values

BOOL

Se for true, ignora valores extras que não estejam representados no esquema da tabela, sem retornar um erro.

Aplica-se a dados CSV e JSON.

json_extension

STRING

Para dados JSON, indica um determinado formato de intercâmbio JSON. Se não for especificado, o BigQuery lerá os dados como registros JSON genéricos.

Os valores aceitos são:
GEOJSON. Dados GeoJSON delimitados por nova linha. Para mais informações, consulte Como criar uma tabela externa a partir de um arquivo GeoJSON delimitado por nova linha.

max_bad_records

INT64

O número máximo de registros corrompidos a serem ignorados durante a leitura dos dados.

Aplica-se a: dados CSV, JSON e Planilhas Google.

max_staleness

INTERVAL

Aplicável a tabelas do BigLake e tabelas de objetos.

Especifica se os metadados em cache são usados pelas operações na tabela e quando eles precisam ser atualizados para que a operação possa usá-los.

Para desativar o armazenamento em cache de metadados, especifique 0. Esse é o padrão.

Para ativar o armazenamento em cache de metadados, especifique um valor de literal de intervalo entre 30 minutos e 7 dias. Por exemplo, especifique INTERVAL 4 HOUR para um intervalo de inatividade de 4 horas. Com esse valor, as operações na tabela usarão metadados em cache se tiverem sido atualizados nas últimas 4 horas. Se os metadados armazenados em cache forem mais antigos que isso, a operação retornará aos metadados do Cloud Storage.

metadata_cache_mode

STRING

Aplicável a tabelas do BigLake e tabelas de objetos.

Especifica se o cache de metadados da tabela é atualizado de forma automática ou manual.

Defina como AUTOMATIC para que o cache de metadados seja atualizado em um intervalo definido pelo sistema, geralmente em algum lugar entre 30 e 60 minutos.

Defina como MANUAL se quiser atualizar o cache de metadados com uma programação que você determinar. Nesse caso, é possível chamar o procedimento do sistema BQ.REFRESH_EXTERNAL_METADATA_CACHE para atualizar o cache.

Você precisa definir metadata_cache_mode se max_staleness for definido como um valor maior que 0.

null_marker

STRING

A string que representa os valores NULL em um arquivo CSV.

Aplica-se a dados CSV.

object_metadata

STRING

Obrigatório apenas ao criar uma tabela de objetos.

Defina o valor dessa opção como SIMPLE ao criar uma tabela de objetos.

preserve_ascii_control_characters

BOOL

Se true, os caracteres ASCII de controle incorporados que são os primeiros 32 caracteres na tabela ASCII, que variam de "\x00" a "\x1F", serão preservados.

Aplica-se a dados CSV.

projection_fields

STRING

Uma lista de propriedades da entidade a serem carregadas.

Aplica-se aos dados do Datastore.

quote

STRING

A string usada para citar seções de dados em um arquivo CSV. Se os dados contiverem caracteres de nova linha entre aspas, defina também a propriedade allow_quoted_newlines como true.

Aplica-se a dados CSV.

reference_file_schema_uri

STRING

Arquivo de referência fornecido pelo usuário com o esquema da tabela.

Aplicável aos dados Parquet/ORC/AVRO.

Exemplo: "gs://bucket/path/reference_schema_file.parquet".

require_hive_partition_filter

BOOL

Se true, todas as consultas nesta tabela exigem um filtro de partição que pode ser usado para eliminar partições ao ler dados. Aplica-se apenas a tabelas externas particionadas pelo Hive.

Aplica-se aos dados Avro, CSV, JSON, Parquet e ORC.

sheet_range

STRING

Intervalo de uma planilha do Planilhas Google a ser consultada.

Aplicável aos dados do Planilhas Google.

Exemplo: “sheet1!A1:B20”,

skip_leading_rows

INT64

O número de linhas na parte superior de um arquivo a ser ignorado na leitura dos dados.

Aplicável aos dados CSV e Planilhas Google.

uris

Para tabelas externas, incluindo de objetos, que não sejam do Bigtable:

ARRAY<STRING>

Uma matriz de URIs totalmente qualificados para os locais de dados externos. Cada URI pode conter um caractere curinga de asterisco (*), que precisa vir depois do nome do bucket. Quando você especifica valores uris voltados para vários arquivos, todos eles precisam compartilhar um esquema compatível.

Os exemplos a seguir mostram valores uris válidos:

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

Para tabelas do Bigtable:

STRING

O URI que identifica a tabela do Bigtable a ser usada como fonte de dados. Só é possível especificar um URI do Bigtable.

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

Para mais informações sobre como criar um URI do Bigtable, consulte Como recuperar o URI do Bigtable.

Escopo e sintaxe

As consultas nessa visualização precisam incluir um conjunto de dados ou um qualificador de região. Para consultas com um qualificador de conjunto de dados, é preciso ter permissões para o conjunto de dados. Para consultas com um qualificador de região, é preciso ter permissões para o projeto. Para mais informações, consulte Sintaxe. A tabela a seguir explica os escopos de região e recurso dessa visualização:

Nome da visualização Escopo do recurso Escopo da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLE_OPTIONS Nível do projeto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLE_OPTIONS Nível do conjunto de dados Local do conjunto de dados
Substitua:

Exemplo

Exemplo 1:

O exemplo a seguir recupera os prazos de validade da tabela padrão para todas as tabelas em mydataset no seu projeto padrão (myproject) consultando a visualização INFORMATION_SCHEMA.TABLE_OPTIONS.

Para executar a consulta em um projeto diferente do padrão, adicione o ID do projeto ao conjunto de dados no seguinte formato: `project_id`.dataset.INFORMATION_SCHEMA.view; por exemplo, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS.

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

O resultado será semelhante ao seguinte:

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

Exemplo 2:

O exemplo a seguir recupera os metadados sobre todas as tabelas em mydataset que contêm dados de teste. A consulta usa os valores da opção description para encontrar tabelas que contenham "teste" em qualquer parte da descrição. mydataset está no projeto padrão (myproject).

Para executar a consulta em um projeto diferente do projeto padrão, adicione o ID do projeto ao conjunto de dados no seguinte formato: `project_id`.dataset.INFORMATION_SCHEMA.view (por exemplo, `myproject`.mydataset.INFORMATION_SCHEMA.TABLE_OPTIONS).

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

O resultado será semelhante ao seguinte:

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