Vista TABELAS

A vista INFORMATION_SCHEMA.TABLES contém uma linha para cada tabela ou vista num conjunto de dados. As vistas TABLES e TABLE_OPTIONS também contêm informações de alto nível sobre as visualizações. Para obter informações detalhadas, consulte a vista INFORMATION_SCHEMA.VIEWS.

Autorizações necessárias

Para consultar a vista INFORMATION_SCHEMA.TABLES, precisa das seguintes autorizações de gestão de identidade e de acesso (IAM):

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

Cada uma das seguintes funções de IAM predefinidas inclui as autorizações anteriores:

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

Para mais informações sobre as autorizações do BigQuery, consulte o artigo Controlo de acesso com a IAM.

Esquema

Quando consulta a vista INFORMATION_SCHEMA.TABLES, os resultados da consulta contêm uma linha para cada tabela ou vista num conjunto de dados. Para informações detalhadas sobre as visualizações, consulte a INFORMATION_SCHEMA.VIEWSvisualização.

A vista INFORMATION_SCHEMA.TABLES 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 a vista. Também conhecido como datasetId.
table_name STRING O nome da tabela ou da vista. Também conhecido como tableId.
table_type STRING O tipo de tabela; uma das seguintes opções:
managed_table_type STRING Esta coluna está em pré-visualização. O tipo de tabela gerida; uma das seguintes opções:
is_insertable_into STRING YES ou NO, consoante a tabela suportar ou não instruções DML INSERT
is_fine_grained_mutations_enabled STRING YES ou NO, consoante as mutações DML detalhadas estejam ativadas na tabela
is_typed STRING O valor é sempre NO
is_change_history_enabled STRING YES ou NO, consoante o histórico de alterações estar ativado ou não
creation_time TIMESTAMP Hora de criação da tabela
base_table_catalog STRING Para clones de tabelas e capturas instantâneas de tabelas, o projeto da tabela base. Aplicável apenas a tabelas com table_type definido como CLONE ou SNAPSHOT.
base_table_schema STRING Para clones de tabelas e instantâneos de tabelas, o conjunto de dados da tabela de base. Aplicável apenas a tabelas com table_type definido como CLONE ou SNAPSHOT.
base_table_name STRING Para clones de tabelas e instantâneos de tabelas, o nome da tabela base. Aplicável apenas a tabelas com table_type definido como CLONE ou SNAPSHOT.
snapshot_time_ms TIMESTAMP Para clones de tabelas e instantâneos de tabelas, a hora em que a operação de clonagem ou instantâneo foi executada na tabela base para criar esta tabela. Se tiver sido usado o time travel, este campo contém a indicação de tempo do time travel. Caso contrário, o campo snapshot_time_ms é igual ao campo creation_time. Aplicável apenas a tabelas com table_type definido como CLONE ou SNAPSHOT.
replica_source_catalog STRING Para réplicas de vistas materializadas, o projeto da vista materializada de base.
replica_source_schema STRING Para réplicas de visualização materializada, o conjunto de dados da visualização materializada base.
replica_source_name STRING Para réplicas de vistas materializadas, o nome da vista materializada base.
replication_status STRING Para réplicas de vistas materializadas, o estado da replicação da vista materializada base para a réplica de vista materializada; uma das seguintes opções:
  • REPLICATION_STATUS_UNSPECIFIED
  • ACTIVE: a replicação está ativa sem erros
  • SOURCE_DELETED: A vista materializada de origem foi eliminada
  • PERMISSION_DENIED: A vista materializada de origem não foi autorizada no conjunto de dados que contém as tabelas BigLake do Amazon S3 de origem usadas na consulta que criou a vista materializada.
  • UNSUPPORTED_CONFIGURATION: existe um problema com os pré-requisitos da réplica, exceto a autorização da vista materializada de origem.
replication_error STRING Se replication_status indicar um problema de replicação para uma réplica de vista materializada, replication_error fornece mais detalhes sobre o problema.
ddl STRING A declaração LDD que pode ser usada para recriar a tabela, como CREATE TABLE ou CREATE VIEW
default_collation_name STRING O nome da especificação de ordenação predefinida se existir; caso contrário, NULL.
upsert_stream_apply_watermark TIMESTAMP Para tabelas que usam a captura de dados de alterações (CDC), a hora em que as modificações das linhas foram aplicadas pela última vez. Para mais informações, consulte o artigo Monitorize o progresso da operação de inserção/atualização da tabela.

Âmbito e sintaxe

As consultas desta vista têm de incluir um conjunto de dados ou um qualificador de região. Para consultas com um qualificador de conjunto de dados, tem de ter autorizações para o conjunto de dados. Para consultas com um qualificador de região, tem de ter autorizações para o projeto. Para mais informações, consulte a secção Sintaxe. A tabela seguinte explica os âmbitos da região e dos recursos para esta vista:

Nome da visualização de propriedade Âmbito do recurso Âmbito da região
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.TABLES Nível do projeto REGION
[PROJECT_ID.]DATASET_ID.INFORMATION_SCHEMA.TABLES Nível do conjunto de dados Localização do conjunto de dados
Substitua o seguinte:
  • Opcional: PROJECT_ID: o ID do seu projeto do Google Cloud Google Cloud. Se não for especificado, é usado o projeto predefinido.
  • REGION: qualquer nome da região do conjunto de dados. Por exemplo, `region-us`.
  • DATASET_ID: o ID do seu conjunto de dados. Para mais informações, consulte o artigo Qualificador de conjunto de dados.

