WINDOW
Aplica-se a:Coluna calculadaTabela calculadaMeasureCá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 o window começa. Pode ser qualquer expressão DAX que retorna uma valueescalar .
O comportamento depende do parâmetro from_type : - If from_type é REL, o número de linhas para voltar (valuenegativo) or para frente (valuepositivo) da linha atual para obter a linha first no window.
- If from_type é ABS, andfrom é positivo, então é a posição do início do window do início da partição. A indexação é baseada em 1. Por exemplo, 1 significa window começa desde o início da partição.
If
from é negativo, então é a posição do início do window a partir do final da partição. -1 significa a linha last na partição. |
from_type |
Modifica o comportamento do parâmetro from . Os values possíveis são ABS (absoluto) and REL (relativo). O padrão é REL. |
to |
O mesmo que from , mas indica o fim do window. A linha last está incluída no window. |
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.
If especificado, all colunas em partitionBy devem vir dele or uma tabela related.
If omitido: - orderBy deve ser explicitamente especificado.- All orderBy andpartitionBy expressões devem ser nomes de colunas totalmente qualificados and provenientes de uma única tabela.
- O padrão é ALLSELECTED() de all colunas no orderBy andpartitionBy . |
axis |
(Opcional) Um eixo na forma visual. Disponível apenas em cálculos visuais, and substitui relation . |
orderBy |
(Opcional) Uma cláusula ORDERBY() contendo as expressões que define como cada partição é classificada.
If omitido: - relation deve ser explicitamente especificado.
- Padroniza a ordenação por cada coluna em relation que not já especificada em partitionBy . |
blanks |
(Opcional) Uma enumeração que define como lidar com blankvalues ao classificar.
Este parâmetro está reservado para uso futuro. Atualmente, a única value suportada é DEFAULT , onde o comportamento para values numéricos é blankvalues são ordenados entre zero and negativo values. O comportamento para cadeias de caracteres é blankvalues são ordenadas antes de all cadeias de caracteres, incluindo cadeias vazias. |
partitionBy |
(Opcional) Uma cláusula PARTITIONBY() que contém as colunas que define como relation é particionado.
If omitida, relation é tratada como uma única partição. |
matchBy |
(Opcional) Uma cláusula MATCHBY() que contém as colunas que define como fazer a correspondência de dados and identificar a linha atual. |
reset |
(Opcional) Disponível apenas em cálculos visuais. Indica if o cálculo é redefinido and em que nível da hierarquia de colunas da forma visual. Os values aceitos são: NONE , LOWESTPARENT , HIGHESTPARENT , or um número inteiro. O comportamento depende do número inteiro sign: - If zero or omitido, o cálculo not é reiniciado. Equivalente a NONE .
- If positivo, o inteiro identifica a coluna a partir do mais alto, independente do grão. HIGHESTPARENT equivale a 1.
- If negativo, o inteiro identifica a coluna a partir do mais baixo, em relação ao grão atual. LOWESTPARENT é equivalente a -1. |
Regresso value
All linhas do window.
Observações
Except para colunas adicionadas por DAX funções de tabela, cada coluna em relation
, quando matchBy
estiver not presente, or cada coluna em matchBy
andpartitionBy
, quando matchBy
estiver presente, deve ter uma value externa correspondente para ajudar a define a linha atual na qual operar.
If
from_type
and
to_type
ambos tiverem valueABS, o seguinte aplica-se apenas às colunas partitionBy
:
- If houver exatamente uma coluna externa correspondente, sua value é usada.
-
If não houver coluna externa correspondente:
- WINDOW first determinará all colunas que não têm coluna externa correspondente.
- Para cada combinação de values existentes para essas colunas no contexto pai do WINDOW, WINDOW é avaliada and as linhas correspondentes são retornadas.
- WINDOW saída final é uma union dessas linhas.
- If houver mais de uma coluna externa correspondente, uma error será retornada.
If
all das colunas de relation
foram adicionadas por DAX funções de tabela, uma error é retornada.
If
matchBy
estiver presente, WINDOW tentará usar matchBy
andpartitionBy
colunas para identificar a linha.
If
matchBy
not estiver presente and as colunas especificadas em orderBy
andpartitionBy
não puder identificar exclusivamente todas as linhas relation
, então:
- WINDOW tentará find o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
-
If essas colunas puderem ser encontradas, WINDOW acrescentará automaticamente essas novas colunas a
orderBy
, and cada partição é classificada usando esse novo conjunto de colunas orderBy. - If essas colunas não puderem ser encontradas, uma error será retornada.
Uma tabela vazia é retornada if:
- A value externa correspondente de uma coluna
orderBy
orpartitionBy
not existe dentrorelation
. - Toda a window está fora da partição, or o início da window é após o seu fim.
If
WINDOW é usado dentro de uma coluna calculada definida na mesma tabela que relation
, andorderBy
é omitido, um error é retornado.
If o início da window for antes da linha first, ela será definida para a linha first. Da mesma forma, if o final do window estiver após a linha last da partição, ele será definido como a linha last.
reset
pode ser usado apenas em cálculos visuais and não pode ser usado em combinação com orderBy
orpartitionBy
.
If
reset
está presente, axis
pode ser especificado, mas relation
não pode.
Exemplo 1 - measure
Os seguintes measure:
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 os 3dayaverage de preços unitários para cada product. Note que o 3-daywindow consiste em três dias em que o product tem vendas, not necessariamente três dias calendar consecutivos.
Exemplo 2 - measure
Os seguintes measure:
RunningSum =
SUMX (
WINDOW (
1, ABS, 0, REL,
ALLSELECTED (
'Date'[Fiscal Year],
'Date'[Month Number Of Year]
),
PARTITIONBY ( 'Date'[Fiscal Year] )
),
[Total Sales]
)
Devolve o sum em execução para Total de Vendas por Month Número de Year, reiniciando para cada Yearfiscal :
Year | Month Número De Year | 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
O seguinte cálculo visual DAX consulta:
TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])
Devolve o total acumulado de vendas por month, calculado ao longo de cada year. O values 1 and -2 poderia ser usado em vez de HIGHESTPARENT
, com os mesmos resultados.
A captura de tela abaixo mostra a matriz visual and a expressão de 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 month, calculado ao longo de cada quarter.
Related conteúdo
INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM