Förstå funktioner med ”överordnad-underordnad”-hierarkier i DAX

I DAX finns fem funktioner som hjälper användare att hantera data som presenteras i en ”överordnad-underordnad”-hierarki i sina modeller. Med de här funktionerna kan en användare erhålla hela ursprunget för överordnade för en rad, hur många nivåer det är till den högsta överordnade, vilka som är de överordnade n nivåerna ovanför den aktuella raden, vem som är n underordnad från toppen av den aktuella radhierarkin och om en viss överordnad är en överordnad i den aktuella radhierarkin.

Funktioner för överordnad-underordnad i DAX

Följande tabell innehåller en ”överordnad-underordnad”-hierarki i kolumnerna: EmployeeKey och ParentEmployeeKey som används i alla funktionsexempel.

EmployeeKey ParentEmployeeKey
112
14 112
3 14
11 3
13 3
162 3
117 162
221 162
81 162

I tabellen ovan kan vi se att ingen överordnad har definierats för medarbetare 112 och att medarbetare 14 har 112 som chef (ParentEmployeeKey), medarbetare 3 har medarbetare 14 som chef och medarbetarna 11, 13 och 162 har medarbetare 3 som chef. Med informationen ovan förstår vi att medarbetare 112 inte har någon chef över sig och att medarbetaren är högsta chef för alla medarbetare som visar här. Och vi ser att medarbetare 3 rapporterar till medarbetare 14 och att medarbetarna 11, 13 och 162 rapport till medarbetare 3.

I följande tabell visas tillgängliga funktioner, en kort beskrivning av funktionen och ett exempel på funktionen för samma data som visas ovan.

Funktionen PATH – returnerar en avgränsad text med identifierarna för alla överordnade till den aktuella raden, med den äldsta eller översta först till den aktuella.

EmployeeKey ParentEmployeeKey Sökväg
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

Funktionen PATHLENGTH – returnerar antalet nivåer i en given PATH() med den äldsta eller översta först. I följande exempel definieras kolumnen PathLength som = PATHLENGTH([Path]). Exemplet innehåller alla data från Path()-exemplet för att det ska bli lättare att förstå hur den här funktionen fungerar.

EmployeeKey ParentEmployeeKey Sökväg 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

Funktionen PATHITEM – returnerar objektet på angiven position från ett PATH()-liknande resultat, räknat från vänster till höger. I följande exempel definieras PathItem – 4:e från vänster som = PATHITEM([Path], 4). I det här exemplet returneras EmployeKey vid den fjärde positionen i Path-strängen från vänster med samma exempeldata som i Path()-exemplet.

EmployeeKey ParentEmployeeKey Sökväg PathItem – 4:e från vänster
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

Funktionen PATHITEMREVERSE – returnerar objektet vid position från ett PATH()-liknande resultat, räknat bakåt från höger till vänster.
I följande exempel definieras PathItemReverse – 3:e från höger som = PATHITEMREVERSE([Path], 3). I det här exemplet returneras EmployeKey vid den tredje positionen i Path-strängen från höger med samma exempeldata som i Path()-exemplet.

EmployeeKey ParentEmployeeKey Sökväg PathItemReverse – 3:e från höger
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

Funktionen PATHCONTAINS – returnerar TRUE om det angivna objektet finns inom angiven path. I följande exempel definieras PathContains – medarbetare 162 som . I det här exemplet returneras TRUE om den angivna sökvägen innehåller = PATHCONTAINS([Path], "162") medarbetare 162. = PATHCONTAINS([Path], "162") I det här exemplet används resultatet från Path()-exemplet ovan.

EmployeeKey ParentEmployeeKey Sökväg PathContains – medarbetare 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