Compartilhar via


INDEX

aplica-se a:coluna calculadatabela calculadamedidacálculo visual

Retorna uma linha em uma posição absoluta, especificada pelo parâmetro de posição, 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

Prazo 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 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 deverão vir dela ou de uma tabela relacionada.
Se omitido:
- orderBy deve ser especificado explicitamente.
- Todas as expressões orderBy e partitionBy devem ser nomes de coluna totalmente qualificados 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 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 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

Uma linha em uma posição absoluta.

Observações

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 primeiro determinará 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 do 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 estiverem presentes e as colunas especificadas em orderBy e partitionBy não poderão 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 anexará automaticamente essas novas colunas a orderBye cada partição será classificada usando este 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.

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 INDEX(1, ALL(DimDate[CalendarYear]))

Retorna a tabela a seguir:

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 tabela a seguir:

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
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 seguinte cálculo visual DAX consultas:

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 de vendas;
- a diferença para o primeiro mês do respectivo ano;
- e a diferença para o primeiro mês do respectivo trimestre.

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

DAX de cálculo visual

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER