Delen via


OFFSET

Van toepassing op:berekende kolomberekende tabelMeasureVisuele berekening

Retourneert één rij die wordt geplaatst vóór or na de huidige rij binnen dezelfde tabel, door een gegeven offset. If de huidige rij niet kan worden afgeleid van één rij, kunnen meerdere rijen worden geretourneerd.

Syntaxis

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

Parameters

Term Definitie
delta Het aantal rijen vóór (negatieve value) or na (positieve value) de huidige rij waaruit de gegevens moeten worden opgehaald. Dit kan elke DAX expressie zijn die een scalaire valueretourneert.
relation (Optioneel) Een tabelexpressie waaruit de uitvoerrij wordt geretourneerd.
If opgegeven, moeten all kolommen in partitionBy afkomstig zijn or een related tabel.
If weggelaten:
- orderBy moet expliciet worden opgegeven.
: AllorderByandpartitionBy expressies moeten volledig gekwalificeerde kolomnamen zijn and afkomstig zijn van één tabel.
: standaard ingesteld op ALLSELECTED() van all kolommen in orderByandpartitionBy.
axis (Optioneel) Een as in de visuele shape. Alleen beschikbaar in visuele berekeningen, and vervangt relation.
orderBy (Optioneel) Een ORDERBY() component met de expressies die define hoe elke partitie wordt gesorteerd.
If weggelaten:
- relation moet expliciet worden opgegeven.
: standaard wordt elke kolom in relation gerangschikt die not al is opgegeven in partitionBy.
blanks (Optioneel) Een opsomming die definieert hoe blankvalues moet worden verwerkt bij het sorteren.
Deze parameter is gereserveerd voor toekomstig gebruik.
Momenteel wordt de enige ondersteunde valueDEFAULT, waarbij het gedrag voor numerieke values wordt blankvalues geordend tussen nul and negatieve values. Het gedrag voor tekenreeksen wordt blankvalues worden geordend voordat all tekenreeksen, inclusief lege tekenreeksen.
partitionBy (Optioneel) Een PARTITIONBY() component met de kolommen die define hoe relation wordt gepartitioneerd.
If weggelaten, wordt relation behandeld als één partitie.
matchBy (Optioneel) Een MATCHBY() component met de kolommen die define hoe gegevens overeenkomen and de huidige rij identificeren.
reset (Optioneel) Alleen beschikbaar in visuele berekeningen. Hiermee wordt aangegeven if de berekening opnieuw wordt ingesteld and op welk niveau van de kolomhiërarchie van de visualshape. Geaccepteerde values zijn: een veldreferentie naar een kolom in de huidige visuele shape, NONE (standaard), LOWESTPARENT, HIGHESTPARENT, or een geheel getal. Het gedrag is afhankelijk van het gehele getal sign:
- If nul or weggelaten, wordt de berekening not opnieuw ingesteld. Gelijk aan NONE.
- If positief, identificeert het gehele getal de kolom die begint vanaf het hoogste, onafhankelijk van graan. HIGHESTPARENT is gelijk aan 1.
- If negatief, identificeert het gehele getal de kolom die begint vanaf het laagste getal ten opzichte van de huidige korrel. LOWESTPARENT is gelijk aan -1.

value retourneren

Een or meer rijen uit relation.

Opmerkingen

Except voor kolommen die zijn toegevoegd door DAX tabelfuncties, moet elke kolom in relation, wanneer matchBy aanwezig not is, elke kolom in ormatchByandpartitionBy , wanneer matchBy aanwezig is, een overeenkomstig buitenste value hebben om de huidige rij waarop moet worden uitgevoerd te define, met het volgende gedrag:

  • If er precies één overeenkomstige buitenkolom is, wordt de value gebruikt.
  • If er geen overeenkomstige buitenste kolom is, gaat u als volgt te werk:
    • OFFSET bepaalt firstall kolommen zonder bijbehorende buitenste kolom.
    • Voor elke combinatie van bestaande values voor deze kolommen in de bovenliggende context van OFFSETwordt OFFSET geëvalueerd and een rij wordt geretourneerd.
    • OFFSETuiteindelijke uitvoer is een union van deze rijen.
  • If er meer dan één corresponderende buitenkolom is, wordt een error geretourneerd.

If all kolommen van relationzijn toegevoegd door DAX tabelfuncties, wordt een error geretourneerd.

If matchBy aanwezig is, probeert OFFSETmatchByandpartitionBy kolommen te gebruiken om de rij te identificeren. If matchBy is not aanwezig and de kolommen die zijn opgegeven in orderByandpartitionBy niet uniek elke rij in relationkunnen identificeren, en vervolgens:

  • OFFSET probeert het minste aantal extra kolommen te find dat nodig is om elke rij uniek te identificeren.
  • If dergelijke kolommen kunnen worden gevonden, voegt OFFSET deze nieuwe kolommen automatisch toe aan orderBy, and elke partitie wordt gesorteerd met behulp van deze nieuwe set OrderBy kolommen.
  • If dergelijke kolommen niet kunnen worden gevonden, wordt een error geretourneerd.

Er wordt een lege tabel geretourneerd if:

  • De overeenkomstige buitenste value van een OrderByorPartitionBy kolom bestaat not binnen relation.
  • De deltavalue veroorzaakt een verschuiving naar een rij die not bestaat binnen de partitie.

If OFFSET wordt gebruikt in een berekende kolom die is gedefinieerd in dezelfde tabel als relation, wordt andorderBy weggelaten, wordt een error geretourneerd.

reset kan alleen worden gebruikt in visuele berekeningen, and kan niet worden gebruikt in combinatie met orderByorpartitionBy. If reset aanwezig is, kan axis worden opgegeven, maar relation niet.

Voorbeeld 1: berekende kolom

De volgende DAX query:

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

Retourneert een tabel met een overzicht van de totale verkoop voor elke product categorie andcalendaryear, evenals de totale verkoop voor die categorie in de previousyear.

Voorbeeld 2: measure

De volgende DAX query:

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

Gebruikt OFFSET() in een measure om een tabel te retourneren waarin de totale verkoop voor elke calendaryearand de totale verkoop voor de previousyearwordt samengevat.

Voorbeeld 3: berekende kolom

De volgende DAX query:

EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

Retourneert de tabel FactInternetSales met het toevoegen van een kolom, die aangeeft, voor elke verkoop, het bedrag van de previous verkoop, van dezelfde product, in aflopende volgorde van het verkoopbedrag, waarbij de huidige verkoop wordt geïdentificeerd door het verkoopordernummer and SalesOrderLineNumber. Zonder MATCHBYretourneert de query een error omdat er geen belangrijke kolommen in de tabel FactInternetSales zijn.

Voorbeeld 4: visuele berekening

De volgende visuele berekening DAX query:

SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

Retourneert het verschil in de totale verkoop tussen elke monthand de previous één binnen hetzelfde year.

In de onderstaande schermopname ziet u de visualmatrix and de visuele berekeningsexpressie:

DAX visuele berekening

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER