Share via


INDEX

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Retorna uma linha em uma posição absoluta, especificada pelo parâmetro position, dentro da partição especificada, classificada pela ordem especificada. Se a partição atual não puder ser deduzida para uma única partição, várias linhas poderão ser retornadas.

Sintaxe

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

Parâmetros

Termo Definição
position A posição absoluta (baseada em 1) da qual obter os dados:
– <position> é positivo: 1 é a primeira linha, 2 é a segunda linha etc.
– <position> é negativo: -1 é a última linha, -2 é a penúltima linha etc.
Quando <position> estiver fora do limite, ou zero, ou BLANK(), INDEX retornará uma tabela vazia. Pode ser qualquer expressão DAX que retorna um valor escalar.
relação (Opcional) Uma expressão de tabela da qual a saída é retornada.
Se especificado, todas as colunas em <partitionBy> deverão ser provenientes dela ou de uma tabela relacionada.
Se omitido:
– <orderBy> deve ser especificado explicitamente.
– Todas as expressões de <orderBy> e <partitionBy> deverão ser nomes de coluna totalmente qualificados e ser 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 a <relação>.
orderBy (Opcional) Uma cláusula ORDERBY() que contém as expressões 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.
Esse parâmetro é reservado para uso futuro.
Atualmente, o único valor com suporte é DEFAULT, em que o comportamento para 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.
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

Uma linha em uma posição absoluta.

Comentários

Cada coluna <partitionBy> e <matchBy> deve ter um valor externo correspondente para ajudar a definir a "partição 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:
    • INDEX determinará primeiro todas as colunas <partitionBy> e <matchBy> que não têm nenhuma coluna externa correspondente.
    • Para cada combinação de valores existentes para essas colunas no contexto pai de INDEX, INDEX é avaliado e uma linha é retornada.
    • A saída final de INDEX é uma união dessas linhas.
  • Se houver mais de uma coluna externa correspondente, um erro será retornado.

Se <matchBy> estiver presente, INDEX tentará usar colunas <matchBy> e <partitionBy> para identificar a linha.
Se <matchBy> não estiver presente e as colunas especificadas em <orderBy> e <partitionBy> não puderem identificar exclusivamente todas as linhas em <relation>:

  • INDEX tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • Se essas colunas puderem ser encontradas, INDEX acrescentará automaticamente essas novas colunas a <orderBy>, e cada partição será classificada usando esse novo conjunto de colunas OrderBy.
  • Se essas colunas não puderem ser encontradas, um erro será retornado.

Uma tabela vazia será retornada se:

  • O valor externo correspondente de uma coluna PartitionBy não existe dentro de <relation>.
  • O valor <position> refere-se a uma posição que não existe dentro da partição.

Se INDEX for usado em uma coluna calculada definida na mesma tabela que <relation> e <orderBy> for omitido, 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 INDEX(1, ALL(DimDate[CalendarYear]))

Retorna a seguinte tabela:

DimDate[CalendarYear]
2005

Exemplo 2: coluna calculada

A seguinte consulta DAX:

EVALUATE
SUMMARIZECOLUMNS (
    FactInternetSales[ProductKey],
    DimDate[MonthNumberOfYear],
    FILTER (
            VALUES(FactInternetSales[ProductKey]),
            [ProductKey] < 222
    ),
    "CurrentSales", SUM(FactInternetSales[SalesAmount]),
    "LastMonthSales",
    CALCULATE (
        SUM(FactInternetSales[SalesAmount]),
        INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
    )
)
ORDER BY [ProductKey], [MonthNumberOfYear]

Retorna a seguinte tabela:

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
214 1 5.423,45 8.047,7
214 2 4.968,58 8.047,7
214 3 5.598,4 8.047,7
214 4 5.073,55 8.047,7
214 5 5.248,5 8.047,7
214 6 7.487,86 8.047,7
214 7 7.382,89 8.047,7
214 8 6.543,13 8.047,7
214 9 6.788,06 8.047,7
214 10 6.858,04 8.047,7
214 11 8.607,54 8.047,7
214 12 8.047,7 8.047,7
217 1 5.353,47 7.767,78
217 2 4.268,78 7.767,78
217 3 5.773,35 7.767,78
217 4 5.738,36 7.767,78
217 5 6.158,24 7.767,78
217 6 6998 7.767,78
217 7 5.563,41 7.767,78
217 8 5.913,31 7.767,78
217 9 5.913,31 7.767,78
217 10 6.823,05 7.767,78
217 11 6.683,09 7.767,78
217 12 7.767,78 7.767,78

Exemplo 3: cálculo visual

As seguintes consultas DAX de cálculo visual:

SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))

SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))

Aprimore uma tabela para que ela contenha, para cada mês:
- o valor total das vendas;
- a diferença em relação ao primeiro mês do respectivo ano;
- e a diferença em relação ao primeiro mês do respectivo trimestre.

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

Cálculo visual do DAX

DESLOCAMENTO
ORDERBY
PARTITIONBY
WINDOW
RANK
ROWNUMBER