Power BI中创建部件号与各级组件关联关系表的需求
解决方法
先明确前提
假设你的table1是BOM结构表,包含父部件号和子部件号两个核心字段(如果你的字段名不一样,替换成实际名称即可)。
用DAX生成完整层级关系表
直接创建计算表,递归遍历所有层级的父子关联,生成能覆盖从顶级部件到所有子部件的关系表:
部件层级关系表 = VAR 基础层级 = SELECTCOLUMNS(table1, "查询部件号", [父部件号], "关联组件号", [子部件号], "层级", 1) VAR 递归扩展层级 = GENERATE( 基础层级, VAR 当前查询部件 = [查询部件号] VAR 当前子组件 = [关联组件号] RETURN ADDCOLUMNS( FILTER( GENERATEALL( table1, VAR 组件路径 = PATH([父部件号], [子部件号]) RETURN PATHITEM(组件路径, 1, TEXT()) = 当前子组件 ), [父部件号] <> [子部件号] ), "查询部件号", 当前查询部件, "层级", [层级] + 1 ) ) VAR 合并所有层级 = UNION(基础层级, 递归扩展层级) RETURN ADDCOLUMNS( 合并所有层级, "组件完整路径", PATH([查询部件号], [关联组件号]) )
配置查询功能
- 在Power BI中添加一个切片器,选择
部件层级关系表里的查询部件号字段,用来选择你要查询的部件。 - 添加一个表格可视化,把
关联组件号、层级、组件完整路径拖进去,就能看到该部件下所有层级的关联组件和子组件了。
处理循环引用(如果有)
如果你的BOM表存在部件互为父子的循环情况,给DAX添加过滤条件排除:
部件层级关系表 = VAR 基础层级 = SELECTCOLUMNS(table1, "查询部件号", [父部件号], "关联组件号", [子部件号], "层级", 1) VAR 递归扩展层级 = GENERATE( 基础层级, VAR 当前查询部件 = [查询部件号] VAR 当前子组件 = [关联组件号] RETURN ADDCOLUMNS( FILTER( GENERATEALL( table1, VAR 组件路径 = PATH([父部件号], [子部件号]) RETURN PATHITEM(组件路径, 1, TEXT()) = 当前子组件 && NOT CONTAINSSTRING(组件路径, 当前查询部件) ), [父部件号] <> [子部件号] ), "查询部件号", 当前查询部件, "层级", [层级] + 1 ) ) VAR 合并所有层级 = UNION(基础层级, 递归扩展层级) RETURN ADDCOLUMNS( 合并所有层级, "组件完整路径", PATH([查询部件号], [关联组件号]) )
内容的提问来源于stack exchange,提问作者Will Tunechi
相关产品推荐
相关产品推荐

