OFFSET
Koskee seuraavia:Laskettu sarakeLaskettu taulukkoMittayksikköVisuaalinen laskenta -
Palauttaa yksittäisen rivin, joka sijoitetaan joko ennen nykyistä riviä tai sen jälkeen samaan taulukkoon annetun siirtymän mukaan. Jos nykyistä riviä ei voi päätellä yhdelle riville, saatetaan palauttaa useita rivejä.
Syntaksi
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
Parametrit
Termi | Määritelmä |
---|---|
delta |
Rivien määrä ennen (negatiivinen arvo) tai sen jälkeen (positiivinen arvo) nykyistä riviä, jolta tiedot hankittava. Se voi olla mikä tahansa DAX lauseke, joka palauttaa skalaariarvon. |
relation |
(Valinnainen) Taulukkolauseke, josta tulosterivi palautetaan.
Jos on määritetty, kaikkien partitionBy sarakkeiden on oltava peräisin siitä tai liittyvästä taulukosta.
Jos jätetään pois: - orderBy on määritettävä eksplisiittisesti.– Kaikkien orderBy - ja partitionBy -lausekkeiden on oltava sarakkeiden täydelliset nimet, ja niiden on oltava peräisin yksittäisestä taulukosta.
: orderBy ja partitionBy sarakkeista ALLSELECTED(). |
axis |
(Valinnainen) Akseli visuaalisessa muodossa. Käytettävissä vain visuaalisissa laskutoimituksissa, ja se korvaa relation . |
orderBy |
(Valinnainen) ORDERBY()-lause, joka sisältää lausekkeet, jotka määrittävät kunkin osion lajittelutavan.
Jos jätetään pois: - relation on määritettävä eksplisiittisesti.
: tämä määrittää oletusarvoisesti järjestyksen relation jokaisen sarakkeen mukaan, mitä ei ole vielä määritetty partitionBy . |
blanks |
(Valinnainen) Luettelointi, joka määrittää, miten tyhjiä arvoja käsitellään lajitellaan relation tai axis .
Tuetut arvot ovat seuraavat:
huomioi, että kun blanks -parametri ja tyhjät ORDERBY()-funktiot yksittäisissä lausekkeissa määritetään, blanks yksittäisessä orderBy-lausekkeessa prioriteetiksi soveltuvalle orderBy-lausekkeelle, ja orderBy-lausekkeet, joita ei blanks määritetä, seuraavat blanks parametria pääfunktiossa. |
partitionBy |
(Valinnainen) PARTITIONBY() -lause, joka sisältää sarakkeet, jotka määrittävät relation jakamisen. Jos tämä jätetään pois, relation käsitellään yksittäisenä osiona. |
matchBy |
(Valinnainen) MATCHBY() -lause, joka sisältää sarakkeet, jotka määrittävät, miten tiedot täsmäävät ja tunnistavat nykyisen rivin. |
reset |
(Valinnainen) Käytettävissä vain visualisoinnin laskutoimituksissa. Ilmaisee, nollataanko laskutoimitus ja millä tasolla visualisoinnin muodon sarakehierarkia on. Hyväksyttyjä arvoja ovat: kenttäviittaus sarakkeeseen nykyisessä visualisoinnin muodossa, NONE (oletus), LOWESTPARENT , HIGHESTPARENT tai kokonaisluku. Toiminta riippuu kokonaislukumerkistä: – Jos nolla tai jätetään pois, laskelmaa ei nollata. Vastaa NONE .
– Jos se on positiivinen, kokonaisluku tunnistaa sarakkeen aloittaen suurimmasta, viljasta riippumatta. HIGHESTPARENT vastaa lukua 1.
– Jos se on negatiivinen, kokonaisluku tunnistaa sarakkeen aloittaen pienimmästä tasosta suhteessa nykyiseen rakeeseen. LOWESTPARENT vastaa lukua -1. |
Palautusarvo
Yksi tai useampi rivi relation
.
Huomautuksia
DAX taulukkofunktioiden lisäämiä sarakkeita lukuun ottamatta jokaisella sarakkeella relation
, kun matchBy
ei ole, tai kullakin sarakkeella matchBy
ja partitionBy
, kun matchBy
on olemassa, on oltava vastaava ulkoinen arvo, joka auttaa määrittämään nykyisen rivin, jolla toiminto suoritetaan:
- Jos ulompaa saraketta on täsmälleen yksi vastaava, käytetään sen arvoa.
- Jos vastaavaa ulkosaraketta ei ole, toimi seuraavasti:
- OFFSET määrittää ensin kaikki sarakkeet, joilla ei ole vastaavaa ulkosaraketta.
- OFFSETpääkontekstin näiden sarakkeiden jokaisen olemassa olevien arvojen yhdistelmän OFFSET arvioidaan ja palautetaan rivi.
- OFFSETlopullinen tulos on näiden rivien liitto.
- Jos vastaavia ulkosarakkeita on useampi kuin yksi, palautetaan virhe.
Jos DAX-taulukkofunktiot lisäävät kaikki relation
-sarakkeista, saat virheilmoituksen.
Jos käytössä on matchBy
, OFFSET yrittää käyttää matchBy
ja partitionBy
sarakkeita rivin tunnistamiseen.
Jos matchBy
ei ole olemassa ja orderBy
ja partitionBy
määritetyt sarakkeet eivät pysty yksilöivästi tunnistamaan jokaista relation
riviä, niin:
- OFFSET pyrkii selvittämään, kuinka monta lisäsaraketta jokaisen rivin yksilöimiseen tarvitaan.
- Jos tällaisia sarakkeita löytyy, OFFSET liittää nämä uudet sarakkeet automaattisesti
orderBy
, ja kukin osio lajitellaan käyttämällä tätä uutta OrderBy-sarakkeiden joukkoa. - Jos tällaisia sarakkeita ei löydy, palautetaan virhe.
Palautetaan tyhjä taulukko, jos:
- OrderBy- tai PartitionBy-sarakkeen vastaavaa ulkoarvoa ei ole
relation
. -
delta
arvo siirtää riviin, jota ei ole osiossa.
Jos OFFSET käytetään lasketussa sarakkeessa, joka on määritetty samassa taulukossa, jossa relation
, ja orderBy
jätetään pois, palautetaan virhe.
reset
voi käyttää vain visuaalisissa laskutoimituksissa, eikä sitä voi käyttää yhdessä orderBy
tai partitionBy
kanssa. Jos käytössä on reset
, axis
voidaan määrittää, mutta relation
ei.
Esimerkki 1 – laskettu sarake
Seuraava kyselyn 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]
)
)
Palauttaa taulukon, jossa on yhteenveto kunkin tuoteluokan ja kalenterivuoden kokonaismyynnistä sekä kyseisen luokan kokonaismyynnistä edellisenä vuonna.
Esimerkki 2 – mittari
Seuraava kyselyn 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]
)
Käyttää mittarin OFFSET() palauttamaan taulukon, joka tekee yhteenvedon kunkin kalenterivuoden kokonaismyynnistä ja edellisen vuoden kokonaismyynnistä.
Esimerkki 3 – laskettu sarake
Seuraava kyselyn 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]
)
)
Palauttaa FactInternetSales-taulukon lisäämällä sarakkeen, joka ilmaisee kullekin myynnille saman tuotteen edellisen myynnin määrän laskevassa myyntijärjestyksessä siten, että sen SalesOrderNumber- ja SalesOrderLineNumber-arvot tunnistavat nykyisen myynnin. Ilman MATCHBYkysely palauttaisi virheen, koska FactInternetSales-taulukossa ei ole avainsarakkeita.
Esimerkki 4 – visuaalinen laskutoimitus
Seuraava visuaalisen laskutoimituksen DAX kysely:
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
Palauttaa kunkin kuukauden ja edellisen kuukauden kokonaismyynnin eron samana vuonna.
Alla olevassa näyttökuvassa näytetään visuaalinen matriisi ja visuaalinen laskentalauseke: