Partilhar via


JANELA

Aplica-se a: Coluna calculada Tabela calculada Medida Cá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
de 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 <de> é positivo, então é 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 a partir do início da partição. Se <de> é 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.
para O mesmo que <de>, 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<.>
relação (Opcional) Uma expressão de tabela a partir da qual as linhas de saída são retornadas.
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>.
eixo (Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais e substitui <a relação>.
orderBy (Opcional) Uma cláusula ORDERBY() contendo as expressões que definem como cada partição é classificada.
Se omitida:
- <a relação> deve ser explicitamente especificada.
- Padrão para ordenar por cada coluna em <relação> que ainda não está especificado em <partitionBy>.
espaços em branco (Opcional) Uma enumeração que define como manipular valores em branco ao classificar.
Este parâmetro está reservado para uso futuro.
Atualmente, o único valor suportado é DEFAULT, 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.
partiçãoPor (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que definem como <a relação> é particionada. Se omitida, <a relação> é tratada como uma única partição.
matchBy (Opcional) Uma cláusula MATCHBY() que contém as colunas que definem como fazer a correspondência de dados e identificar a linha atual.
repor (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: NONE, LOWESTPARENT, HIGHESTPARENT ou um inteiro. O comportamento depende do sinal inteiro:
- Se zero ou omitido, o cálculo não é reiniciado. Equivalente a NENHUM.
- Se positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT é equivalente 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 devolvido

Todas as linhas da janela.

Observações

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 aplica somente às <colunas partitionBy> :

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

Se todas as colunas da relação> foram adicionadas por funções de <tabela DAX, um erro é retornado.

Se <matchBy> estiver presente, WINDOW tentará usar <as 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 cada linha em <relação>, 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 na <relação>.
  • 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 <a relação> e <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 <a redefinição> estiver presente, o eixo> pode 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]))
)

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:

Anual Mês Número do Ano 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

A seguinte consulta DAX de cálculo visual:

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. 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 DAX

Exemplo 4 - cálculo visual

A seguinte consulta DAX de cálculo visual:

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

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

ÍNDICE
MOVINGMÉDIA
DESLOCAMENTO
ENCOMENDADO
PARTIÇÃOPOR
GAMA
POSIÇÃO
SOMA DE EXECUÇÃO DO NÚMERODE LINHA