RANK
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Retorna a classificação do contexto atual na partição especificada, classificada de acordo com a ordem especificada. Se não for possível encontrar uma correspondência, a classificação ficará em branco.
Sintaxe
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parâmetros
Termo | Definição |
---|---|
empates | (Opcional) Define como lidar com a classificação quando duas ou mais linhas estão vinculadas. Se especificado, o valor com suporte será DENSE ou SKIP. Se omitido: – É padronizado para SKIP |
relação | (Opcional) Uma expressão de tabela da qual a linha de saída é retornada. Se especificado, todas as colunas em <orderBy> e <partitionBy> deverão vir dela. Se omitido: – <orderBy> deve ser especificado explicitamente. – Todas as colunas <orderBy> e <partitionBy> devem ser totalmente qualificadas e vir de uma única tabela. – O padrão é ALLSELECTED() de todas as colunas em <orderBy> e <partitionBy>. |
axis | (Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais e substitui a <relação>. |
orderBy | (Opcional) Uma cláusula ORDERBY() que contém as colunas que definem como cada partição é classificada. Se omitido: – <relation> deve ser especificado explicitamente. – O padrão é ordenar por cada coluna em <relation> que ainda não está especificada em <partitionBy>. |
em branco | (Opcional) Uma enumeração que define como manipular valores em branco durante a classificação. Os valores com suporte são:
|
partitionBy | (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que definem como <relation> é particionado. Se omitida, <relation> será tratada como uma única partição. |
matchBy | (Opcional) Uma cláusula MATCHBY() que contém as colunas que definem como corresponder dados e identificar a linha atual. |
reset | (Opcional) Disponível apenas no cálculos visuais. Indica se o cálculo será redefinido e em que nível da hierarquia de colunas da forma visual. Os valores aceitos são: NONE, LOWESTPARENT, HIGHESTPARENT, ou um inteiro. O comportamento depende do sinal do número inteiro: - Se for zero ou omitido, o cálculo não será redefinido. Equivalente a NONE. - Se positivo, o inteiro identificará a coluna começando pela mais alta, independentemente da granularidade. HIGHESTPARENT é equivalente a 1. - Se negativo, o inteiro identificará a coluna a partir da mais baixa, em relação à granularidade atual. LOWESTPARENT é equivalente a -1. |
Valor retornado
O número de classificação do contexto atual.
Comentários
Cada coluna <orderBy>, <partitionBy> w <matchBy> deve ter um valor externo correspondente para ajudar a definir a linha atual na qual operar, com o seguinte comportamento:
- Se houver exatamente uma coluna externa correspondente, seu valor será usado.
- Se não houver nenhuma coluna externa correspondente:
- RANK determinará primeiro todas as colunas <orderBy>, <partitionBy> e <matchBy> que não têm uma coluna externa correspondente.
- Para cada combinação de valores existentes dessas colunas no contexto pai de RANK, RANK é avaliado e uma linha é retornada.
- A saída final de RANK é um número de classificação.
Se <matchBy> estiver presente, RANK tentará usar colunas em <matchBy> e <partitionBy> para dividir a linha atual.
Se as colunas especificadas em <orderBy> e <partitionBy> não puderem identificar exclusivamente cada linha em <relation>, duas ou mais linhas poderão ter a mesma classificação e ela será determinada pelo parâmetro de vínculos.
RANK retorna um valor em branco para o total de linhas. É recomendado testar a expressão completamente.
RANK não se compara a RANKX da mesma forma que SUM se compara a SUMX.
<reset> só pode ser usado em cálculos visuais e não pode ser usado em combinação com <orderBy> ou <partitionBy>. Se <redefinir> estiver presente, o <eixo> poderá ser especificado, mas a <relação> não.
Exemplo 1: coluna calculada
A seguinte consulta DAX:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"Rank",
RANK(
DENSE,
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
LAST,
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
Retorna uma tabela que classifica cada geografia com o mesmo EnglishCountryRegionName, de acordo com os respectivos StateProvinceName e City. Os valores da coluna <orderBy> em branco são classificados no final.
Exemplo 2 – cálculo visual
As seguintes consultas DAX de cálculo visual:
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
Crie duas colunas que classificam cada mês pelo total de vendas, ambas dentro de cada ano, e todo o histórico.
A captura de tela abaixo mostra a matriz visual e a primeira expressão de cálculo visual: