INDEX
aplica-se a:coluna calculada
tabela calculada
medida
cá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:
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 , HIGHESTPARENT ou 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
ematchBy
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.
-
INDEX primeiro determinará todas as colunas
- 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
orderBy
e 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:
de cálculo visual