image

Accede a bootcamps ilimitados y a mĂĄs de 650 cursos

50
%OFF
Article image
JĂșlio Droszczak
JĂșlio Droszczak25/01/2025 19:42
Compartir

📊 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:

    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

    Compartir
    Comentarios (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!