Ler em inglês

Compartilhar via


OFFSET

aplica-se a:coluna calculadatabela calculadaMeasurecálculo visual

Retorna uma única linha que é posicionada antes de or após a linha atual dentro da mesma tabela, por um determinado offset. If a linha atual não pode ser deduzida para uma única linha, várias linhas podem ser retornadas.

Sintaxe

OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parâmetros

Prazo Definição
delta O número de linhas anteriores (valuenegativo) or após (valuepositivo) a linha atual da qual obter os dados. Pode ser qualquer expressão DAX que retorna um valueescalar.
relation (Opcional) Uma expressão de tabela da qual a linha de saída é retornada.
If especificada, all colunas em partitionBy devem vir dela or uma tabela related.
If omitido:
- orderBy deve ser explicitamente especificado.
– expressões AllorderByandpartitionBy devem ser nomes de coluna totalmente qualificados and provenientes de uma única tabela.
– O padrão é ALLSELECTED() de colunas all em orderByandpartitionBy.
axis (Opcional) Um eixo na forma visual. Disponível somente em cálculos visuais, and substitui relation.
orderBy (Opcional) Uma cláusula ORDERBY() que contém as expressões que define como cada partição é classificada.
If omitido:
- relation deve ser explicitamente especificado.
– O padrão é ordenar por cada coluna em relation que já está not especificada em partitionBy.
blanks (Opcional) Uma enumeração que define como lidar com blankvalues ao classificar.
Esse parâmetro é reservado para uso futuro.
Atualmente, o único value com suporte é DEFAULT, em que o comportamento do values numérico é blankvalues é ordenado entre zero andvaluesnegativo. O comportamento das cadeias de caracteres é blankvalues são ordenados antes de all cadeias de caracteres, incluindo cadeias de caracteres vazias.
partitionBy (Opcional) Uma cláusula PARTITIONBY() que contém as colunas que define como relation é particionada.
If omitido, relation é tratado como uma única partição.
matchBy (Opcional) Uma cláusula MATCHBY() que contém as colunas que define como corresponder dados and identificar a linha atual.
reset (Opcional) Disponível somente em cálculos visuais. Indica if as redefinições de cálculo, and em qual nível da hierarquia de colunas da forma visual. Os values aceitos são: NONE, LOWESTPARENT, HIGHESTPARENT, or um inteiro. O comportamento depende do inteiro sign:
- If zero or omitido, o cálculo not redefinição. Equivalente a NONE.
- If positivo, o inteiro identifica a coluna a partir da mais alta, independentemente da granulação. HIGHESTPARENT é equivalente a 1.
- If negativo, o inteiro identifica a coluna a partir do menor, em relação ao grão atual. LOWESTPARENT é equivalente a -1.

Retornar value

Uma or mais linhas de relation.

Observações

Except para colunas adicionadas por funções de tabela DAX, cada coluna em relation, quando matchBy estiver not presente, or cada coluna no matchByandpartitionBy, quando matchBy estiver presente, deverá ter uma value externa correspondente para ajudar a define linha atual na qual operar, com o seguinte comportamento:

  • If há exatamente uma coluna externa correspondente, sua value é usada.
  • If não há nenhuma coluna externa correspondente; em seguida:
    • OFFSET first determinará all colunas que não têm nenhuma coluna externa correspondente.
    • Para cada combinação de values existentes para essas colunas no contexto pai do OFFSET, OFFSET é avaliado and uma linha é retornada.
    • A saída final de OFFSETé um union dessas linhas.
  • If há mais de uma coluna externa correspondente, um error é retornado.

If all das colunas de relationforam adicionadas por funções de tabela DAX, um error é retornado.

If matchBy estiver presente, OFFSET tentará usar matchByandpartitionBy colunas para identificar a linha.
If matchBy está not presente and as colunas especificadas em orderByandpartitionBy não podem identificar exclusivamente todas as linhas em relation; em seguida:

  • OFFSET tentará find o menor número de colunas adicionais necessárias para identificar exclusivamente cada linha.
  • If essas colunas puderem ser encontradas, OFFSET anexará automaticamente essas novas colunas a orderBy, and cada partição for classificada usando esse novo conjunto de colunas de OrderBy.
  • If essas colunas não puderem ser encontradas, um error será retornado.

Uma tabela vazia é retornada if:

  • A value externa correspondente de uma coluna OrderByorPartitionBynot existe dentro de relation.
  • O deltavalue causa uma mudança para uma linha que not existe dentro da partição.

If OFFSET é usado em uma coluna calculada definida na mesma tabela que relation, andorderBy é omitida, um error é retornado.

reset pode ser usado somente em cálculos visuais, and não pode ser usado em combinação com orderByorpartitionBy. If reset está presente, axis pode 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 product categoria andcalendaryear, bem como o total de vendas para essa categoria no previousyear.

Exemplo 2 – measure

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

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 previous, do mesmo product, em ordem decrescente do valor de vendas, com a venda atual sendo identificada por seu SalesOrderNumber and SalesOrderLineNumber. Sem MATCHBY, a consulta retornaria um error, 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 monthand o previous um dentro do mesmo year.

A captura de tela abaixo mostra a matriz visual and a expressão de cálculo visual:

DAX de cálculo visual

INDEX
ORDERBY
PARTITIONBY
MATCHBY
WINDOW
RANK
ROWNUMBER