FORSKYDNING
Gælder for: Beregning af målingsvisualisering for beregnet kolonne i beregnet tabel
Returnerer en enkelt række, der er placeret enten før eller efter den aktuelle række i den samme tabel med en given forskydning. Hvis den aktuelle række ikke kan udledes til en enkelt række, returneres der muligvis flere rækker.
Syntaks
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametre
Begreb | Definition |
---|---|
delta | Antallet af rækker før (negativ værdi) eller efter (positiv værdi) den aktuelle række, hvorfra dataene skal hentes. Det kan være et hvilket som helst DAX-udtryk, der returnerer en skalarværdi. |
forhold | (Valgfrit) Et tabeludtryk, som outputrækken returneres fra. Hvis det er angivet, skal alle kolonner i <partitionBy> komme fra den eller en relateret tabel. Hvis det udelades: - <orderBy> skal angives eksplicit. – Alle <orderBy> - og <partitionBy-udtryk> skal være fuldt kvalificerede kolonnenavne og komme fra en enkelt tabel. – Som standard til ALLSELECTED() for alle kolonner i <orderBy> og <partitionBy>. |
akse | (Valgfrit) En akse i visualiseringsfiguren. Kun tilgængelig i visuelle beregninger og erstatter <relationen>. |
orderBy | (Valgfrit) En ORDERBY()-delsætning, der indeholder de udtryk, der definerer, hvordan hver partition sorteres. Hvis det udelades: - <relationen> skal angives eksplicit. – Som standard sorteres efter hver kolonne i <relation> , der ikke allerede er angivet i <partitionBy>. |
Tomme | (Valgfrit) En optælling, der definerer, hvordan tomme værdier skal håndteres ved sortering. Denne parameter er reserveret til fremtidig brug. I øjeblikket er den eneste understøttede værdi DEFAULT, hvor funktionsmåden for numeriske værdier er tomme værdier sorteres mellem nul og negative værdier. Funktionsmåden for strenge er tomme værdier sorteres før alle strenge, herunder tomme strenge. |
partitionBy | (Valgfrit) En PARTITIONBY()-delsætning, der indeholder de kolonner, der definerer, hvordan <relationen> partitioneres. Hvis den udelades, <behandles relationen> som en enkelt partition. |
matchBy | (Valgfrit) En MATCHBY()-delsætning, der indeholder de kolonner, der definerer, hvordan dataene skal matche og identificere den aktuelle række. |
Nulstille | (Valgfrit) Kun tilgængelig i visuelle beregninger. Angiver, om beregningen nulstilles, og på hvilket niveau i den visuelle figurs kolonnehierarki. Accepterede værdier er: NONE, LOWESTPARENT, HIGHESTPARENT eller et heltal. Funktionsmåden afhænger af heltalstegnet: - Hvis nul eller udeladt, nulstilles beregningen ikke. Svarer til NONE. – Hvis den er positiv, identificerer heltalet kolonnen med start fra den højeste, uafhængig af kornet. HIGHESTPARENT svarer til 1. – Hvis det er negativt, identificerer heltalet kolonnen med start fra det laveste i forhold til den aktuelle detaljering. LOWESTPARENT svarer til -1. |
Returværdi
En eller flere rækker fra <relationen>.
Bemærkninger
Med undtagelse af kolonner, der tilføjes af DAX-tabelfunktioner, skal hver kolonne i <relationen>, når <matchBy> ikke findes, eller hver kolonne i <matchBy> og <partitionBy>, når <matchBy> er til stede, have en tilsvarende ydre værdi for at hjælpe med at definere den aktuelle række, der skal arbejdes på, med følgende funktionsmåde:
- Hvis der er nøjagtigt én tilsvarende ydre kolonne, bruges dens værdi.
- Hvis der ikke er nogen tilsvarende ydre kolonne, så:
- OFFSET bestemmer først alle kolonner, der ikke har en tilsvarende ydre kolonne.
- For hver kombination af eksisterende værdier for disse kolonner i OFFSET's overordnede kontekst evalueres OFFSET, og der returneres en række.
- OFFSET's endelige output er en samling af disse rækker.
- Hvis der er mere end én tilsvarende ydre kolonne, returneres der en fejl.
Hvis alle <relationens> kolonner blev tilføjet af DAX-tabelfunktioner, returneres der en fejl.
Hvis <matchBy> er til stede, forsøger OFFSET at bruge <matchBy> - og <partitionBy-kolonnerne> til at identificere rækken.
Hvis <matchBy> ikke findes, og de kolonner, der er angivet i <orderBy> og <partitionBy> , ikke entydigt kan identificere hver række i <relationen>, så:
- OFFSET forsøger at finde det mindste antal ekstra kolonner, der kræves for entydigt at identificere hver række.
- Hvis sådanne kolonner findes, føjer OFFSET automatisk disse nye kolonner til <orderBy>, og hver partition sorteres ved hjælp af dette nye sæt OrderBy-kolonner.
- Hvis sådanne kolonner ikke blev fundet, returneres der en fejl.
Der returneres en tom tabel, hvis:
- Den tilsvarende ydre værdi for kolonnen OrderBy eller PartitionBy findes ikke i <relationen>.
- Delta-værdien <> medfører et skift til en række, der ikke findes i partitionen.
Hvis OFFSET bruges i en beregnet kolonne, der er defineret i den samme tabel som <relationen>, og <orderBy> udelades, returneres der en fejl.
<nulstilling> kan kun bruges i visuelle beregninger og kan ikke bruges i kombination med <orderBy> eller <partitionBy>. Hvis <nulstilling> er til stede, kan aksen> angives, <men <relationen> kan ikke.
Eksempel 1 – beregnet kolonne
Følgende DAX-forespørgsel:
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 tabel, der opsummerer det samlede salg for hver produktkategori og hvert kalenderår samt det samlede salg for den pågældende kategori i det forrige år.
Eksempel 2 – måling
Følgende DAX-forespørgsel:
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]
)
Bruger OFFSET() i en måling til at returnere en tabel, der opsummerer det samlede salg for hvert kalenderår og det samlede salg for det foregående år.
Eksempel 3 – beregnet kolonne
Følgende DAX-forespørgsel:
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 tabellen FactInternetSales med tilføjelse af en kolonne, som angiver det forrige salgsbeløb for det samme produkt for hvert salg i faldende rækkefølge efter salgsbeløb, hvor det aktuelle salg identificeres af dets SalesOrderNumber og SalesOrderLineNumber. Uden MATCHBY returnerer forespørgslen en fejl, da der ikke er nogen nøglekolonner i tabellen FactInternetSales.
Eksempel 4 – visuel beregning
Følgende DAX-forespørgsel til visuel beregning:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Returnerer forskellen i det samlede salg mellem hver måned og den forrige inden for samme år.
Skærmbilledet nedenfor viser den visuelle matrix og det visuelle beregningsudtryk: