Megosztás a következőn keresztül:


OFFSET

A következőkre vonatkozik:Számított oszlopSzámított táblaMértékVizualizációszámítási

Egyetlen sort ad vissza, amely az aktuális sor előtt vagy után ugyanabban a táblában egy adott eltolással. Ha az aktuális sor nem vonható le egyetlen sorra, több sort is visszaadhat.

Szintaxis

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

Paraméterek

Kifejezés Definíció
delta Az aktuális sor előtti (negatív érték) vagy utáni sorok száma (pozitív érték), amelyből az adatokat lekérjük. Bármely DAX kifejezés, amely skaláris értéket ad vissza.
relation (Nem kötelező) Egy táblakifejezés, amelyből a kimeneti sor vissza lesz adva.
Ha meg van adva, a partitionBy összes oszlopának onnan vagy egy kapcsolódó táblából kell származnia.
Ha nincs megadva:
- orderBy explicit módon kell megadni.
– Minden orderBy és partitionBy kifejezésnek teljes oszlopneveknek kell lennie, és egyetlen táblából kell származnia.
– A orderBy és partitionByösszes oszlopának alapértelmezett értéke ALLSELECTED().
axis (Nem kötelező) A vizualizáció alakzatának tengelye. Csak vizuális számításokban érhető el, és lecseréli relation.
orderBy (Nem kötelező) Egy ORDERBY() záradék, amely az egyes partíciók rendezését meghatározó kifejezéseket tartalmazza.
Ha nincs megadva:
- relation explicit módon kell megadni.
– Alapértelmezés szerint a relation minden olyan oszlopa rendezi a sorrendet, amely még nincs megadva a partitionBy.
blanks (Nem kötelező) Enumerálás, amely meghatározza, hogyan kezelhetők az üres értékek a relation vagy axisrendezésekor.
A támogatott értékek a következők:
  • DEFAULT (az alapértelmezett érték), ahol a numerikus értékek viselkedése üres érték, nulla és negatív értékek között van rendezve. A sztringek viselkedése üres érték, amely az összes sztring előtt van rendezve, beleértve az üres sztringeket is.
  • FIRSTaz üres cellák mindig az elején vannak rendezve, a növekvő vagy csökkenő rendezési sorrendtől függetlenül.
  • LASTaz üres cellák mindig a végén vannak rendezve, a növekvő vagy csökkenő rendezési sorrendtől függetlenül.

Vegye figyelembe, hogy ha az egyes kifejezések ORDERBY() függvényének blanks paramétere és üres mezői is meg vannak adva, blanks az egyes orderBy-kifejezések prioritást élveznek a megfelelő orderBy kifejezésnél, és a blanks megadása nélküli OrderBy-kifejezések tiszteletben tartják a szülőfüggvény blanks paraméterét.
partitionBy (Nem kötelező) A relation particionálását meghatározó oszlopokat tartalmazó PARTITIONBY() záradék. Ha nincs megadva, a relation egyetlen partícióként lesz kezelve.
matchBy (Nem kötelező) Egy MATCHBY() záradék, amely azokat az oszlopokat tartalmazza, amelyek meghatározzák az adatok egyeztetését és az aktuális sor azonosítását.
reset (Nem kötelező) Csak vizuális számításokban érhető el. Azt jelzi, hogy a számítás alaphelyzetbe áll-e, és a vizualizáció alakzatának oszlophierarchiájának melyik szintjén. Az elfogadott értékek a következők: az aktuális vizualizáció alakzatának egy oszlopára mutató mezőhivatkozás, NONE (alapértelmezett), LOWESTPARENT, HIGHESTPARENTvagy egész szám. A viselkedés a következő egész számjeltől függ:
– Ha nulla vagy nincs megadva, a számítás nem állítható vissza. Egyenértékű NONE.
– Ha pozitív, az egész szám a legmagasabbtól kezdődő, a szemcséktől független oszlopot azonosítja. HIGHESTPARENT 1-nek felel meg.
– Ha negatív, az egész szám a legalacsonyabbtól kezdődő oszlopot azonosítja az aktuális szemcséhez viszonyítva. LOWESTPARENT -1-nek felel meg.

