Compartir vía


WINDOW

Se aplica a:columna Calculadatabla calculadaMedidacálculo visual

Devuelve varias filas que se colocan dentro del intervalo especificado.

Sintaxis

WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parámetros

Término Definición
from Indica dónde se inicia la ventana. Puede ser cualquier expresión DAX que devuelva un valor escalar.
El comportamiento depende del parámetro from_type:
: si from_type es REL, el número de filas que se van a retroceder (valor negativo) o reenviar (valor positivo) de la fila actual para obtener la primera fila de la ventana.
: si from_type es ABSy from es positivo, es la posición del inicio de la ventana desde el principio de la partición. La indexación se basa en 1 y 0 se interpreta como 1. Por ejemplo, 0 y 1 significan que la ventana comienza desde el principio de la partición. Si from es negativo, se trata de la posición del inicio de la ventana desde el final de la partición. -1 significa la última fila de la partición.
from_type Modifica el comportamiento del parámetro from. Los valores posibles son ABS (absoluto) y REL (relativo). El valor predeterminado es REL.
to Igual que from, pero indica el final de la ventana. La última fila se incluye en la ventana.
to_type Igual que from_type, pero modifica el comportamiento de to.
relation (Opcional) Expresión de tabla desde la que se devuelve la fila de salida.
Si se especifica, todas las columnas de partitionBy deben proceder de ella o de una tabla relacionada.
Si se omite:
- orderBy se debe especificar explícitamente.
: todas las expresiones de orderBy y partitionBy deben ser nombres de columna completos y proceder de una sola tabla.
: el valor predeterminado es ALLSELECTED() de todas las columnas de orderBy y partitionBy.
axis (Opcional) Un eje en la forma visual. Solo está disponible en cálculos visuales y reemplaza relation.
orderBy (Opcional) Cláusula ORDERBY() que contiene las expresiones que definen cómo se ordena cada partición.
Si se omite:
- relation se debe especificar explícitamente.
: el valor predeterminado es ordenar por cada columna de relation que aún no se ha especificado en partitionBy.
blanks (Opcional) Enumeración que define cómo controlar valores en blanco al ordenar el relation o axis.
Los valores admitidos son:
  • DEFAULT (el valor predeterminado), donde el comportamiento de los valores numéricos es valores en blanco se ordenan entre cero y valores negativos. El comportamiento de las cadenas es valores en blanco se ordenan antes de todas las cadenas, incluidas las cadenas vacías.
  • FIRST, los espacios en blanco siempre se ordenan al principio, independientemente del orden ascendente o descendente.
  • LAST, los espacios en blanco siempre se ordenan al final, independientemente del orden ascendente o descendente.

Nota, cuando se especifica el parámetro blanks y los espacios en blanco de la función ORDERBY() en expresiones individuales, blanks en la expresión orderBy individual tienen prioridad para la expresión orderBy pertinente y las expresiones orderBy sin blanks especificar respetarán el parámetro blanks en la función primaria.
partitionBy (Opcional) Cláusula () que contiene las columnas que definen cómo se particiona . 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. Indica si el cálculo se restablece y en qué nivel de la jerarquía de columnas de la forma visual. Los valores aceptados son: una referencia de campo a una columna de la forma visual actual, NONE (valor predeterminado), LOWESTPARENT, HIGHESTPARENTo 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 del valor más alto e independiente del grano. HIGHESTPARENT equivale a 1.
: si es negativo, el entero identifica la columna a partir del más bajo, en relación con el grano actual. LOWESTPARENT equivale a -1.

Valor devuelto

Todas las filas de la ventana.

Observaciones

Excepto para las columnas agregadas por DAX funciones de tabla, cada columna de relation, cuando matchBy no está presente, o cada columna de matchBy y partitionBy, cuando matchBy está presente, debe tener un valor externo correspondiente para ayudar a definir la fila actual en la que operar. Si from_type y to_type tienen valor ABS, lo siguiente solo se aplica a las columnas de partitionBy:

  • Si hay exactamente una columna externa correspondiente, se usa su valor.
  • Si no hay ninguna columna externa correspondiente:
    • WINDOW determinará primero todas las columnas que no tienen ninguna columna externa correspondiente.
    • Para cada combinación de valores existentes para estas columnas en WINDOWcontexto primario, se evalúa WINDOW y se devuelven las filas correspondientes.
    • WINDOW salida final es una unión de estas filas.
  • Si hay más de una columna externa correspondiente, se devuelve un error.

Si todas las columnas de relationse agregaron mediante DAX funciones de tabla, se devuelve un error.

