了解 DAX 中父子层次结构的函数

DAX 提供五个函数来帮助用户管理在其模型中显示为父子层次结构的数据。 借助此函数,用户可以获取行中父级的全部世系,有多少级别具有沿袭到顶部父级,谁是当前行上方的父 n 级,而当前行层次结构的顶部的 n 后代 and 是当前行层次结构中的父级?

DAX 中的父子函数

下表 contains 列上的 Parent-Child 层次结构:EmployeeKeyandParentEmployeeKey,all 函数示例中使用。

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 作为经理,and 员工 11,13,and 162 员工 3 作为经理。 以上有助于了解员工 112 没有高于她/他的经理,and 她/他是此处显示的 all 员工的最高经理:此外,员工 3 向员工报告 14 and 员工 11、13、162 报告至 3。

下表显示了可用的函数,该函数的简要说明 and 上述相同数据中函数的示例。

PATH 函数 - 返回一个带分隔符的文本,其中包含当前行 all 的父级的标识符,从最旧的 or 顶部到当前行。

EmployeeKey ParentEmployeeKey Path
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()中的级别数,从当前级别开始,直到最旧的 or 最高父级。 在以下示例列中,PathLength 定义为“= PATHLENGTH([Path])”;该示例包括 allPath() 示例中的数据,以帮助了解此函数的工作原理。

EmployeeKey ParentEmployeeKey Path 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()返回位于指定位置的项,如结果,从 left 计数到 right。 在以下示例列中,PathItem - left 的第 4 列定义为“= PATHITEM([Path], 4)”;此示例使用 Path() 示例中的相同 left 数据返回 samplePath字符串中的第四个位置的 EmployeKey。

EmployeeKey ParentEmployeeKey Path PathItem - left 的第 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 处返回项,从 right 向后计数到 left。 在以下示例列中,PathItemReverse - right 的第 3 个列定义为“= PATHITEMREVERSE([Path], 3)”;此示例使用 Path() 示例中的相同 right 数据返回 samplePath字符串中的第三个位置的 EmployeKey。

EmployeeKey ParentEmployeeKey Path PathItemReverse - 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 函数 - 返回指定 TRUE中存在指定的 ifitempath。 在以下示例列中,PathContains - 员工 162 定义为“= PATHCONTAINS([Path], "162")”;此示例返回 TRUEif 给定 pathcontains 员工 162。 此示例使用上面的 Path() 示例中的结果。

EmployeeKey ParentEmployeeKey Path 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