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
Retorna uma única linha posicionada antes ou depois da linha atual dentro da mesma tabela, por um determinado deslocamento. Se 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 (valor negativo) ou depois (valor positivo) da linha atual a partir da qual obter os dados. Pode ser qualquer expressão DAX que retorna um valor escalar. |
relation |
(Opcional) Uma expressão de tabela da qual a linha de saída é retornada. 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: - 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. |
orderBy |
(Opcional) Uma cláusula ORDERBY() que contém as expressões que definem como cada partição é classificada.
Se omitido: - relation deve ser explicitamente especificado.
- O padrão é ordenar por cada coluna em relation que ainda não esteja especificado 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:
|
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 é redefinido 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
Uma ou mais linhas de relation.
Comentários
Exceto para colunas adicionadas por DAX funções de 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 externo correspondente para ajudar a definir a linha atual na qual operar, com o seguinte comportamento:
- Se houver exatamente uma coluna externa correspondente, seu valor será usado.
- Se não existir uma coluna exterior correspondente, então:
- OFFSET primeiro determinará todas as colunas que não têm coluna externa correspondente.
- Para cada combinação de valores existentes para essas colunas no contexto pai do OFFSET, OFFSET é avaliada e uma linha é retornada.
- OFFSETsaída final é uma união dessas linhas.
- Se houver mais de uma coluna externa correspondente, um erro será retornado.
Se todas as colunas do relationforam adicionadas por DAX funções da tabela, um erro será retornado.
Se matchBy estiver presente, OFFSET tentará usar matchBy e partitionBy colunas 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 relation, então:
- OFFSET tentará encontrar o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
- Se essas colunas puderem ser encontradas, OFFSET 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 dentro
relation. - O valor
deltacausa uma mudança para uma linha que não existe dentro da partição.
Se OFFSET for usado dentro de uma coluna calculada definida na mesma tabela que relatione orderBy for omitido, um erro será retornado.
reset pode ser usado apenas em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis pode ser especificado, mas relation não pode.
Se o valor de for absoluto (ou seja, reset um inteiro positivo ou uma referência de HIGHESTPARENT campo) e o cálculo for avaliado no nível alvo ou acima dele na hierarquia, o cálculo será redefinido para cada elemento individual. Ou seja, a função é avaliada dentro de uma partição contendo apenas esse elemento específico.
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 categoria de produto e ano civil, bem como o total de vendas para essa categoria no ano anterior.
Exemplo 2 - medida
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 uma medida para retornar uma tabela que resume o total de vendas para cada ano civil e o total de vendas para o ano anterior.
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 da venda anterior, do mesmo produto, em ordem decrescente do valor das vendas, com a venda atual sendo identificada por seu SalesOrderNumber e SalesOrderLineNumber. Sem MATCHBY, a consulta retornaria um erro, 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 mês e o anterior no mesmo ano.
A captura de tela abaixo mostra a matriz visual e a expressão de cálculo visual: