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


INDEX

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

A pozícióparaméter által megadott abszolút pozícióban lévő sort ad vissza a megadott partíción belül, a megadott sorrend szerint rendezve. Ha az aktuális partíció nem tud egyetlen partícióra következtetni, több sort is visszaadhat.

Szintaxis

INDEX(<position>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Paraméterek

Kifejezés Definíció
position Az abszolút pozíció (1-alapú), amelyből az adatokat lekérjük:
- position pozitív: 1 az első sor, 2 a második sor stb.
- position negatív: -1 az utolsó sor, -2 a második utolsó sor stb.
Ha position kívül van a határon, vagy nulla, vagy BLANK(), INDEX üres táblát ad vissza. Bármely DAX kifejezés, amely skaláris értéket ad vissza.
relation (Nem kötelező) Egy táblakifejezés, amelyből a kimenet 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 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 sor abszolút pozícióban.

Megjegyzések

Minden partitionBy és matchBy oszlopnak rendelkeznie kell egy megfelelő külső értékkel, amely segít meghatározni az "aktuális partíciót", amelyen működni kíván, 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:
    • INDEX először meghatározza az összes olyan partitionBy és matchBy oszlopot, amely nem rendelkezik megfelelő külső oszloppal.
    • Ezen oszlopok meglévő értékeinek minden kombinációjához INDEXszülőkörnyezetében a rendszer kiértékeli a INDEX, és visszaad egy sort.
    • INDEXvé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 matchBy van jelen, INDEXmatchBy é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 azonosítják egyedileg a relationminden sorát:

  • INDEX 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, INDEX 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:

  • A PartitionBy oszlop megfelelő külső értéke nem létezik relation.
  • A position érték olyan pozícióra utal, amely nem létezik a partíción belül.

Ha INDEX a relation táblában definiált számított oszlopban van használva, és a 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:

EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))

A következő táblázatot adja vissza:

DimDate[CalendarYear]
2005

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

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

EVALUATE
SUMMARIZECOLUMNS (
    FactInternetSales[ProductKey],
    DimDate[MonthNumberOfYear],
    FILTER (
            VALUES(FactInternetSales[ProductKey]),
            [ProductKey] < 222
    ),
    "CurrentSales", SUM(FactInternetSales[SalesAmount]),
    "LastMonthSales",
    CALCULATE (
        SUM(FactInternetSales[SalesAmount]),
        INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
    )
)
ORDER BY [ProductKey], [MonthNumberOfYear]

A következő táblázatot adja vissza:

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
214 1 5423.45 8047.7
214 2 4968.58 8047.7
214 3 5598.4 8047.7
214 4 5073.55 8047.7
214 5 5248.5 8047.7
214 6 7487.86 8047.7
214 7 7382.89 8047.7
214 8 6543.13 8047.7
214 9 6788.06 8047.7
214 10 6858.04 8047.7
214 11 8607.54 8047.7
214 12 8047.7 8047.7
217 1 5353.47 7767.78
217 2 4268.78 7767.78
217 3 5773.35 7767.78
217 4 5738.36 7767.78
217 5 6158.24 7767.78
217 6 6998 7767.78
217 7 5563.41 7767.78
217 8 5913.31 7767.78
217 9 5913.31 7767.78
217 10 6823.05 7767.78
217 11 6683.09 7767.78
217 12 7767.78 7767.78

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

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

SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))

SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))

Táblázat továbbfejlesztése, hogy tartalmazza, minden hónapban:
- a teljes értékesítési összeg;
- az adott év első hónapjának különbsége;
- és a különbség az adott negyedév első hónapjára.

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

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

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER