对汇总虚拟表进行求和

问题描述 投票:0回答:1

我正在尝试报告一段时间内的客户目标。基础数据是客户列表和客户对目标所做更改的审核表。

因此,我创建了一个衡量标准,将这些零星的定时审核转换为运行总计:

RunningTarget = 
    CALCULATE(
        SUM('Target Changes'[TargetTo]),
        LASTNONBLANK(
            DATESBETWEEN(Calendar[Date], BLANK(), LASTDATE(Calendar[Date])),
            CALCULATE(COUNT('Target Changes'[TargetTo]))
        )
    )

这对于单个客户来说非常有用 - 我可以将这些变化随时间的推移映射到图表上。但我现在需要将其汇总到各个父级别(区域、销售代表等),并且正在努力每天在多个(或所有)客户中获取此衡量标准的总和。

我创建了一个度量,它构建了一个包含所有日期、所有客户以及每天运行目标的虚拟表,但是使用 SUMX 返回每天的总计并没有达到我想要的效果,我也不明白为什么。

TargetTotal = 
VAR TargetTable = 
    ADDCOLUMNS(
        CROSSJOIN(
            VALUES(Calendar[Date]), 
            VALUES('Target Changes'[CustomerID])
        ), 
        "Target", [RunningTarget]
    )
RETURN 
    SUMX(
        GROUPBY(
            TargetTable,
            [Date],
            "SummedTarget", SUMX(CURRENTGROUP(), [Target])
        ), 
        [SummedTarget]
    )

我已经测试了计算表中的 TargetTotal 表和 GROUPBY,它们似乎返回了我所期望的内容,但此度量仅返回存在审核更改的日期的数字。我做错了什么?

powerbi dax
1个回答
0
投票

问题可能是您的度量仅返回存在审核更改的日期的值,因此最终结果仅对这些特定日期而不是范围内的所有日期进行求和:

TargetTotal = 
VAR TargetTable = 
    ADDCOLUMNS(
        CROSSJOIN(
            VALUES(Calendar[Date]), 
            VALUES('Target Changes'[CustomerID])
        ), 
        "Target", 
        CALCULATE([RunningTarget], 
            FILTER(ALL('Target Changes'[CustomerID]), 
            'Target Changes'[CustomerID] = EARLIER('Target Changes'[CustomerID])))
    )
RETURN 
    SUMX(
        VALUES(Calendar[Date]), 
        SUMX(
            FILTER(TargetTable, [Date] = EARLIER(Calendar[Date])), 
            [Target]
        )
    )
© www.soinside.com 2019 - 2024. All rights reserved.