OFFSET
A következőkre vonatkozik:Számított oszlop
Számított tábla
Mérték
Vizualizá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 axis rendezésekor.
A támogatott értékek a következők:
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 , HIGHESTPARENT vagy 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 relation
minden oszlopának, ha matchBy
nincs jelen, vagy ha matchBy
és partitionBy
minden 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 relation
minden 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 relation
tá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 partitionBy
együ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ó: