表变量是什么_DAX学习:使用VAR定义变量

前面介绍如何使用DAX生成日期表的时候,使用了VAR,有人留言问这个VAR怎么理解,那么这篇文章就来介绍VAR以及它的用法。

VAR是VARIABLE的缩写,意思为变量,任何一个编程语言中,变量都是一个非常重要的基础概念,DAX当然也是一种语言,也有变量这个概念。如果以前学过编程,对这个应该很熟悉;没学过也没有关系,看了本文你就理解了。

我们人都有记忆能力,电脑也有记忆能力,并且比人的记忆能力更强大更稳定,那么如何利用电脑的记忆能力呢,就是利用变量。

变量就是可以改变的量,比如把当天日期定义为一个变量,那么通过这个变量电脑就记住了今天是4月29号,到了明天就变成4月30号了。

通过变量可以随心所欲的控制电脑的记忆,需要了就用,用完了可随时丢开,再想使用了再拿过来。

与变量想对应的就是常量,比如新中国成立日期是1949年10月1日,就是一个常量,电脑中定义以后,无论时光怎么流逝,电脑中这个记忆都不会改变。

在DAX中,就是通过VAR来控制电脑的记忆的。

VAR语法

VAR的语法规范很简单,就是把一个表达式定义为一个名称,

VAR 变量名=表达式

其中变量名不能和模型中现有的表名、字段名相同,也不能使用数字作为第一个字符,不能使用空格等,这个不用刻意记,如果提示变量名不符合规范,重新命名一下就是了。

定义变量是为了使用,是要返回结果的,这个操作由RETURN来完成,具体使用方式,看下面的示例。

VAR使用示例

假如有一个产品销售数据,现在计算每种产品的同比增长率,如果不使用VAR,我们可能是这样来计算的,

1,新建度量值,

[Sales]=SUM(销售表[销售额])

2,计算去年销售额,