Exemplo

-- Returns metadata for tables in a single dataset.
SELECT * FROM myDataset.INFORMATION_SCHEMA.TABLES;

Exemplos

Exemplo 1:

O exemplo seguinte obtém os metadados da tabela para todas as tabelas no conjunto de dados denominado mydataset. Os metadados devolvidos são para todos os tipos de tabelas no mydataset no seu projeto predefinido.

mydataset contém as seguintes tabelas:

  • mytable1: uma tabela padrão do BigQuery
  • myview1: uma vista do BigQuery

Para executar a consulta num projeto que não seja o seu projeto predefinido, adicione o ID do projeto ao conjunto de dados no seguinte formato: `project_id`.dataset.INFORMATION_SCHEMA.view; por exemplo, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

INFORMATION_SCHEMA
SELECT
  table_catalog, table_schema, table_name, table_type,
  is_insertable_into, creation_time, ddl
FROM
  mydataset.INFORMATION_SCHEMA.TABLES;

O resultado é semelhante ao seguinte. Para facilitar a leitura, algumas colunas são excluídas do resultado.

+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| table_catalog  | table_schema  |   table_name   | table_type | is_insertable_into |    creation_time    |                     ddl                     |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
| myproject      | mydataset     | mytable1       | BASE TABLE | YES                | 2018-10-29 20:34:44 | CREATE TABLE `myproject.mydataset.mytable1` |
|                |               |                |            |                    |                     | (                                           |
|                |               |                |            |                    |                     |   id INT64                                  |
|                |               |                |            |                    |                     | );                                          |
| myproject      | mydataset     | myview1        | VIEW       | NO                 | 2018-12-29 00:19:20 | CREATE VIEW `myproject.mydataset.myview1`   |
|                |               |                |            |                    |                     | AS SELECT 100 as id;                        |
+----------------+---------------+----------------+------------+--------------------+---------------------+---------------------------------------------+
Exemplo 2:

O exemplo seguinte obtém metadados de tabelas para todas as tabelas do tipo CLONE ou SNAPSHOT a partir da vista INFORMATION_SCHEMA.TABLES. Os metadados devolvidos são para tabelas em mydataset no seu projeto predefinido.

Para executar a consulta num projeto que não seja o seu projeto predefinido, adicione o ID do projeto ao conjunto de dados no seguinte formato: `project_id`.dataset.INFORMATION_SCHEMA.view; por exemplo, `myproject`.mydataset.INFORMATION_SCHEMA.TABLES.

  SELECT
    table_name, table_type, base_table_catalog,
    base_table_schema, base_table_name, snapshot_time_ms
  FROM
    mydataset.INFORMATION_SCHEMA.TABLES
  WHERE
    table_type = 'CLONE'
  OR
    table_type = 'SNAPSHOT';

O resultado é semelhante ao seguinte. Para facilitar a leitura, algumas colunas são excluídas do resultado.

  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | table_name   | table_type | base_table_catalog | base_table_schema | base_table_name | snapshot_time_ms    |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+
  | items_clone  | CLONE      | myproject          | mydataset         | items           | 2018-10-31 22:40:05 |
  | orders_bk    | SNAPSHOT   | myproject          | mydataset         | orders          | 2018-11-01 08:22:39 |
  +--------------+------------+--------------------+-------------------+-----------------+---------------------+

Exemplo 3:

O exemplo seguinte obtém as colunas table_name e ddl da vista INFORMATION_SCHEMA.TABLES para a tabela population_by_zip_2010 no conjunto de dados census_bureau_usa. Este conjunto de dados faz parte do programa de conjuntos de dados públicos do BigQuery.

Uma vez que a tabela que está a consultar se encontra noutro projeto, adicione o ID do projeto ao conjunto de dados no seguinte formato: `project_id`.dataset.INFORMATION_SCHEMA.view. Neste exemplo, o valor é `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES.

SELECT
  table_name, ddl
FROM
  `bigquery-public-data`.census_bureau_usa.INFORMATION_SCHEMA.TABLES
WHERE
  table_name = 'population_by_zip_2010';

O resultado é semelhante ao seguinte:

+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
|       table_name       |                                                                                                            ddl                                                                                                             |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| population_by_zip_2010 | CREATE TABLE `bigquery-public-data.census_bureau_usa.population_by_zip_2010`                                                                                                                                               |
|                        | (                                                                                                                                                                                                                          |
|                        |   geo_id STRING OPTIONS(description="Geo code"),                                                                                                                                                                           |
|                        |   zipcode STRING NOT NULL OPTIONS(description="Five digit ZIP Code Tabulation Area Census Code"),                                                                                                                          |
|                        |   population INT64 OPTIONS(description="The total count of the population for this segment."),                                                                                                                             |
|                        |   minimum_age INT64 OPTIONS(description="The minimum age in the age range. If null, this indicates the row as a total for male, female, or overall population."),                                                          |
|                        |   maximum_age INT64 OPTIONS(description="The maximum age in the age range. If null, this indicates the row as having no maximum (such as 85 and over) or the row is a total of the male, female, or overall population."), |
|                        |   gender STRING OPTIONS(description="male or female. If empty, the row is a total population summary.")                                                                                                                    |
|                        | )                                                                                                                                                                                                                          |
|                        | OPTIONS(                                                                                                                                                                                                                   |
|                        |   labels=[("freebqcovid", "")]                                                                                                                                                                                             |
|                        | );                                                                                                                                                                                                                         |
+------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+