Article image
Júlio Droszczak
Júlio Droszczak25/01/2025 19:42
Compartilhe

📊 Funções de Ranqueamento no SQL e DAX: Organize Seus Dados com Precisão!

  • #SQL
  • #Power BI

Você precisa manter uma ordem específica nos seus datasets, especialmente ao trabalhar com tabelas? As funções de ranqueamento são as suas aliadas! Elas são essenciais para apresentar dados em formatos tabulares ou para garantir uma sequência lógica nos resultados. Vamos explorar as principais funções de ranqueamento no SQL e como replicá-las no DAX, com exemplos práticos para você aplicar no seu dia a dia. 💡

🥇 RANK()

  • O que faz: Atribui uma classificação para cada linha com base em uma ordem especificada. Valores empatados recebem a mesma classificação, mas a próxima classificação é pulada.
  • Fun Fact: Tanto no SQL quanto no DAX, há funções nativas para implementar isso com facilidade.
Exemplo SQL:
SELECT 
  EmployeeID, 
  Salary, 
  RANK() OVER (ORDER BY Salary DESC) AS Rank
FROM Employees;
Exemplo DAX:
Rank = 
RANKX(
  ALL(Employees),
  Employees[Salary],
  ,
  DESC
)
Resultado:

image

🥈 DENSE_RANK()

  • O que faz: Similar ao RANK(), mas não pula valores após empates.
  • Fun Fact: Essa função é suportada nativamente em SQL e DAX para resultados consistentes.
Exemplo SQL:
SELECT 
  EmployeeID, 
  Salary, 
  DENSE_RANK() OVER (ORDER BY Salary DESC) AS DenseRank
FROM Employees;
Exemplo DAX:
DenseRank = 
RANKX(
  ALL(Employees),
  Employees[Salary],
  ,
  DESC,
  DENSE
)
Resultado:

image

🔢 ROW_NUMBER()

  • O que faz: Atribui um número único para cada linha com base em uma ordem especificada.
  • Fun Fact: No SQL, é direto. No DAX, você precisa usar uma coluna única, como IDs, para garantir números exclusivos.
Exemplo SQL:
SELECT 
  EmployeeID, 
  Salary, 
  ROW_NUMBER() OVER (ORDER BY Salary DESC) AS RowNumber
FROM Employees;
Exemplo DAX:
RowNumber = 
RANKX(
  FILTER(ALL(Employees), Employees[EmployeeID] <> BLANK()),
  Employees[EmployeeID],
  ,
  ASC
)
Resultado:

image

📊 NTILE()

  • O que faz: Divide os dados em n grupos iguais (ou quase iguais) e atribui a cada linha um número de grupo.
  • Fun Fact: No SQL, isso é nativo. No DAX, requer medidas personalizadas.
Exemplo SQL:
SELECT 
  EmployeeID, 
  Salary, 
  NTILE(4) OVER (ORDER BY Salary DESC) AS Quartile
FROM Employees;
Exemplo DAX:
Quartile = 
VAR TotalRows = COUNTROWS(ALL(Employees))
VAR GroupSize = ROUNDUP(DIVIDE(TotalRows, 4), 0)
VAR CurrentRank = RANKX(ALL(Employees), Employees[Salary], , DESC)
RETURN
ROUNDUP(DIVIDE(CurrentRank, GroupSize), 0)
Resultado:

image

🧮 PERCENT_RANK()

  • O que faz: Calcula a posição percentual de cada linha dentro do dataset.
  • Fun Fact: No SQL, há suporte nativo. No DAX, você pode simular o comportamento.
Exemplo SQL:
SELECT 
  EmployeeID, 
  Salary, 
  PERCENT_RANK() OVER (ORDER BY Salary ASC) AS PercentRank
FROM Employees;
Exemplo DAX:
PercentRank = 
VAR CurrentSalary = Employees[Salary]
VAR TotalRows = COUNTROWS(ALL(Employees))
VAR Rank = RANKX(ALL(Employees), Employees[Salary], , ASC, DENSE)
RETURN
DIVIDE(Rank - 1, TotalRows - 1)

Resultado:

image

Conclusão

SQL e DAX são ferramentas poderosas para organizar, ranquear e manipular dados, mas cada uma tem suas peculiaridades:

  • SQL oferece funções nativas diretas e práticas para ranking.
  • DAX é extremamente flexível, permitindo adaptações dinâmicas para visuais, embora exija mais esforço em cenários complexos.

Agora que você conhece essas funções, pode utilizá-las para criar dashboards mais organizados e análises mais precisas. 🚀

Tem alguma dúvida ou quer compartilhar suas experiências? Deixe nos comentários! 💬

Júlio César Droszczak - LinkedIn

Compartilhe
Comentários (1)
DIO Community
DIO Community - 27/01/2025 14:13

Muito boa explicação sobre as funções de ranqueamento no SQL e no DAX, Julio! É fascinante ver como essas ferramentas oferecem flexibilidade para organizar e analisar dados de forma precisa, especialmente quando se trata de apresentar resultados estruturados em dashboards ou relatórios.

A comparação entre SQL e DAX mostra como ambos têm seus pontos fortes. Enquanto o SQL oferece funções nativas diretas como RANK() e NTILE(), o DAX brilha ao permitir personalizações dinâmicas nos visuais, tornando-o ideal para o Power BI. A inclusão de exemplos claros e o detalhamento das peculiaridades de cada função facilitam muito a aplicação prática.

Qual dessas funções você mais utiliza no dia a dia? Compartilhar suas experiências pode ajudar outros a entenderem como essas ferramentas podem ser aplicadas em diferentes cenários.

Na DIO, acreditamos no poder da comunidade para compartilhar conhecimento e crescer juntos. Se quiser explorar mais sobre SQL, DAX ou criar visualizações incríveis, conte conosco para acompanhar sua jornada!