了解 DAX 中父子层次结构的函数
DAX 提供五个函数来帮助用户管理在其模型中显示为父子层次结构的数据。 借助这些函数,用户可以获取行中父级的全部世系,有多少级别具有上级父级,谁是当前行层次结构顶部的父级 n 级,是当前行层次结构顶部的 n 代,是当前行层次结构中的父级吗?
DAX 中的父子函数
下表包含列上的 Parent-Child 层次结构: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 函数 - 从 position
函数结果 PATH 返回 PATH 项,从右向左计数。
在以下示例列中,PathItemReverse - 右侧的第三列定义为“= 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 函数 - 如果指定的 TRUE
存在于指定的 item
中,则返回 path
。 在以下示例列中,PathContains - employee 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 |