INDEX
Vzťahuje sa na:vypočítaný stĺpec
vypočítanej tabuľky
vizuá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ú:
Všimnite si, že keď sú v ORDERBY() funkcie pri jednotlivých výrazoch zadané hodnoty blanks blanks 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 , HIGHESTPARENT alebo 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
amatchBy
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.
-
INDEX najprv určí všetky
- 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