Sdílet prostřednictvím


INDEX

platí pro:Počítaný sloupecPočítaná tabulkamíravizuální

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ů.

Syntax

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

Parametry

Semestr Definice
position Absolutní pozice (založená na 1), ze které se mají získat data:
- position je kladné: 1 je první řádek, 2 je druhý řádek atd.
- position je záporný: -1 je poslední řádek, -2 je druhý poslední řádek atd.
Když position je mimo hranici, nebo nula nebo BLANK(), INDEX vrátí prázdnou tabulku. Může to být libovolný výraz DAX, který vrací skalární hodnotu.
relation (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án.
– Všechny výrazy orderBy a partitionBy musí být plně kvalifikované názvy sloupců a pocházet z jedné tabulky.
– Výchozí hodnota je ALLSELECTED() všech sloupců v orderBy a partitionBy.
axis (Volitelné) Osa ve vizuálním obrazci. Dostupné pouze ve vizuálních výpočtech a nahrazuje relation.
orderBy (Volitelné) Klauzule ORDERBY() obsahující výrazy definující způsob řazení jednotlivých oddílů.
Pokud tento parametr vynecháte:
- relation musí být explicitně zadán.
– Výchozí nastavení řazení podle každého sloupce v relation, který ještě není zadán v partitionBy.
blanks (Volitelné) Výčet, který definuje, jak zpracovat prázdné hodnoty při řazení relation nebo axis.
Podporované hodnoty jsou:
  • DEFAULT (výchozí hodnota), 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ů.
  • FIRST, prázdné hodnoty jsou vždy seřazeny na začátku bez ohledu na vzestupné nebo sestupné pořadí řazení.
  • LAST, prázdné hodnoty jsou vždy seřazeny na konci bez ohledu na vzestupné nebo sestupné pořadí řazení.

Poznámka: Pokud je zadán parametr blanks a prázdné hodnoty ve funkci ORDERBY() () u jednotlivých výrazů, blanks pro jednotlivý výraz orderBy má prioritu pro příslušný výraz orderBy a výrazy orderBy bez blanks budou respektovat parametr blanks nadřazené funkce.
partitionBy (Volitelné) Klauzule () obsahující sloupce definující způsob rozdělení . Pokud tento parametr vynecháte, relation se považuje za jeden oddíl.
matchBy (Volitelné) MATCHBY() klauzule obsahující sloupce, které definují, jak se shodují s daty a identifikují aktuální řádek.
reset (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. Akceptované hodnoty jsou: odkaz na pole na sloupec v aktuálním obrazci vizuálu, NONE (výchozí), LOWESTPARENT, HIGHESTPARENTnebo celé číslo. Toto chování závisí na celočíselném znaménku:
– pokud je nula nebo vynechána, výpočet se neobnoví. Ekvivalent NONE.
– pokud je kladné, celé číslo identifikuje sloupec začínající od nejvyššího, nezávisle na agregačním intervalu. HIGHESTPARENT odpovídá 1.
– pokud je záporné, celé číslo identifikuje sloupec počínaje nejnižší hodnotou vzhledem k aktuálnímu agregačnímu intervalu. LOWESTPARENT je ekvivalentní -1.

Návratová 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", na kterém 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 partitionBy a matchBy sloupce, které nemají odpovídající vnější sloupec.
    • Pro každou kombinaci existujících hodnot pro tyto sloupce v nadřazeném kontextu INDEXse vyhodnotí INDEX a vrátí se řádek.
    • INDEXkonečný výstup je sjednocením těchto řádků.
  • Pokud existuje více než jeden odpovídající vnější sloupec, vrátí se chyba.

Pokud matchBy existuje, INDEX se pokusí k identifikaci řádku použít matchBy a partitionBy sloupce. Pokud matchBy neexistuje a sloupce zadané v orderBy a partitionBy nemohou jednoznačně identifikovat každý řádek v relation:

  • 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 orderBya 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 relation.
  • Hodnota position odkazuje na pozici, která v rámci oddílu neexistuje.

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

reset lze použít pouze ve vizuálních výpočtech a nelze jej použít v kombinaci s orderBy nebo partitionBy. Pokud je reset, je možné zadat axis, ale relation nelze.

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 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

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

Následující vizuální výpočet DAX dotazy:

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:
– celková částka prodeje;
– rozdíl od prvního měsíce příslušného roku;
– a rozdíl k prvnímu měsíci 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 výpočtu vizuálu

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER