我只需要为一个有多个选择的问题做一个交叉表。
我有一个调查结果。这样做的目的是看到知道Brand1和其他品牌的人的份额。
可以说我们有一个包含答案的输入表:
Id Brand1 Brand2 Brand3 Brand4
1 1 1 0 1
2 0 0 1 1
3 1 1 0 0
4 1 0 0 1
5 0 0 1 1
6 0 0 1 0
7 1 1 0 1
我们制作了一个交叉表,列出了每个品牌的答案总和:
Brand1 Brand2 Brand3 Brand4
Brand1 4 3 0 3
Brand2 3 3 0 2
Brand3 0 0 3 2
Brand4 3 2 2 5
然后从了解每个品牌的所有人中计算出列百分比:
Brand1 Brand2 Brand3 Brand4
Brand1 100% 100% 0% 60%
Brand2 75% 100% 0% 40%
Brand3 0% 0% 100% 40%
Brand4 75% 67% 67% 100%
我尝试使dax模式适应Marco Russo和Alberto Ferrari的调查(https://www.daxpatterns.com/survey/)。它适用于调查中的不同问题,但不适用于相同的问题-在相交处显示空白单元格
答案 0 :(得分:0)
执行此操作可能有更好的方法,但这是一种方法。
我建议您使用超级查询对数据表进行重新处理,以便最终获得如下所示的表:
这是通过从示例数据表开始,取消透视表Brand列,然后使用id列作为链接将表与其自身交叉联接来完成的。 (我将取消透视后的[值]列重命名为[Known_TF],将交叉联接后的新[值]列重命名为[AlsoKnown_TF],这与Brands和AlsoKnownBrands相同)
然后创建两个新的尺寸表,它们都只包含品牌的唯一值。是的,两个相同的表。命名一个“已知”,另一个命名为“ Also_known”。
在Power Bi的关系视图中,在'Known'[Brand]和'Data'[KnownBrand]之间创建1:*关系,并在'Also_Known'[Brand]和'Data'[AlsoKnownBrand]之间创建1:*关系。 ,如:
现在编写两项措施:
Value =
CALCULATE(
SUM('Data'[AlsoKnown_TF]);
'Data'[Known_TF] = 1
)
和:
Value_pct =
DIVIDE(
[Value];
CALCULATE(
SUM('Data'[AlsoKnown_TF]);
ALL('Data'[Known_TF])
);
0
)
在仪表板上,使用矩阵视觉。将“已知” [Brand]作为列,将“ Also_Known” [Brand]作为行,并将度量作为值。您最终会得到这样的内容:
从技术上讲,不必创建两个维度表,可以跳过该部分,也可以跳过解决方案的关系部分。在矩阵中,将“ Data” [KnownBrands]用作列,将“ Data” [AlsoKnownBrands]用作行,您将得到相同的结果。不过,我认为从计算性能的角度来看,最好使用二维表,但是如果我错了,请更正我。