Compartilhar via


OFFSET

aplica-se a:coluna calculadatabela calculadamedidacálculo visual

Retorna uma única linha posicionada antes ou depois do 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

Prazo Definição
delta O número de linhas antes (valor negativo) ou depois (valor positivo) da linha atual 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 especificado, todas as colunas em partitionBy deverão vir dela ou de uma tabela relacionada.
Se omitido:
- orderBy deve ser especificado explicitamente.
- Todas as expressões orderBy e partitionBy devem ser nomes de coluna totalmente qualificados e 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 relation.
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 no partitionBy.
blanks (Opcional) Uma enumeração que define como lidar com valores em branco ao classificar o relation ou axis.
os valores com suporte são:
  • DEFAULT (o valor padrão), em que o comportamento dos valores numéricos é ordenado entre valores zero e negativo. 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.
  • FIRST, os espaços em branco são sempre ordenados no início, independentemente da ordem de classificação crescente ou decrescente.
  • LAST, os espaços em branco são sempre ordenados no final, independentemente da ordem de classificação crescente ou decrescente.

Observação, quando o parâmetro blanks e espaços em branco na função ORDERBY() em expressões individuais são especificados, blanks na expressão orderBy individual tem prioridade para a expressão orderBy relevante e expressões orderBy sem blanks sendo especificadas respeitarão o parâmetro blanks na função pai.
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 somente em cálculos visuais. Indica se o cálculo é redefinido e em qual 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 é redefinido. Equivalente a NONE.
- Se positivo, o inteiro identifica a coluna a partir da mais alta, independente da granulação. HIGHESTPARENT é equivalente a 1.
- Se negativo, o inteiro identifica a coluna a partir do menor, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Valor de retorno

Uma ou mais linhas de relation.

Observações

Com exceção das colunas adicionadas por DAX funções de tabela, cada coluna em relation, quando matchBy não estiver presente ou cada coluna em matchBy e partitionBy, quando matchBy estiver 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 houver nenhuma coluna externa correspondente, então:
    • OFFSET primeiro determinará todas as colunas que não têm nenhuma coluna externa correspondente.
    • Para cada combinação de valores existentes para essas colunas no contexto pai do OFFSET, OFFSET é avaliado e uma linha é retornada.
    • A saída final de OFFSETé uma união dessas linhas.
  • Se houver mais de uma coluna externa correspondente, um erro será retornado.

Se todas as colunas de relationforam adicionadas por DAX funções de tabela, um erro será retornado.

Se matchBy estiver presente, OFFSET tentará usar colunas matchBy e partitionBy para identificar a linha. Se matchBy não estiverem presentes e as colunas especificadas em orderBy e partitionBy não puderem identificar exclusivamente todas as linhas em 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 anexará automaticamente essas novas colunas a orderBye cada partição será classificada usando este 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.
  • O valor delta causa uma mudança para uma linha que não existe dentro da partição.

Se OFFSET for usado em uma coluna calculada definida na mesma tabela que relatione orderBy for omitido, um erro será retornado.

reset pode ser usado somente em cálculos visuais e não pode ser usado em combinação com orderBy ou partitionBy. Se reset estiver presente, axis poderá ser especificado, mas relation não.

Exemplo 1 – coluna calculada

A seguinte consulta DAX:

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]
    )
)

Retorna 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

A seguinte consulta DAX:

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 do ano anterior.

Exemplo 3 – coluna calculada

A seguinte consulta DAX:

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 venda anterior, do mesmo produto, em ordem decrescente do valor de vendas, com a venda atual sendo identificada por seus SalesOrderNumber e SalesOrderLineNumber. Sem MATCHBY, a consulta retornaria um erro, pois não há colunas-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))

Retorna 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:

DAX de cálculo visual

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER