Share via


WINDOW

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Retorna várias linhas posicionadas dentro do intervalo determinado.

Sintaxe

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

Parâmetros

Termo Definição
de Indica onde a janela é iniciada. Pode ser qualquer expressão DAX que retorna um valor escalar.
O comportamento depende do parâmetro <from_type>:
– Se <from_type> for REL, o número de linhas a serem revertidas (valor negativo) ou avançar (valor positivo) da linha atual para obter a primeira linha na janela.
– Se <from_type> for ABS e <from> for positivo, será a posição do início da janela desde o início da partição. A indexação é baseada em 1. Por exemplo, 1 significa que a janela começa desde o início da partição. Se <from> for negativo, será a posição do início da janela a partir do final da partição. -1 significa a última linha na partição.
from_type Modifica o comportamento do parâmetro <from>. Os valores possíveis são ABS (absoluto) e REL (relativo). O padrão é REL.
como O mesmo que <from>, mas indica o final da janela. A última linha está incluída na janela.
to_type O mesmo que <from_type>, mas modifica o comportamento de <to>.
relação (Opcional) Uma expressão de tabela da qual as linhas de saída são retornadas.
Se especificado, todas as colunas em <partitionBy> deverão ser provenientes dela ou de uma tabela relacionada.
Se omitido:
– <orderBy> deverá ser especificado explicitamente.
– Todas as expressões de <orderBy> e <partitionBy> deverão ser nomes de coluna totalmente qualificados e ser provenientes de uma única tabela.
– O padrão é ALLSELECTED() de todas as colunas em <orderBy> e <partitionBy>.
axis (Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais e substitui a <relação>.
orderBy (Opcional) Uma cláusula ORDERBY() que contém as expressões que definem como cada partição é classificada.
Se omitido:
– <relation> deve ser especificado explicitamente.
– O padrão é ordenar por cada coluna em <relation> que ainda não está especificada em <partitionBy>.
em branco (Opcional) Uma enumeração que define como manipular valores em branco durante a classificação.
Esse parâmetro é reservado para uso futuro.
Atualmente, o único valor com suporte é DEFAULT, em que o comportamento para valores numéricos é valores em branco são ordenados entre valores zero e negativos. O comportamento das cadeias de caracteres é que os valores em branco são ordenados antes de todas as cadeias de caracteres, incluindo cadeias de caracteres vazias.
partitionBy (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que definem como <relation> é particionado. Se omitida, <relation> será tratada como uma única partição.
matchBy (Opcional) Uma cláusula MATCHBY() que contém as colunas que definem como corresponder dados e identificar a linha atual.
reset (Opcional) Disponível apenas no cálculos visuais. Indica se o cálculo será redefinido e em que nível da hierarquia de colunas da forma visual. Os valores aceitos são: NONE, LOWESTPARENT, HIGHESTPARENT, ou um inteiro. O comportamento depende do sinal do número inteiro:
- Se for zero ou omitido, o cálculo não será redefinido. Equivalente a NONE.
- Se positivo, o inteiro identificará a coluna começando pela mais alta, independentemente da granularidade. HIGHESTPARENT é equivalente a 1.
- Se negativo, o inteiro identificará a coluna a partir da mais baixa, em relação à granularidade atual. LOWESTPARENT é equivalente a -1.

Valor retornado

Todas as linhas da janela.

Comentários

Exceto para colunas adicionadas por funções de tabela DAX, cada coluna em <relação>, quando <matchBy> não está presente ou cada coluna em <matchBy> e <partitionBy>, quando <matchBy> está presente, deve ter um valor externo correspondente para ajudar a definir a linha atual na qual operar. Se <from_type> e <to_type> tiverem o valor ABS, o seguinte se aplicará somente às colunas <partitionBy>:

  • Se houver exatamente uma coluna externa correspondente, seu valor será usado.
  • Se não houver nenhuma coluna externa correspondente:
    • WINDOW determinará primeiro todas as colunas que não têm uma coluna externa correspondente.
    • Para cada combinação de valores existentes para essas colunas no contexto pai do WINDOW, WINDOW será avaliado e as linhas correspondentes serão retornadas.
    • A saída final de WINDOW é uma união dessas linhas.
  • Se houver mais de uma coluna externa correspondente, um erro será retornado.

Se todas as colunas de <relation> tiverem sido adicionadas por funções de tabela DAX, um erro será retornado.

Se <matchBy> estiver presente, WINDOW tentará usar colunas <matchBy> e <partitionBy> para identificar a linha.
Se <matchBy> não estiver presente e as colunas especificadas em <orderBy> e <partitionBy> não puderem identificar exclusivamente todas as linhas em <relation>:

  • WINDOW tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • Se essas colunas puderem ser encontradas, WINDOW acrescentará automaticamente essas novas colunas a <orderBy>, e cada partição será classificada usando esse novo conjunto de colunas OrderBy.
  • Se essas colunas não puderem ser encontradas, um erro será retornado.

Uma tabela vazia será retornada se:

  • O valor externo correspondente de uma coluna <orderBy> ou <partitionBy> não existe dentro de <relation>.
  • A janela inteira está fora da partição ou o início da janela é após o término.

Se WINDOW for usado em uma coluna calculada definida na mesma tabela que <relation> e <orderBy> for omitido, um erro será retornado.

Se o início da janela for antes da primeira linha, ele será definido como a primeira linha. Da mesma forma, se o final da janela estiver após a última linha da partição, ele será definido como a última linha.

<reset> só pode ser usado em cálculos visuais e não pode ser usado em combinação com <orderBy> ou <partitionBy>. Se <reset> estiver presente, o <eixo> poderá ser especificado, mas a <relação> não.

Exemplo 1: Medida

A seguinte medida:

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

Retorna a média de 3 dias dos preços unitários de cada produto. Observe que a janela de três dias consiste em três dias em que o produto tem vendas, não necessariamente três dias consecutivos.

Exemplo 2: Medida

A seguinte medida:

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

Retorna a soma em execução do Total de Vendas por Número do Mês do Ano, reiniciando a cada Ano Fiscal:

Ano Número do Mês do Ano Valor das Vendas RunningSum
FY2018 1 US$ 1.327.675 US$ 1.327.675
FY2018 2 US$ 3.936.463 US$ 5.264.138
FY2018 3 US$ 700.873 US$ 5.965.011
FY2018 4 US$ 1.519.275 US$ 7.484.286
FY2018 5 US$ 2.960.378 US$ 10.444.664
FY2018 6 US$ 1.487.671 US$ 11.932.336
FY2018 7 US$ 1.423.357 US$ 13.355.693
FY2018 8 US$ 2.057.902 US$ 15.413.595
FY2018 9 US$ 2.523.948 US$ 17.937.543
FY2018 10 US$ 561.681 US$ 18.499.224
FY2018 11 US$ 4.764.920 US$ 23.264.145
FY2018 12 US$ 596.747 US$ 23.860.891
FY2019 1 US$ 1.847.692 US$ 1.847.692
FY2019 2 US$ 2.829.362 US$ 4.677.054
FY2019 3 US$ 2.092.434 US$ 6.769.488
FY2019 4 US$ 2.405.971 US$ 9.175.459
FY2019 5 US$ 3.459.444 US$ 12.634.903
FY2019 6 US$ 2.850.649 US$ 15.485.552
FY2019 7 US$ 2.939.691 US$ 18.425.243
FY2019 8 US$ 3.964.801 US$ 22.390.045
FY2019 9 US$ 3.287.606 US$ 25.677.650
FY2019 10 US$ 2.157.287 US$ 27.834.938
FY2019 11 US$ 3.611.092 US$ 31.446.030
FY2019 12 US$ 2.624.078 US$ 34.070.109
FY2020 1 US$ 3.235.187 US$ 3.235.187
FY2020 2 US$ 4.070.046 US$ 7.305.233
FY2020 3 US$ 4.429.833 US$ 11.735.066
FY2020 4 US$ 4.002.614 US$ 15.737.680
FY2020 5 US$ 5.265.797 US$ 21.003.477
FY2020 6 US$ 3.465.241 US$ 24.468.717
FY2020 7 US$ 3.513.064 US$ 27.981.781
FY2020 8 US$ 5.247.165 US$ 33.228.947
FY2020 9 US$ 5.104.088 US$ 38.333.035
FY2020 10 US$ 3.542.150 US$ 41.875.184
FY2020 11 US$ 5.151.897 US$ 47.027.081
FY2020 12 US$ 4.851.194 US$ 51.878.275

Exemplo 3: Cálculo visual

A seguinte consulta DAX de cálculo visual:

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

Retorna o total acumulado de vendas por mês, calculado ao longo de cada ano. Os valores 1 e -2 poderiam ser usados em vez de HIGHESTPARENT, com os mesmos resultados.

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

Cálculo visual do DAX

Exemplo 4: cálculo visual

A seguinte consulta DAX de cálculo visual:

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

Retorna o total acumulado de vendas por mês, calculado ao longo de cada trimestre.

INDEX
MOVINGAVERAGE
DESLOCAMENTO
ORDERBY
PARTITIONBY
RANGE
RANK
ROWNUMBERRUNNINGSUM