初识DAXDAX是什么能干什么怎么用.docx
- 文档编号:24573635
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:15
- 大小:1.45MB
初识DAXDAX是什么能干什么怎么用.docx
《初识DAXDAX是什么能干什么怎么用.docx》由会员分享,可在线阅读,更多相关《初识DAXDAX是什么能干什么怎么用.docx(15页珍藏版)》请在冰豆网上搜索。
初识DAXDAX是什么能干什么怎么用
一、前言与经验分享
在这个专栏里你将了解到DAX是什么,它有什么功能,并学习和掌握DAX的原理!
从这篇文章开始,我将由浅入深、循序渐进的讲解DAX的知识和原理。
我所讲解的这些DAX知识适用于没有掌握DAX原理的所有人,无论你是对DAX一无所知的小白,还是对DAX一知半解且经常得到意外结果的不知所措者,我相信只要你们用心学习了,那么肯定能有所收获,因为这些都是我的经验啊,你是站在我的肩膀上的人啊!
,下面介绍的是我学习DAX时的学习历程,虽然字数有点多,但这都是我的经验之谈啊,我相信你看完后绝对能有所收获,至少至少也能引以为戒吧,当然,如果你实在不想看的话也是可以跳过这一部分直接阅读后文的。
我之前从来没有过将自己的学习经验和学习心得分享出来的想法,促使我产生这一想法并将其变现的原因是因为我学习DAX时那不堪回首的学习经历(╯°□°)╯︵┻━┻。
DAX看起来和Excel的公式语言很像,一开始我也和一般人一样的以为DAX毕竟不是像C、JAVE那样的编程语言,应该比较简单吧【事实上DAX相比于编程语言来说是比较简单的,只要你理解它】。
怀揣着这样的想法,我开始在网上寻找学习资料,在知乎看大神的文章,在B站看UP主分享的学习视频,还在淘宝上买了本学习教材。
然后你可能会觉得我只要不是个蠢材,那么看了这么多的学习资料和学习视频后,对DAX的理解和掌握虽不至于登峰造极,但起码能登堂入室吧。
如果真的像你们想的那样的话,你们现在就不会看到这篇文章了。
事实上,DAX和Excel的公式语言这些妖娆贱货是不一样的,DAX非常高冷、高傲,根本不会理睬那些不理解它的人。
你若抱着学习Excel公式的心态去学习,那只能是碰的头破血流也弄不懂它。
因为DAX不像其他语言一样死板,它还要考虑计值环境,就像中文的一词多义一样,同一个DAX表达式在不同的计值环境里可能会有不同的结果,所以要想理解计算逻辑就必须先掌握理论。
就好像“公主”、“小姐”等词汇在古代是尊称,但如果你在现在随意称呼别人为公主或小姐,神态再轻浮一点,那么你肯定会被揍!
所以只有先掌握DAX的原理,你才能驾驭它,需知:
“技巧无穷尽,理论统御之”,用这句话来描述DAX是非常适合的。
到现在,我想你也可以猜出造成我那坎坷的学习经历的元凶是什么了,对,跟你们想的一样,那就是DAX的原理,或者说是网上那些害人不浅的学习资料,也包括了淘宝上无良商家卖的教材!
这些学习资料基本上都没有讲解到DAX的原理,连筛选上下文和行上下文都没有讲清楚,更别说数据沿袭、扩展表、影子筛选上下文这些高级原理了。
有可能你们会说:
”现在谁不知道网上的资源良莠不齐啊,你自己没有眼光怪得了谁“,如果你真的是这样想的那你就大错特错了,我在B站里看的学习视频是播放量和评论数量最多的,在淘宝上买的教材也是销量最高和评论无差评的,我所找的学习资料都有无数的好评!
!
!
当然,这些学习资料也不是一无用处,他们只是不告诉你DAX的原理而已,所有的DAX函数都有讲解,起码你能学习到一些函数的用法,但也仅限单个函数的运用,一旦你想进行函数的嵌套,那么恭喜你,你极有可能得到奇怪的结果,而你却不知道为什么,然后你越是去思考,越是去总结经验,那么你离走火入魔就不远了。
因为学习DAX要先学习其原理,在不懂原理的时候强上函数,那只会适得其反。
如果你学习DAX的次序颠倒了,那么你大难已在旦夕之间了!
正因为如此,所以我萌生了将自己的学习经验分享出来的想法,只希望能够帮助到更多的人,让你们不要被其他看似牛逼的学习资料耽误了。
只要有好的教材,我相信所有人都能够学好DAX,因为你弄懂它的原理之后,它就对你千依百顺了。
然后,因为这是我第一次写技术博客,文笔可能不太好,但我会尽自己的努力去表达清楚。
我只希望能用最朴素的语言来准确表达出我想表达的东西,哪怕是啰嗦了一点,也希望大家能给予我多一点的包容和理解吧。
否则的话,哪怕我自己理解得再透彻,如果我不能很好的表述出来,那么也是白搭,跟其他看似牛逼的学习资料没两样。
因为我不能让你弄懂DAX,那么我所分享出来的东西就是没用的,废话不多说了,下面开始介绍DAX。
二、DAX是什么?
这是微软官方的描述:
数据分析表达式(DAX)是在AnalysisServices、PowerBIDesktop以及Excel中的PowerPivot使用的公式表达式语言。
DAX公式包括函数、运算符和值,用于对表格数据模型中相关表和列中的数据执行高级计算和查询。
在这里,我不去深究DAX的历史和技术细节,如果你想详细了解DAX的起源和来历,那么你可以去官网里查看,同时官方文档也有所有函数的说明。
简单来说,DAX就是能在AnalysisServices、PowerBIDesktop以及PowerPivot里使用的专门用于数据分析的一种数据库语言,没错就是和SQL一样的数据库语言,不得不说SQL是非常强大的,但再强大的东西也有它的适用领域,SQL擅长的是数据的存储和检索,虽然也能用于数据分析,但需要编写的语句会非常复杂且效率也不太高,而DAX则因此应运而生。
其中PowerPivot是Excel的一款插件,从Excel2013开始就已经自带了这一款插件,只需要在COM加载项里勾选就可以了,如下图:
从上图也可以看到,Excel的插件有很多,有PowerQuery、PowerPivot、PowerView、PowerMap等等,虽然这些插件很有用,但是微软可能觉得这些插件让Excel过于臃肿了,因此就将这些Power系列插件集中整合在一起,孵化出了PowerBI。
以上就是DAX和能运行它的软件的一些介绍,过多的介绍来龙去脉也没意思,我觉得只要知道DAX有什么用,要怎么使用就足够了。
三、DAX能干什么?
首先,DAX非常强大,它拥有完备的函数体系,能满足你对数据的任何处理需求,只有你想不到,没有它做不到。
是的,DAX就是这么强大,只要掌握了DAX,哪怕你没有IT背景,没有接触过编程,它都能够让你借助Excel这样容易上手的工具去处理几百万、上千万行的数据。
我相信很多使用过Excel的人都知道,Excel能处理的最大数据量是一百万行,而且在Excel里数据量越多,运行效率就会越慢,而当数据量超过一百万行时,Excel就处理不了了。
这对于只会Excel的人来说,当数据量超过Excel的能力范围后,他就无能为力了。
而此时,你只需要把PowerPivot插件加载上,并运用DAX,那么你能处理的数据量可以说是呈指数上升了,而且DAX的运算速度是非常快的,相信我,学习DAX绝对让你物超所值!
哪怕说了这么多,你可能也会觉得这都是虚的,能不能让我眼见为实?
这当然可以,相信大多数人都用过Excel的数据透视表吧,在数据透视表里,对值字段的汇总方式和显示方式都有很多的定义,例如:
求和、求平均、最大最小值、父级百分比、行百分比、列百分比等等,除此之外,在数据透视表里还有计算项和计算字段是很常用的,而这些功能通通都可以使用DAX重写,你可以通过DAX来自定义规则,从而达到你想要的数据处理效果,像求某个类别下的前几名数据、同比、环比、累计值、分组计值、笛卡尔积、筛选聚合等等需求,对DAX来说都是轻而易举。
四、DAX怎么用?
4.1能使用DAX的地方
其实在DAX的介绍里就已经指明了可以使用DAX的工具,那就是AnalysisServices、PowerBIDesktop以及Excel中的PowerPivot。
【由于Excel和PowerBI中都内置了PowerQuery,很多人都犯过在PowerQuery里写DAX的错误,因此郑重提醒:
DAX不适用于PowerQuery!
,PowerQuery使用的是M语言,在PowerQuery中任何你看起来可以编写公式的地方都不能使用DAX!
!
】
具体点来说,能使用DAX的地方有三个(AnalysisServices没使用过,不予介绍):
1、PowerPivot
在PowerPivot界面(在Excel界面下的PowerPivot选项卡下最左边绿色的数据模型管理选项进入),数据表下方的空白单元格处、数据表最后一列显示为添加列的地方,以及Excel界面PowerPivot选项卡下的度量值选项都可以编写DAX,如下图所示:
在PowerPivot界面下编写DAX表达式的规则为:
表达式的名称:
=表达式,需要注意的是等号前面有个冒号:
":
=”,千万别漏了冒号!
,这规则仅在PowerPivot界面里适用,其他地方可以省略冒号,当然不省略也不会错。
2、PowerBI
在主页、表工具和度量工具选项卡等等地方都有新建列、新建度量值、新建表选项,这些选项都是可以编写DAX的,如下图:
3、Excel
是的没错,Excel也是可以编写DAX的,不仅DAX,你还可以在Excel里编写SQL从而实现跨表和跨工作簿引用。
在这里我仅介绍编写DAX的方式,想要知道哪里可以编写SQL的话可以去网上搜一下,有很多博客都有相关资料。
想要在Excel里编写DAX,需要通过一种链接回表的方式进行,首先将数据导入PowerPivot(导入数据有很多方式,请自行搜索,这里不过多介绍),也就是将数据添加到数据模型,然后点击数据选项卡下的现有连接,然后选择表格,然后选择查询下面的任意一个表打开,选择显示方式为表格即可导入与数据模型连接的数据.
导入表格数据后,在表格区域里单击右键,选择表格,然后选择编辑DAX,然后在打开的编辑DAX窗口选择命令类型为DAX即可,如下图:
4.2DAX的运算符
DAX的运算符跟Excel公式的运算符基本一致,具体如下表:
运算符
含义
+
加
-
减
*
乘
/
除
^
幂
=
等于
>
大于
<
小于
>=
大于等于
<=
小于等于
<>
不等于
&&
逻辑与
||
逻辑或
not
逻辑非
&
字符串连接
in
包含
notin
不包含
4.3DAX的数据类型
一般来说,我们不需要特别关心数据类型,因为DAX在计算的过程中会自动将数据类型转换成可计算的类型,例如字符型的数字相加减会返回数值型的值等等,只要你进行计算的数据类型可以互相转换,那么DAX的计算引擎都会自动转换。
DAX的数据类型如下表所示,其中变体类型一般出现在IF函数中的真值分支与假值分支的计算结果的数据类型不同的情况下。
数据类型
含义
Integer
整数
Float
十进制数
String
文本
TRUE/FALSE
布尔值
Currency
货币
DateTime
日期
Binary
二进制
Blank/NULL
空值
variant
变体
五、DAX的基础函数
下面介绍的是DAX的一些基础函数,大家可能看了目录后会觉得函数的类型过多,可能会很难学习和记忆。
其实,在这里介绍的函数在Excel里都有,是从Excel里继承过来的,这些函数的函数名、作用、参数个数、返回值等等,几乎都和Excel里的函数是一样的。
而且我也不会在一开始就介绍很难的东西,都是循序渐进的,别看函数多,其实对熟悉Excel的朋友来说就仅仅只是一次温故知新罢了。
我相信能够接触到DAX的各位,对Excel的学习和掌握可以说得上是比较精通的了。
当然我不敢说所有看到这篇文章的人都熟悉或精通Excel,但我相信起码有80%的人是熟悉的,对于那些不熟悉Excel的朋友,我建议你先去学习Excel,等学有所成了再来学习DAX。
话不多说,下面开始介绍。
5.1时间日期函数
函数
作用
DATE(Year,Month,Day)
返回日期时间格式的日期值
DATEVALUE(DateText)
将文本格式的日期转换为日期时间格式
EDATE(Date,months)
返回按指定月数平移后的日期
EOMONTH(Date,months)
返回指定月数平移后的月份的最后一天
YEAR(Date)
返回日期的年份
QUARTER(Date)
返回日期的季度
MONTH(Date)
返回日期的月份
DAY(Date)
返回日期的天数
WEEKDAY(Date,[ReturnType])
返回当前日期对应的星期数,ReturnType=2以周一为起始
WEEKNUM(Date,[ReturnType])
返回当前日期位于一年中的周数,ReturnType=2以周一为起始
TIME(Hour,Minute,Second)
将数字形式的小时、分钟和秒转换为日期时间格式
TIMEVALUE(TimeText)
将文本格式的时间转换为日期时间格式
NOW()
返回当前日期和时间
TODAY()
以日期时间格式返回当前日期
HOUR(Date)
返回时间的小时
MINUTE(Date)
返回时间的分钟
SECOND(Date)
返回时间的秒
5.2文本函数
函数
作用
FIND
查找一个字符串在另一个字符串里的起始位置,区分大小写,不支持通配符
SEARCH
查找一个文本字符串在另一个字符串里的起始位置,不区分大小写,支持通配符
LEFT
从一个字符串的左边开始提取字符
RIGHT
从一个字符串的右边开始提取字符
MID
从一个字符串的任意位置开始提取字符
LEN
返回字符串的长度
CONCATENATE
字符串连接
REPLACE
将字符串的某些字符用另一个字符串代替
SUBSTITUTE
用一个字符串去替换另一个字符串的特定字符
LOWER
将字符串全部小写
UPPER
将字符串全部大写
TRIM
删除字符串前后多余的空格
VALUE
将文本型数字转换为数值型数字
5.3数学函数
函数
作用
ABS
返回绝对值
DIVIDE
安全除法,在分母为0时可返回替代结果,默认空值
EXP
返回自然常数e的给定数字次方
LN
自然对数
LOG
返回指定底数的对数
LOG10
返回以十为底的对数
MOD
返回指定数字被整除后的余数
POWER
返回提升到幂的数字的结果
SQRT
返回给定数字的平方根
FACT
返回给定数字的阶乘
RAND
返回一个大于等于0且小于1的均匀随机数
RANDBETWEEN
返回指定数字之间的随机数
PI
返回圆周率
5.4转换函数
函数
作用
CONVERT
将表达式转换为指定的数据类型,可转换为整数,双精度,字符串,布尔值,货币,日期时间类型
INT
将表达式转换为整数(向下舍入)
TRUNC
通过删除数字的小数或小数部分将数字截断为整数
ROUND
将数字四舍五入为指定的数字
DATE
返回日期时间格式的日期值
DATEVALUE
将文本格式的日期转换为日期时间格式
TIME
将数字形式的小时、分钟和秒转换为日期时间格式
TIMEVALUE
将文本格式的时间转换为日期时间格式
VALUE
将文本型数字转换为数值型数字
FORMAT
将值转换为指定数字格式的文本
5.5逻辑函数
函数
作用
IF(condition,true,false)
条件判断语句
SWITCH
根据表达式的值返回不同的结果。
AND()
逻辑与
OR()
逻辑或
NOT()
逻辑非
TRUE()
逻辑真
FALSE()
逻辑假
IFERROR()
判断是否出错
5.6信息函数
函数
作用
ISBLANK
检查值是否为空
ISERROR
检查值是否为错误
ISLOGICAL
检查是否为逻辑值
ISNONTEXT
检查是否为非文本
ISNUMBER
检查是否为数字
ISTEXT
检查是否为文本
5.7聚合函数
函数
作用
SUM
求和
AVERAGE
求平均
MAX
最大值
MIN
最小值
COUNT
对数值计数
COUNTA
对非空数据计数
COUNTROWS
计算表的行数
COUNTBLANK
计算空行数
DISTINCTCOUNT
计算非重复数据的个数
STDEV.P
求总体标准差
STDEV.S
求样本标准差
VAR.P
求总体方差
VAR.S
求样本方差
PRODUCT
返回列中的数的乘积
六、总结
我相信熟悉Excel的人肯定能够很轻松的阅读完上面的函数,虽然我没有展开来讲,仅仅只是列出了各个类别的函数,但这些函数和Excel的函数都是一样的。
一般来说能接触到DAX的人,他的Excel水平肯定是不错的,所以阅读并接受上面的函数可以说是不费吹灰之力,而如果你觉得困难,那么肯定就是Excel没学好了,我建议你先去学习Excel,学有所成再来学习DAX。
我相信你读完这篇文章后,对DAX应该有了一个大概的印象,也建议你在PowerPivot和PowerBI上尝试导入数据并输入你的第一个DAX表达式。
如果想去尝试的朋友请注意一下,因为目前还没有介绍到度量值、计算列和计算表,所以请在计算列的范围里输入DAX表达式,因为计算列跟Excel是最相像的,而度量值需要依赖外部计值环境,你很可能得不到你想要的结果。
当然在计算列里你也很可能得不到你想要的结果,例如:
你们可以在计算列里输入这个表达式:
求和:
=sum(‘表’[要求和的列]),这样,你们新添加的这个求和列,他们的值都是一样的,都是列总计的值,而不是你以为的每一行的值,具体原因在以后的文章中会有讲解。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 初识 DAXDAX 是什么 能干 什么 怎么
![提示](https://static.bdocx.com/images/bang_tan.gif)