Share via


ROWNUMBER

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Retorna a classificação exclusiva do contexto atual na partição especificada, classificada de acordo com a ordem especificada. Se não for possível encontrar uma correspondência, o número de linhas ficará em branco.

Sintaxe

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

Parâmetros

Termo Definição
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:
  • DEFAULT (o valor padrão), em que o comportamento de valores numéricos é valores em branco são ordenados entre valores zero e negativos. 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 fim, independentemente da ordem de classificação crescente ou decrescente.

Observe que, quando o parâmetro <blanks> e os espaços em branco na função ORDERBY() na expressão individual são especificados, os <espaços em branco> na expressão orderBy individuais têm prioridade para a expressão orderBy relevante e as expressões orderBy sem <espaços em branco> especificados respeitarão o parâmetro <blanks> na função Windowdow 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 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 linhas 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:
    • ROWNUMBER 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 ROWNUMBER, ROWNUMBER é avaliado e uma linha é retornada.
    • A saída final de ROWNUMBER é uma união dessas linhas.
  • Se houver mais de uma coluna externa correspondente, um erro será retornado.

Se <matchBy> estiver presente, ROWNUMBER 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 todas as linhas em <relation>:

  • ROWNUMBER tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • Se for possível encontrar essas colunas, ROWNUMBER
    • Tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
    • Acrescentará automaticamente essas novas colunas à cláusula <orderBy>.
    • Classificará cada partição usando esse novo conjunto de colunas orderBy.
  • Se não for possível encontrar essas colunas e a função detectar um vínculo no runtime, um erro será retornado.

<redefinir> 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',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Retorna uma tabela que classifica exclusivamente cada geografia com o mesmo EnglishCountryRegionName, de acordo com os respectivos StateProvinceName e City.

Exemplo 2: cálculo visual

As seguintes consultas DAX de cálculo visual:

SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

Crie duas colunas que classifiquem cada mês de forma exclusiva pelo total de vendas, tanto dentro de cada ano quanto em todo o histórico.

A captura de tela abaixo mostra a matriz visual e a primeira expressão de cálculo visual:

Cálculo visual do DAX

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK