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: