我的数据模型中有两个表以多对一关系链接,在两个方向上进行交叉过滤。
表 A 每个键值一行,表 B 有很多行。
并非表 A 中的所有人都出现在表 B 中。
我想创建一个表格视觉效果,其中列出表 A 中的每个人,以及表 B 中的信息(如果存在)。但是,当我将表 B 中的变量添加到视觉对象时,PowerBI 会自动从表 A 中删除未出现在表 B 中的所有人员,而不是显示缺失值的空单元格。
我在数据模型中得到了什么:
表A
姓名 | 生日 |
---|---|
约翰 | 1962 年 4 月 2 日 |
简 | 1970 年 11 月 3 日 |
表B
姓名 | 宠物 |
---|---|
约翰 | 猫 - 亨利 |
约翰 | 狗 - 现货 |
我想要的视觉效果:
姓名 | 生日 | 宠物 |
---|---|---|
约翰 | 1962 年 4 月 2 日 | 猫 - 亨利 |
约翰 | 1962 年 4 月 2 日 | 狗 - 现货 |
简 | 1970 年 11 月 3 日 |
我得到了什么:
姓名 | 生日 | 宠物 |
---|---|---|
约翰 | 1962 年 4 月 2 日 | 猫 - 亨利 |
约翰 | 1962 年 4 月 2 日 | 狗 - 现货 |
我的视觉上没有滤镜。
如果我将视觉效果过滤为表 B 中变量的空白/缺失值,我会得到一个空表。
我在这里查看了一些有关将表与缺失数据组合的线程,但它们都是关于在数据模型而不是视觉效果中创建新表。
默认情况下,PowerPivot 执行 INNER 连接。但如果您需要 OUTER 连接,有一个简单的解决方案(但是,如果不需要,请不要使用双向过滤):在表字段列表上转到
Pet
,鼠标右键单击,选择 Show items with no data
:
这就是你得到的:
也可以直接使用 LeftOuter Join PowerQuery 中的 2 个表:
let
Source = Table.NestedJoin(
#"Table A", {"Name"},
#"Table B", {"Name"},
"Table B", JoinKind.LeftOuter),
#"Expanded Table B" = Table.ExpandTableColumn(
Source, "Table B", {"Pet"}, {"Pet"})
in
#"Expanded Table B"
此场景还有一个问题: 如何计算“Pet”列中空单元格的数量,或将它们显示在 x 轴值为“空”的图表中?