Compartilhar via


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 ficará em branco.

Sintaxe

RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parâmetros

Prazo Definição
ties (Opcional) Define como lidar com a classificação quando duas ou mais linhas estão vinculadas.
Se especificado, o valor com suporte é DENSE ou SKIP.
Se omitido:
– Padrões 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 deverão vir dela.
Se omitido:
- orderBy deve ser especificado explicitamente.
- Todas as colunas orderBy e partitionBy devem ser totalmente qualificadas e provenientes 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 especificado explicitamente.
– O padrão é ordenar por cada coluna em relation que ainda não está especificada no partitionBy.
blanks (Opcional) Uma enumeração que define como lidar com valores em branco ao classificar o relation ou axis.
os valores com suporte são:
  • DEFAULT (o valor padrão), em que o comportamento dos valores numéricos é ordenado entre valores zero e negativo. O comportamento das cadeias de caracteres é que os valores em branco são ordenados antes de todas as cadeias de caracteres, incluindo cadeias de caracteres vazias.
  • FIRST, os espaços em branco são sempre ordenados no início, independentemente da ordem de classificação crescente ou decrescente.
  • LAST, os espaços em branco são sempre ordenados no final, independentemente da ordem de classificação crescente ou decrescente.

Observação, quando o parâmetro blanks e espaços em branco na função ORDERBY() em expressões individuais são especificados, blanks na expressão orderBy individual tem prioridade para a expressão orderBy relevante e expressões orderBy sem blanks sendo especificadas respeitarão o parâmetro blanks na função pai.
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 somente em cálculos visuais. Indica se o cálculo é redefinido e em qual 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, HIGHESTPARENTou um inteiro. O comportamento depende do sinal inteiro:
– se zero ou omitido, o cálculo não é redefinido. Equivalente a NONE.
- Se positivo, o inteiro identifica a coluna a partir da mais alta, independente da granulação. HIGHESTPARENT é equivalente a 1.
- Se negativo, o inteiro identifica a coluna a partir do menor, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Valor de retorno

O número de classificação do contexto atual.

Observações

  • Cada coluna orderBy, partitionBye 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, então:
      • RANK primeiro determinará todas as colunas orderBy, partitionBye matchBy que não têm nenhuma coluna externa correspondente.
      • Para cada combinação de valores existentes para essas colunas em RANK contexto pai, RANK é avaliado e uma linha é retornada.
      • RANKsaída final é um número de classificação.
  • Se matchBy estiver presente, RANK tentará usar colunas em matchBy e partitionBy para idenfity da 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 a classificação será determinada pelo parâmetro ties.

  • RANK retorna um valor em branco para o total de linhas. É recomendável que você teste sua expressão minuciosamente.

  • RANK não se compara a RANKX, pois SUM se compara a SUMX.

  • reset pode ser usado somente em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis poderá ser especificado, mas relation 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, por seu StateProvinceName e City. Os valores da coluna orderBy em branco são classificados no final.

Exemplo 2 – cálculo visual

O seguinte cálculo visual 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:

DAX de cálculo visual

INDEX ORDERBY PARTITIONBY WINDOW ROWNUMBER