Lue englanniksi

Jaa


ALKU

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 partitionBysarakkeiden oletusarvo on 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 lajittelun aikana.
Tämä parametri on varattu tulevaa käyttöä varten.
Tällä hetkellä ainoa tuettu arvo on DEFAULT, jossa numeeristen arvojen toiminta on tyhjä. Negatiiviset ja nollien arvot järjestetään. Merkkijonojen toimintatapa on se, että tyhjät arvot järjestetään ennen kaikkia merkkijonoja, myös tyhjiä merkkijonoja.
partitionBy (Valinnainen) PARTITIONBY()-lause, joka sisältää sarakkeet, jotka määrittävät, miten relation ositetaan.
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 vastaavat ja tunnistavat nykyisen rivin.
reset (Valinnainen) Käytettävissä vain visualisoinnin laskutoimituksissa. Ilmaisee, nollataanko laskutoimitus ja millä tasolla visualisoinnin muodon sarakehierarkia on. Hyväksytyt arvot ovat: NONE, LOWESTPARENT, HIGHESTPARENT tai kokonaisluku. Toiminta riippuu kokonaislukumerkistä:
– Jos nolla tai jätetään pois, laskelmaa ei nollata. Vastaa NONE-funktiota.
– 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 ulompi arvo, joka auttaa määrittämään nykyisen rivin, jolle 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 ulompaa saraketta.
    • Offset-siirtymä lasketaan näiden sarakkeiden jokaisen olemassa olevien arvojen yhdistelmän osalta pääkontekstissa ja palautetaan rivi.
    • OFFSET-siirtymän lopullinen tulos on näiden rivien liitto.
  • Jos vastaavia ulkosarakkeita on useampi kuin yksi, palautetaan virhe.

Jos DAX-taulukkofunktiot lisäävät kaikki relationsarakkeisiin, palautetaan virhe.

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 yrittää löytää vähiten lisäsarakkeita, joita jokaisen rivin yksilöiminen edellyttää.
  • 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-funktiota 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 DAX-kysely:

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

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ää mittarissa OFFSET()-funktiota palauttamaan taulukon, joka tekee yhteenvedon kunkin kalenterivuoden kokonaismyynnistä ja edellisen vuoden kokonaismyynnistä.

Esimerkki 3 – laskettu sarake

Seuraava DAX-kysely:

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 MATCHBY:ta kysely 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:

DAXvisualisoinnin

INDEX -
ORDERBY
OSION
MATCHBY
-IKKUNAN
RANK -
ROWNUMBER