Carregar dados em tabelas particionadas

Neste documento, descrevemos como carregar dados em tabelas particionadas.

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 adiciona 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.

O exemplo anterior anexa dados a uma partição. Para substituir dados em uma partição, é preciso incluir sinalizações diferentes para cada comando, ou seja, bq load --replace=true ... e bq query --append_table=false .... Para mais informações sobre as sinalizações nesses comandos, consulte bq load e bq query.

Para mais informações sobre como carregar dados, consulte Introdução ao carregamento de dados no BigQuery.

Transmitir dados para tabelas particionadas.

Para informações sobre streaming de dados para uma tabela particionada com a API BigQuery Storage Write, consulte Particionamento de colunas de unidade de tempo.

A seguir

Para saber mais sobre como trabalhar com tabelas particionadas, consulte: