Introdução
No Google BigQuery, as tabelas nativas são aquelas que residem diretamente dentro do ambiente do BigQuery, ao contrário das tabelas externas, que leem dados de fontes externas. Criar uma tabela nativa no BigQuery envolve definir as colunas, tipos de dados, particionamento e outras opções que otimizam o armazenamento e o desempenho das consultas. Este artigo abordará a criação de uma tabela nativa no BigQuery, incluindo exemplos de particionamento, clusterização e outras opções úteis.
📋 Estrutura da Tabela Nativa no BigQuery
A criação de uma tabela nativa no BigQuery é feita utilizando o comando CREATE TABLE . Com isso, você pode especificar o esquema da tabela, definir partições e agrupamentos, além de adicionar configurações adicionais que tornam a tabela mais eficiente e organizada.
📝 Script de Criação de Tabela Nativa
Aqui está um exemplo de script SQL para criar uma tabela nativa no BigQuery com particionamento, clusterização e outras opções configuráveis:
CREATE TABLE `myproject.myds.mytables`
(
ID STRING OPTIONS (description = 'Código identificador'),
FIRST_NAME STRING OPTIONS (description = 'Primeiro nome'),
LAST_NAME STRING OPTIONS (description = 'Sobrenome'),
DATE DATETIME OPTIONS (description = 'Data do Cadastro'),
CUSTOM JSON OPTIONS (description = 'Outros dados customizados')
)
DEFAULT COLLATE ''
PARTITION BY DATE_TRUNC(DATE)
CLUSTER BY
ID,
FIRST_NAME
OPTIONS (
description = 'Descrição da Tabela',
partition_expiration_days = 850,
require_partition_filter = TRUE,
labels = [('Rótulo', 'Nome do Rótulo')]
);
🔍 Explicação do Script
-
CREATE TABLE
Este comando cria uma tabela no BigQuery. A tabela será criada dentro do dataset especificado ( myproject.myds ). -
Esquema da Tabela
As colunas da tabela são definidas logo após o nome da tabela. No exemplo:- ID (do tipo STRING ) é o código identificador.
- FIRST_NAME (do tipo STRING ) é o primeiro nome.
- LAST_NAME (do tipo STRING ) é o sobrenome.
- DATE (do tipo DATETIME ) representa a data do cadastro.
- CUSTOM (do tipo JSON ) armazena dados personalizados em formato JSON.
Cada coluna pode ter uma descrição associada, utilizando a opção OPTIONS (description = 'Descrição') .
-
DEFAULT COLLATE ''
Define a collation padrão para a tabela, que pode ser usada para ordenação de texto. Neste caso, o valor vazio indica que o padrão será utilizado. -
PARTITION BY DATE_TRUNC(DATE)
A tabela será particionada pela coluna DATE , utilizando a função DATE_TRUNC para dividir os dados em partições com base no valor da data. Isso melhora a performance das consultas, especialmente quando se lida com grandes volumes de dados. -
CLUSTER BY
A tabela será agrupada (clusterizada) pelas colunas ID e FIRST_NAME . Isso significa que os dados serão organizados no armazenamento com base nesses campos, o que otimiza a performance das consultas que envolvem essas colunas, pois o BigQuery pode ler os dados de forma mais eficiente. -
OPTIONS
A cláusula OPTIONS permite especificar configurações adicionais para a tabela:- description : Fornece uma descrição para a tabela.
- partition_expiration_days = 850 : Define o número de dias após os quais as partições da tabela serão automaticamente expiradas e removidas. No exemplo, as partições expiram após 850 dias.
- require_partition_filter = TRUE : Exige que um filtro de partição seja aplicado nas consultas. Isso ajuda a otimizar o uso de recursos ao consultar grandes volumes de dados, garantindo que apenas as partições relevantes sejam lidas.
- labels : Permite adicionar rótulos à tabela para organização e categorização. No exemplo, o rótulo é 'Rótulo' com o valor 'Nome do Rótulo' .
⚡ Benefícios de Tabelas Nativas no BigQuery
-
📊 Organização e Desempenho
Com particionamento e clusterização, as tabelas nativas no BigQuery oferecem um desempenho aprimorado ao consultar grandes volumes de dados. Particionamento ajuda a dividir os dados em segmentos lógicos (partições), enquanto a clusterização organiza os dados em blocos para facilitar a leitura. -
🔍 Consultas Mais Rápidas e Eficientes
O particionamento permite que as consultas acessem apenas as partições relevantes, o que reduz o tempo de execução. A clusterização, por sua vez, permite que os dados sejam armazenados de forma ordenada, tornando a leitura mais eficiente, especialmente em colunas utilizadas em filtros. -
📅 Gerenciamento de Dados
A expiração de partições após um número definido de dias ajuda a controlar a retenção de dados e a reduzir custos, removendo automaticamente dados antigos que não são mais necessários. -
🛠️ Organização e Manutenção
A adição de rótulos ( labels ) e descrições à tabela facilita a organização e o gerenciamento dos recursos dentro do BigQuery, especialmente em projetos grandes com múltiplas tabelas e datasets.
🖥️ Exemplo Prático de Consulta
Após a criação da tabela nativa, você pode realizar consultas de forma eficiente, aproveitando o particionamento e a clusterização. Por exemplo, para obter os registros de um determinado nome e data, você pode executar:
SELECT
FIRST_NAME,
LAST_NAME, DATE
FROM
`myproject.myds.mytables`
WHERE
FIRST_NAME = 'John' AND
DATE = '2025-01-01';
Essa consulta será otimizada pelo BigQuery, pois usará o particionamento da tabela para filtrar dados e a clusterização para acessar rapidamente as colunas FIRST_NAME e ID .
🏁 Considerações Finais
A criação de tabelas nativas no BigQuery oferece diversas vantagens, como organização, desempenho e facilidade de manutenção. O particionamento e a clusterização são recursos poderosos para otimizar a performance das consultas em grandes volumes de dados. Além disso, as opções de expiração e rótulos ajudam a manter os dados gerenciáveis e organizados, tornando o BigQuery uma solução escalável e eficiente para análise de dados em larga escala.
Se você está começando a trabalhar com BigQuery, a criação de tabelas nativas com particionamento e clusterização pode ser uma das melhores práticas para garantir que suas consultas sejam rápidas e eficientes, mesmo com conjuntos de dados volumosos.
💡 Dica: Ao criar tabelas nativas, sempre considere o particionamento e a clusterização como práticas recomendadas, especialmente se você estiver lidando com grandes volumes de dados. Essas configurações podem melhorar significativamente o desempenho das consultas no BigQuery.