DAX には、ユーザーがモデルで親子階層として表示されるデータを管理するのに役立つ 5 つの関数が用意されています。 これらの関数を使用すると、ユーザーは行に含まれる親の系列全体を取得できます。最上位の親の系列を持つレベルの数、現在の行の上位の親 n レベル、現在の行階層の上位の n 子孫であり、現在の行階層の親である親は何レベルですか?
DAX の親子関数
次の表に、列の Parent-Child 階層を示します。
| EmployeeKey | ParentEmployeeKey |
|---|---|
| 112 | |
| 14 | 112 |
| 3 | 14 |
| 11 | 3 |
| 13 | 3 |
| 162 | 3 |
| 117 | 162 |
| 221 | 162 |
| 81 | 162 |
上の表では、従業員 112 には親が定義されておらず、従業員 14 にはマネージャーとして従業員 112 (ParentEmployeeKey) があり、従業員 3 にはマネージャーとして従業員 14 があり、従業員 11、13、162 にはマネージャーとして従業員 3 が含まれていることがわかります。 上記は、従業員112が彼女/彼の上にマネージャーを持っず、彼女/彼がここに示されているすべての従業員のトップマネージャーであることを理解するのに役立ちます。また、従業員 3 は従業員 14 に報告し、従業員 11、13、162 は 3 に報告します。
次の表は、使用可能な関数、関数の簡単な説明、および上記と同じデータに対する関数の例を示しています。
PATH 関数 - 現在の行に対するすべての親の識別子を含む区切りテキストを返します。最も古い行または最上位から現在の行までを返します。
| EmployeeKey | ParentEmployeeKey | パス |
|---|---|---|
| 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 関数 - 現在のレベルから最も古い親レベルまたは最上位の親レベルまで、特定の PATH() 内のレベルの数を返します。 次の例では、PathLength 列は '= PATHLENGTH([Path])' として定義されています。この例には、この関数の動作を理解するのに役立つ Path() の例のすべてのデータが含まれています。
| EmployeeKey | ParentEmployeeKey | パス | 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 関数 - 結果などの PATH() から指定した位置にある項目を、左から右にカウントして返します。 次の例では、PathItem 列の左から 4 番目が '= PATHITEM([Path], 4)' として定義されています。この例では、Path() の例と同じサンプル データを使用して、左から Path 文字列の 4 番目の位置にある EmployeKey を返します。
| EmployeeKey | ParentEmployeeKey | パス | PathItem - 左から 4 番目 |
|---|---|---|---|
| 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 関数 - position() から PATH の項目を返します (関数の結果など)。右から左に後方にカウントされます。
次の例では、PathItemReverse - 右から 3 番目の列は '= PATHITEMREVERSE([Path], 3)' として定義されています。この例では、Path() の例と同じサンプル データを使用して、右から Path 文字列の 3 番目の位置にある EmployeKey を返します。
| EmployeeKey | ParentEmployeeKey | パス | PathItemReverse - 右から 3 番目 |
|---|---|---|---|
| 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 関数 - 指定した TRUE が指定した item内に存在する場合に path を返します。 次の例では、PathContains - employee 162 は '= PATHCONTAINS([Path], "162")' として定義されています。この例では、指定されたパスに従業員 162 が含まれている場合、TRUE が返されます。 この例では、上記の Path() の例の結果を使用します。
| EmployeeKey | ParentEmployeeKey | パス | PathContains - 従業員 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 |