销售需求丨借贷记账法

本期呢,白茶决定分享一下一位星球小伙伴的提问。

(示例文件会放到知识星球中,小伙伴们可以搜索“PowerBI丨需求圈”,文章结尾处会有二维码。)

这个是本期的示例文件,将其导入到PowerBI中:

问题是什么?问题是当项目名称作为切片器的时候,选择其中的任意一项,比如说选择“现金”,那么呈现出来的结果需要是包含PS001的两项,就是“现金”与“银行”。

白茶在最开始思考的时候,脑子都蒙了,这是啥算法,是不是原始数据有问题啊,为什么是这个样子的?

后来小伙伴说了,这是典型的借贷记账法。因为一进一出,看起来非常的不方便,需要能对其中的项目进行筛选。原谅白茶,没学过财务算法,第一时间没反应过来。

那么问题弄清楚了, 咱们来思考一下如何处理。

筛选项目,选择其中一项,让同属于一张订单的其他项目也显示,涉及到的知识点有点多:

第一,一定要有一个可以随意筛选的维度,这样可以保证能让可视化插件不完全受切片器的影响。

第二,当选择其中一个项目的时候,需要筛选整个表,让整个表迭代选择相关的订单,取同一订单的其他项目。

第三,取值,利用维度对相关数据进行取值计算。

思路清楚了,开始编写代码。

首先是维度,提取一个维度可随意筛选。

编写代码:

维度表 = 
VALUES ( '示例'[项目名称] )

利用VALUES函数的特性,去掉重复值,保留唯一值。这个表不需要与事实表建立联系。

结果如下:

编写如下代码:

借贷记账法 = 
VAR HQ =
    CALCULATETABLE (
        VALUES ( '示例'[订单编号] ),
        '示例'[项目名称] = ALLSELECTED ( '维度表'[项目名称] )
    )
RETURN
    CALCULATE ( SUM ( '示例'[金额] ), HQ )

结果如下:

动态展示一下:

基本上达到小伙伴的需求,解释一下代码含义:

VALUES('示例'[订单编号])在这里是为了去除重复值,提取一个不重复订单日期的表。

利用CALCULATETABLE表函数,对VALUES进行条件的限定,什么条件呢?

[项目名称]符合被ALLSELECTED函数筛选的项目。

通过CALCULATE对[金额]进行汇总以及上下文转换,提取原本行上下文中的[金额]值,转化为符合ALLSELECTED筛选条件的值,进行分类汇总。

最后,输出结果。
(白茶:Biu~❤)

小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球[PowerBI丨需求圈])

这里是白茶,一个PowerBI的初学者。

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