RANK
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Retorna a classificação para o contexto atual dentro da partição especificada, classificada pela ordem especificada. Se uma correspondência não puder ser encontrada, a classificação estará em branco.
Sintaxe
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parâmetros
Vigência | Definição |
---|---|
ties |
(Opcional) Define como lidar com a classificação quando duas ou mais linhas estão empatadas.
Se especificado, o valor suportado é DENSE ou SKIP. Se omitido: - Padrão para SKIP |
relation |
(Opcional) Uma expressão de tabela da qual a linha de saída é retornada.
Se especificado, todas as colunas em orderBy e partitionBy devem vir dele.
Se omitido: - orderBy deve ser explicitamente especificado.- Todas as colunas orderBy e partitionBy devem ser totalmente qualificadas e provir 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 relation . |
orderBy |
(Opcional) Uma cláusula ORDERBY() que contém as colunas que definem como cada partição é classificada.
Se omitido: - relation deve ser explicitamente especificado.
- O padrão é ordenar por cada coluna em relation que ainda não esteja especificado em partitionBy . |
blanks |
(Opcional) Uma enumeração que define como manipular valores em branco ao classificar o relation ou axis .
Os valores suportados são:
|
partitionBy |
(Opcional) Uma cláusula PARTITIONBY() que contém as colunas que definem como relation é particionada. Se omitido, relation é tratado como uma única partição. |
matchBy |
(Opcional) Uma cláusula MATCHBY() contendo as colunas que definem como corresponder dados e identificar a linha atual. |
reset |
(Opcional) Disponível apenas em cálculos visuais. Indica se o cálculo é redefinido e em que nível da hierarquia de colunas da forma visual. Os valores aceitos são: uma referência de campo a uma coluna na forma visual atual, NONE (padrão), LOWESTPARENT , HIGHESTPARENT ou um inteiro. O comportamento depende do sinal inteiro: - Se zero ou omitido, o cálculo não é reiniciado. Equivalente a NONE .
- Se positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT equivale a 1.
- Se negativo, o inteiro identifica a coluna a partir do mais baixo, em relação ao grão atual. LOWESTPARENT é equivalente a -1. |
Valor de retorno
O número de classificação para o contexto atual.
Comentários
Cada coluna
orderBy
,partitionBy
ematchBy
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 existir uma coluna exterior correspondente, então:
-
RANK primeiro determinará todas as colunas
orderBy
,partitionBy
ematchBy
que não tenham coluna externa correspondente. - Para cada combinação de valores existentes para essas colunas em RANK contexto pai, RANK é avaliada e uma linha é retornada.
- A saída final do RANKé um número de classificação.
-
RANK primeiro determinará todas as colunas
Se
matchBy
estiver presente, RANK tentará usar colunas emmatchBy
epartitionBy
para identificar a linha atual.Se as colunas especificadas em
orderBy
epartitionBy
não puderem identificar exclusivamente todas as linhasrelation
, então duas ou mais linhas podem ter a mesma classificação e a classificação será determinada pelo parâmetro ties.RANK retorna um valor em branco para o total de linhas. Recomenda-se que teste a sua expressão minuciosamente.
RANK não se compara a RANKX como SUM se compara a SUMX.
reset
pode ser usado apenas em cálculos visuais e não pode ser usado em combinação comorderBy
oupartitionBy
. Sereset
estiver presente,axis
pode ser especificado, masrelation
não pode.
Exemplo 1 - coluna calculada
O seguinte DAX consulta:
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, por seu StateProvinceName e City. Os valores das colunas orderBy
em branco são classificados no final.
Exemplo 2 - cálculo visual
O cálculo visual a seguir DAX consultas:
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, 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: