首页 > 其他分享 >#PowerBi 10分钟学会,以X为结尾的聚合函数

#PowerBi 10分钟学会,以X为结尾的聚合函数

时间:2023-05-11 09:12:21浏览次数:38  
标签:10 聚合 函数 迭代 SUMX 销售 excel PowerBi 结尾

前言

在Power BI中,我们经常需要对数据进行聚合计算,比如求和、求平均、求最大值等。

Power BI提供了一系列的聚合函数,可以用来对表中列的值进行聚合然后返回一个值。这些函数通常只需要一个参数,就是要聚合的列名。如SUM(‘销售表’[销量]),就是求销售表里的销量总和。

但是有时候,我们需要对更复杂的表达式进行聚合计算,而不是单纯的一列。今天就来学一下迭代函数解决这类问题。

为了便于理解,本文结合excel分别做两个例子,一个excel版本,一个BI版本,对比学习。

本文示例数据表及BI模型构成

销售表如下:

产品表如下:

BI数据模型

一:聚合函数和迭代函数

1.1引用对象不同

聚合函数只接受单列引用(划重点),而迭代函数可以支持多列计算而聚合

1.2语法示例

聚合函数: SUM(‘销售表’[销量])

迭代函数: SUMX(表,表达式)

以X为结尾的聚合函数非常强大和灵活,它们可以让我们对复杂的表达式进行聚合计算,而不受列或数据类型的限制。它们也可以和其他的表函数配合使用,比如FILTER、RELATEDTABLE等,来实现更多的功能。

1.3  X函数罗列

SUMX、COUNTX、MINX、MAXX、PRODUCTX等等

以X为结尾的聚合函数有很多种,它们的区别在于最后的聚合方式不同。例如,SUMX是求和,MINX是求最小值,MAXX是求最大值,COUNTX是计数等等。它们的用法和语法都很类似,只要掌握了其中一个,就可以很容易地使用其他的。

1.4  为什么要用SUMX这类的迭代函数

日常工作中如果我们要计算一个销量,那么SUM(销售表[销量])就是计算销售表中销量列的所有值的和。

但是有时候,我们需要对更复杂的表达式进行聚合计算,而不是单纯的一列。比如,我们想要计算每个产品的总销售额,但是销售表中又没有产品的售价时,这个表达式涉及到两个表:销售表和产品表,它们之间有一个关联关系。如果我们直接用SUM函数来计算销售总和,就会得到错误的结果,因为SUM函数不能处理这样的表达式(因为涉及多列运算)。这时候,我们就需要用到以X为结尾的聚合函数。

二:案例分析

假设现在我们有两张数据源表。

目标是求得对应各个产品的总销售额。

销售表如下:

产品表如下:

2.1 Excel中的计算

如果是在excel中,我们可以根据产品名,用vlookup去匹配产品表中的产品售价,然后通过售价与销量相乘得到总的销售金额

然后透视表汇总结果

通过excel的实现中,最关键的其实就是新增列,然后通过新增列的值去求和在汇总。

2.2 POWERBI,DAX实现

产品销售金额 = SUMX('销售表','销售表'[销量]*RELATED('产品表'[售价]))

通过迭代函数只需要一行代码。第二参数可以是表达式,这里的related函数相当于上面excel中的vlookup,使得匹配上的值和销售进行了相乘(这里大家可以理解为在bi中我们新增了一个虚拟行去替代excel中我们新增的两列,而SUMX函数针对虚拟的行,

逐行进行表达式的计算,最后针对汇总的虚拟行,进行了SUM求和)

最后,在bi中新建一张表,拉到值内,和excel中是一样的效果。

 其他,以X结尾的迭代函数,也和SUMX类似,大家可以举一三反,多在自己的业务中应用,来提高对这类函数的认识和熟练度。

 

标签:10,聚合,函数,迭代,SUMX,销售,excel,PowerBi,结尾
From: https://www.cnblogs.com/simone331/p/17388646.html

相关文章

  • 建民打卡日记5.10
    一、问题描述给定一个长度不超过10000的、仅由英文字母构成的字符串。请将字符重新调整顺序,按GPLTGPLT....这样的顺序输出,并忽略其它字符。当然,四种字符(不区分大小写)的个数不一定是一样多的,若某种字符已经输出完,则余下的字符仍按GPLT的顺序打印,直到所有字符都被输出二、流程设计......
  • jz01_v10刷机教程
    jz01_v10刷机教程保存原有系统保存所有分区板子重启到9008依次选择Read-->PartitionBackup/Erase然后双击下面选择储存路径点击LoadPartitionStructure勾选所有点击ReadFullimage开始制作救砖包。保存好后缀为.bin的文件。救砖方法为点击flash-->emmcblock()fla......
  • HO引擎近况20230510
    上个月想起来的时候已经25号了,然后下一分钟又忘了...公司的项目开始忙起来了,各种杂事不过比起项目中的技术部分,与其它人的沟通更费事,如此难以沟通的人事情况还是第一次碰上一直想学个车本,但是一直没有去考,模拟考试中科目一总是40来分,不知道为什么别人都说简单的题到我这......
  • 5.10
    猜牌术魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,并使牌面朝下。然后他对观众说:我不看牌,只要数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看,魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,他将黑桃A放在桌子上,然后按顺序从上到下数手中的余牌,第二次......
  • 利用递归输出100-10000之间的水仙花数
    <htmllang="en"><head><metacharset="UTF-8"><metahttp-equiv="X-UA-Compatible"content="IE=edge"><metaname="viewport"content="width=device-width,initial-scale=1.0&quo......
  • 10. 封装和解封的概念
    1.1基本概念封装python种没有像C语言那样,逗号表达式的概念,因此当你如下写的时候,它会给你封装起来所以,当你如下写的时候是同一样的东西解构a,b=1,2解释:等式右边先做,会封装成为元组(1,2),但是元组只有一个,要同时分给a和b,所以只能把它们拆开,这就叫解构注......
  • 算法学习day11栈与队列part02-20、1047、150
    packageLeetCode.StackAndQueuepart02;/***20.有效的括号*给定一个只包括'(',')','{','}','[',']'的字符串s,判断字符串是否有效。*有效字符串需满足:*左括号必须用相同类型的右括号闭合。*左括号必须以正确的顺序闭合。*每个右括号都有一个对应的相同类型的......
  • 2023.5.10三天学习总结
    一.三天学习情况1.vp了一场河南省赛2.补完了一下上把cf的E以及校赛的题3.学习了一下启发式合并二.学习情况截图 三.题解(158条消息)2023河南省赛vp题解_scanner___yw的博客-CSDN博客四.总结1.这两天刷了两个模拟题,发现代码能力确实得到了......
  • 5.10日结
    最近真是颓废的不成样子,大伙总以为我学了很多,但实际上什么也没有学到,还真就那句话,要么一直学提升自己,要不然就摆,夹在中间就很脑瘫。其次我今天复习了数据库4和5单元和概率论1和2单元,还有我那蹩脚的四级。这个四级就和英语提高一起复习了。。其次我们的二阶段是开发一个社区,目前......
  • 2023-05-10:给你一棵以 root 为根的二叉树和一个 head 为第一个节点的链表 如果在二叉
    2023-05-10:给你一棵以root为根的二叉树和一个head为第一个节点的链表如果在二叉树中,存在一条一直向下的路径且每个点的数值恰好一一对应以head为首的链表中每个节点的值,那么请你返回True否则返回False。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径......