理解Power BI中的变量用法

文摘   职场   2024-07-16 22:40   广东  

小伙伴们,周末愉快!今天小编和大家分享的是一个学习Power BI DAX入门中容易混淆的概念:变量,尽管我们叫它变量(variable),但是,DAX中的变量我个人觉得更像是个常量(constant),千万不要被它的名字所迷惑,一旦变量复制后不能修改,关于这个特性我们在本文后面举例说明,提前有这个概念。

DAX分析表达式中引入变量优势:
1. 表达式的可读性:拆分逻辑,逐步调试,方便数据验证
同样是计算毛利率,下面的第1种写法是定义了4个变量,逻辑清晰,结构层次分明,调试也方便,第二种写法的表达式没有使用变量,看上去不上那么易读,需要仔细思考才能分清楚计算逻辑。

2. 表达式的性能优化:DAX表达式在计算变量的值时,是在其所定义的计算环境计算,由于DAX的惰性计算的技术特点:1. 定义了不用,不会执行,也不占用计算资源;2.一旦在定义的范围内执行了计算,那么这个变量不会再次执行第二次计算,优化性能。上面的TotalCost计算被调用了2次,如果是用度量值则需要计算两次,但是,这个案例使用变量,那么只执行一次计算。

如何定义变量?

1. 定义变量的关键词VAR(大小写不敏感),然后定义返回的结果需要使用关键词RETURN,一般而言,变量会先定义在度量值里面开始位置,然后再被引用(当然变量也可以定义在度量值中间,进行多层嵌套)。既能够存储标量值,也可以是表或者返回表的表达式。下面图1红色框的是返回表的表达式变量,存放的是销售额大于1w的客户;图2的SalesAmt则返回的是标量值(具体的一个值).

   图1

图2

定义一个变量代码块需要使用VAR/RETURN(也可以是小写var/return,大小写并不敏感),VAR 变量名 = XXXX 就是定义了一个变量,但是,VAR出现了必须要RETURN来收尾,这个成双成对出现,否则报错。另外,度量值定义的变量,只能在这个度量值里面使用,没有全局变量说法,而且引用的规则是从下到上,也就是先定义的变量后面能够引用,后定义的变量前面无法引用。

变量为什么是常量?

新手经常会遇到一个变量的理解问题,为什么它叫变量确实一个常量?在本文的开始,小编已经和大家做了分享,这里通过一个案例和大家进行分析。在分析案例之前,大家反复读这句话4遍:变量是在其被定义的时候计算,而不是在其被使用的时候计算,变量只计算一次。(下图是DAX权威指南原版的原文page177)

下面是需要计算每个地区销售额占全国的比例,我们分析下面两个度量值的写法,第1个度量值是正确的写法,分子是当前地区的销售额,分母是整个全国的销售额,取消了地点维度表的筛选,返回的是全部地区的销售,计算没问题。但是,我们看第2个度量值返回的结果全部是100%,原因很简单:因为saleAmt变量只在它被定义时候的上下文计算,不受其被调用时候的计算上下文影响,因此,这里面CALCULATE对变量计算没有影响,所以,返回的结果都是与度量值salesAmount一致(参见图4)

   图1

图2

图3

图4


以上是小编对变量易混淆的点进行的分析,如果觉得对你有帮助,感谢帮忙点赞、转发分享!

  • 免费课程:免费教学视频目录大全(2023年全集)
  • 免费课程绝大部分都是录制视频讲解,针对典型案例进行讲解,大家可以当做是一个字典,需要时候来找一找。免费课程不系统,有些基础内容小编默认你是知道,所以没有详细讲解,需要系统学习推荐看看小编的付费系统课程。
  • 付费课程:Power BI会员课程更新(202310)
  • 付费课程从零基础开始讲解,上手平滑,深入浅出,结合实际案例针对性强。具体可以参考介绍,课程内容持续更新,永久学习!(付费后,小编后面开发推出的所有课程和资源免费获取,无需再付费!)
  • 交流答疑群:本群为付费制(49/一位),仅作为学习交流Power BI/Excel/Tableau/SQL等数据分析、数据处理工具用,有问题可以描述清楚你的问题,附上案例数据求助。除此外,不讨论任何无关事情,违者立刻剔除。啊?不是吧?加群还要付费?嗯,是的,所以,加群后请谨言慎行!群里会不定期分享各类模板、学习书籍等资讯,确认以上条件都能接受再添加小编私信!


PowerBI Home
分享PowerBI、Tableau、Excel(函数公式、数据透视表、VBA)、Python、SQL等技巧。
 最新文章