[Saleslastyear]=CALCULATE([Sales],SAMEPERIODLASTYEAR(日期表[日期])

3,计算同比增长率

[YoY%]=DIVIDE([Sales]-[Saleslastyear],[Saleslastyear])

而使用VAR,新建一个度量值就可以搞定:

[YoY%]=VAR Sales=SUM(销售表[销售额])VAR Saleslastyear=
CALCULATE(SUM(销售表[销售额]),SAMEPERIODLASTYEAR(日期表[日期])RETURN
DIVIDE(Sales-Saleslastyear,Saleslastyear)

这个度量值先定义一个变量“Sales”,然后再定义第二个变量的时候,两个变量定义完成后,返回两个变量相除的结果。

如果把这个度量值放入到上下文中,比如当前上下文为产品甲,电脑中会先记住产品甲的“Sales”,然后记住产品甲的“Saleslastyear”,最后通过RETURN后面的表达式,调用上面的记忆,执行运算,得到产品甲的同比增长率。

通过这个例子可以看出,VAR可以简化度量值的书写,并便于理解。并且它完成运算以后结果就被电脑记忆下来,需要时可以随时调用,而无需重新运算,大大提升了DAX的运算性能。

它还有一个小功能就是替代EARLIER函数。

替代EARLIER函数

在之前介绍EARLIER函数的时候,曾举了一个计算累计销量的例子,

84d213928a40c838928867cce24d9a05.png

用的是下面的DAX编写的新建列:

SUMX (FILTER('订单表',[序号]<=EARLIER([序号])&&
[产品名称]=EARLIER([产品名称])),[销售数量])

现在用VAR可以这样写:

VAR Index=[序号]VAR ProductID=[产品名称]RETURN
CALCULATE(SUM([销售数量]),filter('订单表',
[序号]<=Index&&[产品名称]=ProductID))

可以返回同样的结果,比EARLIER更易于理解。

上一篇文章中生成日期表的DAX,其中有两种方式也是综合使用VAR的例子,再仔细看一遍也可以加深对VAR的理解。

公众号:PowerBI星球

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567541.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机连接电脑 不显示android phone

百度各种办法&#xff0c;下载各种驱动。结果&#xff0c;结果&#xff1a; 竟然是在设备管理器中-右击-显示隐藏的设备类型。 androidd phone显示啦。。 花费了一晚上的时间。。。。

苹果隐藏app_iOS 14的隐藏功能盘点:不知道等于白更新!

iOS 14的更新已经过去一阵子了,相信大家都被改变桌面布局、修改充电提示音等五花八门的功能吸引了。但小黑今天要和大家说一说,那些iOS 14中隐藏的功能,这些功能并没有在更新中提到,但个个都好用!声音识别功能日常生活中,我们对每种不同声音的识别算是基本操作了,但对于手机而言…

unittest-常见问题解决方案记录

1、没有报错&#xff0c;但显示run 0 tests 解决方案&#xff1a;查看测试用例是否以test开头 2、命名为test-01,导包错误 解决方案&#xff1a;python文件夹命名不能使用中划线&#xff0c;修改中划线为下划线&#xff0c;即可导包正确。 3、代码运行成功&#xff0c;显示…

svn冲突怎么解决_管理者怎么处理员工冲突?解决下属冲突的6个方法

公司、部门、项目组&#xff0c;多么优秀的团队都无法避免内部冲突&#xff0c;职场冲突是一种常见的职场现象&#xff0c;这种冲突不仅会给团队和个人带来的重大的影响。那么团队出现了冲突&#xff0c;是不是就不会继续向前了呢&#xff1f;答案是否定的&#xff0c;只要管理…

modbus tcp主站和从站_【智】S7200PLC与台达变频器MODBUS轮询实时读取详解

大家好&#xff0c;我是微控小智&#xff0c;今天又跟大家见面了。学习不是一蹴而就&#xff0c;需要坚持&#xff0c;做技术亦是如此&#xff0c;厚积才能博发。上次分享的S7-200PLC与台达VFD_M变频器Modbus通讯案例程序&#xff0c;是采用SM0.5时钟脉冲接通MODBUS指令&#x…

华为gsm模块_出货量全球第一,华为阿里腾讯都是其客户,上海移远通信牛在哪?...

近些年来&#xff0c;我们明显感受到了科技进步带来的便捷&#xff0c;微信支付、支付宝付款早已经成为绝大多数人的支付方式&#xff1b;交水费、电费等再也不用去缴费大厅排队&#xff0c;手机就能一键实现&#xff1b;出门也不怕迷路了&#xff0c;滴滴出行、手机地图等让你…

判别两棵树是否相等 设计算法_一文看懂生成对抗网络 - GANs?(附:10种典型算法+13种应用)...

生成对抗网络 – GANs 是最近2年很热门的一种无监督算法&#xff0c;他能生成出非常逼真的照片&#xff0c;图像甚至视频。我们手机里的照片处理软件中就会使用到它。本文将详细介绍生成对抗网络 – GANs 的设计初衷、基本原理、10种典型算法和13种实际应用。GANs的设计初衷一句…

sql语句 int(11)含义误区

使用sql中 int(11)存储手机号错误&#xff01;&#xff01;&#xff01;&#xff01; 这些类型&#xff0c;是定长的&#xff0c;其容量是不会随着后面的数字而变化的&#xff0c;其值的范围是确定的。 比如int(11)和int(8)&#xff0c;都是一样的占4字节。tinyint(1)和tinyin…

python保存图片到指定路径_使用Python将不同大小照片制作为GIF动画2

导读&#xff1a;本文介绍如何使用Python将不同大小的照片制作为GIF动画&#xff0c;文末附源代码。阅读完本文&#xff0c;你将学会使用Python编写程序&#xff0c;将不同大小的照片制作为心仪的GIF动画。在上一篇文章里&#xff0c;介绍了使用Python和imageio&#xff0c;不改…

GitHub访问慢-FastGithub下载及使用

很多需要用到的脚本及软件会先发布在GitHub上&#xff0c;所以经常需要访问GitHub&#xff0c;但是每次都会卡在跳转到GitHub的步骤&#xff0c;就是还没开始就可以结束了。 之前尝试过手动修改host文件来解决网站的访问问题 以及更换网络但还是有时候无法如愿的访问GitHub Fa…

android r 编译找不到头文件_「投稿」iOS逆向——砸壳与反编译

作者&#xff1a;疯狂的蛋神近来对iOS逆向十分感兴趣&#xff0c;就在业余时间里自己在上网找了各种资料学习&#xff0c;发现许多资料对于一些细节描述的不够详细&#xff0c;所以也踩了很多坑&#xff0c;我也将自己踩的一些坑总结出来&#xff0c;希望对大家有所帮助。注&am…

python-类思想-实现简单增删查改

class Person:def __init__(self,name, phone):self.UserInfo {name: name,phone: phone}class Opt:def __init__(self):self.person []def add_person(self, user_info):print(增加)self.person.append(user_info)def delete_person(self):print(删除)self.person.pop()def …

vb microsoft.xmlhttp 获取所有超链接_编写我的第一个VB程序

若不是因为新冠肺炎疫情影响&#xff0c;下面的内容应该是在学校的课堂上给学生们讲解的&#xff0c;如今采用这种方法&#xff0c;也是迫不得已。软件的使用在中学信息学科课堂中&#xff0c;往往普遍存在于小学和初中课堂&#xff0c;而在高中课堂上演示软件操作&#xff0c;…

C++ 偏微分数值计算库_Windows下RTCGAToolbox库下载TCPA数据(RPPA)学习笔记

1. RTCGAToolbox库加载library(RTCGAToolbox)2. 下载TCPA数据2.1 下载代码# Get the last run dates lastRunDate <- getFirehoseRunningDates()[1]# get RPPA data and clinical data for LGG lgg.data <- getFirehoseData(dataset "LGG",gistic2_Date getF…

MySQL安装之没有配置向导

解决方案&#xff1a; <1>安装MySQL服务 首先我们先进入mysql的安装目录下的bin目录 之后打开DOS命令窗口&#xff0c;进入该目录下&#xff08;一定要进入该目录&#xff0c;否则操作错误&#xff09;&#xff0c;然后执行mysqld --install命令&#xff0c;如下&…

unet图像分割_UNet++解读 + 它是如何对UNet改进 + 作者的研究态度和方式

UNet论文: 地址UNet论文翻译:地址UNet源代码: 地址UNet作者在知乎上进行了解读,里面还有视频的讲解,深入人心.里面有一句话令我印象深刻,我总结下: 很多论文给出了他们建议的网络结构&#xff0c;其中包括非常多的细节&#xff0c;比如用什么卷积&#xff0c;用几层&#xff0c…

python中0、1、True、False、if条件

总结&#xff1a; 无论是python还是C&#xff0c;true1&#xff0c;false0 非零就是true&#xff0c;此说法只应用在判断条件中 1、python中0、1、True、False >>> print(True 1) >>> print(True 2) >>> print(False 0) >>> print(…

labview my_fpga开发套件下载_LabVIEW面向对象的ActorFramework(1)

本系列文章主要阐述以下几个问题&#xff1a;&#xff08;1&#xff09;什么是面向对象编程&#xff1f;&#xff08;2&#xff09;为什么要学习面向编程&#xff1f;&#xff08;3&#xff09;LabVIEW面向编程学习为什么有点难&#xff1f;&#xff08;4&#xff09;LabVIEW面…

Python-类与文件读取结合

目录 作业1&#xff1a; 知识点1&#xff1a;eval使用 知识点1&#xff1a;类对象数组定义 知识点2&#xff1a;文件读取 知识点3&#xff1a;内容解包 知识点4&#xff1a;列表排序 作业2&#xff1a; 知识点1&#xff1a;类继承后 初始化管理 知识点2&#xff1a;文件…

乌龟量化估值怎么看_推荐几个查询指数估值的网址

首先说一下&#xff0c;因为每一家网站的数据来源不同&#xff0c;因此在不同的网站上&#xff0c;相同指数的估值数据未必相同。但这不重要&#xff0c;只要大方向没错&#xff0c;对指数所处的估值区域有一个大致的概念&#xff0c;保持“模糊的正确”即可。以下推荐几个可以…