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:
Související obsah
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro