No Google BigQuery, existem dois dialetos de SQL disponíveis para consulta de dados: Legacy SQL e Standard SQL. Cada um possui características distintas, com diferenças em funcionalidade, sintaxe e compatibilidade. Abaixo, explico detalhadamente:
1. Legacy SQL
Descrição:
Legacy SQL é o dialeto SQL original do BigQuery, herdado das primeiras versões da ferramenta. Embora ainda seja suportado, o Google recomenda o uso do Standard SQL para novos projetos.
Características principais:
- Sintaxe específica do BigQuery: Legacy SQL usa convenções de sintaxe que não seguem totalmente os padrões ANSI SQL.
- Alias implícitos: Algumas funções e expressões geram automaticamente aliases para colunas, o que pode causar confusão em consultas mais complexas.
- Suporte para tabelas não especificadas: Permite referências diretas a tabelas sem a necessidade de prefixá-las com um projeto ou dataset.
- Suporte limitado a subconsultas: Legacy SQL tem limitações ao trabalhar com subconsultas e unificações mais avançadas.
- Configuração: Consultas em Legacy SQL devem ser ativadas explicitamente em ferramentas que suportam ambos os dialetos.
Exemplo de consulta:
SELECT TOP(name, 10) as most_common_names FROM [project_id:dataset_id.table_name];
2. Standard SQL
Descrição:
Standard SQL é baseado no padrão ANSI SQL e foi introduzido para aumentar a compatibilidade e funcionalidade das consultas. É o dialeto recomendado e habilitado por padrão no BigQuery.
Características principais:
- Conformidade com ANSI SQL: Usa uma sintaxe mais universal, permitindo que desenvolvedores de SQL padrão se adaptem facilmente.
-
Referência explícita de tabelas:
As tabelas devem ser especificadas com o formato
project_id.dataset_id.table_name
. - Funções mais robustas: Oferece suporte para funções de janela (window functions), joins complexos, subconsultas correlacionadas, arrays, JSON e muito mais.
- Aliases explícitos: Requer que todas as colunas e expressões tenham aliases definidos, evitando ambiguidades.
- Recomendações do Google: É o dialeto preferido para novas implementações devido à sua flexibilidade e compatibilidade.
Exemplo de consulta:
SELECT name, COUNT(*) as occurrences
FROM `project_id.dataset_id.table_name`
GROUP BY name
ORDER BY occurrences DESC
LIMIT 10;
Principais Diferenças:
Aspecto | Legacy SQL | Standard SQL |
---|---|---|
Conformidade com ANSI SQL | Não | Sim |
Ativação padrão | Desativado | Ativado |
Referência a tabelas | [project_id:dataset_id.table_name] |
`project_id.dataset_id.table_name` |
Funções avançadas | Suporte limitado | Suporte completo |
Subconsultas | Restrito | Totalmente compatível |
Aliases | Implícitos | Requeridos explicitamente |
Quando usar cada um?
Legacy SQL:
Útil apenas em sistemas legados ou consultas já existentes que seriam trabalhosas para converter.Standard SQL:
É recomendado para qualquer novo projeto ou consulta. Ele é mais poderoso, legível, compatível com padrões industriais e recebe atualizações contínuas.
Se você estiver começando, foque no Standard SQL, pois ele é o futuro do BigQuery.
Top comments (0)