DAX の親子階層の関数について
DAX には、モデル内に親子階層として表示されるデータをユーザーが管理するための 5 つの関数が用意されています。 この関数を使用すると、行に含まれる親の系列全体のほか、最上位の親に対する系列にいくつのレベルが含まれるか、現在の行より n レベル上位の親が誰か、現在の行階層の最上位より n レベル下位の子孫が誰か、および特定の親が現在の行階層内の親であるかどうかを取得できます。
DAX の親子関数
次の表には、列上の親子階層が含まれています。すべての関数の例で使用されている EmployeeKey と ParentEmployeeKey。
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() からの指定された位置にある項目を、左から右に数えて返します。 次の例では、左から 4 番目の列 PathItem が '= 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 関数 - 関数の結果と同様に、PATH() からの指定された "位置" にある項目を、右から左に逆方向に数えて返します。
次の例では、右から 3 番目の PathItemReverse 列が '= 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 関数 - 指定された path 内に指定された item が存在する場合に、TRUE を返します。 次の例では、PathContains 列の従業員 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 |