Big Query: Inserindo Dados com CTEs (Common Table Expressions)

O comando INSERT INTO é utilizado para inserir dados em uma tabela existente. Quando combinado com CTEs, ele pode realizar inserções de dados derivados de subconsultas de maneira organizada. As CTEs são definidas usando a palavra-chave WITH e podem ser usadas para realizar operações como UNION , JOIN , entre outras.


 

📝 Script de Inserção de Dados Usando CTEs

Aqui está um exemplo de como inserir dados em uma tabela utilizando duas CTEs, com união de resultados entre elas:

 INSERT INTO Table ( field1 ) 
WITH MyCTE AS ( 
    SELECT field1 FROM MyTable ), 
MyCTE2 AS ( 
    SELECT field1 FROM MyTable2 ), 
Union_CTEs AS ( 
    SELECT field1 FROM MyCTE UNION SELECT field1 FROM MyCTE2 ) 
SELECT field1 FROM Union_CTEs;  

 

🔍 Explicação do Script

  • INSERT INTO Table (field1)
    O comando INSERT INTO insere dados na tabela Table , especificamente na coluna field1 .

  • CTE MyCTE
    A primeira CTE chamada MyCTE seleciona dados da coluna field1 da tabela MyTable . Essa subconsulta serve como uma base de dados temporária, disponível apenas durante a execução da consulta.

  • CTE MyCTE2
    A segunda CTE, MyCTE2 , faz o mesmo tipo de seleção da tabela MyTable2 , também extraindo dados da coluna field1 .

  • CTE Union_CTEs
    A terceira CTE, chamada Union_CTEs , combina os resultados das duas CTEs anteriores utilizando a cláusula UNION . O UNION elimina valores duplicados entre as duas CTEs e gera um conjunto de resultados único.

  • SELECT field1 FROM Union_CTEs
    Finalmente, a consulta SELECT pega os dados da CTE Union_CTEs , que já contém os dados combinados das duas CTEs anteriores. Esses dados são então inseridos na tabela Table .


 

Benefícios de Usar CTEs no BigQuery

  • 📊 Simplicidade e Clareza
    Usar CTEs para organizar subconsultas complexas em partes lógicas facilita a compreensão do código. Elas ajudam a dividir operações complexas em partes menores e reutilizáveis, sem a necessidade de subconsultas embutidas em outros lugares da consulta.

  • 🔍 Melhoria no Desempenho
    CTEs podem ser reutilizadas em várias partes da consulta, evitando a necessidade de escrever o mesmo código repetidamente. Isso pode, em alguns casos, melhorar o desempenho da consulta, tornando-a mais eficiente.

  • 💡 Reusabilidade
    CTEs oferecem a flexibilidade de criar subconsultas temporárias que podem ser reutilizadas dentro da mesma consulta, sem a necessidade de recriar logicamente a mesma estrutura várias vezes.


 

🖥️ Exemplo Prático de Inserção com CTEs

Vamos supor que você tenha duas tabelas, MyTable e MyTable2 , com dados de produtos, e deseja combinar os dados de ambas para inseri-los em uma tabela de inventário. O script abaixo faz isso utilizando CTEs:

 INSERT INTO Inventory (product_id, product_name) 
WITH ProductCTE AS ( 
    SELECT product_id, product_name FROM Products ), 
DiscountCTE AS ( 
    SELECT product_id, product_name FROM DiscountedProducts ), 
CombinedCTE AS ( 
    SELECT product_id, product_name FROM ProductCTE 
    UNION 
    SELECT product_id, product_name FROM DiscountCTE ) 
SELECT product_id, product_name FROM CombinedCTE;  

Este exemplo ilustra como combinar dados de duas fontes (produtos e produtos com desconto) e inseri-los em uma tabela de inventário de maneira eficiente.


 

🏁 Considerações Finais

As CTEs são uma ferramenta poderosa no BigQuery que simplifica a criação de consultas complexas e facilita a inserção de dados de várias fontes em uma tabela. Ao usar CTEs, você pode organizar melhor o seu código, melhorar a legibilidade e otimizar a performance das suas consultas.

Além disso, o uso de UNION nas CTEs ajuda a combinar dados de diferentes fontes sem duplicação, garantindo que apenas registros únicos sejam inseridos na tabela de destino.

Se você trabalha com conjuntos de dados grandes ou precisa combinar várias fontes de dados antes de inseri-los em uma tabela, a utilização de CTEs será uma excelente prática para otimizar suas operações no BigQuery.


 

💡 Dica: CTEs podem ser usadas não apenas em operações de inserção, mas também em consultas SELECT , UPDATE e DELETE , tornando-as uma ferramenta versátil para manipulação de dados no BigQuery.

Data de Publicação: 08-07-2024

Categoria: Big Query