阅读圣经丨变量(二)

学海无涯啊,咱们来继续聊聊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丨白茶