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 tipoSTRING
.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?
- Saiba mais sobre as tabelas particionadas.
- Saiba como usar o SQL no BigQuery.