Læs på engelsk

Del via


FORSKYDNING

gælder for:beregnet kolonneberegnet tabelberegning af målingvisualisering

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

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

Parametre

Udtryk 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.
relation (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 udeladt:
- orderBy skal angives eksplicit.
– Alle udtryk for orderBy og partitionBy skal være fuldt kvalificerede kolonnenavne og komme fra en enkelt tabel.
– standarden ALLSELECTED() for alle kolonner i orderBy og partitionBy.
axis (Valgfrit) En akse i visualiseringsfiguren. Kun tilgængelig i visuelle beregninger og erstatter relation.
orderBy (Valgfrit) En ORDERBY()-delsætning, der indeholder de udtryk, der definerer, hvordan hver partition sorteres.
Hvis udeladt:
- relation skal angives eksplicit.
– Som standard sorteres efter hver kolonne i relation, der ikke allerede er angivet i partitionBy.
blanks (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 relation partitioneres.
Hvis den udelades, behandles relation 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.
reset (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, der starter fra den højeste, uafhængig af detaljering. 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 relation.

Bemærkninger

Med undtagelse af kolonner, der tilføjes af DAX-tabelfunktioner, skal hver kolonne i relation, 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 relation's kolonner blev tilføjet af DAX-tabelfunktioner, returneres der en fejl.

Hvis matchBy findes, forsøger OFFSET at bruge matchBy og partitionBy kolonner 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 relation, kan:

  • 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 af kolonnen OrderBy eller PartitionBy findes ikke i relation.
  • Værdien delta 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 relation, og orderBy udelades, returneres der en fejl.

reset kan kun bruges i visuelle beregninger og kan ikke bruges sammen med orderBy eller partitionBy. Hvis reset findes, kan axis angives, men relation kan ikke.

Eksempel 1 – beregnet kolonne

Følgende DAX-forespørgsel:

DAX
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:

DAX
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:

DAX
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:

DAX
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:

beregning af DAX-visualiseringer

INDEKS
ORDERBY-
PARTITIONBY
MATCHBY-
VINDUE
RANK-
RÆKKENUMMER