美文网首页BI学习笔记
阅读圣经丨变量(一)修订版

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

作者: Fabric丨白茶 | 来源:发表于2020-06-07 21:39 被阅读0次

    最近白茶有点私事,停更了许久。忙完了,可以静心的学习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的初学者。

    相关文章

      网友评论

        本文标题:阅读圣经丨变量(一)修订版

        本文链接:https://www.haomeiwen.com/subject/cophtktx.html