Power BI计算字段:实现层级子项重复上级值的方案
在Power BI中实现层级父项值向下填充至子项记录
可以通过Power BI的DAX计算字段实现该需求,针对两种层级结构分别提供解决方案:
场景一:基于层级路径结构
示例数据
| A.Code | A.hierachy | A.level | B.valuetopeat |
|---|---|---|---|
| John | 1/ | 1 | Senior |
| Smith | 1/2 | 2 | ---> 默认无数据,需填充"Senior" |
| Wesson | 1/2/3 | 3 | ---> 默认无数据,需填充"Senior" |
| Syl | 2/ | 1 | Junior |
| Ves | 2/1 | 2 | ---> 默认无数据,需填充"Junior" |
| Ter | 2/1/1 | 3 | ---> 默认无数据,需填充"Junior" |
DAX计算字段公式
填充值 = VAR 顶级层级编号 = LEFT(A[hierachy], FIND("/", A[hierachy]) - 1) RETURN LOOKUPVALUE( B[valuetopeat], A[hierachy], 顶级层级编号 & "/", A[level], 1 )
逻辑说明
- 通过
LEFT和FIND函数提取当前记录层级路径的顶级编号(比如从1/2中提取1) - 用
LOOKUPVALUE匹配顶级层级(level=1)对应的B.valuetopeat值,将该值返回给当前子项记录
场景二:基于父子键结构
示例数据
| A.Key | A.parentKey | A.Code | B.valuetoRepeat |
|---|---|---|---|
| 1 | John | Senior | |
| 2 | 1 | Smith | ---> 默认无数据,需填充"Senior" |
| 3 | 2 | Wesson | ---> 默认无数据,需填充"Senior" |
| 4 | Syl | Junior | |
| 5 | 4 | Ves | ---> 默认无数据,需填充"Junior" |
| 6 | 5 | Ter | ---> 默认无数据,需填充"Junior" |
DAX计算字段公式
填充值 = VAR 顶级Key = PATHITEM(PATH(A[Key], A[parentKey]), 1) RETURN LOOKUPVALUE( B[valuetoRepeat], A[Key], VALUE(顶级Key) )
逻辑说明
- 使用
PATH函数生成当前记录的完整父子路径(比如Key=3的路径为1|2|3) - 通过
PATHITEM提取路径的第一个节点(顶级Key) - 用
LOOKUPVALUE匹配该顶级Key对应的B.valuetoRepeat值,完成子项填充
内容的提问来源于stack exchange,提问作者Cascador84
相关产品推荐
相关产品推荐

