共用方式為


了解 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 函數 (DAX)

傳回一段以符號分隔的文字,其中包含目前資料列之所有父系的識別碼,從最舊或最上層的識別碼開始到目前的識別碼為止。

在下列範例中,‘Path’ 資料行定義為 '=PATH(EmployeeKey, ParentEmployeeKey)'。

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 函數 (DAX)

傳回給定 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 函數 (DAX)

從 PATH() 類似結果傳回位於指定之位置的項目 (由左至右計算)。

在下列範例中,PathItem - 4th from left 資料行定義為 ‘=PATHITEM([Path], 4)’。此範例會使用 Path() 範例中的相同範例資料,傳回 Path 字串中位於第四個位置的 EmployeKey (從左邊算起)。

EmployeeKey

ParentEmployeeKey

路徑

PathItem - 4th from 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 函數 (DAX)

從 PATH() 類似函數結果傳回位於 position 的項目 (由右至左反向計算)。

在下列範例中,PathItemReverse - 3rd from right 資料行定義為 ‘=PATHITEMREVERSE([Path], 3)’。此範例會使用 Path() 範例中的相同範例資料,傳回 Path 字串中位於第三個位置的 EmployeKey (從右邊算起)。

EmployeeKey

ParentEmployeeKey

路徑

PathItemReverse - 3rd from 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 函數 (DAX)

如果指定的 item 存在指定的 path 中,則傳回 TRUE。

在下列範例中,PathContains - employee 162 資料行定義為 ‘=PATHCONTAINS([Path], "162")’。如果給定的路徑包含員工 162,此範例就會傳回 TRUE。 此範例會使用來自上述 Path() 範例的結果。

EmployeeKey

ParentEmployeeKey

路徑

PathContains - employee 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

警告注意事項注意

在 SQL Server 2012 Analysis Services 中,xVelocity 記憶體中分析引擎 (VertiPaq) 不支援父子式階層的定義。不過,DAX 語言支援一組函數,可讓使用者瀏覽父子式階層並且將這些階層用於公式中。