Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
背景介绍:
在使用 Power BI 的过程中,有些用户可能会遇到希望将度量值放在可视化对象的坐标轴上的问题,但发现无法直接实现。特别是初学者,可能会习惯性地想这样做。在下文中,我将通过一个示例来解释这个问题,并给出一种解决方法。
示例基本背景:在经过一段时间的商品销售后,一组销售代表将面临绩效评估。
示例数据表如下:
在表中有 11 个销售代表,他们的销量从 130 到 200 不等。根据动态的考核标准,需要实时统计达到和未达到考核标准的人数。
初学者的常见错误解决方案(通过创建计算列/度量值):
当考核标准为160时,通过考核标准 的有6 人,不及格的有 5 人。
首先,创建名为 [Result] 的计算列。
然后,创建度量值 [Count people] 以计算通过标准和未通过标准的人数。
Count people = COUNTROWS(‘Table’)
接着,创建堆积柱形图。将 [Result] 放到 X 轴,将 [Count people] 放到 Y 轴。此时可以查看分类为“Pass”和“Fail”的人数统计。
接着,为动态的考核标准创建假设参数。选择新建参数 > 数值范围。
完成以上操作后,会自动生成 [Assessment standard] 参数表,[Assessment standard Value] 度量值以及一个滑块控件切片器。
最后,把 [Result] 计算列修改为根据度量值 [Assessment standard Value] 来动态评估是否达标。
做完这些,理论上就可以使用 [Assessment standard] 的滑块切片器来动态统计达标和不达标的人数了。但是经过测试,我们发现柱状图并未发生变化。原因是:计算列不会受到切片器或筛选器的影响,并且 [Assessment standard Value] 的默认值为 160,因此 [Result] 不会动态获取新值。
计算列的原理是:在数据加载或刷新时进行计算,主要占用内存资源。而度量值会随着计算上下文的变化而实时计算,主要占用 CPU 资源。
既然计算列失败了,那么让我们尝试创建一个相似的度量值,这样可不可以呢?将度量创建为:
然后创建堆积柱形图,这时你会发现度量值 [Assessment standard Measure] 无法放到 X 轴上。
那么我们到底该如何实现想要的效果呢?接下来将介绍一种解决思路。
正确解决方案:
首先,创建名为 [Type] 的新表。
然后,创建度量值。
接着,将 [Type] 列放到堆积柱形图的 X 轴上,将 [Dynamic Measure] 度量值放到 Y 轴上。这时,柱形图中的人数统计值将根据切片器中选择的考核标准值动态变化。
因为图表需要呈现数据之间逻辑关系的含义,所以必须根据一定的标准(维度)对数据进行分组(比如该示例中的“Pass”和“Fail”),然后进行各种聚合操作。这就是为什么度量值不能放到图表的坐标轴上。
总结:
当详细数据较多时,为了保证报表访问的效率,尽量用度量值代替计算列。如果需要动态调整参数并实时获取分析结果,则只能使用度量值进行优化。
这是一个通用的解决思路:
(1) 创建与每种可能的分类类型相对应的过渡表(比如”Type“表);
(2) 使用过渡表的分类标准字段作为图表中的轴字段(分组条件);
(3) 为每个类别构建一个单独的类型([Pass] 和 [Fail]);
(4) 构建【数量选择】度量,通过判断筛选上下文的分类标准,将对应的个体计数指标值作为图表的 Y 轴字段。
有关 DAX 的更多详细信息,您可以参考:Analysis Services 表格模型中的 DAX | Microsoft Learn
有关该示例的详细信息,请查看附件。
作者: Stephen Tao
审核: Kerry & Ula
翻译: Jing Zhang
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.