INDEX

Vrátí řádek na absolutní pozici určenou parametrem pozice v zadaném oddílu seřazené podle zadaného pořadí. Pokud aktuální oddíl nelze odvodit do jednoho oddílu, může se vrátit více řádků.

Syntaxe

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

Parametry

Pojem definice
pozice Absolutní pozice (1) pro získání dat:
- <pozice> je kladná: 1 je první řádek, 2 je druhý řádek atd.
– <pozice> je záporná: -1 je poslední řádek, -2 je druhý poslední řádek atd.
Pokud <je pozice> mimo hranici nebo nula nebo BLANK(), vrátí funkce INDEX prázdnou tabulku. Může to být libovolný výraz DAX, který vrací skalární hodnotu.
Vztah (Volitelné) Výraz tabulky, ze kterého se vrátí výstup.
Pokud je zadáno, musí všechny sloupce v <partitionBy> pocházet z ní nebo související tabulka.
Pokud tento parametr vynecháte:
– <orderBy> musí být explicitně zadáno.
– Všechny <výrazy orderBy> a <partitionBy> musí být plně kvalifikované názvy sloupců a pocházejí z jedné tabulky.
– Výchozí hodnota je ALLSELECTED() všech sloupců v <pořadíBy> a <partitionBy>.
osa (Volitelné) Osa ve vizuálním obrazci. K dispozici pouze ve vizuálních výpočtech <a nahrazuje relaci>.
Orderby (Volitelné) Klauzule ORDERBY() obsahující výrazy definující způsob řazení jednotlivých oddílů.
Pokud tento parametr vynecháte,
<musí být explicitně zadán vztah>.
– Výchozí nastavení řazení podle každého sloupce ve <vztahu> , který ještě není zadán v <partitionBy>.
Mezery (Volitelné) Výčet, který definuje, jak zpracovat prázdné hodnoty při řazení.
Tento parametr je vyhrazen pro budoucí použití.
V současné době je jedinou podporovanou hodnotou VÝCHOZÍ, kde chování číselných hodnot je prázdné hodnoty seřazené mezi nulou a zápornými hodnotami. Chování řetězců je prázdné hodnoty seřazené před všemi řetězci, včetně prázdných řetězců.
partitionBy (Volitelné) Klauzule PARTITIONBY() obsahující sloupce definující způsob <rozdělení relace> .
Pokud tento parametr vynecháte, <považuje se relace> za jeden oddíl.
matchBy (Volitelné) Klauzule POZVYHLEDAT() obsahující sloupce, které definují, jak se shodují s daty, a identifikují aktuální řádek.
resetování (Volitelné) K dispozici pouze ve vizuálních výpočtech. Určuje, jestli se výpočet resetuje a na jaké úrovni hierarchie sloupců obrazce vizuálu. Přijaté hodnoty jsou: NONE, LOWESTPARENT, HIGHESTPARENT nebo celé číslo. Chování závisí na celočíselném znaménku:
– Pokud je nula nebo vynechána, výpočet se neobnoví. Ekvivalent funkce NONE.
- Pokud je kladné, celé číslo identifikuje sloupec začínající od nejvyššího, nezávisle na agregačním intervalu. FUNKCE HIGHESTPARENT je ekvivalentní hodnotě 1.
- Pokud je záporné, celé číslo identifikuje sloupec počínaje nejnižší hodnotou vzhledem k aktuálnímu agregačnímu intervalu. NEJNIŽŠÍPARENT je ekvivalentní hodnotě -1.

Vrácená hodnota

Řádek na absolutní pozici.

Poznámky

Každý <sloupec partitionBy a <matchBy>> musí mít odpovídající vnější hodnotu, která pomáhá definovat "aktuální oddíl", pro který se má pracovat, s následujícím chováním:

  • Pokud je právě jeden odpovídající vnější sloupec, použije se jeho hodnota.
  • Pokud neexistuje odpovídající vnější sloupec:
    • Index nejprve určí všechny <sloupce partitionBy> a <matchBy> , které nemají odpovídající vnější sloupec.
    • Pro každou kombinaci existujících hodnot pro tyto sloupce v nadřazené kontextu INDEX se vyhodnocuje index a vrátí se řádek.
    • Konečný výstup indexu je sjednocením těchto řádků.
  • Pokud existuje více než jeden odpovídající vnější sloupec, vrátí se chyba.

Pokud <je k dispozici shodaBy> , index se pokusí použít sloupce <matchBy> a <partitionBy> k identifikaci řádku.
Pokud <matchBy> není k dispozici a sloupce zadané v rámci <orderBy> a <partitionBy> nemohou jednoznačně identifikovat každý řádek ve <vztahu>:

  • Index se pokusí najít nejmenší počet dalších sloupců potřebných k jednoznačné identifikaci každého řádku.
  • Pokud tyto sloupce najdete, index tyto nové sloupce automaticky připojí k <orderBy> a každý oddíl se seřadí pomocí této nové sady sloupců OrderBy.
  • Pokud tyto sloupce nelze najít, vrátí se chyba.

Prázdná tabulka se vrátí, pokud:

  • Odpovídající vnější hodnota sloupce PartitionBy neexistuje v rámci <relace>.
  • Hodnota <pozice> odkazuje na pozici, která v rámci oddílu neexistuje.

Pokud se funkce INDEX použije v počítaném sloupci definovaném ve stejné tabulce jako <relace> a <orderBy> , vrátí se chyba.

<Resetování> lze použít pouze ve vizuálních výpočtech a nelze ho použít v kombinaci s <orderBy> nebo <partitionBy>. Pokud <je k dispozici resetování>, je možné zadat osu>, <ale <relační nemůže>.

Příklad 1 – počítaný sloupec

Následující dotaz DAX:

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

Vrátí následující tabulku:

DimDate[CalendarYear]
2005

Příklad 2 – počítaný sloupec

Následující dotaz DAX:

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átí následující tabulku:

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
214 0 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 0 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

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

Následující dotazy jazyka DAX pro výpočet vizuálu:

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

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

Vylepšete tabulku tak, aby obsahovala každý měsíc:
- celkovou částku prodeje;
- rozdíl na první měsíc příslušného roku;
- a rozdíl na první měsíc příslušného čtvrtletí.

Následující snímek obrazovky ukazuje vizuální matici a první výraz výpočtu vizuálu:

DAX visual calculation

POSUN
ORDERBY
PARTITIONBY
OKNO
HODNOST
ROWNUMBER