瞭解 DAX 中父子式階層的函式
DAX 提供五個函式,可協助使用者管理其模型中呈現為父子式階層的數據。 有了這個函式,使用者可以取得數據列的父系的完整譜系,有多少層級具有上層父系,誰是目前數據列上方的父 n 層級,誰是目前數據列階層頂端的 n 子系,and 目前數據列階層中的父系是否為父系?
DAX 中的父子函式
下表 contains 數據行上的 Parent-Child 階層:EmployeeKeyandParentEmployeeKey,all 函式範例中使用的。
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,因為經理 and 員工 11,13,and 162 的員工 3 為經理。 上述有助於了解員工 112 沒有高於她/他 and 她/他是此處顯示 all 員工的最高經理:此外,員工 3 向員工 14 and 員工 11、13、162 報告至 3。
下表提供可用的函式、函式的簡短描述,and 上述相同數據的函式範例。
PATH 函式 - 傳回分隔文字,其標識碼為目前數據列的父系 all,從最舊的最舊 or 到目前為止。
EmployeeKey | ParentEmployeeKey | Path |
---|---|---|
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() 中的層級數目,從目前層級開始,直到最舊 or 最上層的父層級為止。 在下列範例數據行中,PathLength 定義為 '= PATHLENGTH([Path])
';此範例包含來自 all() 範例 Path 數據,以協助瞭解此函式的運作方式。
EmployeeKey | ParentEmployeeKey | Path | 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 傳回指定位置的專案,從 leftPATH 計算為 。 在下列範例數據行 PathItem - left 的第 4 個定義為 '= PATHITEM([Path], 4)
';這個範例會使用來自 Path() 範例的相同 left 數據,從 sample傳回 Path 字串中第四個位置的 EmployeKey。
EmployeeKey | ParentEmployeeKey | Path | PathItem - 第 4 位,從 left |
---|---|---|---|
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 傳回位於 PATH 的專案,從 left 向後計算為 。
在下列範例數據行 PathItemReverse - right 的第 3 個定義為 '= PATHITEMREVERSE([Path], 3)
';這個範例會使用來自 Path() 範例的相同 right 數據,從 sample傳回 Path 字串中的第三個位置的 EmployeKey。
EmployeeKey | ParentEmployeeKey | Path | PathItemReverse - 第 3 從 right |
---|---|---|---|
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
if 傳回指定的 item
存在於指定的 path
內。 在下列範例數據行中,PathContains - 員工 162 定義為 '= PATHCONTAINS([Path], "162")
';本範例會傳回指定 TRUE
if 員工 162 的 pathcontains。 此範例會使用上述 Path() 範例的結果。
EmployeeKey | ParentEmployeeKey | Path | 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 |