Use dados particionados externamente

Pode usar tabelas externas do BigQuery para consultar dados particionados nos seguintes armazenamentos de dados:

Os dados particionados externamente têm de usar um esquema de particionamento do Hive predefinido e estar num dos seguintes formatos:

  • Avro
  • CSV
  • JSON
  • ORC
  • Parquet

Para consultar dados particionados externamente, tem de criar uma tabela do BigLake ou uma tabela externa. Recomendamos a utilização de tabelas do BigLake porque permitem aplicar uma segurança detalhada ao nível da tabela. Para mais informações sobre o BigLake e as tabelas externas, consulte os artigos Introdução às tabelas do BigLake e Introdução às tabelas externas.

Ativa o suporte da partição Hive definindo as opções adequadas no ficheiro de definição de tabelas. Para ver instruções sobre como consultar tabelas particionadas geridas, consulte o artigo Introdução às tabelas particionadas.

Esquema de partição

As secções seguintes explicam o esquema de partição do Hive predefinido e os modos de deteção de esquemas que o BigQuery suporta.

Para evitar a leitura de ficheiros desnecessários e melhorar o desempenho, pode usar filtros de predicados em chaves de partição nas consultas.

Esquemas de dados suportados

As chaves de partição do Hive aparecem como colunas normais quando consulta dados do Cloud Storage. Os dados têm de seguir um esquema particionado do Hive predefinido. Por exemplo, os seguintes ficheiros seguem a disposição predefinida: os pares de chave-valor estão configurados como diretórios com um sinal de igual (=) como separador e as chaves de partição estão sempre pela mesma ordem:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename

O prefixo URI de origem comum neste exemplo é gs://my_bucket/my_table.

Esquemas de dados não suportados

Se os nomes das chaves de partição não estiverem codificados no caminho do diretório, a deteção do esquema de partição falha. Por exemplo, considere o seguinte caminho, que não codifica os nomes das chaves de partição:

gs://my_bucket/my_table/2019-10-31/en/my_filename

Os ficheiros em que o esquema não está numa ordem consistente também falham a deteção. Por exemplo, considere os dois ficheiros seguintes com codificações de chave de partição invertidas:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename

Modos de deteção

O BigQuery suporta três modos de deteção do esquema de partição do Hive:

  • AUTO: os nomes e os tipos de chaves são detetados automaticamente. Podem ser detetados os seguintes tipos:

  • STRINGS: os nomes das chaves são convertidos automaticamente no tipo STRING.

  • CUSTOM: O esquema da chave de partição é codificado conforme especificado no prefixo do URI de origem.

Esquema de chave de partição personalizado

Para usar um esquema CUSTOM, tem de especificar o esquema no campo de prefixo do URI de origem. A utilização de um esquema CUSTOM permite-lhe especificar o tipo de cada chave de partição. Os valores têm de ser analisados validamente como o tipo especificado, caso contrário, a consulta falha.

Por exemplo, se definir a flag source_uri_prefix como gs://my_bucket/my_table/{dt:DATE}/{val:STRING}, o BigQuery trata val como uma STRING, dt como uma DATE e usa gs://my_bucket/my_table como o prefixo do URI de origem para os ficheiros correspondentes.

Poda de partições

O BigQuery corta partições sempre que possível através de predicados de consulta nas chaves de partição. Isto permite que o BigQuery evite ler ficheiros desnecessários, o que ajuda a melhorar o desempenho.

Filtros de predicados em chaves de partição em consultas

Quando cria uma tabela particionada externamente, pode exigir a utilização de filtros de predicados em chaves de partição ativando a opção requirePartitionFilter em HivePartitioningOptions.

Quando esta opção está ativada, as tentativas de consultar a tabela particionada externamente sem especificar uma cláusula WHERE produzem o seguinte erro: Cannot query over table <table_name> without a filter over column(s) <partition key names> that can be used for partition elimination.

Limitações

  • O suporte de partição do Hive é criado partindo do princípio de que existe um prefixo de URI de origem comum para todos os URIs que termina imediatamente antes da codificação de partição, da seguinte forma: gs://BUCKET/PATH_TO_TABLE/.
  • A estrutura de diretórios de uma tabela particionada do Hive pressupõe que as chaves de partição aparecem pela mesma ordem, com um máximo de dez chaves de partição por tabela.
  • Os dados têm de seguir um esquema de partição do Hive predefinido.
  • As chaves de particionamento do Hive e as colunas nos ficheiros subjacentes não podem sobrepor-se.
  • O apoio técnico destina-se apenas ao GoogleSQL.

  • Aplicam-se todas as limitações para consultar origens de dados externas armazenadas no Cloud Storage.

O que se segue?