Calcular as classificações

Concluído

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

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

Tal como acontece com todas as funções de iterador, tem de transmitir uma tabela e uma expressão. Opcionalmente, pode transmitir um valor de classificação, definir a direção da ordem ou determinar como processar classificações quando os valores estão ligados.

Direção de ordenação

A direção de ordenação pode ser ascendente ou descendente. Ao classificar algo favorável, como valores de receita, é provável que utilize a ordem descendente para que a receita mais alta seja classificada em primeiro lugar. Ao classificar algo desfavorável, como reclamações de clientes, poderá utilizar uma ordem ascendente para que o menor número de reclamações seja classificado em primeiro lugar. Quando não transmite um argumento de ordem, a função utilizará 0 (zero) (para ordem descendente).

Processar empates

Pode processar os empates ao ignorar os valores de classificação ou ao utilizar a classificação densa, que utiliza o próximo valor de classificação após um empate. Quando não transmitir um argumento ties, a função utilizará Ignorar. Terá a oportunidade de trabalhar com um exemplo de cada argumento de empate mais à frente nesta unidade.

Criar medidas de classificação

Adicione a seguinte medida à tabela Produto :

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

Adicione a medida Classificação da Quantidade de Produtos ao elemento visual de tabela que se encontra na Página 2 do relatório. O elemento visual de tabela agrupa bicicletas e apresenta a quantidade, que ordena os produtos por quantidade descendente.

A RANKX função itera sobre uma tabela devolvida pela função ALL DAX. A ALL função é utilizada para devolver todas as linhas numa tabela de modelo ou valores numa ou mais colunas e ignora todos os filtros. Por conseguinte, neste caso, devolve uma tabela que consiste em todos os valores de coluna Produto na tabela Produto . A RANKX função tem de utilizar a ALL função porque o elemento visual de tabela irá agrupar por produto (que é um filtro na tabela Produto ).

No elemento visual de tabela, repare que existe um empate entre dois produtos no décimo lugar e que a classificação do próximo produto é 12. Este elemento visual é um exemplo de como utilizar o argumento ties Skipped.

Imagem a mostrar um elemento visual de tabela com o título Vendas de Bicicletas. Tem três colunas: Produto, Quantidade e Classificação da Quantidade de Produtos. As linhas da tabela estão ordenadas por Quantidade descendente. Dois produtos partilham a classificação 10 e a classificação do próximo produto é 12.

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

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

No elemento visual de tabela, repare que já não existe nenhuma classificação ignorada. A seguir aos dois produtos no décimo lugar, aparece a classificação 11.

Imagem a mostrar um elemento visual de tabela com o título Vendas de Bicicletas. Tem três colunas: Produto, Quantidade e Classificação da Quantidade de Produtos. As linhas da tabela estão ordenadas por Quantidade descendente. Dois produtos partilham a classificação 10 e a classificação do próximo produto é 11.

Repare que o total do elemento visual de tabela para Classificação da Quantidade de Produtos é um (1). Tal deve-se ao facto de estar classificado o total de todos os produtos.

Imagem a mostrar que o total da Classificação de Quantidade de Produtos é 1.

Não é adequado classificar o total de produtos, pelo que, agora, vai utilizar a seguinte lógica para modificar a definição da medida para devolver BLANK, a menos que seja filtrado um único produto:

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

Imagem a mostrar que o total da Classificação de Quantidade de Produtos é BLANK.

Repare que a Classificação total da Quantidade de Produtos é agora BLANK, o que foi obtido com a HASONEVALUE função DAX para testar se a coluna Produto na tabela Produto tem um único valor no contexto de filtro. É o caso para cada grupo de produtos, mas não para o total, que representa todos os produtos.

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