Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:
Coluna
calculadaTabela calculada
Medida
Cálculo visual
Devolve várias linhas que estão posicionadas dentro do intervalo dado.
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 for ABS, e from for positivo, é a posição do início da janela a partir do 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, é a posição do início da janela a partir do fim 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: - Deve especificar orderBy explicitamente.- Todas orderBy as expressões e partitionBy devem ser nomes de colunas totalmente qualificadas 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: - Deve especificar relation explicitamente.
- Por defeito ordena por todas as colunas em relation que não estejam já especificadas 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:
Quando especificas tanto o blanks parâmetro como os espaços em branco na ORDERBYfunção () em expressões individuais, blanks na expressão individualmente orderBy tem prioridade para a expressão orderBy relevante. Expressões OrderBy sem blanks serem especificadas honram o blanks 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 é reiniciado 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 pelas colunas adicionadas por DAX funções da 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 exterior correspondente para ajudar a definir a linha atual onde operar. Se from_type e to_type ambos têm valor ABS, o seguinte aplica-se apenas às partitionBy colunas:
- Se existir exatamente uma coluna exterior correspondente, o seu valor é utilizado.
- Se não existir uma coluna exterior correspondente:
- WINDOW primeiro determina todas as colunas que não têm uma coluna exterior correspondente.
- Para cada combinação de valores existentes para estas colunas no WINDOWcontexto WINDOW pai de , é avaliado, e as linhas correspondentes são devolvidas.
- WINDOWa saída final é uma união destas linhas.
- Se existirem mais do que uma coluna exterior correspondente, é devolvido um erro.
Se todas as colunas do relationforam adicionadas por DAX funções da tabela, um erro será retornado.
Se matchBy estiver presente, WINDOW tenta usar matchBy colunas e partitionBy para identificar a linha.
Se matchBy não está presente e as colunas especificadas dentro orderBy de e partitionBy não conseguem identificar unicamente cada linha em relation:
- WINDOW tenta encontrar o menor número possível de colunas adicionais necessárias para identificar unicamente cada linha.
- Se tais colunas forem encontradas, WINDOW adiciona automaticamente estas novas colunas a
orderBy, e cada partição é ordenada usando este novo conjunto de colunas orderBy. - Se tais colunas não forem encontradas, é devolvido um erro.
Uma tabela vazia é retornada se:
- O valor exterior correspondente de uma
orderBycoluna oupartitionBynão existe dentrorelationde . - A janela inteira está fora da divisória, ou o início da janela está depois do seu fim.
Se usar WINDOW dentro de uma coluna calculada definida na mesma tabela que relation, e orderBy for omitido, é devolvido um erro.
Se o início da janela for antes da primeira fila, está definido para a primeira fila. De forma semelhante, se o fim da janela for depois da última linha da partição, está definido para a última linha.
Podes usar reset apenas em cálculos visuais, e não podes usá-lo em combinação com orderBy ou partitionBy. Se reset estiver presente, pode especificar axis mas não relation.
Se o valor de reset for absoluto (um inteiro positivo, HIGHESTPARENT, ou uma referência de campo) e o cálculo for avaliado ao nível alvo ou acima da hierarquia, o cálculo reinicia-se para cada elemento individual. Ou seja, a função é avaliada dentro de uma partição contendo apenas esse elemento específico.
Exemplos neste artigo podem ser usados com o modelo de exemplo do Power BI Desktop do Adventure Works DW 2020. Para obter o modelo, consulte DAX exemplo de modelo.
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. A janela de 3 dias consiste em três dias em que o produto teve vendas, não necessariamente três dias de calendário 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:
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.