powerbi - 如何计算一个简单的累计?
问题描述
这是表:客户
这是表事务:
它们以 No 相关。
我想要 Esaldo 的总和:
所以:
Running total =
CALCULATE(
SUM(Transactions[ESaldo]),
FILTER(
ALL(
Transactions),
Transactions[Date] <= MAX(Transactions[Date])
)
)
这是错误的:
由于外部过滤器(切片器)。
所以,这应该这样做:
Running total 2 =
CALCULATE(
SUM(Transactions[ESaldo]),
FILTER(
ALLEXCEPT(Transactions, Transactions[no]),
Transactions[Date] <= MAX(Transactions[Date])
)
)
如果ALLEXCEPT
要理解...它应该从 Transactions 中删除所有过滤器,并将过滤器保留在第 No 列中。
但事实并非如此,因此结果是相同的:
那么,也许…… ALLSELECTED
?
Running total 3 =
CALCULATE(
SUM(Transactions[ESaldo]),
ALLSELECTED(Transactions[no])
)
没有:
编辑:这是 pbix 文件的链接: https ://drive.google.com/drive/folders/1W5cnLtIBD9REYbr3VdhIZqTcCtxz62hp?usp=sharing
解决方案
亲爱的@nuno,如果我没记错的话,您可能已经使用此代码找到了解决方案
Running total 2 =
CALCULATE(
SUM(Transactions[ESaldo]),
FILTER(
ALLEXCEPT(Transactions, Transactions[no]),
Transactions[Date] <= MAX(Transactions[Date])
)
)
如果您仔细观察,您会发现从您的打印结果中,总计 2 实际上通过添加每行的每张发票来正确计算。
但是您最后看到的 166k 实际上并不是上述值的总和。它实际上对整个表(另一个评估上下文)应用相同的度量,这实际上是正确的,并且与没有过滤器的 SUM(Transactions[ESaldo]) 完全相同。
尽管如此,鉴于示例的性质,如果您的目标是呈现为表格,那么这个总数是无用的。您可能希望总数保持一致。
尝试下面的代码,我尝试更改计算内部的评估上下文(抱歉,上面指向 pbix 的链接似乎不起作用)
Running total 2 =
CALCULATE(
CALCULATE(
SUMX(
VALUES(Transactions[Date]),
CALCULATE(
SUM(Transactions[ESaldo])
)
)
)
FILTER(
ALLEXCEPT(Transactions, Transactions[no]),
Transactions[Date] <= MAX(Transactions[Date])
)
)
它有效吗?它应该更改日期列周围的上下文并在最后更正总数
推荐阅读
- vue.js - 如何强制 axios GET 请求发送标头?
- python - 如何制作蒙版以将除文本之外的所有图像背景设置为白色?
- ios - 原生 Swift 应用程序中的视频播放和加速度计都需要 WKWebView 的哪些权限?
- javascript - QWebEngineView 仅在 javascript 脚本完成后显示页面
- ontology - 描述逻辑中存在量词的使用
- json - Watson 训练数据格式
- selenium - 如何处理“ng-model”属性以在网页上查找元素?
- amazon-web-services - 如何使用 lambda 服务在 s3 中查找两个文本文件的差异
- python - 仅使用一个辅助数组来实现归并排序(而不是递归地创建新数组)
- ios - Xcode 将 IOS 应用程序作为其他项目分发