INDEX

Se aplica a:Columna calculadaTabla calculadaMedidaCálculo visual

Devuelve una fila en una posición absoluta, especificada por el parámetro position, dentro de la partición especificada con el orden especificado. Si la partición actual no se puede deducir como una sola partición, se pueden devolver varias filas.

Sintaxis

INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parámetros

Término Definición
position Posición absoluta (de base 1) desde la que se obtienen los datos:
- <position> es una posición positiva: 1 es la primera fila, 2 es la segunda fila, etc.
- <position> es una posición negativa: -1 es la última fila, -2 es la penúltima fila, etc.
Cuando <position> está fuera del límite, o es cero o BLANK(), INDEX devuelve una tabla vacía. Puede ser cualquier expresión DAX que devuelva un valor escalar.
relation (Opcional) Expresión de tabla a partir de la cual se devuelve la salida.
Si se especifica, todas las columnas de <partitionBy> deben proceder de ella o de una tabla relacionada.
Si se omite:
- <orderBy> debe especificarse explícitamente.
- Todas las expresiones de <orderBy> y <partitionBy> deben tener el nombre completo de la columna y proceder de una sola tabla.
- Toma el valor predeterminado ALLSELECTED() de todas las columnas de <orderBy> y <partitionBy>.
ejes (Opcional) Un eje en la forma visual. Solo está disponible en cálculos visuales y reemplaza la <relación>.
orderBy (Opcional) Cláusula ORDERBY() que contiene las expresiones que definen cómo se ordena cada partición.
Si se omite:
- <relation> debe especificarse explícitamente.
- De forma predeterminada, ordena por cada columna de <relation> que aún no se haya especificado en <partitionBy>.
espacios en blanco (Opcional) Enumeración que define cómo controlar los valores en blanco en la ordenación.
Este parámetro se reserva para uso futuro.
Actualmente, el único valor admitido es DEFAULT, donde el comportamiento de los valores numéricos es que los valores en blanco se ordenan entre cero y los valores negativos. El comportamiento de las cadenas es que los valores en blanco se ordenan delante de todas las cadenas, incluidas las cadenas vacías.
partitionBy (Opcional) Cláusula PARTITIONBY() que contiene las columnas que definen cómo se particiona <relation>.
Si se omite, <relation> se trata como una sola partición.
matchBy (Opcional) Una cláusula MATCHBY() que contiene las columnas que definen cómo hacer coincidir los datos e identificar la fila actual.
reset (Opcional) Solo está disponible en cálculos visuales. Indique si el cálculo se restablece y en qué nivel de la jerarquía de columnas de la forma visual. Los valores aceptados son: NONE, LOWESTPARENT, HIGHESTPARENT o un entero. El comportamiento depende del signo entero:
: si se omite cero, el cálculo no se restablece. Equivalente a NONE.
: si es positivo, el entero identifica la columna a partir de la más alta, independiente del intervalo de agregación. HIGHESTPARENT es equivalente a 1.
: si es negativo, el entero identifica la columna a partir del más bajo, en relación con el intervalo de agregación actual. LOWESTPARENT es equivalente a -1.

Valor devuelto

Una fila en una posición absoluta.

Observaciones

Cada columna de <partitionBy> y <matchBy> debe tener un valor externo correspondiente para ayudar a definir la "partición actual" en la que operar, con el siguiente comportamiento:

  • Si hay exactamente una columna externa correspondiente, se utiliza su valor.
  • Si no hay ninguna columna externa correspondiente:
    • INDEX determina primero todas las columnas de <partitionBy> y <matchBy> que no tienen ninguna columna externa correspondiente.
    • Para cada combinación de valores de estas columnas en el contexto primario de INDEX, se evalúa INDEX y se devuelve una fila.
    • La salida final de INDEX es una unión de estas filas.
  • Si hay más de una columna externa correspondiente, se devuelve un error.

Si <matchBy> está presente, INDEX intentará usar las columnas <matchBy> y <partitionBy> para identificar la fila.
Si <matchBy> no está presente y las columnas especificadas en <orderBy> y <partitionBy> no pueden identificar de forma única todas las filas de <relation>:

  • INDEX intenta buscar el menor número de columnas adicionales necesarias para identificar de forma única cada fila.
  • Si se encuentran estas columnas, INDEX anexa automáticamente estas nuevas columnas a <orderBy> y cada partición se ordena usando este nuevo conjunto de columnas OrderBy.
  • Si no se encuentran estas columnas, se devuelve un error.

Se devuelve una tabla vacía si:

  • El valor externo correspondiente de una columna PartitionBy no existe en <relation>.
  • El valor de <position> hace referencia a una posición que no existe en la partición.

Si se utiliza INDEX en una columna calculada definida en la misma tabla que <relation> y se omite <orderBy>, se devuelve un error.

<reset> solo se puede usar en cálculos visuales y no se puede usar en combinación con <orderBy> o <partitionBy>. Si <reset> está presente, se puede especificar el <eje>, pero no se puede especificar la <relación>.

Ejemplo 1: columna calculada

La consulta DAX siguiente:

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

Devuelve la tabla siguiente:

DimDate[CalendarYear]
2005

Ejemplo 2: columna calculada

La consulta DAX siguiente:

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]

Devuelve la tabla siguiente:

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

Ejemplo 3: cálculo visual

Las siguientes consultas DAX de cálculo visual:

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

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

Mejorar una tabla para que contenga, para cada mes:
- el importe total de las ventas;
- la diferencia con el primer mes del año respectivo;
: y la diferencia con el primer mes del trimestre respectivo.

En la siguiente captura de pantalla se muestra la matriz visual y la primera expresión de cálculo visual:

Cálculo del objeto visual DAX

OFFSET
ORDERBY
PARTITIONBY
WINDOW
RANK
ROWNUMBER