Publicação de Edipo Silva

Ver perfil de Edipo Silva, gráfico

Data Engineer | Tech Lead | AWS Certified | Big Data | Spark | Hadoop | Hive | Impala | Python | Shell Script | Java | Scrum Master

Dica de SQL O comando SQL abaixo, é super útil e você provavelmente ainda nao usa: QUALIFY QUALIFY é tipo uma carta na manga. Depois que você descobre, começa a usar em todo lugar. Pra que serve o QUALIFY? 1. Deixa as consultas mais simples 2. Torna o código mais fácil de entender Apesar de ser considerado SQL “avançado”, ele simplifica muito as coisas. Veja um exemplo. Normalmente, você faz algo assim: • Usa uma função de janela(Window function) como ROW_NUMBER() ou RANK() para numerar suas linhas. • Faz uma subconsulta com WHERE para pegar só a linha número 1. Isso dá um trabalhão. Com QUALIFY, fica muito mais fácil: • Simplesmente use QUALIFY! A notícia ruim é que QUALIFY não está disponível em todas as versões de SQL nem em todos os sistemas de gerenciamento de banco de dados (SGBD). Atualmente, QUALIFY é suportado principalmente pelo Snowflake e pelo Teradata. Outros SGBDs populares, como PostgreSQL, MySQL, Oracle e SQL Server, não suportam QUALIFY. Nesses casos, o jeito é seguir a abordagem tradicional e torcer para os SGBDs adicionarem o QUALIFY nas versões futuras! Na imagem está um exemplo de código SQL para mostrar a diferença: muito mais limpo e fácil de entender! #SQL #dataengineering #QUALIFY

  • Não foi fornecido texto alternativo para esta imagem
Lucas Dias

Team Lead Analytics Engineer | dbt Certified | SnowPro Core Certified | SQL | Modern Data Stack

2 sem

Edipo Silva eu uso bastante essa função janela no meu dia a dia como analytics engineer. Inclusive, uma sugestão seria colocar o row_number na mesma linha do qualify. Faço isso para não ter uma coluna “row_num” na minha tabela final. Se você colocar “qualify ROW_NUMBER() OVER (PARTITION BY category ORDER BY date DESC) = 1” você vai ter o mesmo resultado, sem ter uma coluna nova na sua tabela final.

Rodrigo Silviano

DBA | DBRE | Cloud Operations DBA | Oracle | MySQL | MS SQLServer | Postgres | OCI | Exadata | AWS RDS

2 sem

Antes de sair usando funções de qualquer tipo dentro do banco de dados, converse com o DBA. Às vezes, a utilização de funções em tabelas muito grandes ou uma grande utilização dessas funções, pode gerar alto consumo de cpu no banco de dados por sessão e gerar grande lentidão... Trabalhem juntos... é a melhor forma de ter um sistema rápido e sem onerar servidor de aplicação, banco de dados, redes, sistemas operacionais... uma consulta mal feita ou um parâmetro diferente no banco de dados podem derrubar um site inteiro... Lembrem-se que nem sempre o mais fácil é o melhor para o ambiente. Trabalhem juntos. Abraço à todos

Thaiany Targino

Auxiliar de Escritório | Auxiliar de Logística | Administração de Escritório | Controle de Estoque | Processamento de Pedidos | Gestão de Documentos | Melhoria Contínua | Atendimento ao Cliente

3 d

Oi Edipo Silva sabe onde tem esse curso gratuito? Estou doida para fazer...

Ygor Marques

Engenheiro de Dados | Segmento Farmacêutico

6 d

Ótima dica! Eu não sei se no SQL Server isso funciona, mas no BQ/Dataform, meus atuais ambientes de trabalho, eu ainda faço algo parecido com: SELECT * FROM orders QUALIFY   ROW_NUMBER() OVER(PARTITION BY category ORDER BY date DESC) = 1 Apesar da sua opção ser mais legível, dá para simplificar ainda mais, caso não queiramos mostrar a coluna de contagem das linhas. Dica para quem trabalha com GCP! 😍

Ivanildo Barauna

Sr. Data Engineer at @MercadoLivre | Python | GCP | BigQuery | ETL

2 sem

Qualify é canivete suiço mesmo. Eu nem uso o campo row_num como retorno da consulta, sempre uso junto com o where mesmo, facilita ainda mais, algo nessa linha: SELECT * FROM TABLE WHERE TRUE QUALIFY (ROW_NUMBER() OVER(PARTITION BY CATEGORY ORDER BY DATE DESC) =1

Wendell Lousada de Carvalho

Gerente de desenvolvimento de sistemas na FUJIOKA ELETRO IMAGEM S/A

1 d

Já não resolveria com... Select top 1 * from orders order by Date desc Ou Select * from orders order by Date desc limit 1; (Dependendo da sintaxe do sgbd)

Diego Borges

Electronic Engineer | Senior Data Analyst at Spassu | Data Visualization | Data Modeling

2 sem

Nossa, não faz ideia de como isso teria tornado minha vida mais fácil anos atrás, principalmente na hora de repassar a query pra outra pessoa kkkk. Saberia me dizer se, em questões de processamento de dados e custos, fica mais pesado, mais leve ou a mesma coisa? No mais, muito obrigado pela preciosa dica!

Carlos Rafael Silva

Especialista em Dados | SAP | Hubspot | SQL | Python | AWS | Azure | Snowflake | Business Intelligence | LSS Green Belt

2 sem

Boa ! Descobri o qualify pouco mais de 1 ano, e de fato, uso sempre que possível. Até mesmo quando estou revisitando códigos antigos faço a substituição pois o processamento no snowflake é mais eficiente utilizando ele ao invés do método tradicional.

Ver mais comentários

Entre para ver ou adicionar um comentário