前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerBI公式-VAR

PowerBI公式-VAR

作者头像
公众号PowerBI大师
发布2019-08-07 10:58:55
3.6K0
发布2019-08-07 10:58:55
举报

录音机

VAR是单词Variables的缩写,即变量。Rob Collie把它比作录音机,这个比喻非常形象,录制好某一段落,再使用,而且是像复读机一样可以重复多次的播放出来。推荐学习这个函数的原因是它简单好学,在应用中有四大突出好处,更简洁的书写,替代Earlier,避免上下文的干扰,运算性能。本文将一一详细讲解,当你仔细读完这篇文章,很有可能对这个函数欲罢不能。

更简洁的书写

就以DAX官网的例子来讲解说明,求年比年环比增长率,我们知道公式逻辑是(当年销售量-上年同期销售量)/上年同期销售量。如果都放在一个公式里面的话,你一般会这样写:

可是这样不可避免的问题就是要重复的写同一类函数,而且也不便于阅读。用VAR可以很好的解决这个问题:

VAR的工作原理是它先录制一个变量,再配合使用Return把录制好的内容拿出来反复多次利用。这个例子中有两个小细节,注意第二个VAR引用了上一个VAR定义的Sales,也就是说VAR可以引用之前定义好的VAR;第二个细节是在PowerBI公式栏中输入的时候,智能提示会特别提醒你使用已经定义好的VAR,极大地方便了你的书写。

所以,VAR的第一个好处就是使你的书写更整洁,尤其在公式很臃肿的时候。

替代Earlier

第二大好处是大多数的情况它可以替代前面学习的Earlier公式,比如我们在学习Earlier时曾经用了一个求顺序计数的例子:

用Earlier来写第几次购买的公式:

现在学会了VAR,可以先把Earlier引用的列用VAR来定义:

两个公式输出的结果是一样的。这里的VAR工作过程是它先识别了行上下文(即当前行)中的顾客名字和索引,并记录下来结果,然后在Return的公式中引用,达到了与Earlier相同的效果。其实,在工作中我个人还是习惯于使用Earlier,不过有很多人对Earlier公式学习非常困惑,对于这部分人群,掌握VAR不失为一个很好的替换方案。

避免上下文的干扰

在理解上下文的学习中我们曾对比过下图中的两个公式,Filter中使用度量值和直接写公式的效果有可能是不同的,因为会涉及到上下文的转换,这个概念在课程中也多次强调,行上下文不会自动转换成筛选上下文,如果需要转换,须使用Calculate,并且要注意度量值是外套了隐藏的Calculate。

(如果对这两个公式有疑惑,请参看之前发过的文章理解上下文)在这个公式中,如果使用VAR先定义好SUM,再套用到Filter当中:

结果会与使用SUM的效果是一样的。

这个原理是VAR先录制好了当前上下文的SUM('销售数据表'[数量])的输出结果,再应用到Return后面的Filter公式中。也就是说VAR不会受到Filter创造的行上下文影响,而是充分发挥了录音机的效果,前面录制了什么,后面就原封不动的放出来。

如果你在前面学习中对上下文转换和隐藏Calculate的概念有点烦恼,使用VAR会感到清净了很多。

再来看个例子,我们想要计算超过总销售量5%的门店的销售量是多少,如果不用VAR,你需要这样写:

蓝色部分ALL函数的意思是排除Filter创造的行上下文影响来求得所有门店的销售量。也就是说当你在写蓝色公式部分的时候要考虑Filter上下文的影响,排除干扰后再求得想要的销售量。即使我经常写DAX公式,在思考这种逻辑时也要小心翼翼,怕掉到上下文的坑里。如果用VAR来写呢?看一下下面的公式:

明显逻辑更清楚整洁,这里的Five是在Filter外计算的,先求得当前上下文的5%销售量是多少并存储下来,再在Filter中拿出来使用,很好地避免了Filter上下文的干扰。

运算性能

关于运算性能的表现,这与为什么要用录音机的道理是一样的。录制好的东西可以拿出来反复播放,省去了你重复的工作。在DAX公式工作的过程中,VAR定义的运算会执行一次,Return后面即使多次引用,它会直接获取前面运算的存储结果,而不会重新执行计算。这相当于大大优化了DAX公式的运算性能,更快的完成工作。

基于上面的四大好处,没有用过VAR的你,有点心动了吧。虽然没有VAR我们一样可以完成工作,但这个函数我极力地推荐大家使用,只为更好。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI大师 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

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