OFFSET
gjelder:beregnet kolonneberegnet tabellmålevisualobjektberegning
Returnerer en enkelt rad som er plassert enten før eller etter gjeldende rad i samme tabell, med en gitt forskyvning. Hvis 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 (negativ verdi) eller etter (positiv verdi) gjeldende rad som dataene skal hentes fra. Det kan være et hvilket som helst DAX uttrykk som returnerer en skalarverdi. |
relation |
(Valgfritt) Et tabelluttrykk som utdataraden returneres fra.
Hvis angitt, må alle kolonnene i partitionBy komme fra den eller en relatert tabell.
Hvis utelatt: - orderBy må angis eksplisitt.– Alle orderBy - og partitionBy uttrykk må være fullstendige kolonnenavn og komme fra én enkelt tabell.
– standarder for ALLSELECTED() for alle kolonner i orderBy og partitionBy . |
axis |
(Valgfritt) En akse i den visuelle figuren. Bare tilgjengelig i visuelle beregninger, og erstatter relation . |
orderBy |
(Valgfritt) En ORDERBY() setning som inneholder uttrykkene som definerer hvordan hver partisjon sorteres.
Hvis utelatt: - relation må angis eksplisitt.
– Standarder for bestilling av hver kolonne i relation som ikke allerede er angitt i partitionBy . |
blanks |
(Valgfritt) En opplisting som definerer hvordan du håndterer tomme verdier når du sorterer relation eller axis .
De støttede verdiene er:
Obs! Når blanks parameteren og tomrommene i ORDERBY()-funksjonen på individuelle uttrykk er angitt, prioriteres blanks enkelt orderBy-uttrykk for det relevante orderBy-uttrykket, og orderBy-uttrykk uten at blanks angis, respekterer blanks parameteren for den overordnede funksjonen. |
partitionBy |
(Valgfritt) En PARTITIONBY() setningsdel som inneholder kolonnene som definerer hvordan relation partisjoneres. Hvis utelatt, behandles relation som én enkelt partisjon. |
matchBy |
(Valgfritt) En MATCHBY() setningsdel som inneholder kolonnene som definerer hvordan dataene skal samsvare og identifisere gjeldende rad. |
reset |
(Valgfritt) Bare tilgjengelig i visuelle beregninger. Angir om beregningen tilbakestilles, og på hvilket nivå i kolonnehierarkiet for visualobjektfiguren. Godtatte verdier er: en feltreferanse til en kolonne i gjeldende visuelle figur, NONE (standard), LOWESTPARENT , HIGHESTPARENT eller et heltall. Virkemåten avhenger av heltallstegnet: – Hvis null eller utelatt, tilbakestilles ikke beregningen. Tilsvarer NONE .
– Hvis det er positivt, identifiserer heltallet kolonnen fra den høyeste, uavhengige av korn. HIGHESTPARENT tilsvarer 1.
– Hvis negativt, identifiserer heltallet kolonnen fra det laveste, i forhold til gjeldende korn. LOWESTPARENT tilsvarer -1. |
Returverdi
Én eller flere rader fra relation
.
Merknader
Bortsett fra kolonner som legges til av DAX tabellfunksjoner, må hver kolonne i relation
, når matchBy
ikke finnes, eller hver kolonne i matchBy
og partitionBy
, når matchBy
finnes, ha en tilsvarende ytre verdi for å definere gjeldende rad som skal fungere, med følgende virkemåte:
- Hvis det er nøyaktig én tilsvarende ytre kolonne, brukes verdien.
- Hvis det ikke finnes noen tilsvarende ytre kolonne, gjør du følgende:
- OFFSET bestemmer først alle kolonner som ikke har noen tilsvarende ytre kolonne.
- For hver kombinasjon av eksisterende verdier for disse kolonnene i OFFSEToverordnede kontekst, evalueres OFFSET og en rad returneres.
- OFFSET's endelige utdata er en union av disse radene.
- Hvis det er mer enn én tilsvarende ytre kolonne, returneres en feil.
Hvis alle kolonnene i relation
ble lagt til av DAX tabellfunksjoner, returneres en feil.
Hvis matchBy
finnes, prøver OFFSET å bruke matchBy
og partitionBy
kolonner til å identifisere raden.
Hvis matchBy
ikke finnes, og kolonnene som er angitt i orderBy
og partitionBy
ikke unikt kan identifisere hver rad i relation
, kan du:
- OFFSET vil prøve å finne det minste antallet ekstra kolonner som kreves for å identifisere hver rad unikt.
- Hvis du finner slike kolonner, vil OFFSET automatisk tilføye disse nye kolonnene til
orderBy
, og hver partisjon sorteres ved hjelp av dette nye settet med OrderBy-kolonner. - Hvis slike kolonner ikke blir funnet, returneres en feil.
En tom tabell returneres hvis:
- Den tilsvarende ytre verdien for en OrderBy- eller PartitionBy-kolonne finnes ikke i
relation
. - Den
delta
verdien fører til et skifte til en rad som ikke finnes i partisjonen.
Hvis OFFSET brukes i en beregnet kolonne som er definert i samme tabell som relation
, og orderBy
utelates, returneres en feil.
reset
kan bare brukes i visuelle beregninger, og kan ikke brukes sammen med orderBy
eller partitionBy
. Hvis 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 produktkategori og kalenderår, i tillegg til det totale salget for denne kategorien i forrige år.
Eksempel 2 – mål
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 et mål for å returnere en tabell som oppsummerer det totale salget for hvert kalenderår og det totale salget for forrige år.
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 indikerer, for hvert salg, det forrige salgets beløp, av samme produkt, i synkende rekkefølge av salgsbeløp, med gjeldende salg identifisert av SalesOrderNumber og SalesOrderLineNumber. Uten MATCHBYvil spørringen returnere en feil siden det ikke finnes 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 måned og den forrige i samme år.
Skjermbildet nedenfor viser den visuelle matrisen og beregningsuttrykket for visualobjekter: