Partilhar via


WINDOW

Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual

Retorna várias linhas que estão posicionadas dentro de um determinado intervalo.

Sintaxe

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

Parâmetros

Termo Definição
from Indica onde o window começa. Pode ser qualquer expressão DAX que retorna uma valueescalar .
O comportamento depende do parâmetro from_type:
- Iffrom_type é REL, o número de linhas para voltar (valuenegativo) or para frente (valuepositivo) da linha atual para obter a linha first no window.
- Iffrom_type é ABS, andfrom é positivo, então é a posição do início do window do início da partição. A indexação é baseada em 1. Por exemplo, 1 significa window começa desde o início da partição. If from é negativo, então é a posição do início do window a partir do final da partição. -1 significa a linha last na partição.
from_type Modifica o comportamento do parâmetro from. Os values possíveis são ABS (absoluto) and REL (relativo). O padrão é REL.
to O mesmo que from, mas indica o fim do window. A linha last está incluída no window.
to_type O mesmo que from_type, mas modifica o comportamento de to.
relation (Opcional) Uma expressão de tabela a partir da qual as linhas de saída são retornadas.
If especificado, all colunas em partitionBy devem vir dele or uma tabela related.
If omitido:
- orderBy deve ser explicitamente especificado.
- AllorderByandpartitionBy expressões devem ser nomes de colunas totalmente qualificados and provenientes de uma única tabela.
- O padrão é ALLSELECTED() de all colunas no orderByandpartitionBy.
axis (Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais, and substitui relation.
orderBy (Opcional) Uma cláusula ORDERBY() contendo as expressões que define como cada partição é classificada.
If omitido:
- relation deve ser explicitamente especificado.
- Padroniza a ordenação por cada coluna em relation que not já especificada em partitionBy.
blanks (Opcional) Uma enumeração que define como lidar com blankvalues ao classificar.
Este parâmetro está reservado para uso futuro.
Atualmente, a única value suportada é DEFAULT, onde o comportamento para values numéricos é blankvalues são ordenados entre zero and negativo values. O comportamento para cadeias de caracteres é blankvalues são ordenadas antes de all cadeias de caracteres, incluindo cadeias vazias.
partitionBy (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que define como relation é particionado. If omitida, relation é tratada como uma única partição.
matchBy (Opcional) Uma cláusula MATCHBY() que contém as colunas que define como fazer a correspondência de dados and identificar a linha atual.
reset (Opcional) Disponível apenas em cálculos visuais. Indica if o cálculo é redefinido and em que nível da hierarquia de colunas da forma visual. Os values aceitos são: NONE, LOWESTPARENT, HIGHESTPARENT, or um número inteiro. O comportamento depende do número inteiro sign:
- If zero or omitido, o cálculo not é reiniciado. Equivalente a NONE.
- If positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT equivale a 1.
- If negativo, o inteiro identifica a coluna a partir do mais baixo, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Regresso value

All linhas do window.

Observações

Except para colunas adicionadas por DAX funções de tabela, cada coluna em relation, quando matchBy estiver not presente, or cada coluna em matchByandpartitionBy, quando matchBy estiver presente, deve ter uma value externa correspondente para ajudar a define a linha atual na qual operar. If from_type and to_type ambos tiverem valueABS, o seguinte aplica-se apenas às colunas partitionBy:

  • If houver exatamente uma coluna externa correspondente, sua value é usada.
  • If não houver coluna externa correspondente:
    • WINDOW first determinará all colunas que não têm coluna externa correspondente.
    • Para cada combinação de values existentes para essas colunas no contexto pai do WINDOW, WINDOW é avaliada and as linhas correspondentes são retornadas.
    • WINDOW saída final é uma union dessas linhas.
  • If houver mais de uma coluna externa correspondente, uma error será retornada.

If all das colunas de relationforam adicionadas por DAX funções de tabela, uma error é retornada.

If matchBy estiver presente, WINDOW tentará usar matchByandpartitionBy colunas para identificar a linha. If matchBy not estiver presente and as colunas especificadas em orderByandpartitionBy não puder identificar exclusivamente todas as linhas relation, então:

  • WINDOW tentará find o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • If essas colunas puderem ser encontradas, WINDOW acrescentará automaticamente essas novas colunas a orderBy, and cada partição é classificada usando esse novo conjunto de colunas orderBy.
  • If essas colunas não puderem ser encontradas, uma error será retornada.

Uma tabela vazia é retornada if:

  • A value externa correspondente de uma coluna orderByorpartitionBynot existe dentro relation.
  • Toda a window está fora da partição, or o início da window é após o seu fim.

If WINDOW é usado dentro de uma coluna calculada definida na mesma tabela que relation, andorderBy é omitido, um error é retornado.

If o início da window for antes da linha first, ela será definida para a linha first. Da mesma forma, if o final do window estiver após a linha last da partição, ele será definido como a linha last.

reset pode ser usado apenas em cálculos visuais and não pode ser usado em combinação com orderByorpartitionBy. If reset está presente, axis pode ser especificado, mas relation não pode.

Exemplo 1 - measure

Os seguintes measure:

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]))
)

Devolve os 3dayaverage de preços unitários para cada product. Note que o 3-daywindow consiste em três dias em que o product tem vendas, not necessariamente três dias calendar consecutivos.

Exemplo 2 - measure

Os seguintes measure:

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

Devolve o sum em execução para Total de Vendas por Month Número de Year, reiniciando para cada Yearfiscal :

Year Month Número De Year Sales Amount RunningSum
AF2018 1 $1.327.675 $1.327.675
AF2018 2 $3.936.463 $5.264.138
AF2018 3 $700.873 $5.965.011
AF2018 4 $1.519.275 $7.484.286
AF2018 5 $2.960.378 $10.444.664
AF2018 6 $1.487.671 $11.932.336
AF2018 7 $1.423.357 $13.355.693
AF2018 8 $2.057.902 $15.413.595
AF2018 9 $2.523.948 $17.937.543
AF2018 10 $561.681 $18.499.224
AF2018 11 $4.764.920 $23.264.145
AF2018 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

Exemplo 3 - cálculo visual

O seguinte cálculo visual DAX consulta:

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

Devolve o total acumulado de vendas por month, calculado ao longo de cada year. O values 1 and -2 poderia ser usado em vez de HIGHESTPARENT, com os mesmos resultados.

A captura de tela abaixo mostra a matriz visual and a expressão de cálculo visual:

DAX cálculo visual

Exemplo 4 - cálculo visual

O seguinte cálculo visual DAX consulta:

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

Devolve o total acumulado de vendas por month, calculado ao longo de cada quarter.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM