共用方式為


瞭解 DAX 中父子式階層的函式

DAX 提供五個函式,可協助使用者管理其模型中呈現為父子式階層的數據。 有了這個函式,使用者可以取得數據列的父系的完整譜系,有多少層級具有上層父系,誰是目前數據列上方的父 N 層級,誰是目前數據列階層頂端的 n 子系,而且目前數據列階層中的父系是否為父系?

DAX 中的父子函式

下表包含數據行上的 Parent-Child 階層: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() 傳回位於指定位置的專案。 在下列範例數據行PathItem - 左方第4個定義為 '= PATHITEM([Path], 4)';此範例會使用Path() 範例中的相同範例數據,傳回Path字串中第四個位置的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從函式結果等 position 傳回位於 position 的專案,從右至左計算。 在下列範例數據行PathItemReverse - 右方的第3個定義為 '= PATHITEMREVERSE([Path], 3)';這個範例會使用Path() 範例中的相同範例數據,傳回Path字串中第三個位置的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 函式 - 如果指定的 item 存在於指定的 path內,則傳回 TRUE。 在下列範例數據行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