阅读圣经丨变量(二)
学海无涯啊,咱们来继续聊聊VAR变量的问题。
(写在前面的话,感谢群里各位大佬的提点,受益匪浅。)
白茶打算通过一个例题来讨论本次的内容。
这是群里面的讨论文件,数据不是特别的复杂,喜欢动手的小伙伴可以按照图片自己搞一份。(@飞天篮球猪大佬当时出的题目是:求出第一笔成交日期,以及第一笔成交时的花费金额。)
将数据导入PowerBI中,如下图:
按照白茶的理解,第一笔产生销售额的日期就是第一笔成交日;那么该日期之前的所有花费就是累计花费。
编写如下代码,求出成交日期:
第一笔成交日期 =
CALCULATE ( MIN ( 'Sheet1'[日期] ), FILTER ( 'Sheet1', 'Sheet1'[销售额] <> 0 ) )
结果如图:
这里可以调整一下度量值的格式。
说一下,之前讲《聚合与迭代》的时候曾经提到过MIN这个函数可以对数值、文本类生效,本次就用它。(如果求最后日期可以使用MAX。)
利用MIN选取最小值,利用FILTER筛选出没有销售额的日期,最后使用CALCULATE进行封装。第一步结束。
接下来的内容回归本次的题目,变量。在求累计消费的时候,白茶用的是分开写的办法,代码如下:
分开写的 =
CALCULATE ( SUM ( Sheet1[花费] ), FILTER ( Sheet1, 'Sheet1'[日期] <= [第一笔成交日期] ) )
结果如图:
会发现计算出来的结果很明显是不对的啊?咋回事呢?别急,换一种VAR的写法。
VAR写法 =
VAR CQ = [第一笔成交日期]
RETURN
CALCULATE ( SUM ( Sheet1[花费] ), FILTER ( 'Sheet1', 'Sheet1'[日期] <= CQ ) )
结果如下图:
可以看得出来在矩阵中结果几乎是没啥区别的,但是右边的表格显示的结果却完全不一样,这是为啥呢?
这个其实就是VAR的作用。
第一种写法中,没有使用VAR,这种情况下的[第一笔日期]是一个变量,首先它已经将没有销售额的日期筛选出去了,同时选取最小日期,它是不固定的。在这种写法中,[日期]这一列与后面的条件取交集,只有四个选项符合要求,其他的返回结果是空,所以最后得出来的结果就是6.2+11.2=17.4和9.2+13.2=22.4。
而第二种写法中,VAR将[第一日期]转化为了一个固定的值,类似于1.2.3这种的,那么[日期]这一列的筛选条件是<=10.6和<=10.9,那么得出来的结果自然而然就是我们所需要的累计花费了。
这就是VAR作用的体现,将变量转化为常量,起固定作用。
(小彩蛋:中国式报表这个问题还可以深化,每笔成交日,每笔成交花费,这些操作该怎样进行呢?)
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球[PowerBI丨需求圈])
这里是白茶,一个PowerBI的初学者。
下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。
请在PC端查看,有部分图片无法在移动端显示。
PowerBI丨白茶
自由转载-非商用-非衍生-保持署名(创意共享3.0许可证)