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


    前言

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

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

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

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

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

    销售表如下:

    产品表如下:

    BI数据模型

    一:聚合函数和迭代函数

    1.1引用对象不同

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

    1.2语法示例

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

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

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

    1.3  X函数罗列

    SUMXCOUNTXMINXMAXXPRODUCTX等等

    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的运行方式类似,大家可以举一反三,多在自己的业务中应用,来提高对这类函数的认识和熟练度。

     

  • 相关阅读:
    《大厂高并发分布式锁从入门到实战》第6讲之Mysql分布式锁
    HamsterBear Linux Low Res ADC按键驱动的适配 + LVGL button移植
    C++ 虚函数表
    树形dp题单训练
    云原生基础知识:容器技术的历史
    Java多线程、常用类、枚举类、注解、集合、泛型、IO、反射
    Go: 关于定时任务
    IO学习系列之使用read和write复制文件内容
    大唐电信java笔试题及答案
    【JavaSE】之多态
  • 原文地址:https://www.cnblogs.com/simone331/p/17388646.html