我正在尝试报告一段时间内的客户目标。基础数据是客户列表和客户对目标所做更改的审核表。
因此,我创建了一个衡量标准,将这些零星的定时审核转换为运行总计:
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,它们似乎返回了我所期望的内容,但此度量仅返回存在审核更改的日期的数字。我做错了什么?
问题可能是您的度量仅返回存在审核更改的日期的值,因此最终结果仅对这些特定日期而不是范围内的所有日期进行求和:
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]
)
)