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: