Calcular as classificações
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 as classificações quando os valores estão associados.
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, pode utilizar a ordem ascendente para que o número mais baixo de reclamações seja classificado em primeiro lugar. Quando não transmitir 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 ALL
função DAX. A ALL
função é utilizada para devolver todas as linhas numa tabela ou valores de modelo 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.
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.
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.
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
)
)
Tenha em atenção que o total da Classificação da Quantidade de Produtos é agora BLANK, o que foi conseguido 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.