前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >阅读圣经丨变量(一)

阅读圣经丨变量(一)

原创
作者头像
PowerBI丨白茶
修改2021-09-01 14:40:28
2660
修改2021-09-01 14:40:28
举报
文章被收录于专栏:PowerBI

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

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

优化代码

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

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

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

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

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

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

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

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

定义常量

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

用这个代码说事:

代码语言:txt
复制
VAR累计求和 =
VAR HQ = [客户占比]
RETURN
    CALCULATE ( [客户占比], FILTER ( ALL ( '示例' ), [客户占比] >= HQ ) )

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

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


小伙伴们❤GET了么?

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

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

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档