BigQuery agora oferece suporte à sintaxe SQL com pipe
(cloud.google.com)O que é a sintaxe Pipe Query?
- Uma extensão da GoogleSQL que permite escrever consultas com uma estrutura linear, mais fácil de ler e manter
- Suporta as mesmas operações da GoogleSQL existente (Standard SQL), como seleção, agrupamento, join e filtragem
- Permite definir livremente a ordem das operações e escrever consultas complexas sem subconsultas aninhadas
Standard SQL vs sintaxe Pipe Query
- Standard SQL
- É preciso seguir uma ordem sintática específica
- Ao usar múltiplas agregações, são necessárias CTEs (Common Table Expressions) ou subconsultas aninhadas
- É necessário repetir colunas duplicadas em
SELECT,GROUP BYeORDER BY
- Sintaxe Pipe Query
- Os operadores pipe podem ser aplicados em qualquer ordem
- É possível fazer múltiplas agregações de forma simples apenas adicionando operadores pipe
- Basta declarar a coluna uma única vez
Estrutura básica da sintaxe Pipe Query
-
- Começa com a cláusula
FROM
- Começa com a cláusula
-
- Adicione operações após
|>(operador pipe)
- Adicione operações após
-
- Conecte vários operadores
|>para montar a consulta em etapas
(ex.: é possível alterar a ordem entre filtragem → agregação → join)
- Conecte vários operadores
- Características principais
- É possível adicionar operadores pipe a qualquer consulta → dá para estender uma consulta GoogleSQL existente acrescentando um operador
|>ao final - A ordem das operações é livre → os operadores podem ser aplicados na ordem desejada e quantas vezes forem necessárias
- Pode ser usada em todos os ambientes compatíveis com GoogleSQL → utilizável em consultas, views, funções que retornam tabelas etc.
- Pode ser combinada com a sintaxe SQL existente → subconsultas em Standard SQL e consulta principal em sintaxe Pipe
- É possível referenciar todos os aliases definidos na etapa anterior
- Pode começar com a cláusula
FROM→ depois, basta adicionar operadores|>para expandir a consulta gradualmente
- É possível adicionar operadores pipe a qualquer consulta → dá para estender uma consulta GoogleSQL existente acrescentando um operador
Diferenças entre a sintaxe Pipe Query e o Standard SQL
- A consulta pode começar com a cláusula
FROM - O operador pipe de SELECT não realiza agregação. Para isso, usa-se separadamente o operador pipe AGGREGATE
- A filtragem é feita com o operador pipe WHERE. Ele unifica as funções de WHERE, HAVING e QUALIFY do Standard SQL. A filtragem pode ser aplicada em qualquer etapa → permitindo escrever consultas com mais flexibilidade
Vantagens da sintaxe Pipe Query
- Permite escrever consultas em uma ordem lógica → melhora a legibilidade
- Facilita a manutenção → operações complexas podem ser feitas sem subconsultas aninhadas
- Ordem de operações flexível → os operadores podem ser aplicados na sequência desejada
- Filtragem mais intuitiva → uso de WHERE para filtrar dados em várias etapas
- Facilita a escrita de consultas de agregação complexas → uso do operador AGGREGATE para agregações mais claras
O suporte está em fase Pre-GA e ainda é limitado
3 comentários
https://github.com/tc39/proposal-pipeline-operator
É um operador bem familiar, não é?
Depois de ver o prql primeiro e então olhar a sintaxe de pipeline do Google, ela parece um pouco confusa.
Comentários do Hacker News
A sintaxe de pipe do SQL foi implementada no Databricks em 30 de janeiro de 2025
PRQL é uma ideia semelhante que compila para SQL
Se a expansão da sintaxe SQL continuar, a complexidade pode aumentar
Quando a sintaxe de pipe foi anunciada pela primeira vez, a equipe do SQLite a testou
PRQL é uma sintaxe orientada a pipes para bancos de dados SQL e, por ser uma linguagem nova, não tem compatibilidade retroativa com SQL
Também pode ser usado no DuckDB
Digitar ">" depois do pipe pode ser incômodo
A linguagem Malloy não usa sintaxe de pipe, mas tem uma sintaxe analítica semelhante
Desde que comecei a usar Kusto Query Language, espero que o SQL passe a ter funcionalidades como essa