Partilhar via


INDEX

Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual

Retorna uma linha em uma posição absoluta, especificada pelo parâmetro position, dentro da partição especificada, classificada pela ordem especificada. If 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 se obtêm os dados:
- position é positivo: 1 é a first linha, 2 é a second linha, etc.
- position é negativo: -1 é a linha last, -2 é a linha secondlast, etc.
Quando position estiver fora do limite, or zero, orBLANK(), INDEX retornará uma tabela vazia. Pode ser qualquer expressão DAX que retorna uma valueescalar .
relation (Opcional) Uma expressão de tabela da qual a saída é retornada.
If especificado, all colunas em partitionBy devem vir dele or uma tabela related.
If omitido:
- orderBy deve ser explicitamente especificado.
- AllorderByandpartitionBy expressões devem ser nomes de coluna totalmente qualificados and provenientes de uma única tabela.
- O padrão é ALLSELECTED() de all colunas no orderByandpartitionBy.
axis (Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais, and substitui relation.
orderBy (Opcional) Uma cláusula ORDERBY() contendo as expressões que define como cada partição é classificada.
If omitido:
- relation deve ser explicitamente especificado.
- Padroniza a ordenação por cada coluna em relation que not já especificada em partitionBy.
blanks (Opcional) Uma enumeração que define como lidar com blankvalues ao classificar.
Este parâmetro está reservado para uso futuro.
Atualmente, a única value suportada é DEFAULT, onde o comportamento para values numéricos é blankvalues são ordenados entre zero and negativo values. O comportamento para cadeias de caracteres é blankvalues são ordenadas antes de all cadeias de caracteres, incluindo cadeias vazias.
partitionBy (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que define como relation é particionado.
If omitida, relation é tratada como uma única partição.
matchBy (Opcional) Uma cláusula MATCHBY() que contém as colunas que define como fazer a correspondência de dados and identificar a linha atual.
reset (Opcional) Disponível apenas em cálculos visuais. Indica if o cálculo é redefinido and em que nível da hierarquia de colunas da forma visual. Os values aceitos são: NONE, LOWESTPARENT, HIGHESTPARENT, or um número inteiro. O comportamento depende do número inteiro sign:
- If zero or omitido, o cálculo not é reiniciado. Equivalente a NONE.
- If positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT equivale a 1.
- If negativo, o inteiro identifica a coluna a partir do mais baixo, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Regresso value

Uma linha em posição absoluta.

Comentários

Cada coluna partitionByandmatchBy deve ter uma value externa correspondente para ajudar a define a "partição atual" na qual operar, com o seguinte comportamento:

  • If houver exatamente uma coluna externa correspondente, sua value é usada.
  • If não houver coluna externa correspondente:
    • INDEX first determinará allpartitionByandmatchBy colunas que não têm coluna externa correspondente.
    • Para cada combinação de values existentes para essas colunas no contexto pai do INDEX, INDEX é avaliada and uma linha é retornada.
    • A saída final do INDEXé uma union dessas linhas.
  • If houver mais de uma coluna externa correspondente, uma error será retornada.

If matchBy estiver presente, INDEX tentará usar matchByandpartitionBy colunas para identificar a linha. If matchBy not está presente and as colunas especificadas no orderByandpartitionBy não é possível identificar exclusivamente todas as linhas relation:

  • INDEX tentará find o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • If essas colunas puderem ser encontradas, INDEX acrescentará automaticamente essas novas colunas a orderBy, and cada partição é classificada usando esse novo conjunto de colunas OrderBy.
  • If essas colunas não puderem ser encontradas, uma error será retornada.

Uma tabela vazia é retornada if:

  • A value externa correspondente de uma coluna PartitionBynot existe dentro relation.
  • O positionvalue refere-se a uma posição que not existe dentro da partição.

If INDEX é usado dentro de uma coluna calculada definida na mesma tabela em que relationandorderBy é omitido, um error é retornado.

reset pode ser usado apenas em cálculos visuais and não pode ser usado em combinação com orderByorpartitionBy. If reset está 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 contains, para cada month:
- o valor total das vendas;
- a diferença para o firstmonth dos respetivos year;
- and a diferença para o firstmonth dos respetivos quarter.

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

DAX cálculo visual

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER