DAX の親子階層の関数について

DAX には、モデル内に親子階層として表示されるデータをユーザーが管理するための 5 つの関数が用意されています。 この関数を使用すると、行に含まれる親の系列全体のほか、最上位の親に対する系列にいくつのレベルが含まれるか、現在の行より n レベル上位の親が誰か、現在の行階層の最上位より n レベル下位の子孫が誰か、および特定の親が現在の行階層内の親であるかどうかを取得できます。

DAX の親子関数

次の表には、列上の親子階層が含まれています。すべての関数の例で使用されている EmployeeKeyParentEmployeeKey

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