Vista PARTITIONS
A vista INFORMATION_SCHEMA.PARTITIONS
contém uma linha para cada partição.
A consulta da vista INFORMATION_SCHEMA.PARTITIONS
está limitada a 1000 tabelas. Para obter os dados sobre partições ao nível do projeto, pode dividir a consulta em várias consultas e, em seguida, juntar os resultados. Se exceder o limite, pode ocorrer um erro semelhante ao seguinte:
INFORMATION_SCHEMA.PARTITIONS query attempted to read too many tables. Please add more restrictive filters.
Autorizações necessárias
Para consultar a vista INFORMATION_SCHEMA.PARTITIONS
, precisa das seguintes autorizações de gestão de identidade e de acesso (IAM):
bigquery.tables.get
bigquery.tables.list
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações anteriores:
roles/bigquery.admin
roles/bigquery.dataEditor
roles/bigquery.dataViewer
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.PARTITIONS
, os resultados da consulta
contêm normalmente uma linha para cada partição. A exceção ocorre quando existe uma combinação de dados de nível de armazenamento ativos e de longo prazo na partição __UNPARTITIONED__
. Nesse caso, a vista devolve duas linhas para a partição __UNPARTITIONED__
, uma para cada nível de armazenamento.
A vista INFORMATION_SCHEMA.PARTITIONS
tem o seguinte esquema:
Nome da coluna | Tipo de dados | Valor |
---|---|---|
TABLE_CATALOG |
STRING |
O ID do projeto que contém a tabela |
TABLE_SCHEMA |
STRING |
O nome do conjunto de dados que contém a tabela, também conhecido como
datasetId |
TABLE_NAME |
STRING |
O nome da tabela, também conhecido como tableId |
PARTITION_ID |
STRING |
O ID de uma única partição. Para tabelas não particionadas, o valor é
NULL . Para tabelas particionadas que contêm linhas com valores NULL na coluna de particionamento, o valor é __NULL__ . |
TOTAL_ROWS |
INTEGER |
O número total de linhas na partição |
TOTAL_LOGICAL_BYTES |
INTEGER |
O número total de bytes lógicos na partição |
LAST_MODIFIED_TIME |
TIMESTAMP |
A hora mais recente em que os dados foram escritos na partição. É usada para calcular a elegibilidade de uma partição para armazenamento a longo prazo. Após 90 dias, a partição passa automaticamente do armazenamento ativo para o armazenamento a longo prazo. Para mais informações, consulte os preços de armazenamento do BigQuery. Este campo é atualizado quando os dados são inseridos, carregados, transmitidos ou modificados na partição. As modificações que envolvem eliminações de registos podem não ser refletidas. |
STORAGE_TIER |
STRING |
O nível de armazenamento da partição:
|
Âmbito e sintaxe
As consultas nesta vista têm de incluir um qualificador de conjunto de dados. Para consultas com um qualificador de conjunto de dados, tem de ter autorizações para o conjunto de dados. Para mais informações, consulte 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.]DATASET_ID.INFORMATION_SCHEMA.PARTITIONS |
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. -
DATASET_ID
: o ID do seu conjunto de dados. Para mais informações, consulte o artigo Qualificador de conjunto de dados.
Exemplos
Exemplo 1
O exemplo seguinte calcula o número de bytes lógicos usados por cada nível de armazenamento em todas as tabelas num conjunto de dados denominado mydataset
:
SELECT storage_tier, SUM(total_logical_bytes) AS logical_bytes FROM `mydataset.INFORMATION_SCHEMA.PARTITIONS` GROUP BY storage_tier;
Os resultados têm um aspeto semelhante ao seguinte:
+--------------+----------------+ | storage_tier | logical_bytes | +--------------+----------------+ | LONG_TERM | 1311495144879 | | ACTIVE | 66757629240 | +--------------+----------------+
Exemplo 2
O exemplo seguinte cria uma coluna que extrai o tipo de partição do campo partition_id
e agrega informações de partição ao nível da tabela para o conjunto de dados público bigquery-public-data.covid19_usafacts
:
SELECT table_name, CASE WHEN regexp_contains(partition_id, '^[0-9]{4}$') THEN 'YEAR' WHEN regexp_contains(partition_id, '^[0-9]{6}$') THEN 'MONTH' WHEN regexp_contains(partition_id, '^[0-9]{8}$') THEN 'DAY' WHEN regexp_contains(partition_id, '^[0-9]{10}$') THEN 'HOUR' END AS partition_type, min(partition_id) AS earliest_partition, max(partition_id) AS latest_partition_id, COUNT(partition_id) AS partition_count, sum(total_logical_bytes) AS sum_total_logical_bytes, max(last_modified_time) AS max_last_updated_time FROM `bigquery-public-data.covid19_usafacts.INFORMATION_SCHEMA.PARTITIONS` GROUP BY 1, 2;
Os resultados têm um aspeto semelhante ao seguinte:
+-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | table_name | partition_type | earliest_partition | latest_partition_id | partition_count | sum_total_logical_bytes | max_last_updated_time | +--------------+-------------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+ | confirmed_cases | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:25.604000 UTC | | deaths | DAY | 20221204 | 20221213 | 10 | 26847302 | 2022-12-13 00:09:24.709000 UTC | | summary | DAY | 20221204 | 20221213 | 10 | 241285338 | 2022-12-13 00:09:27.496000 UTC | +-----------------+----------------+--------------------+---------------------+-----------------+-------------------------+--------------------------------+