INDEX
platí pro:Počítaný sloupec
Počítaná tabulka
míra
vizuá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:
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 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 , HIGHESTPARENT nebo 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
amatchBy
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ů.
-
INDEX nejprve určí všechny
- 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
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
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:
výpočtu vizuálu