Si matchBy está presente, WINDOW intentará usar matchBy y partitionBy columnas 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, a continuación:

  • WINDOW intentará encontrar el menor número de columnas adicionales necesarias para identificar de forma única cada fila.
  • Si se pueden encontrar estas columnas, WINDOW anexará automáticamente estas nuevas columnas a orderByy cada partición se ordena mediante 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 orderBy o partitionBy no existe en relation.
  • Toda la ventana está fuera de la partición o el principio de la ventana es después de su finalización.

Si WINDOW se usa dentro de una columna calculada definida en la misma tabla que relationy se omite orderBy, se devuelve un error.

Si el principio de la ventana aparece antes de la primera fila, se establece en la primera fila. Del mismo modo, si el final de la ventana es después de la última fila de la partición, se establece en la última fila.

reset solo se pueden usar en cálculos visuales y no se pueden usar en combinación con orderBy o partitionBy. Si reset está presente, se puede especificar axis pero no se puede relation.

Ejemplo 1: medida

La medida siguiente:

3-day Average Price = 
AVERAGEX(
    WINDOW(
        -2,REL,0,REL,
        SUMMARIZE(ALLSELECTED('Sales'), 'Date'[Date], 'Product'[Product]),
        ORDERBY('Date'[Date]),
        KEEP,
        PARTITIONBY('Product'[Product])
    ), 
    CALCULATE(AVERAGE(Sales[Unit Price]))
)

Devuelve el promedio de 3 días de precios unitarios para cada producto. Tenga en cuenta que la ventana de 3 días consta de tres días en los que el producto tiene ventas, no necesariamente tres días naturales consecutivos.

Ejemplo 2: medida

La medida siguiente:

RunningSum =
SUMX (
    WINDOW (
        1, ABS, 0, REL,
        ALLSELECTED (
            'Date'[Fiscal Year],
            'Date'[Month Number Of Year]
        ),
        PARTITIONBY ( 'Date'[Fiscal Year] )
    ),
    [Total Sales]
)

Devuelve la suma en ejecución de Ventas totales por número de mes de año, reiniciando para cada año fiscal:

Año Número de mes del año Sales Amount RunningSum
FY2018 1 1 327 675 $ 1 327 675 $
FY2018 2 3 936 463 $ 5 264 138 $
FY2018 3 700 873 $ 5 965 011 $
FY2018 4 1 519 275 $ 7 484 286 $
FY2018 5 2 960 378 $ 10 444 664 $
FY2018 6 1 487 671 $ 11 932 336 $
FY2018 7 1 423 357 $ 13 355 693 $
FY2018 8 2 057 902 $ 15 413 595 $
FY2018 9 2 523 948 $ 17 937 543 $
FY2018 10 561 681 $ 18 499 224 $
FY2018 11 4 764 920 $ 23 264 145 $
FY2018 12 596 747 $ 23 860 891 $
FY2019 1 1 847 692 $ 1 847 692 $
FY2019 2 2 829 362 $ 4 677 054 $
FY2019 3 2 092 434 $ 6 769 488 $
FY2019 4 2 405 971 $ 9 175 459 $
FY2019 5 3 459 444 $ 12 634 903 $
FY2019 6 2 850 649 $ 15 485 552 $
FY2019 7 2 939 691 $ 18 425 243 $
FY2019 8 3 964 801 $ 22 390 045 $
FY2019 9 3 287 606 $ 25 677 650 $
FY2019 10 2 157 287 $ 27 834 938 $
FY2019 11 3 611 092 $ 31 446 030 $
FY2019 12 2 624 078 $ 34 070 109 $
FY2020 1 3 235 187 $ 3 235 187 $
FY2020 2 4 070 046 $ 7 305 233 $
FY2020 3 4 429 833 $ 11 735 066 $
FY2020 4 4 002 614 $ 15 737 680 $
FY2020 5 5 265 797 $ 21 003 477 $
FY2020 6 3 465 241 $ 24 468 717 $
FY2020 7 3 513 064 $ 27 981 781 $
FY2020 8 5 247 165 $ 33 228 947 $
FY2020 9 5 104 088 $ 38 333 035 $
FY2020 10 3 542 150 $ 41 875 184 $
FY2020 11 5 151 897 $ 47 027 081 $
FY2020 12 4 851 194 $ 51 878 275 $

Ejemplo 3: cálculo visual

El siguiente cálculo visual DAX consulta:

TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])

Devuelve las ventas totales acumuladas por mes, calculadas a lo largo de cada año. Los valores 1 y -2 podrían usarse en lugar de HIGHESTPARENT, con los mismos resultados.

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

DAX de cálculo visual

Ejemplo 4: cálculo visual

El siguiente cálculo visual DAX consulta:

TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])

Devuelve las ventas totales acumuladas por mes, calculadas a lo largo de cada trimestre.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM