Principy funkcí pro hierarchie nadřazených a podřízených v DAX
DAX poskytuje pět funkcí, které uživatelům pomůžou spravovat data, která jsou ve svých modelech prezentována jako hierarchie nadřazených a podřízených. Díky těmto funkcím může uživatel získat celou rodokmen nadřazeného řádku, kolik úrovní má rodokmen nejvyšší nadřazený prvek, který je nadřazenou n-úrovní nad aktuálním řádkem, který je n-následníkem z horní části aktuální hierarchie řádků a je určitým nadřazeným objektem v aktuální hierarchii řádků?
Funkce nadřazenosti a podřízenosti v DAX
Následující tabulka obsahuje Parent-Child hierarchii sloupců: EmployeeKey a ParentEmployeeKey, která se používá ve všech příkladech funkcí.
EmployeeKey | ParentEmployeeKey |
---|---|
112 | |
14 | 112 |
3 | 14 |
11 | 3 |
13 | 3 |
162 | 3 |
117 | 162 |
221 | 162 |
81 | 162 |
V tabulce výše vidíte, že zaměstnanec 112 nemá definovaný žádný rodič, zaměstnanec 14 má zaměstnance 112 jako manažer (ParentEmployeeKey), zaměstnanec 3 má zaměstnance 14 jako vedoucí a zaměstnanci 11, 13 a 162 mají zaměstnance 3 jako vedoucí. Výše uvedené informace pomáhají pochopit, že zaměstnanec 112 nemá nad sebou vedoucího a ona/on je nejvyšší manažer pro všechny zaměstnance, kteří jsou zde uvedeni; zaměstnanci 3 také hlásí zaměstnancům 14 a zaměstnancům 11, 13, 162 zprávy na 3.
Následující tabulka obsahuje dostupné funkce, stručný popis funkce a příklad funkce nad stejnými daty uvedenými výše.
PATH funkce – vrátí text s oddělovači s identifikátory všech nadřazených prvků aktuálního řádku počínaje nejstarším nebo nejvyšším až aktuálním řádkem.
EmployeeKey | ParentEmployeeKey | Cesta |
---|---|---|
112 | 112 | |
14 | 112 | 112|14 |
3 | 14 | 112|14|3 |
11 | 3 | 112|14|3|11 |
13 | 3 | 112|14|3|13 |
162 | 3 | 112|14|3|162 |
117 | 162 | 112|14|3|162|117 |
221 | 162 | 112|14|3|162|221 |
81 | 162 | 112|14|3|162|81 |
PATHLENGTH funkce – vrátí počet úrovní v daném PATH(), počínaje aktuální úrovní až do nejstarší nebo nejvyšší nadřazené úrovně. V následujícím příkladu sloupec PathLength je definován jako "= PATHLENGTH([Path])
"; Příklad obsahuje všechna data z příkladu Path(), která vám pomůžou pochopit, jak tato funkce funguje.
EmployeeKey | ParentEmployeeKey | Cesta | PathLength |
---|---|---|---|
112 | 112 | 1 | |
14 | 112 | 112|14 | 2 |
3 | 14 | 112|14|3 | 3 |
11 | 3 | 112|14|3|11 | 4 |
13 | 3 | 112|14|3|13 | 4 |
162 | 3 | 112|14|3|162 | 4 |
117 | 162 | 112|14|3|162|117 | 5 |
221 | 162 | 112|14|3|162|221 | 5 |
81 | 162 | 112|14|3|162|81 | 5 |
PATHITEM funkce – vrátí položku na zadané pozici z výsledku PATH(), počítá se zleva doprava. V následujícím příkladu sloupce PathItem - 4th from left is defined as '= PATHITEM([Path], 4)
'; v tomto příkladu se vrátí Funkce EmployeKey na čtvrté pozici v řetězci Path zleva pomocí stejných ukázkových dat z příkladu Path().
EmployeeKey | ParentEmployeeKey | Cesta | PathItem – 4. zleva |
---|---|---|---|
112 | 112 | ||
14 | 112 | 112|14 | |
3 | 14 | 112|14|3 | |
11 | 3 | 112|14|3|11 | 11 |
13 | 3 | 112|14|3|13 | 13 |
162 | 3 | 112|14|3|162 | 162 |
117 | 162 | 112|14|3|162|117 | 162 |
221 | 162 | 112|14|3|162|221 | 162 |
81 | 162 | 112|14|3|162|81 | 162 |
PATHITEMREVERSE funkce – vrátí položku v position
z výsledku PATH(), jako je výsledek funkce, počítání zpět zprava doleva.
V následujícím příkladu sloupce PathItemReverse – třetí zprava je definován jako "= PATHITEMREVERSE([Path], 3)
"; tento příklad vrátí funkci EmployeKey na třetí pozici v řetězci Path zprava pomocí stejných ukázkových dat z příkladu Path().
EmployeeKey | ParentEmployeeKey | Cesta | PathItemReverse – třetí zprava |
---|---|---|---|
112 | 112 | ||
14 | 112 | 112|14 | |
3 | 14 | 112|14|3 | 112 |
11 | 3 | 112|14|3|11 | 14 |
13 | 3 | 112|14|3|13 | 14 |
162 | 3 | 112|14|3|162 | 14 |
117 | 162 | 112|14|3|162|117 | 3 |
221 | 162 | 112|14|3|162|221 | 3 |
81 | 162 | 112|14|3|162|81 | 3 |
PATHCONTAINS funkce – vrátí TRUE
, pokud zadaný item
existuje v zadaném path
. V následujícím příkladu sloupce PathContains - employee 162 je definován jako '= PATHCONTAINS([Path], "162")
'; tento příklad vrátí TRUE
, pokud daná cesta obsahuje zaměstnance 162. Tento příklad používá výsledky z výše uvedeného příkladu Path().
EmployeeKey | ParentEmployeeKey | Cesta | PathContains – zaměstnanec 162 |
---|---|---|---|
112 | 112 | FALSE |
|
14 | 112 | 112|14 | FALSE |
3 | 14 | 112|14|3 | FALSE |
11 | 3 | 112|14|3|11 | FALSE |
13 | 3 | 112|14|3|13 | FALSE |
162 | 3 | 112|14|3|162 | TRUE |
117 | 162 | 112|14|3|162|117 | TRUE |