Zdieľať cez


INDEX

Vzťahuje sa na:vypočítaný stĺpecvypočítanej tabuľkyvizuálového výpočtu

Vráti riadok na absolútnej pozícii zadanej parametrom pozície v zadanej oblasti zoradený podľa zadaného poradia. Ak aktuálnu oblasť nemožno odvodiť do jednej oblasti, môže sa vrátiť viacero riadkov.

Syntax

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

Parametre

Termín Definícia
position Absolútna pozícia (so základom 1), z ktorej sa majú získať údaje:
- position je kladná: 1 je prvý riadok, 2 je druhý riadok atď.
- position je záporná: -1 je posledný riadok, -2 je druhý posledný riadok atď.
Keď je position mimo hranice, alebo nula, alebo BLANK(), INDEX vráti prázdnu tabuľku. Môže to byť akýkoľvek výraz DAX, ktorý vráti skalárnu hodnotu.
relation (Voliteľné) Výraz tabuľky, z ktorého sa vráti výstup.
Ak je zadaný, všetky stĺpce v partitionBy musia pochádzať z neho alebo zo súvisiacej tabuľky.
Ak sa vynechá:
- orderBy musí byť explicitne zadaný.
– všetky výrazy orderBy a partitionBy musia byť plne kvalifikované názvy stĺpcov a pochádzať z jednej tabuľky.
– predvolene sa ALLSELECTED() všetkých stĺpcov v orderBy a partitionBy.
axis (Voliteľné) Os v tvare vizuálu. K dispozícii iba vo výpočtoch vizuálu a nahrádza relation.
orderBy (Voliteľné) Klauzula ORDERBY() obsahujúca výrazy, ktoré definujú spôsob zoradenia každej oblasti.
Ak tento argument vynecháte:
- relation musí byť explicitne zadaný.
– predvolene sa zoradí podľa každého stĺpca v relation, ktorý ešte nie je zadaný v partitionBy.
blanks (Voliteľné) Enumerácia, ktorá definuje spôsob narábania s prázdnymi hodnotami pri zoraďovaní relation alebo axis.
Podporované hodnoty sú:
  • DEFAULT (predvolená hodnota), kde sú správanie číselných hodnôt prázdne hodnoty zoradené medzi nulami a záporné hodnoty. Správanie reťazcov je prázdne hodnoty zoradené pred všetkými reťazcami vrátane prázdnych reťazcov.
  • FIRST, prázdne hodnoty sa vždy zoraďujú na začiatku bez ohľadu na vzostupné alebo zostupné poradie zoradenia.
  • LAST, prázdne hodnoty sa vždy zoraďujú na konci bez ohľadu na vzostupné alebo zostupné poradie zoradenia.

Všimnite si, že keď sú v ORDERBY() funkcie pri jednotlivých výrazoch zadané hodnoty blanksblanks na výraze orderBy má prednosť pre príslušný výraz orderBy a výrazy orderBy bez blanks zadania zachová parameter blanks v nadradenej funkcii.
partitionBy (Voliteľné) Klauzula PARTITIONBY() obsahujúca stĺpce, ktoré definujú spôsob rozdelenia relation. Ak sa vynechá, relation sa považuje za jednu oblasť.
matchBy (Voliteľné) Klauzula MATCHBY() obsahujúca stĺpce, ktoré definujú, ako sa majú zhodovať s údajmi a identifikovať aktuálny riadok.
reset (Voliteľné) K dispozícii iba vo výpočtoch vizuálu. Udáva, či sa výpočet resetuje a na akej úrovni hierarchie stĺpcov tvaru vizuálu. Prijaté hodnoty sú: odkaz na pole na stĺpec v aktuálnom tvare vizuálu, NONE (predvolené), LOWESTPARENT, HIGHESTPARENTalebo celé číslo. Správanie závisí od celočíselného znamienka:
– Ak je hodnota nula alebo je vynechaná, výpočet sa nevynuluje. Zodpovedá NONE.
– ak je kladné, celé číslo identifikuje stĺpec začínajúci od najvyššej, nezávisle od zrna. HIGHESTPARENT zodpovedá 1.
– ak je záporné, celé číslo identifikuje stĺpec začínajúci od najnižšej hodnoty vo vzťahu k aktuálnemu zrnu. LOWESTPARENT je ekvivalentom čísla -1.

Vrátená hodnota

Riadok na absolútnej pozícii.

Poznámky

Každý partitionBy a matchBy stĺpec musí mať zodpovedajúcu vonkajšiu hodnotu, ktorá pomáha definovať aktuálnu oblasť, v ktorej sa má vykonať prevádzka, s nasledujúcim správaním:

  • Ak existuje presne jeden zodpovedajúci vonkajší stĺpec, použije sa jeho hodnota.
  • Ak neexistuje žiadny zodpovedajúci vonkajší stĺpec:
    • INDEX najprv určí všetky partitionBy a matchBy stĺpce, ktoré nemajú zodpovedajúci vonkajší stĺpec.
    • Pre každú kombináciu existujúcich hodnôt pre tieto stĺpce v nadradenom kontexte INDEXsa vyhodnotí INDEX a vráti sa riadok.
    • INDEXkonečný výstup je zjednotenie týchto riadkov.
  • Ak existuje viac ako jeden zodpovedajúci vonkajší stĺpec, vráti sa chyba.

Ak existuje matchBy, INDEX sa pokúsi použiť matchBy a partitionBy stĺpce na identifikáciu riadka. Ak matchBy nie je prítomná a stĺpce zadané v rámci orderBy a partitionBy nemôžu jedinečne identifikovať každý riadok v relation:

  • INDEX sa pokúsi nájsť najmenší počet ďalších stĺpcov potrebných na jedinečnú identifikáciu každého riadka.
  • Ak sa tieto stĺpce dajú nájsť, INDEX automaticky pripojí tieto nové stĺpce k orderBy, a každá oblasť sa zoradí pomocou tejto novej množiny stĺpcov OrderBy.
  • Ak sa takéto stĺpce nedajú nájsť, vráti sa chyba.

Prázdna tabuľka sa vráti, ak:

  • Zodpovedajúca vonkajšia hodnota stĺpca PartitionBy neexistuje v rámci relation.
  • Hodnota position odkazuje na pozíciu, ktorá v oblasti neexistuje.

Ak sa INDEX použije vo vypočítanom stĺpci definovanom v tej istej tabuľke ako relation a orderBy sa vynechá, vráti sa chyba.

reset možno použiť iba vo vizuálnych výpočtoch a nemožno ho použiť v kombinácii s orderBy alebo partitionBy. Ak je prítomná reset, možno zadať axis ale relation nedá.

Príklad 1 – vypočítaný stĺpec

Nasledujúci DAX dotaz:

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

Vráti nasledujúcu tabuľku:

DimDate[KalendárnyRok]
2005

Príklad 2 – vypočítaný stĺpec

Nasledujúci DAX dotaz:

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]

Vráti nasledujúcu tabuľku:

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

Príklad 3 – výpočet vizuálu

Nasledujúci výpočet vizuálu DAX dotazy:

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

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

Vylepšite tabuľku tak, aby pre každý mesiac obsahovala:
– celkovú čiastku predaja.
- rozdiel od prvého mesiaca príslušného roka;
– a rozdiel oproti prvému mesiacu príslušného štvrťroka.

Snímka obrazovky nižšie znázorňuje maticu vizuálu a prvý výraz výpočtu vizuálu:

výpočtu vizuálu

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER