销售需求丨借贷记账法
本期呢,白茶决定分享一下一位星球小伙伴的提问。
(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)
这个是本期的示例文件,将其导入到PowerBI中:
问题是什么?问题是当项目名称作为切片器的时候,选择其中的任意一项,比如说选择“现金”,那么呈现出来的结果需要是包含PS001的两项,就是“现金”与“银行”。
白茶在最开始思考的时候,脑子都蒙了,这是啥算法,是不是原始数据有问题啊,为什么是这个样子的?
后来小伙伴说了,这是典型的借贷记账法。因为一进一出,看起来非常的不方便,需要能对其中的项目进行筛选。原谅白茶,没学过财务算法,第一时间没反应过来。
那么问题弄清楚了, 咱们来思考一下如何处理。
筛选项目,选择其中一项,让同属于一张订单的其他项目也显示,涉及到的知识点有点多:
第一,一定要有一个可以随意筛选的维度,这样可以保证能让可视化插件不完全受切片器的影响。
第二,当选择其中一个项目的时候,需要筛选整个表,让整个表迭代选择相关的订单,取同一订单的其他项目。
第三,取值,利用维度对相关数据进行取值计算。
思路清楚了,开始编写代码。
首先是维度,提取一个维度可随意筛选。
编写代码:
维度表 =
VALUES ( '示例'[项目名称] )
利用VALUES函数的特性,去掉重复值,保留唯一值。这个表不需要与事实表建立联系。
结果如下:
编写如下代码:
借贷记账法 =
VAR HQ =
CALCULATETABLE (
VALUES ( '示例'[订单编号] ),
'示例'[项目名称] = ALLSELECTED ( '维度表'[项目名称] )
)
RETURN
CALCULATE ( SUM ( '示例'[金额] ), HQ )
结果如下:
动态展示一下:
基本上达到小伙伴的需求,解释一下代码含义:
**VALUES(‘示例’[订单编号])**在这里是为了去除重复值,提取一个不重复订单日期的表。
利用CALCULATETABLE表函数,对VALUES进行条件的限定,什么条件呢?
**[项目名称]**符合被ALLSELECTED函数筛选的项目。
通过CALCULATE对[金额]进行汇总以及上下文转换,提取原本行上下文中的[金额]值,转化为符合ALLSELECTED筛选条件的值,进行分类汇总。
最后,输出结果。
小伙伴们,GET了么?
(白茶:Biu~❤)
这里是白茶,一个PowerBI的初学者。
下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。
(这个星球里面有白茶之前所有的案例文件。)
ID:Storysming
数据分析进阶之路,带你深入了解可视化技巧。