阅读圣经丨变量(一)

file
最近白茶有点私事,停更了许久。忙完了,可以静心的学习DAX。继续研究圣经。最开始的时候,偶尔曾经看到一篇文章就是专门介绍VAR函数的,但是当时看的懵懵懂懂。如今再看,添加了很多的明悟。

file
在白茶的理解,VAR函数最主要的作用有两点:优化代码和定义常量。

优化代码

咱来举个例子看看,白茶之前有一期曾经专门介绍过《动态坐标》,当时就用了很多的VAR写法。
file

这个就是当时使用的一组代码,用它说事:

IF写法动态坐标 =
VAR BC3 =
    TREATAS ( VALUES ( '名称与城市维度'[具体内容] ), '产品表'[产品名称] )
VAR BC4 =
    TREATAS ( VALUES ( '名称与城市维度'[具体内容] ), '门店表'[城市] )
RETURN
    IF (
        SELECTEDVALUE ( '名称与城市维度'[名称与城市维度] ) = "商品名称",
        CALCULATE ( [销售金额], BC3 ),
        IF (
            SELECTEDVALUE ( '名称与城市维度'[名称与城市维度] ) = "城市",
            CALCULATE ( [销售金额], BC4 ),
            BLANK ()
        )
    )

这段代码看起来非常的冗长,但是实际上这是已经优化后的结果了。接下来白茶修改一下,不论这个代码是否可行,就是单纯的不使用VAR,那么它的写法就是下面这样:

IF写法动态坐标 =
IF (
    SELECTEDVALUE ( '名称与城市维度'[名称与城市维度] ) = "商品名称",
    CALCULATE ( [销售金额], TREATAS ( VALUES ( '名称与城市维度'[具体内容] ), '产品表'[产品名称] ) ),
    IF (
        SELECTEDVALUE ( '名称与城市维度'[名称与城市维度] ) = "城市",
        CALCULATE ( [销售金额], TREATAS ( VALUES ( '名称与城市维度'[具体内容] ), '门店表'[城市] ) ),
        BLANK ()
    )
)

姑且不论能否得出正确的结果,就是这段代码本身会变得不好理解。第一种写法,我们能清楚的知道定义的两个VAR分别代表着什么。但是一但拆开放入到CALCULATE中,会显得特别懵,而且很容易出现写法上的错误。

就好像我们小时候解答应用题:

已经求出来∠A=30°了,那么后续所有的操作就都可以使用∠A直接带入,而不用将之前求∠A的繁琐过程写进去。
file

定义常量

还是举个例子,之前的《帕累托分析法的BUG》曾经使用过的一组累计代码。
file

用这个代码说事:

VAR累计求和 =
VAR HQ = [客户占比]
RETURN
    CALCULATE ( [客户占比], FILTER ( ALL ( '示例' ), [客户占比] >= HQ ) )

这里的VAR HQ是起什么作用?将原本属于变量的客户占比,在相对应的情境下,定义为可以被比较的常量,这样的话可以在FILTER函数的内部筛选整个表进行迭代,[客户占比]与[客户占比]这一项,自己对比排序,一旦符合大于等于的条件,就累计。
file
当然,VAR是表达式代码,不能说用来定义整个数据模型的变量,这是需要注意的地方。

小伙伴们❤GET了么?

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

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

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

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

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