了解 DAX 中父子式階層的函數
DAX 提供了 5 個函數,可協助使用者管理在其模型中呈現為父子式階層的資料。 透過這些函數,使用者可以取得某個資料列具有的整個父系歷程、最上層父系的歷程有多少層級、目前資料列上方第 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’ 資料行定義為 '=PATH(EmployeeKey, ParentEmployeeKey)'。
|
|||||||||||||||||||||||||||||||||||||||||
傳回給定 PATH() 中的層級數目,從目前的層級開始到最舊或最上層的父層級為止。 在下列範例中,PathLength 資料行定義為 ‘=PATHLENGTH([Path])’。此範例包括 Path() 範例中的所有資料,有助於了解這個函數的運作方式。
|
|||||||||||||||||||||||||||||||||||||||||
從 PATH() 類似結果傳回位於指定之位置的項目 (由左至右計算)。 在下列範例中,PathItem - 4th from left 資料行定義為 ‘=PATHITEM([Path], 4)’。此範例會使用 Path() 範例中的相同範例資料,傳回 Path 字串中位於第四個位置的 EmployeKey (從左邊算起)。
|
|||||||||||||||||||||||||||||||||||||||||
從 PATH() 類似函數結果傳回位於 position 的項目 (由右至左反向計算)。 在下列範例中,PathItemReverse - 3rd from right 資料行定義為 ‘=PATHITEMREVERSE([Path], 3)’。此範例會使用 Path() 範例中的相同範例資料,傳回 Path 字串中位於第三個位置的 EmployeKey (從右邊算起)。
|
|||||||||||||||||||||||||||||||||||||||||
如果指定的 item 存在指定的 path 中,則傳回 TRUE。 在下列範例中,PathContains - employee 162 資料行定義為 ‘=PATHCONTAINS([Path], "162")’。如果給定的路徑包含員工 162,此範例就會傳回 TRUE。 此範例會使用來自上述 Path() 範例的結果。
|
注意 |
---|
在 SQL Server 2012 Analysis Services 中,xVelocity 記憶體中分析引擎 (VertiPaq) 不支援父子式階層的定義。不過,DAX 語言支援一組函數,可讓使用者瀏覽父子式階層並且將這些階層用於公式中。 |