Calcular as classificações

Concluído

A função DAX RANKX é uma função especial de iterador que pode ser utilizada para calcular as 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 para encontrar a direção de ordenação ou para ajudar a determinar como processar classificações quando os valores estão empatados.

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 dos clientes, pode utilizar a ordem ascendente para que o número mais baixo de reclamações seja classificado em primeiro lugar. Quando não transmite um argumento order, a função utiliza a 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 transmite um argumento ties, a função utiliza skipped. Terá a oportunidade de trabalhar com um exemplo de cada argumento de empate nas secções subsequentes.

Criar medidas de classificação

Adicione a seguinte medida:

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 função RANKX itera sobre uma tabela que é devolvida pela função DAX ALL. A função ALL é utilizada para devolver todas as linhas numa tabela de modelo ou todos os valores numa ou mais colunas e ignora todos os filtros. Portanto, neste caso, a função devolve uma tabela que é composta por todos os valores da coluna Produto na tabela Produtos. A função RANKX deve utilizar a função ALL, porque o elemento visual de tabela vai agrupar por produto (que é um filtro na tabela Produtos).

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 o total da Classificação da Quantidade de Produtos é agora BLANK, que foi obtido com a função DAX HASONEVALUE para testar se a coluna Produto na tabela Produtos 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 função HASONEVALUE serão apresentados no módulo do contexto de filtro.