Leer en inglés

Compartir a través de


OFFSET

Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual

Devuelve una sola fila que se coloca antes de or después de la fila actual dentro de la misma tabla, mediante un offsetdeterminado . If la fila actual no se puede deducir a una sola fila, se pueden devolver varias filas.

Sintaxis

DAX
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parámetros

Término Definición
delta Número de filas anteriores (valuenegativas) or después (valuepositiva) la fila actual desde la que obtener los datos. Puede ser cualquier expresión DAX que devuelva un valueescalar.
relation (Opcional) Expresión de tabla desde la que se devuelve la fila de salida.
If especificado, all columnas de partitionBy deben proceder de ella or una tabla de related.
If omitido:
- orderBy debe especificarse explícitamente.
: las expresiones de AllorderByandpartitionBy deben ser nombres de columna completos and provengan de una sola tabla.
: el valor predeterminado es ALLSELECTED() de all columnas de orderByandpartitionBy.
axis (Opcional) Eje de la forma visual. Disponible solo en cálculos visuales, and reemplaza relation.
orderBy (Opcional) Una cláusula ORDERBY() que contiene las expresiones que define cómo se ordena cada partición.
If omitido:
- relation debe especificarse explícitamente.
: el valor predeterminado es ordenar por cada columna de relation que ya está not especificado en partitionBy.
blanks (Opcional) Enumeración que define cómo controlar blankvalues al ordenar.
Este parámetro está reservado para uso futuro.
Actualmente, el único value admitido es DEFAULT, donde se ordena el comportamiento de los valuesblankvalues numéricos entre cero and negativo values. El comportamiento de las cadenas es blankvalues se ordenan antes de all cadenas, incluidas las cadenas vacías.
partitionBy (Opcional) Cláusula PARTITIONBY() que contiene las columnas que define cómo se particionan relation.
If omitido, relation se trata como una sola partición.
matchBy (Opcional) Una cláusula MATCHBY() que contiene las columnas que define cómo hacer coincidir los datos and identificar la fila actual.
reset (Opcional) Solo está disponible en cálculos visuales. Indica if se restablece el cálculo, and en qué nivel de la jerarquía de columnas de la forma visual. Los values aceptados son: NONE, LOWESTPARENT, HIGHESTPARENT, or un entero. El comportamiento depende del signentero:
: If cero or omitido, el cálculo not restablece. Equivalente a NONE.
: If positivo, el entero identifica la columna a partir de la más alta, independiente del grano. HIGHESTPARENT equivale a 1.
: If negativo, el entero identifica la columna a partir del más bajo, en relación con el grano actual. LOWESTPARENT equivale a -1.

Devolver value

Una or más filas de relation.

Observaciones

Except para las columnas agregadas por DAX funciones de tabla, cada columna de relation, cuando matchBy está not presente, or cada columna de matchByandpartitionBy, cuando matchBy está presente, debe tener una value externa correspondiente para ayudar a define la fila actual en la que operar, con el siguiente comportamiento:

  • If hay exactamente una columna externa correspondiente, se usa su value.
  • If no hay ninguna columna externa correspondiente, a continuación:
    • OFFSET first determinará all columnas que no tienen ninguna columna externa correspondiente.
    • Para cada combinación de values existentes para estas columnas en OFFSETcontexto primario, OFFSET se evalúa and se devuelve una fila.
    • OFFSETsalida final es un union de estas filas.
  • If hay más de una columna externa correspondiente, se devuelve un error.

If all de las columnas de relationse agregaron mediante DAX funciones de tabla, se devuelve un error.

If matchBy está presente, OFFSET intentará usar matchByandpartitionBy columnas para identificar la fila.
If matchBy está not presente and las columnas especificadas en orderByandpartitionBy no pueden identificar de forma única todas las filas de relationy, a continuación, :

  • OFFSET intentará find el menor número de columnas adicionales necesarias para identificar de forma única cada fila.
  • If se pueden encontrar estas columnas, OFFSET anexará automáticamente estas nuevas columnas a orderBy, and cada partición se ordena mediante este nuevo conjunto de columnas de OrderBy.
  • If estas columnas no se encuentran, se devuelve un error.

Se devuelve una tabla vacía if:

  • El value externo correspondiente de una columna de OrderByorPartitionBynot existe dentro de relation.
  • El deltavalue provoca un desplazamiento a una fila que not existe dentro de la partición.

If OFFSET se usa dentro de una columna calculada definida en la misma tabla que relation, andorderBy se omite, se devuelve un error.

reset solo se pueden usar en cálculos visuales, and no se pueden usar en combinación con orderByorpartitionBy. If reset está presente, se pueden especificar axis, pero no relation.

Ejemplo 1: columna calculada

La siguiente consulta DAX:

DAX
DEFINE
VAR vRelation = SUMMARIZECOLUMNS ( 
                    DimProductCategory[EnglishProductCategoryName], 
                    DimDate[CalendarYear], 
                    "CurrentYearSales", SUM(FactInternetSales[SalesAmount]) 
                  )
EVALUATE
ADDCOLUMNS (
    vRelation, 
    "PreviousYearSales", 
    SELECTCOLUMNS(
        OFFSET ( 
                -1, 
                vRelation, 
                ORDERBY([CalendarYear]), 
                PARTITIONBY([EnglishProductCategoryName])
        ),
        [CurrentYearSales]
    )
)

Devuelve una tabla que resume las ventas totales de cada categoría productandcalendaryear, así como las ventas totales de esa categoría en el previousyear.

Ejemplo 2: measure

La siguiente consulta DAX:

DAX
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
    DimDate[CalendarYear],
    "CurrentYearSales", DimProduct[CurrentYearSales],
    "PreviousYearSales", DimProduct[PreviousYearSales]
)

Usa OFFSET() en un measure para devolver una tabla que resume las ventas totales de cada calendaryearand las ventas totales de la previousyear.

Ejemplo 3: columna calculada

La siguiente consulta DAX:

DAX
EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

Devuelve la tabla FactInternetSales con la adición de una columna, que indica, para cada venta, su cantidad de venta previous, de la misma product, en orden descendente de la cantidad de ventas, con la venta actual identificada por su SalesOrderNumber and SalesOrderLineNumber. Sin MATCHBY, la consulta devolvería un error, ya que no hay ninguna columna de clave en la tabla FactInternetSales.

Ejemplo 4: cálculo visual

El siguiente cálculo visual DAX consulta:

DAX
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

Devuelve la diferencia en las ventas totales entre cada monthand el previous uno dentro de la misma year.

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

DAX de cálculo visual

INDEX
ORDERBY
PARTITIONBY
MATCHBY
WINDOW
RANK
ROWNUMBER