Del via


OFFSET

gjelder:beregnet kolonneberegnet tabellMeasurevisualobjektberegning

Returnerer en enkelt rad som er plassert enten før or etter gjeldende rad i samme tabell, med en gitt offset. If gjeldende rad ikke kan utledes til én rad, kan flere rader returneres.

Syntaks

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

Parametere

Vilkår Definisjon
delta Antall rader før (negative value) or etter (positive value) gjeldende rad som dataene skal hentes fra. Det kan være et hvilket som helst DAX uttrykk som returnerer en skalar value.
relation (Valgfritt) Et tabelluttrykk som utdataraden returneres fra.
If angitt, må all kolonner i partitionBy komme fra den or en related tabell.
If utelatt:
- orderBy må angis eksplisitt.
– AllorderByandpartitionBy uttrykk må være fullstendige kolonnenavn and kommer fra én enkelt tabell.
– standarder for ALLSELECTED() av all kolonner i orderByandpartitionBy.
axis (Valgfritt) En akse i den visuelle figuren. and er bare tilgjengelig i visuelle beregninger, erstatter relation.
orderBy (Valgfritt) En ORDERBY() setningsdel som inneholder uttrykkene som define hvordan hver partisjon sorteres.
If utelatt:
- relation må angis eksplisitt.
– Standarder for å bestille etter hver kolonne i relation som allerede er not angitt i partitionBy.
blanks (Valgfritt) En opplisting som definerer hvordan du håndterer blankvalues når du sorterer.
Denne parameteren er reservert for fremtidig bruk.
Foreløpig er den eneste støttede valueDEFAULT, der virkemåten for numeriske values er blankvalues ordnes mellom null and negativ values. Virkemåten for strenger er blankvalues ordnes før all strenger, inkludert tomme strenger.
partitionBy (Valgfritt) En PARTITIONBY() setningsdel som inneholder kolonnene som define hvordan relation partisjoneres.
If utelatt, behandles relation som én enkelt partisjon.
matchBy (Valgfritt) En MATCHBY() setningsdel som inneholder kolonnene som define hvordan data samsvarer and identifisere gjeldende rad.
reset (Valgfritt) Bare tilgjengelig i visuelle beregninger. Angir if beregningen tilbakestilles, and på hvilket nivå i kolonnehierarkiet for visualobjektfiguren. Godtatt values er: en feltreferanse til en kolonne i gjeldende visuelle figur, NONE (standard), LOWESTPARENT, HIGHESTPARENT, or et heltall. Virkemåten avhenger av heltallet sign:
- If null or utelatt, tilbakestilles beregningen not. Tilsvarer NONE.
– If positivt identifiserer heltallet kolonnen som starter fra den høyeste, uavhengige av korn. HIGHESTPARENT tilsvarer 1.
– If negativ, identifiserer heltallet kolonnen fra det laveste, i forhold til gjeldende korn. LOWESTPARENT tilsvarer -1.

Returner value

Ett or flere rader fra relation.

Merknader

Except for kolonner som legges til av DAX tabellfunksjoner, må hver kolonne i relation, når matchBy er not til stede, or hver kolonne i matchByandpartitionBy, når matchBy finnes, ha en tilsvarende ytre value for å define gjeldende rad som skal fungere, med følgende virkemåte:

  • If det er nøyaktig én tilsvarende ytre kolonne, brukes value.
  • If det ikke finnes noen tilsvarende ytre kolonne, gjør du følgende:
    • OFFSET vil first bestemme all kolonner som ikke har noen tilsvarende ytre kolonne.
    • For hver kombinasjon av eksisterende values for disse kolonnene i OFFSEToverordnede kontekst, evalueres OFFSETand en rad returneres.
    • OFFSETendelige utdata er en union av disse radene.
  • If det er mer enn én tilsvarende ytre kolonne, returneres en error.

If all av kolonnene i relationble lagt til av DAX tabellfunksjoner, returneres en error.

If matchBy finnes, prøver OFFSET å bruke matchByandpartitionBy kolonner til å identifisere raden. If matchBy finnes notand kolonnene som er angitt i orderByandpartitionBy, kan ikke identifisere hver rad i relationunikt, og deretter:

  • OFFSET vil prøve å find det minste antallet ekstra kolonner som kreves for å identifisere hver rad unikt.
  • If slike kolonner finnes, vil OFFSET automatisk føye til disse nye kolonnene i orderBy, and hver partisjon sorteres ved hjelp av dette nye settet med OrderBy kolonner.
  • If slike kolonner ikke finnes, returneres en error.

En tom tabell returneres if:

  • Den tilsvarende ytre value i en OrderByorPartitionBy kolonne finnes not i relation.
  • Den deltavalue fører til et skifte til en rad som not finnes i partisjonen.

If OFFSET brukes i en beregnet kolonne som er definert i samme tabell som relation, utelates andorderBy, returneres en error.

reset bare kan brukes i visuelle beregninger, kan and ikke brukes i kombinasjon med orderByorpartitionBy. If reset finnes, kan axis angis, men relation kan ikke.

Eksempel 1 – beregnet kolonne

Følgende DAX spørring:

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

Returnerer en tabell som oppsummerer det totale salget for hver product kategori andcalendaryear, i tillegg til det totale salget for denne kategorien i previousyear.

Eksempel 2 - measure

Følgende DAX spørring:

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

Bruker OFFSET() i en measure til å returnere en tabell som oppsummerer det totale salget for hver calendaryearand det totale salget for previousyear.

Eksempel 3 – beregnet kolonne

Følgende DAX spørring:

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

Returnerer FactInternetSales-tabellen med å legge til en kolonne, som angir, for hvert salg, dets previous salgsbeløp, av samme product, i synkende rekkefølge av salgsbeløp, med gjeldende salg identifisert av SalesOrderNumber and SalesOrderLineNumber. Uten MATCHBYvil spørringen returnere en error siden det ikke er noen nøkkelkolonner i FactInternetSales-tabellen.

Eksempel 4 – visuell beregning

Følgende visuelle beregning DAX spørring:

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

Returnerer differansen i totalt salg mellom hver monthandprevious én innenfor samme year.

Skjermbildet nedenfor viser den visuelle matrisen and beregningsuttrykket for visualobjekter:

DAX beregning av visualobjekter

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER