Ler em inglês

Compartilhar 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
from 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 retornadas (valor negativo) ou para frente (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.
to 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.
relation (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 vir dela ou de uma tabela relacionada.
Se omitido:
- orderBy deve ser especificado explicitamente.
- Todas as expressões orderBy e partitionBy devem ser nomes de coluna totalmente qualificados e provenientes de uma única tabela.
- Padrão para 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 relation.
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 no partitionBy.
blanks (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

Com exceção das colunas adicionadas pelas funções de tabela DAX, cada coluna em relation, quando matchBy não estiver presente ou cada coluna em matchBy e partitionBy, quando matchBy estiver presente, deve ter um valor externo correspondente para ajudar a definir a linha atual na qual operar. Se from_type e to_type ambos tiverem ABS de valor, 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 relationforam 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, então:

  • WINDOW tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • Se essas colunas puderem ser encontradas, WINDOW anexará automaticamente essas novas colunas a orderBye 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 relatione 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 pode ser usado somente em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis poderá ser especificado, mas relation 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