了解 DAX 中父子式階層的函式
DAX 提供五個函式,可協助使用者管理在其模型中以父子式階層呈現的資料。 透過這項功能,使用者即可了解資料列具有的整個父系譜系、有多少層級具有最上層父系的譜系、目前資料列上方第 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() 中,從左到右算起位於指定位置的項目。 在下列範例中,資料行 [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 的項目。
在下列範例中,資料行 [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 - 員工 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 |