Jaa


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 partitionBysarakkeista 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:
  • DEFAULT (oletusarvo), jossa numeeristen arvojen toiminta on tyhjä, järjestetään nollan ja negatiivisen arvon välillä. Merkkijonojen toimintatapa on se, että tyhjät arvot järjestetään ennen kaikkia merkkijonoja, myös tyhjiä merkkijonoja.
  • FIRST, tyhjät tilat järjestetään aina alussa nousevasta tai laskevasta lajittelujärjestyksestä riippumatta.
  • LAST, tyhjät tilat järjestetään aina loppuun riippumatta nousevasta tai laskevasta lajittelujärjestyksestä.

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, HIGHESTPARENTtai 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 relationriviä, 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 partitionBykanssa. 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:

DAX visuaalisen laskutoimituksen

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER