Obs!
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:Beregnet kolonne
Beregnet tabell
Måle
Visuell beregning
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 den brukes i visuelle beregninger, godtar denne parameteren en akse i den visuelle figuren.
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 . |
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:
Vær oppmerksom på at når parameteren blanks og tomrommene i ORDERBY() -funksjonen på individuelle uttrykk begge er angitt, blanks prioriteres det individuelle orderBy-uttrykket for det aktuelle orderBy-uttrykket, og orderBy-uttrykk uten blanks å bli angitt, vil overholde parameteren blanks på 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.
Hvis verdien av reset
er absolutt (dvs. et positivt heltall HIGHESTPARENT
eller en feltreferanse) og beregningen evalueres på eller over målnivået i hierarkiet, tilbakestilles beregningen for hvert enkelt element. Det vil eksempel: Funksjonen evalueres i en partisjon som bare inneholder det bestemte elementet.
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: