Partilhar 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

Vigência Definição
position A posição absoluta (baseada em 1) a partir da qual obter os dados:
- position é positivo: 1 é a primeira linha, 2 é a segunda linha, etc.
- position é negativo: -1 é a última linha, -2 é a segunda última linha, etc.
Quando position está fora do limite, ou zero, ou BLANK(), INDEX retornará uma tabela vazia. Pode ser qualquer expressão DAX que retorna um valor escalar.
relation (Opcional) Uma expressão de tabela da qual a saída é retornada.
Se especificado, todas as colunas em partitionBy devem vir dele ou de uma tabela relacionada.
Se omitido:
- orderBy deve ser explicitamente especificado.
- Todas as expressões orderBy e partitionBy devem ser nomes de colunas totalmente qualificados e provenientes de uma única tabela.
- O padrão é ALLSELECTED() de todas as colunas no 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 expressões 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:
  • DEFAULT (o valor padrão), onde o comportamento para valores numéricos é valores em branco são ordenados entre zero e valores negativos. O comportamento para cadeias de caracteres é valores em branco são ordenados antes de todas as cadeias de caracteres, incluindo cadeias 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.
Observe que, quando o parâmetro e os espaços em branco na função () em expressões individuais são especificados, na expressão orderBy individual tem prioridade para a expressão orderBy relevante, e as expressões orderBy sem serem especificadas honrarão o parâmetro na função pai.
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, HIGHESTPARENTou 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

Uma linha em 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 existir uma coluna exterior correspondente:
    • INDEX primeiro determinará todas as colunas partitionBy e matchBy que não tenham coluna externa correspondente.
    • Para cada combinação de valores existentes para essas colunas no contexto pai do INDEX, INDEX é avaliada e uma linha é retornada.
    • INDEXsaída final é uma união dessas linhas.
  • Se houver mais de uma coluna externa correspondente, um erro será retornado.

Se matchBy estiver presente, INDEX tentará usar matchBy e partitionBy colunas 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 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 é retornada se:

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

Se INDEX for usado dentro de uma coluna calculada definida na mesma tabela que relation e orderBy for omitido, um erro será retornado.

reset pode ser usado apenas em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis pode ser especificado, mas relation não pode.

Exemplo 1 - coluna calculada

O seguinte DAX consulta:

EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))

Devolve a seguinte tabela:

DimDate[Ano Calendário]
2005

Exemplo 2 - coluna calculada

O seguinte DAX consulta:

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]

Devolve a seguinte tabela:

FactInternetSales[ProductKey] DimDate[NúmeroMêsDoAno] [CurrentSales] [Vendas do último mês]
214 1 5423.45 8047.7
214 2 4968.58 8047.7
214 3 5598.4 8047.7
214 4 5073.55 8047.7
214 5 5248.5 8047.7
214 6 7487.86 8047.7
214 7 7382.89 8047.7
214 8 6543.13 8047.7
214 9 6788.06 8047.7
214 10 6858.04 8047.7
214 11 8607.54 8047.7
214 12 8047.7 8047.7
217 1 5353.47 7767.78
217 2 4268.78 7767.78
217 3 5773.35 7767.78
217 4 5738.36 7767.78
217 5 6158.24 7767.78
217 6 6998 7767.78
217 7 5563.41 7767.78
217 8 5913.31 7767.78
217 9 5913.31 7767.78
217 10 6823.05 7767.78
217 11 6683.09 7767.78
217 12 7767.78 7767.78

Exemplo 3 - cálculo visual

O cálculo visual a seguir DAX consultas:

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

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

Melhore uma tabela para que ela contenha, para cada mês:
- o valor total das vendas;
- a diferença para o primeiro mês do respetivo ano;
- e a diferença para o primeiro mês do respetivo trimestre.

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

DAX cálculo visual

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER