Webi 4.3合并查询时如何展示含多值的多行数据
Web Intelligence 4.3 一人多职位多行展示解决方案
问题背景
你通过Universe创建了两个查询:
- Query 1(Staff表)字段:
PersonID、FirstName、LastName、MainPostion - Query 2(SecondaryPositions表)字段:
PersonID、AlternativePosition
合并查询后,因一人对应多个AlternativePosition,使用Detail变量会出现#Multivalue错误,无法展示多行数据。
解决方法
方法一:调整查询合并的关联规则(最直接)
- 打开查询编辑器,找到两个查询基于
PersonID的关联线 - 右键点击关联线,选择编辑关联,将关联类型设置为保留来自两个查询的所有匹配行(对应SQL的INNER JOIN逻辑,会返回所有匹配的记录;若需要包含无兼职的员工,可选择完全外部连接)
- 重新运行查询,直接把
AlternativePosition拖入报表表格,Webi会自动按PersonID+AlternativePosition的组合生成多行,无需使用Detail变量
方法二:用维度变量替代Detail变量
- 删除之前创建的Detail变量,新建一个维度变量,公式直接写
=[Query2].[AlternativePosition] - 将这个维度变量拖入报表的表格维度区域,和
PersonID、FirstName等字段放在一起 - 此时Webi会自动识别多值关联,把主表的单条记录拆分成多行,对应每个兼职职位
方法三:聚合拆分法(适用于无法修改查询合并的场景)
- 新建聚合变量
所有职位,公式为=Concatenation([Query2].[AlternativePosition];", ") ForEach ([PersonID]),作用是把同一个人的所有兼职职位合并成逗号分隔的字符串 - 新建拆分变量
拆分职位,公式为=Split([所有职位];", "),将聚合后的字符串拆分成单个职位值 - 将
拆分职位拖入报表维度区域,配合PersonID等字段,即可展开成多行展示每个职位
内容的提问来源于stack exchange,提问作者JK36
相关产品推荐
相关产品推荐

