阅读圣经丨变量(一)修订版

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

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

优化代码

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

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

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的繁琐过程写进去。

定义常量

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

用这个代码说事:

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

这里的VAR HQ是起什么作用?将原本属于变量的客户占比,在相对应的情境下,定义为可以被比较的常量,这样的话可以在FILTER函数的内部筛选整个表进行迭代,[客户占比]与[客户占比]这一项,自己对比排序,一旦符合大于等于的条件,就累计。

当然,VAR是表达式代码,不能说用来定义整个数据模型的变量,这是需要注意的地方。


小伙伴们❤GET了么?

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值