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:
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.
Conteúdo relacionado
INDEX
MOVINGAVERAGE
DESLOCAMENTO
ORDERBY
PARTITIONBY
RANGE
RANK
ROWNUMBERRUNNINGSUM
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de