美文网首页
Power Pivot中引用度量,变量的注意事项

Power Pivot中引用度量,变量的注意事项

作者: Data_Skill | 来源:发表于2019-06-10 12:04 被阅读0次

    在DAX公式中,变量是我们经常会使用的一个技巧,方便我们对复杂的公式能够显得的更清楚些,但是变量是一个稳定值,也就是变量的计算的值是固定的,对筛选上下文的影响会忽略。

    我们来看一个案例:

    表1

    姓名 学科 成绩
    张三 数学 100
    李四 语文 90
    王五 英语 80

    1. 我们设置一个度量值为总分。

    总分:=sum('表1'[成绩])
    

    2. 引用度量进行计算:

    Calculate([总分],'表1'[姓名]="张三")
    

    返回结果100。

    3. 引用变量进行计算:

    Var zf= sum('表1'[成绩])
    Return Calculate(zf,'表1'[姓名]="张三")
    

    返回结果270。


    总分_var总分_var

    这里就存在一个var赋值后的结果可以忽略筛选条件的影响。

    所以我们很多时候会利用这个特性来进行计算,大部分场合下可以替代earlier和earliest函数的特性。
    我们看一个之前讲解过的累计求和的问题。

    数据源数据源

    1. 添加列写法

    累计数据列写法累计数据列写法

    2. 度量值写法

    累计_度量值:=Calculate(Sum('表2'[金额]),
                           Filter(All('表2'[时间]),
                                      '表2'[时间]<=Max('表2'[时间])
                               )
                         )
    

    3. 万能变量Var写法

    累计_var_大于开始小于结束 = 
    var kssj=Calculate(Min('表2'[时间]),All('表2'[时间]))  //开始时间
    var jssj=Max('表2'[时间]) //结束时间
    return 
    Calculate(Sum([金额]),Filter(All('表2'[时间]),
                                     '表2'[时间]>=kssj && '表2'[时间]<=jssj
                                )
            )
    

    解释:
    因为如果结束值单独只写Min('表2'[时间])的话,我们得到的结果是>=min的最小值和<=max的值只能是一个,也就是当前值。

    我们只需要改变开始时间就可以把DAX自带的几个智能时间函数做一个统一的写法格式。

    例如:

    TotalYtd/ DatesYtd:
    kssj= StartOfYear('表2'[时间])

    TotalQtd/ DatesQtd:
    kssj = StartOfQuarter('表2'[时间])

    TotalMtd/ DatesMtd:
    kssj = StartOfMonth('表2'[时间])

    累计至今:
    开始时间=Calculate(Min('表2'[时间]),All('表2'[时间]))

    我们可以考虑下,如果是星期累计,我们需要使用什么样的方法来实现?

    模拟操作文件下载:http://gofile.me/4KHV7/kXpjlJ2pG

    如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    相关文章

      网友评论

          本文标题:Power Pivot中引用度量,变量的注意事项

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