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:
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.
Conteúdos relacionados
ÍNDICE
MOVINGMÉDIA
DESLOCAMENTO
ENCOMENDADO
PARTIÇÃOPOR
GAMA
POSIÇÃO
SOMA DE EXECUÇÃO DO NÚMERODE LINHA