đ FunçÔes de Ranqueamento no SQL e DAX: Organize Seus Dados com PrecisĂŁo!
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:
đ„ 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:
đą 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:
đ 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:
𧟠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:
⥠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! đŹ