Leer en inglés

Compartir a través de


WINDOW

Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual

Devuelve varias filas que se colocan dentro del intervalo especificado.

Sintaxis

DAX
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 el window. Puede ser cualquier expresión DAX que devuelva un valueescalar.
El comportamiento depende del parámetro from_type:
: Iffrom_type es REL, el número de filas que se van a retroceder (valuenegativas ) or hacia delante (valuepositivas ) de la fila actual para obtener la fila first en el window.
: Iffrom_type es ABS, andfrom es positivo y, a continuación, es la posición del inicio del window desde el principio de la partición. La indexación es de base 1. Por ejemplo, 1 significa window comienza desde el principio de la partición. If from es negativo y, a continuación, es la posición del inicio del window desde el final de la partición. -1 significa la fila last de la partición.
from_type Modifica el comportamiento del parámetro from. Los posibles values son ABS (absoluto) and REL (relativo). El valor predeterminado es REL.
to Igual que from, pero indica el final del window. La fila last se incluye en el window.
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.
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) Un eje en 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 se reserva 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

All filas del window.

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 un value externo correspondiente para ayudar a define la fila actual en la que se va a operar. If from_type and to_type ambos tienen valueABS, el siguiente solo se aplica a las columnas de partitionBy:

  • If hay exactamente una columna externa correspondiente, se usa su value.
  • If no hay ninguna columna externa correspondiente:
    • WINDOW first determinará all columnas que no tienen ninguna columna externa correspondiente.
    • Para cada combinación de values existentes para estas columnas en WINDOWcontexto primario, se evalúa WINDOW, and se devuelven las filas correspondientes.
    • WINDOW salida 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, WINDOW 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 relation, a continuación:

  • WINDOW intentará find el menor número de columnas adicionales necesarias para identificar de forma única cada fila.
  • If se pueden encontrar estas columnas, WINDOW 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.
  • Todo el window está fuera de la partición, or el principio del window es después de su finalización.

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

If el principio del window resulta antes de la fila first y, a continuación, se establece en la fila first. Del mismo modo, if el final del window es después de la fila last de la partición y, a continuación, se establece en la fila last.

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: measure

El siguiente measure:

DAX
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 eldayaverage 3- de precios unitarios para cada product. Tenga en cuenta que el 3-daywindow consta de tres días en los que el product tiene ventas, not necesariamente tres días consecutivos calendar días.

Ejemplo 2: measure

El siguiente measure:

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

Devuelve el sum en ejecución de Ventas totales por Month número de Year, reiniciando para cada Yearfiscal :

Year Month número de Year 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:

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

Devuelve las ventas totales acumulativas por month, calculadas a lo largo de cada year. El values 1 and -2 podría usarse en lugar de HIGHESTPARENT, con los mismos resultados.

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

DAX de cálculo visual

Ejemplo 4: cálculo visual

El siguiente cálculo visual DAX consulta:

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

Devuelve las ventas totales acumulativas por month, calculadas a lo largo de cada quarter.

INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
RANGE
RANK
ROWNUMBER RUNNINGSUM