Como gerenciar dados de tabelas particionadas
Neste documento, você aprende a gerenciar dados de tabelas particionadas no BigQuery.
Decoradores de partição
Os decoradores de partição permitem que você faça referência a uma partição em uma tabela. Por exemplo, é possível usá-las para gravar dados em uma partição específica.
Um decorador de partição tem o formato table_name$partition_id
em que o formato do segmento partition_id
depende do tipo de particionamento:
Tipo de particionamento | Formato | Exemplo |
---|---|---|
Por hora | yyyymmddhh |
my_table$2021071205 |
Diariamente | yyyymmdd |
my_table$20210712 |
Mensalmente | yyyymm |
my_table$202107 |
Anualmente | yyyy |
my_table$2021 |
Intervalo de números inteiros | range_start |
my_table$40 |
Procurar os dados em uma partição
Para procurar os dados em uma partição especificada, use o comando bq head
com um decorador de partição.
Por exemplo, o comando a seguir lista todos os campos nas primeiras 10 linhas de my_dataset.my_table
na partição 2018-02-24:
bq head --max_rows=10 'my_dataset.my_tablee$20180224'
Gravar dados em uma partição específica
É possível carregar dados em uma partição específica usando o comando bq load
com um decorador de partição. O exemplo a seguir grava dados na partição
20160501
(1 de maio de 2016) de uma tabela atual, supondo que a tabela já esteja particionada por data:
bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv
Você também pode gravar os resultados de uma consulta em uma partição específica:
bq query \ --use_legacy_sql=false \ --destination_table='my_table$20160501' \ --append_table=true \ 'SELECT * FROM my_dataset.another_table'
Com o particionamento de tempo de ingestão, é possível usar essa técnica para carregar dados mais antigos na partição que corresponde ao horário em que os dados foram criados originalmente.
Você também pode usar essa técnica para ajustar os fusos horários. Por padrão, as partições de tempo de processamento são baseadas no horário UTC. Se você quiser que o horário da partição corresponda a um fuso horário específico, use os decoradores de partição para compensar o horário de ingestão UTC. Por exemplo, se você está no Horário padrão do Pacífico
(PST, na sigla em inglês), é possível carregar dados gerados em 1 de maio de 2016 PST na
partição dessa data usando o decorador de partição correspondente,
$20160501
.
Para colunas particionadas por unidade de tempo e intervalo de números inteiros, o ID da partição
especificado no decorador precisa corresponder aos dados que estão sendo gravados. Por exemplo, se
a tabela for particionada em uma coluna DATE
, o decorador precisará corresponder ao valor
nela. Caso contrário, ocorrerá um erro. No entanto, se você souber de antemão que
seus dados estão em uma única partição, especificar o decorador de partição poderá
melhorar o desempenho de gravação.
Para mais informações sobre como carregar dados, consulte Introdução ao carregamento de dados no BigQuery.
Transmitir dados para tabelas particionadas.
Para mais informações sobre como fazer streaming de dados para uma tabela particionada usando o método
tabledata.insertAll
,
consulte
Como fazer streaming para tabelas particionadas.
exportar dados da tabela
Exportar todos os dados de uma tabela particionada é o mesmo processo que exportar dados de uma tabela não particionada. Para mais informações, consulte Como exportar dados de tabelas.
Para exportar dados de uma partição individual, anexe o decorador de partição ao nome da tabela. Por exemplo, my_table$20160201
.
Também é possível exportar os dados das partições __NULL__
e __UNPARTITIONED__
anexando os nomes das partições ao nome da tabela. Por exemplo,
my_table$__NULL__
ou my_table$__UNPARTITIONED__
.
Segurança de tabelas particionadas
O controle de acesso para tabelas particionadas é o mesmo que o das tabelas padrão. Saiba mais em Introdução aos controles de acesso à tabela.
Próximas etapas
Para saber mais sobre como trabalhar com tabelas particionadas, consulte:
- Como criar tabelas particionadas
- Como gerenciar tabelas particionadas
- Como consultar tabelas particionadas