Visszaadott érték

Egy vagy több sor relation.

Megjegyzések

A DAX táblafüggvények által hozzáadott oszlopok kivételével a relationminden oszlopának, ha matchBy nincs jelen, vagy ha matchBy és partitionByminden oszlopa jelen van, akkor a matchBy megfelelő külső értékkel kell rendelkeznie, amely segít meghatározni az aktuális sort, amelyen működni kíván, az alábbi viselkedéssel:

  • Ha pontosan egy megfelelő külső oszlop van, annak értékét használja a rendszer.
  • Ha nincs megfelelő külső oszlop, akkor:
    • OFFSET először meghatározza az összes olyan oszlopot, amely nem rendelkezik megfelelő külső oszloppal.
    • Ezen oszlopok meglévő értékeinek minden kombinációjához OFFSETszülőkörnyezetében a rendszer kiértékeli a OFFSET, és visszaad egy sort.
    • OFFSETvégső kimenete ezeknek a soroknak az egyesítése.
  • Ha egynél több megfelelő külső oszlop van, a függvény hibát ad vissza.

Ha DAX táblafüggvények relationösszes oszlopát hozzáadták, a rendszer hibát ad vissza.

Ha matchBy van jelen, OFFSETmatchBy és partitionBy oszlopokat próbál meg használni a sor azonosításához. Ha matchBy nincs jelen, és a orderBy és partitionBy megadott oszlopok nem tudják egyedileg azonosítani relationminden sorát, akkor:

  • OFFSET megpróbálja megtalálni az összes sor egyedi azonosításához szükséges minimális számú további oszlopot.
  • Ha ilyen oszlopok találhatók, OFFSET automatikusan hozzáfűzi ezeket az új oszlopokat orderBy, és az egyes partíciók rendezése ezzel az új OrderBy-oszlopkészlettel történik.
  • Ha az ilyen oszlopok nem találhatók, a rendszer hibát ad vissza.

A függvény üres táblát ad vissza, ha:

  • Az OrderBy vagy PartitionBy oszlop megfelelő külső értéke nem létezik relation.
  • A delta érték olyan sorra vált, amely nem létezik a partíción belül.

Ha OFFSET a relationtáblában definiált számított oszlopban van használva, és orderBy nincs megadva, a rendszer hibát ad vissza.

reset csak vizualizációs számításokhoz használható, és nem használható orderBy vagy partitionByegyütt. Ha reset van, axis megadható, de relation nem.

1. példa – számított oszlop

A következő DAX lekérdezés:

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]
    )
)

Egy táblázatot ad vissza, amely összegzi az egyes termékkategóriák és naptári évek összes értékesítését, valamint az előző év adott kategóriájának teljes értékesítését.

2. példa – mérték

A következő DAX lekérdezés:

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]
)

Egy mérték OFFSET() használatával egy olyan táblát ad vissza, amely összegzi az egyes naptári évek összes értékesítését és az előző év összes értékesítését.

3. példa – számított oszlop

A következő DAX lekérdezés:

EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

A FactInternetSales táblát egy oszlop hozzáadásával adja vissza, amely jelzi, hogy az egyes eladások esetében az előző eladás összege ugyanahhoz a termékhez tartozik, csökkenő értékesítési sorrendben, és az aktuális értékesítést a SalesOrderNumber és a SalesOrderLineNumber azonosítja. MATCHBYnélkül a lekérdezés hibát adna vissza, mivel a FactInternetSales táblában nincsenek kulcsoszlopok.

4. példa – vizualizációszámítás

A következő vizualizációszámítás DAX lekérdezés:

SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

Az egyes hónapok és az előző év összes értékesítésének különbözetét adja eredményül.

Az alábbi képernyőképen a vizualizációs mátrix és a vizualizáció számítási kifejezése látható:

DAX vizualizációszámítási

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER