Calcular classificações
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.