Partilhar via


WINDOW

Aplica-se a:Coluna calculadaTabela calculadaMedidaCá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 a janela começa. 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 para voltar (valor negativo) ou avançar (valor positivo) da linha atual para obter a primeira linha na janela.
- Se from_type é ABS, e from é positivo, então é a posição do início da janela desde o início da partição. A indexação é baseada em 1 e 0 é interpretado como 1. Por exemplo, 0 e 1 significam que a janela começa a partir do início da partição. Se from for negativo, então é a posição do início da janela a partir do final da partição. -1 significa a última linha da 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 fim 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 a partir da qual as linhas de saída são retornadas. Se usado em cálculos visuais, esse parâmetro aceita um eixo na forma visual.
Se especificado, todas as colunas em partitionBy devem vir dele ou de uma tabela relacionada.
Se omitido:
- orderBy deve ser explicitamente especificado.
- Todas as expressões orderBy e partitionBy devem ser nomes de colunas totalmente qualificados e provenientes de uma única tabela.
- O padrão é ALLSELECTED() de todas as colunas em orderBy e partitionBy.
orderBy (Opcional) Uma cláusula ORDERBY() que contém as expressões que definem como cada partição é classificada.
Se omitido:
- relation deve ser explicitamente especificado.
- O padrão é ordenar por cada coluna em relation que ainda não esteja especificado em partitionBy.
blanks (Opcional) Uma enumeração que define como manipular valores em branco ao classificar o relation ou axis.
Os valores suportados são:
  • DEFAULT (o valor padrão), onde o comportamento para valores numéricos é valores em branco são ordenados entre zero e valores negativos. O comportamento para cadeias de caracteres é valores em branco são ordenados antes de todas as cadeias de caracteres, incluindo cadeias vazias.
  • FIRST, os espaços em branco são sempre ordenados no início, independentemente da ordem de classificação crescente ou decrescente.
  • LAST, os espaços em branco são sempre ordenados no final, independentemente da ordem de classificação crescente ou decrescente.
Observe que, quando o parâmetro e os espaços em branco na função () em expressões individuais são especificados, na expressão orderBy individual tem prioridade para a expressão orderBy relevante, e as expressões orderBy sem serem especificadas honrarão o parâmetro na função pai.
partitionBy (Opcional) Uma PARTITIONBYcláusula () contendo as colunas que definem como relation é particionado. Se omitido, relation é tratado como uma única partição.
matchBy (Opcional) Uma MATCHBYcláusula () contendo as colunas que definem como fazer a correspondência de dados e identificar a linha atual.
reset (Opcional) Disponível apenas em cálculos visuais. Indica se o cálculo é redefinido e em que nível da hierarquia de colunas da forma visual. Os valores aceitos são: uma referência de campo a uma coluna na forma visual atual, NONE (padrão), LOWESTPARENT, HIGHESTPARENTou um inteiro. O comportamento depende do sinal inteiro:
- Se zero ou omitido, o cálculo não é reiniciado. Equivalente a NONE.
- Se positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT equivale a 1.
- Se negativo, o inteiro identifica a coluna a partir do mais baixo, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Valor de retorno

Todas as linhas da janela.

Observações

Exceto para colunas adicionadas por DAX funções de tabela, cada coluna em relation, 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 valor ABS, o seguinte se aplica apenas às colunas partitionBy:

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

Se todas as colunas do relationforam adicionadas por DAX funções da tabela, um erro será retornado.

Se matchBy estiver presente, WINDOW tentará usar matchBy e partitionBy colunas 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 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 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 é retornada se:

  • O valor externo correspondente de uma coluna orderBy ou partitionBy não existe dentro relation.
  • Toda a janela está fora da partição, ou o início da janela é após o seu fim.

Se WINDOW for usado dentro de 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, ela será definida como a primeira linha. Da mesma forma, se o final da janela estiver após a última linha da partição, ela será definida como a última linha.

reset pode ser usado apenas em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis pode ser especificado, mas relation não pode.

Se o valor de for absoluto (ou seja, HIGHESTPARENT um inteiro positivo ou uma referência de reset campo) e o cálculo for avaliado no nível alvo ou acima dele na hierarquia, o cálculo será redefinido para cada elemento individual. Ou seja, a função é avaliada dentro de uma partição contendo apenas esse elemento específico.

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

Devolve a média de 3 dias dos preços unitários de cada produto. Observe que a janela de 3 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]
)

Devolve a soma corrente do Total de Vendas por Número de Mês do Ano, reiniciando para cada Ano Fiscal:

Ano Mês Número do Ano Valor das vendas 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
Ano fiscal de 2019 1 $1.847.692 $1.847.692
Ano fiscal de 2019 2 $2.829.362 $4.677.054
Ano fiscal de 2019 3 $2.092.434 $6.769.488
Ano fiscal de 2019 4 $2.405.971 $9.175.459
Ano fiscal de 2019 5 $3.459.444 $12.634.903
Ano fiscal de 2019 6 $2.850.649 $15.485.552
Ano fiscal de 2019 7 $2.939.691 $18.425.243
Ano fiscal de 2019 8 $3.964.801 $22.390.045
Ano fiscal de 2019 9 $3.287.606 $25.677.650
Ano fiscal de 2019 10 $2.157.287 $27.834.938
Ano fiscal de 2019 11 $3.611.092 $31.446.030
Ano fiscal de 2019 12 $2.624.078 $34.070.109
Ano Fiscal de 2020 1 $3.235.187 $3.235.187
Ano Fiscal de 2020 2 $4.070.046 $7.305.233
Ano Fiscal de 2020 3 $4.429.833 $11.735.066
Ano Fiscal de 2020 4 $4.002.614 $15.737.680
Ano Fiscal de 2020 5 $5.265.797 $21.003.477
Ano Fiscal de 2020 6 $3.465.241 $24.468.717
Ano Fiscal de 2020 7 $3.513.064 $27.981.781
Ano Fiscal de 2020 8 $5.247.165 $33.228.947
Ano Fiscal de 2020 9 $5.104.088 $38.333.035
Ano Fiscal de 2020 10 $3.542.150 $41.875.184
Ano Fiscal de 2020 11 $5.151.897 $47.027.081
Ano Fiscal de 2020 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 mês, calculado ao longo de cada ano. O valor 1 poderia ser usado em vez de HIGHESTPARENT, com o mesmo resultado.

A captura de tela abaixo mostra a matriz visual e 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 mês, calculado ao longo de cada trimestre. O valor LOWESTPARENT poderia ser usado em vez de -1, com o mesmo resultado.

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM