OFFSET
Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual
Devolve uma única linha posicionada antes or depois de a linha atual dentro da mesma tabela, por um determinado offset. If a linha atual não puder ser deduzida para uma única linha, várias linhas poderão ser retornadas.
Sintaxe
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parâmetros
Vigência | Definição |
---|---|
delta |
O número de linhas antes (valuenegativo) or depois (valuepositivo) da linha atual a partir da qual obter os dados. Pode ser qualquer expressão DAX que retorna uma valueescalar . |
relation |
(Opcional) Uma expressão de tabela da qual a linha de saída é retornada.
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
Uma or mais linhas de relation
.
Comentários
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, com o seguinte comportamento:
- If houver exatamente uma coluna externa correspondente, sua value é usada.
-
If não houver coluna externa correspondente, então:
- OFFSET 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 OFFSET, OFFSET é avaliada and uma linha é retornada.
- A saída final do OFFSETé 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, OFFSET 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:
- OFFSET tentará find o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
-
If essas colunas puderem ser encontradas, OFFSET 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 OrderByorPartitionBynot existe dentro
relation
. - O
delta
value causa uma mudança para uma linha que not existe dentro da partição.
If
OFFSET é usado dentro de uma coluna calculada definida na mesma tabela que relation
, andorderBy
é omitido, um error é retornado.
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 - coluna calculada
O seguinte DAX consulta:
DEFINE
VAR vRelation = SUMMARIZECOLUMNS (
DimProductCategory[EnglishProductCategoryName],
DimDate[CalendarYear],
"CurrentYearSales", SUM(FactInternetSales[SalesAmount])
)
EVALUATE
ADDCOLUMNS (
vRelation,
"PreviousYearSales",
SELECTCOLUMNS(
OFFSET (
-1,
vRelation,
ORDERBY([CalendarYear]),
PARTITIONBY([EnglishProductCategoryName])
),
[CurrentYearSales]
)
)
Devolve uma tabela que resume o total de vendas para cada product categoria andcalendaryear, bem como o total de vendas para essa categoria no previousyear.
Exemplo 2 - measure
O seguinte DAX consulta:
DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
DimDate[CalendarYear],
"CurrentYearSales", DimProduct[CurrentYearSales],
"PreviousYearSales", DimProduct[PreviousYearSales]
)
Usa OFFSET() em um measure para retornar uma tabela que resume o total de vendas para cada calendaryearand o total de vendas para o previousyear.
Exemplo 3 - coluna calculada
O seguinte DAX consulta:
EVALUATE
ADDCOLUMNS (
FactInternetSales,
"Previous Sales Amount",
SELECTCOLUMNS (
OFFSET (
-1,
FactInternetSales,
ORDERBY ( FactInternetSales[SalesAmount], DESC ),
PARTITIONBY ( FactInternetSales[ProductKey] ),
MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
),
FactInternetSales[SalesAmount]
)
)
Retorna a tabela FactInternetSales com a adição de uma coluna, que indica, para cada venda, o valor de sua previous venda, do mesmo product, em ordem decrescente de valor de vendas, com a venda atual sendo identificada por seu SalesOrderNumber and SalesOrderLineNumber. Sem MATCHBY, a consulta retornaria um error uma vez que não há colunas de chave na tabela FactInternetSales.
Exemplo 4 - cálculo visual
O seguinte cálculo visual DAX consulta:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Devolve a diferença no total de vendas entre cada monthand o previous dentro do mesmo year.
A captura de tela abaixo mostra a matriz visual and a expressão de cálculo visual: