了解 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”定义为“=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。
|
|||||||||||||||||||||||||||||||||||||||||
如果指定的 path 中存在指定的 item,则返回 TRUE。 在以下示例中,列 PathContains - employee 162 定义为“=PATHCONTAINS([Path], "162")”;如果给定路径包含员工 162,则此示例返回 TRUE。 该示例使用上述 Path() 示例中的结果。
|
![]() |
---|
在 SQL Server 2012 Analysis Services 中,xVelocity 内存中分析引擎 (VertiPaq) 不支持父子层次结构的定义;但是,DAX 语言提供了一组函数,使用户可以浏览父子层次结构,并在公式中使用这些层次结构。 |