power bi里公式怎么添加(PowerBI之DAX神功第1卷第5回)
提示:这节课的知识建议配合视频观看,有的地方需求测试才能理解
一、什么是聚合函数?聚合函数对一组值执行计算,并返回单个值。这一组值一般指一个列。
《孙兴华讲PowerBI火力全开》第9集 <1> 聚合函数
我们先回顾一下,聚合函数在Excel工作表中的应用
很多人,在做数据分析时出错了,问题就出在Excel使用时随心所欲。
你问问自己(打印在纸上或者就是以观看为目的除外):为什么要在Excel中使用合并单元格?为什么要使用多行表头?一列数据为什么胡写乱写数据类型?为什么别人给你们分享数据库知识时,你们会组团抵触,因为你自由惯了,受不了约束?可能我说话不好听,但是你要仔细想想这些问题都是谁造成的?不如,以后就直接将表格截个图,这样可以有效地防止别人修改你的数据:)
你们可以观看《孙兴华答网友问》栏目中,很多WordVBA比较复杂的单元格合并和拆分我都会用数学的方法去算,讲给提问者听,尽力的帮助他,因为Word是打印在纸上或是观看为目的。但是ExcelVBA中合并拆分比Word简单N倍,我基本上没有回答过关于合并/拆分单元格和多行表头的事情,因为他正在做一件错误的事情,如果你纵容他,他会「得寸进尺」「变本加厉」的将数据搞乱,你最终不是帮他而是害他,你一定要让他撞南墙,头破血流,直到他浪子回头。
多表头、合并单元格,就不要拿来做数据分析
你自己研究烦了,以后也就不会去用多表头、合并单元格了因为你的行为,给别人造成了太大麻烦,我怎么可能帮你呢?有些人一定会找借口说,我是做表格汇总的,他们给我的表格。那我问你,模板谁给他们的?要追究责任,我建议追究做模板的人。
DAX基于SQL思维,SQL是处理数据库的,数据库中每个列所有单元格的数据类型是一致的。如果你的数据很乱,可以先使用PowerQuery等工具进行数据清洗,不是我套娃,这明显是你自己整自己。我讲的 全107集 PowerQuery M函数 可供学习。
接下来我们看看PowerBI中的DAX聚合函数:
图1-5-1
当你将图1-5-1的Excel文件导入PowerBI那一刻起,PowerBI会自动分析每一列的数据类型。
【列1】里面有个“孙”,所以他就会用文本型保存这一列。
【列2】中的True是逻辑值,但是0.1和0.2它不能给你转成True吧?所以这一列也会使用文本型。
图1-5-2
如图1-5-2所示,我们可以选中一列,调整数据类型
接下来我们看一下在PowerBI中聚合函数的情况:×未必都是报错,有时它只返回一个0,更坑人。
讲实话,你脑容量有限,这些规则你根本就记不住,就算当时记住了,时间久了一样忘记,从根源上解决问题就是数据类型工整化,现在非打印表或观赏表使用多表头或合并单元格或同一列中数据类型瞎写的,如果开导不了就孤立他们,让他们成为一座孤岛。就跟一个国家的治安,增加执法人员数量是没有用的,对全民普法教育才是最重要的。
二、什么是迭代函数(以SumX为例)跨表计算或者为了减少生成计算列
图1-5-3
如图1-5-3,我想在销售表中生成【销售金额】这一列
设想一下,如果我使用《孙兴华讲PowerBI火力全开》02.建模与关系函数 <1>Lookupvalue函数
将商品表中的售价列V过来?再新建列使用【销售】*【售价】可以实现,但是会增加容量,占用内存,数据量过大时不现实
这时,用使用迭代函数就可以简单实现,由于涉及多张表格,所以我们使用关系函数
《孙兴华讲PowerBI火力全开》02.建模与关系函数 <2>Related函数与Relatedtable函数
《孙兴华讲PowerBI火力全开》06.被翻译耽误的上下文
使用关系函数时,涉及使用列的表,必需连线!2021年初《孙兴华讲PowerBI火力全开》杀青,部分收费讲课的人生气,开着小号找麻烦,以「二哈到底哈不哈」(化名) 为代表的各类人群,纷纷质疑我讲关系函数时,讲的不清楚,原理不对,他们说,关系函数不需要表与表连线。你用关系函数时将连线删除,看看效果,关系函数会不会报错。我们要依据事实说话。《孙兴华讲PowerBI火力全开》第2课.建模与关系函数<1>Lookupvalue(把哪张表的哪个列拿过来,找那张表上的谁?,找自己表里的谁?)
售价 = Lookupvalue('商品表'[售价],'商品表'[商品],'销售表'[商品])
这个函数不需要建立关系,与Excel看人Vlookup一样,他第1参数是V哪个列?第2和第3参数是指这两张表通过什么建立关系?
这个函数一般是不会用的,因为高手担心占内存和效率很少新建列,在PowerBI做类似Vlookup的事情,那你不如直接在Excel里V好了。
但是话不能说绝,有时为了减少逻辑的思考,你会用到的,用到它并不能提高效率,但是可以简化代码,对初学者很有帮助。
你在使用中会发现,虽然Lookupvalue可以不连线,但是你并不是只V一个或几个列过来,最终其它操作仍然要连线,否则矩阵表上怎么用其它表中的字段?
建议关系不影响使用Lookupvalue函数,你抬这个扛的目的又是什么呢?影响你付费课的不是免费课,而是你们自己:
1.神化英语,很多案例全英文化,你已经将英语薄弱人趋之门外。
2.过分使用专业术语,沿袭,循环依赖....你真的认为大家都能听懂吗?还有很多人听不懂“唯一值”和“四则运算”是什么意思,还有很多人,拿着一个网盘链接,不会下载网盘上的文件。
大家基础不同,虽然不能全面考虑,但是英语和专业术语的问题属于人为障碍,可以控制。
<2>Related函数与Relatedtable函数必需建立表与表之间的关系,即便你举出99个成功案例,我有一个失败案例,就证明这条路有问题。这不叫以偏概全。,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com