美文网首页Power BI
DAX从入门到精通 2-6-1 聚合函数

DAX从入门到精通 2-6-1 聚合函数

作者: PowerBI入门到实践 | 来源:发表于2019-06-20 22:50 被阅读0次

    常用的DAX函数

    目前,你已经了解了DAX的基础知识,以及如何处理报错的信息。接下来的是一些非常常用的DAX函数表达式。本章的剩余部分,会介绍这些函数,他们很大可能会被应用到你的模型当中。

    聚合函数

    几乎所有的数据模型都提供聚合函数。DAX提供了一系列的聚合函数,可以用来对表中列的值进行聚合然后返回一个值。我们称这样的函数为聚合函数。例如,下面这个例子,计算了sales表salesamount列的所有值的和。

    Sales := SUM ( Sales[SalesAmount] )
    

    sum函数计算了表中该列所有行的值,但是这些行都是经过筛选器,行,列以及透视表的过滤条件过滤后得到的。
    聚合函数(SUM, AVERAGE, MIN, MAX, STDEV, and VAR)只能对数值类型和日期类型的值进行计算。

    划重点
    MIN和MAX有些不一样。如果给它们提供两个参数,他们将返回这两个值中的其中一个。因此,min(1,2)返回1 max(1,2)返回2。有时候,当你要计算复杂表达式的最小和最大值时候,使用这个函数会比IF函数用起来方便。

    和Excel类似,DAX对这些函数提供了一些特殊的语法,使他们可以包含数字类型或者非数字类型,例如文本。特殊的语法就使简单的价格后缀A,这个和excel中很像。但是,这些函数只对列中只有true和flase值有效,因为true表示1,false表示0.文本值总是被标记为0。因此,无论列中的内容使上面,如果对一个文本列使用MAXA函数,你总是得到0.另外,DAX在计算聚合的时候,总是忽略空值。
    即使这些函数可以用在非数值的列中,而不报错。但是结果通常是没有意义的,因为函数不会把文本转为数值。这些函数有 AVERAGEA, COUNTA,MINA, and MAXA.

    划重点:
    虽然有些统计函数和EXCEL中的名字相同,但是在使用方式上,两者有非常大的不同。DAX的列有数据类型,计算的结果会依赖这些数据类型。Excel的可以对每个单元格处理不同的数据类型,而DAX对每列处理一种数据类型,Excel的函数已单元格的值计算,可以不用明确定义数据类型。如果PowerPivot的列是数值类型,这列的所有值都必须是数字或者空值。如果列是文本类型,那么这列在使用聚合函数的时候,都返回0(除了counta),即使这些值可以转换为数字,而excel会逐一对单元格计算。因此,这些聚合函数对文本类型的列基本是没有意义的。

    上面的函数对聚合计算非常有效。但是有的时候,你关注的不是聚合值,而是对他们计数。因此,DAX也提供了一系列的函数来对行计数。

    • count只能用于数值类型的列
    • counta可以用于所有类型的列
    • countblank列中的空值数量
    • countrows返回了表中的行的数量
    • 返回列中所有不同值的数

    counta是一个特殊的以A为结尾的函数。因为它返回的是列中不为空的行的数量,对列的类型没有要求。如果你要计算包含了空值的行,你可以使用countblank函数。最后,如果你要计算表的所有行数量,可以使用countrows函数。注意countrows需要一个表作为参数,而不是一个列。

    划重点
    对于表中的任何列,counta()+countblank()总是等于countrows()

    最后一个函数是distinctcount,它非常有用,它的作用和它的名称一样,计算列中的不同的值,它只需要一个参数。distinctcount把blank也作为一个值计算在内。

    目前所介绍的聚合函数都是针对列的计算(除了countrows针对表)。因此,你只能对某一列进行聚合。另外还有些函数可以对表达式进行聚合计算,而不是列。这类函数非常重要且有用,尤其是当你需要对关联表进行计算的时候。例如,如果sales表包含所有的交易记录,而相关联的product表包含一个产品的所有信息,包含它的成本,你可以通过定义这样的表达式在计算交易数据的所有cost。

    Cost := SUMX ( Sales, Sales[Quantity] * RELATED (
    Product[StandardCost] ) )
    

    该度量值计算了sales表的每一行的数量乘以product表的单价,最后,它返回所有这些计算结果的汇总值。
    所有以X为结尾的函数都有如下的计算行为:对表中的每行(第一个参数)按表达式计算(第二个参数),然后根据相关的聚合函数返回相关的聚合结果(SUM, MIN, MAX or COUNT)。
    在后面的章节会进一步的学习这些函数的行为,因为要了解它们的计算逻辑,你需要了解上下文的概念。以X为结尾的函数例如SUMX,
    AVERAGEX, PRODUCTX, COUNTX, COUNTAX, CONCATENATEX, MINX,and MAXX等。另外还有些函数不以X结尾,但是也是迭代函数,例如filter,addcolums。这些后面都会详细介绍。

    相关文章

      网友评论

        本文标题:DAX从入门到精通 2-6-1 聚合函数

        本文链接:https://www.haomeiwen.com/subject/clisqctx.html