Förstå funktioner med ”överordnad-underordnad”-hierarkier i DAXUnderstanding functions for parent-child hierarchies in DAX

I DAX finns fem funktioner som hjälper användare att hantera data som presenteras i en ”överordnad-underordnad”-hierarki i sina modeller.DAX provides five functions to help users manage data that is presented as a parent-child hierarchy in their models. 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.With this functions a user can obtain the entire lineage of parents a row has, how many levels has the lineage to the top parent, who is the parent n-levels above the current row, who is the n-descendant from the top of the current row hierarchy and is certain parent a parent in the current row hierarchy?

Funktioner för överordnad-underordnad i DAXParent-child functions in DAX

Följande tabell innehåller en ”överordnad-underordnad”-hierarki i kolumnerna: EmployeeKey och ParentEmployeeKey som används i alla funktionsexempel.The following table contains a Parent-Child hierarchy on the columns: EmployeeKey and ParentEmployeeKey that is used in all the functions examples.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey
112112
1414 112112
33 1414
1111 33
1313 33
162162 33
117117 162162
221221 162162
8181 162162

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.In the above table you can see that employee 112 has no parent defined, employee 14 has employee 112 as manager (ParentEmployeeKey), employee 3 has employee 14 as manager and employees 11, 13, and 162 have employee 3 as manager. 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.The above helps to understand that employee 112 has no manager above her/him and she/he is the top manager for all employees shown here; also, employee 3 reports to employee 14 and employees 11, 13, 162 report to 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.The following table presents the available functions, a brief description of the function and an example of the function over the same data shown above.

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.PATH function - Returns a delimited text with the identifiers of all the parents to the current row, starting with the oldest or top most until current.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey SökvägPath
112112 112112
1414 112112 112|14112|14
33 1414 112|14|3112|14|3
1111 33 112|14|3|11112|14|3|11
1313 33 112|14|3|13112|14|3|13
162162 33 112|14|3|162112|14|3|162
117117 162162 112|14|3|162|117112|14|3|162|117
221221 162162 112|14|3|162|221112|14|3|162|221
8181 162162 112|14|3|162|81112|14|3|162|81

Funktionen PATHLENGTH – returnerar antalet nivåer i en given PATH() med den äldsta eller översta först.PATHLENGTH function - Returns the number of levels in a given PATH(), starting at current level until the oldest or top most parent level. 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.In the following example column PathLength is defined as '= PATHLENGTH([Path])'; the example includes all data from the Path() example to help understand how this function works.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey SökvägPath PathLengthPathLength
112112 112112 11
1414 112112 112|14112|14 22
33 1414 112|14|3112|14|3 33
1111 33 112|14|3|11112|14|3|11 44
1313 33 112|14|3|13112|14|3|13 44
162162 33 112|14|3|162112|14|3|162 44
117117 162162 112|14|3|162|117112|14|3|162|117 55
221221 162162 112|14|3|162|221112|14|3|162|221 55
8181 162162 112|14|3|162|81112|14|3|162|81 55

Funktionen PATHITEM – returnerar objektet på angiven position från ett PATH()-liknande resultat, räknat från vänster till höger.PATHITEM function - Returns the item at the specified position from a PATH() like result, counting from left to right. 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.In the following example column PathItem - 4th from left is defined as '= PATHITEM([Path], 4)'; this example returns the EmployeKey at fourth position in the Path string from the left, using the same sample data from the Path() example.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey SökvägPath PathItem – 4:e från vänsterPathItem - 4th from left
112112 112112
1414 112112 112|14112|14
33 1414 112|14|3112|14|3
1111 33 112|14|3|11112|14|3|11 1111
1313 33 112|14|3|13112|14|3|13 1313
162162 33 112|14|3|162112|14|3|162 162162
117117 162162 112|14|3|162|117112|14|3|162|117 162162
221221 162162 112|14|3|162|221112|14|3|162|221 162162
8181 162162 112|14|3|162|81112|14|3|162|81 162162

Funktionen PATHITEMREVERSE – returnerar objektet vid position från ett PATH()-liknande resultat, räknat bakåt från höger till vänster.PATHITEMREVERSE function - Returns the item at position from a PATH() like function result, counting backwards from right to left.
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.In the following example column PathItemReverse - 3rd from right is defined as '= PATHITEMREVERSE([Path], 3)'; this example returns the EmployeKey at third position in the Path string from the right, using the same sample data from the Path() example.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey SökvägPath PathItemReverse – 3:e från högerPathItemReverse - 3rd from right
112112 112112
1414 112112 112|14112|14
33 1414 112|14|3112|14|3 112112
1111 33 112|14|3|11112|14|3|11 1414
1313 33 112|14|3|13112|14|3|13 1414
162162 33 112|14|3|162112|14|3|162 1414
117117 162162 112|14|3|162|117112|14|3|162|117 33
221221 162162 112|14|3|162|221112|14|3|162|221 33
8181 162162 112|14|3|162|81112|14|3|162|81 33

Funktionen PATHCONTAINS – returnerar TRUE om det angivna objektet finns inom angiven path.PATHCONTAINS function - Returns TRUE if the specified item exists within the specified path. I följande exempel definieras PathContains – medarbetare 162 som = PATHCONTAINS([Path], "162"). I det här exemplet returneras TRUE om angiven path innehåller medarbetare 162.In the following example column PathContains - employee 162 is defined as '= PATHCONTAINS([Path], "162")'; this example returns TRUE if the given path contains employee 162. I det här exemplet används resultatet från Path()-exemplet ovan.This example uses the results from the Path() example above.

EmployeeKeyEmployeeKey ParentEmployeeKeyParentEmployeeKey SökvägPath PathContains – medarbetare 162PathContains - employee 162
112112 112112 FALSEFALSE
1414 112112 112|14112|14 FALSEFALSE
33 1414 112|14|3112|14|3 FALSEFALSE
1111 33 112|14|3|11112|14|3|11 FALSEFALSE
1313 33 112|14|3|13112|14|3|13 FALSEFALSE
162162 33 112|14|3|162112|14|3|162 TRUETRUE
117117 162162 112|14|3|162|117112|14|3|162|117 TRUETRUE