Calcular classificações

Concluído

A função DAX RANKX é uma função de iterador especial que pode ser usada para calcular classificações. A sintaxe dela é a seguinte:

RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])

Semelhante ao que ocorre com todas as funções de iterador, você precisa inserir uma tabela e uma expressão. Opcionalmente, você poderá inserir um valor de classificação, definir a direção da ordem ou determinar como lidar com as classificações quando os valores estiverem empatados.

Direção da ordem

A direção da ordem é crescente ou decrescente. Ao classificar algo favorável, como valores de receita, é provável que você use ordem decrescente para que a receita mais alta seja classificada primeiro. Ao classificar algo desfavorável, como reclamações do cliente, você pode usar a ordem crescente para que o número mais baixo de reclamações seja classificado primeiro. Quando você não insere um argumento order, a função usa 0 (zero) (para a ordem decrescente).

Administrar empates

Você pode administrar empates ignorando os valores de classificação ou usando a classificação densa, que usa o próximo valor de classificação após um empate. Quando você não insere um argumento ties, a função usa Ignorar. Você terá a oportunidade de trabalhar com um exemplo de cada argumento tie posteriormente nesta unidade.

Criar medidas de classificação

Adicione a seguinte medida à tabela Product:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity]
)

Adicione a medida Classificação da Quantidade de Produtos ao visual de tabela encontrado na Página 2 do relatório. O visual da tabela agrupa os produtos para bicicleta e exibe a quantidade, que ordena os produtos por quantidade decrescente.

A função RANKX itera em uma tabela que é retornada pela função DAX ALL. A função ALL é usada para retornar todas as linhas em uma tabela de modelo ou valores em uma ou mais colunas e ignora todos os filtros. Portanto, nesse caso, ela retorna uma tabela que consiste em todos os valores da coluna Product na tabela Product. A função RANKX precisa usar a função ALL, pois o visual da tabela será agrupado por produto (que é um filtro na tabela Product).

No visual da tabela, observe que dois produtos estão empatados no décimo lugar e que a classificação do próximo produto é 12. Esse visual é um exemplo de como usar o argumento ties Skipped.

A próxima tarefa é inserir a seguinte lógica para modificar a definição de medida da Classificação da Quantidade de Produtos para usar a classificação densa:

Product Quantity Rank =
RANKX(
    ALL('Product'[Product]),
    [Quantity],
    ,
    ,
    DENSE
)

No visual da tabela, observe que uma classificação ignorada não existe mais. Depois dos dois produtos que estão empatados no décimo lugar, a próxima classificação será 11.

Observe que o total de visuais da tabela para a Classificação da Quantidade de Produtos é um (1). O motivo é que o total de todos os produtos é classificado.

Não é apropriado classificar os produtos totais, portanto, você usará a seguinte lógica para modificar a definição de medida para que ela retorne BLANK, a menos que um único produto seja filtrado:

Product Quantity Rank =
IF(
    HASONEVALUE('Product'[Product]),
    RANKX(
        ALL('Product'[Product]),
        [Quantity],
        ,
        ,
        DENSE
    )
)

Observe que o total de Product Quantity Rank é BLANK, valor que foi obtido usando a função DAX HASONEVALUE para testar se a coluna Product na tabela Product tem um só valor no contexto de filtro. Esse é o caso de cada grupo de produtos, mas não do total, que representa todos os produtos.

O contexto de filtro e a função HASONEVALUE serão apresentados no módulo de contexto de filtro.