SUMMARIZE函数解决之前的总计错误_数据分析

小伙伴们,还记得之前的总计栏显示错误问题么?

本期呢,白茶决定来研究解决这个问题,先来看看之前的样例。

SUMMARIZE函数解决之前的总计错误_外包_02

放上之前的每笔成交代码:

每笔成交花费 =
VAR CQ = [每一笔消费达成日期]
VAR DQ =
    IF (
        SUM ( Sheet1[销售额] ) > 0,
        CALCULATE (
            [每一笔消费达成日期],
            FILTER (
                ALL ( Sheet1[日期] ),
                'Sheet1'[日期] < CQ
                    && CALCULATE ( SUM ( Sheet1[销售额] ) ) > 0
            )
        ),
        BLANK ()
    )
VAR HQ =
    FILTER ( ALL ( Sheet1[日期] ), 'Sheet1'[日期] <= CQ && 'Sheet1'[日期] > DQ )
RETURN
    CALCULATE ( SUM ( Sheet1[花费] ), HQ )

这些都是之前的文件,这里拿出来是为了方便小伙伴们观看对比使用的。先来说一下什么意思:

两个人总计花费187.20元,但是实际需求中,可能BOSS只会处理你的有效花费。什么叫有效花费,就是这个钱你花了,并且达成销售了,BOSS才会给你报销。其他的都算在无效消费里面。

也就是需要在总计栏呈现的结果是:187.20元-12.20元-13.20元-6.20元。即155.6元,而不是6.20元。那么该如何处理呢?

SUMMARIZE函数解决之前的总计错误_编程语言_03

先来了解一下SUMMARIZE函数。

语法:

SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)

这个函数以后会仔细的说,本次简单的说我们需要的功能。

当SUMMARIZE函数如下这种:

DAX =
SUMMARIZE ( '表', '表'[列] )

这种情况下的结果类似于VALUES函数,提取不重复值。

如果是下面这种:

DAX =
SUMMARIZE ( '表', '表'[列], '表'[列2] )

这种情况相当于构造成了一个笛卡尔积。但是有点不同,就是当表中没有这种组合的时候,那么结果就不会出现。

SUMMARIZE函数解决之前的总计错误_编写代码_04

在数据中先使用SUMMARIZE函数看看效果:

SUMMARIZE函数解决之前的总计错误_数据分析_05

这种就属于利用SUMMARIZE生成了一个只有我们需要维度的表。可能有的小伙伴还没理解,那然后呢?利用SUMX函数外包!

编写代码:

SUMMARIZE优化结果 =
SUMX ( SUMMARIZE ( 'Sheet1', 'Sheet1'[业务员], 'Sheet1'[日期] ), [每笔成交花费] )

结果如图:

SUMMARIZE函数解决之前的总计错误_编程语言_06

这次的结果显示没问题了,对吧。

这里说一下原因:

首先是利用SUMMARIZE生成了一个只有**[日期][人名]**的组合表。

之后SUMMARIZE的第一参会受当前上下文筛选限制,只显示**[每笔销售达成的日期],也就是可见组合**。

然后,之前说过了,**[每笔成交花费]这个度量值相当于把[花费]**这一列截断了,实际上显示的只有每次成交额的汇总,也就是:22.2,,46,40.6,46.8这四个数值。

最后,是SUMX函数进行当前上下文汇总。

再通俗一点就是SUMMARIZE为SUMX函数提供一个可以计算的维度,而之前的**[每笔成交花费]**这个度量值提供需要被计算的值。



这里是白茶,一个PowerBI的初学者。


SUMMARIZE函数解决之前的总计错误_编写代码_07

SUMMARIZE函数解决之前的总计错误_编程语言_08