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.VIEWS
visualizaçã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_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 |
-
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 BigQuerymyview1
: 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", "")] | | | ); | +------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+