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


ELLENSÚLYOZ

A következőre vonatkozik: Számított oszlop Számított tábla Mérték vizualizáció számítása

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

Syntax

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

Paraméterek

Időszak 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ármilyen DAX-kifejezés lehet, amely skaláris értéket ad vissza.
reláció (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:
- <az orderBy-t> explicit módon kell megadni.
- Minden <orderBy> és <partitionBy> kifejezésnek teljes oszlopneveknek kell lennie, és egyetlen táblából kell származnia.
- Az összes oszlop ALLSELECTED() értéke az orderBy> és <partitionBy> sorrendben<.
tengely (Nem kötelező) A vizualizáció alakzatának tengelye. Csak vizuális számításokban érhető el, és lecseréli a relációt<>.
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:
- <a relációt> explicit módon kell megadni.
- Alapértelmezés szerint a partitionBy-ben még nem megadott összes oszlop> sorrendje<<.>
Üres (Nem kötelező) Enumerálás, amely meghatározza, hogyan kell kezelni az üres értékeket a rendezés során.
Ez a paraméter jövőbeli használatra van fenntartva.
Jelenleg az egyetlen támogatott érték 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.
partitionBy (Nem kötelező) A partíciók particionálásának> módját <meghatározó oszlopokat tartalmazó PARTITIONBY() záradék.
Ha nincs megadva, <a kapcsolat> 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.
átszed (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: NONE, LOWESTPARENT, HIGHESTPARENT vagy egész szám. A viselkedés az egész szám jelétől függ:
– Ha nulla vagy nincs megadva, a számítás nem állítható vissza. A NONE értéknek megfelelő.
- Ha pozitív, az egész szám azonosítja az oszlopot a legmagasabbtól kezdve, a szemcséktől függetlenül. A HIGHESTPARENT az 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. A LOWESTPARENT értéke -1.

Visszaadott érték

Egy vagy több sor a relációból<>.

Megjegyzések

A DAX-táblafüggvények által hozzáadott oszlopok kivételével minden relációs> oszlopnak<, ha <a matchBy> nincs jelen, vagy a matchBy és <a partitionBy> minden oszlopának<, ha <a matchBy>> jelen van, rendelkeznie kell egy megfelelő külső értékkel, amely segít meghatározni az aktuális sort, amelyen működni szeretne, a következő 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:
    • Az ELTOLÁS először meghatározza az összes olyan oszlopot, amely nem rendelkezik megfelelő külső oszloppal.
    • Az ELTOLÁS szülőkörnyezetében lévő oszlopok meglévő értékeinek minden kombinációja esetén az ELTOLÁS kiértékelése és egy sor visszaadása történik.
    • Az OFFSET vé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 a <DAX táblafüggvények hozzáadták a reláció> összes oszlopát, a rendszer hibát ad vissza.

Ha <a matchBy> jelen van, az OFFSET a <matchBy> és <a partitionBy> oszlopokkal próbálja azonosítani a sort.
Ha <a matchBy> nincs jelen, és az orderBy> és <a partitionBy> függvényben <megadott oszlopok nem tudják egyedileg azonosítani a reláció> minden sorát<, akkor:

  • Az ELTOLÁS 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, az ELTOLÁS automatikusan hozzáfűzi ezeket az új oszlopokat az orderBy> oszlophoz<, és minden partíciót ezzel az új OrderBy-oszlopkészlettel rendez.
  • 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 a relációban<>.
  • A <delta> érték olyan sorra vált, amely nem létezik a partíción belül.

Ha az ELTOLÁS egy, a relációval <>azonos táblában definiált számított oszlopban van használva, és <az orderBy> hiányzik, a rendszer hibát ad vissza.

<a visszaállítás> csak vizualizációs számításokban használható, és nem használható az orderBy> vagy <a partitionBy> együttes használatával<. Ha <az alaphelyzetbe állítás> jelen van, a tengely> megadható, <de <a reláció> 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]
)

Az ELTOLÁS() egy mértékben 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. A MATCHBY nélkül a lekérdezés hibát ad 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ási 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ó kiszámítása

INDEX
ORDERBY
PARTITIONBY
MATCHBY
ABLAK
RANG
ROWNUMBER