【问题标题】:Wrong Totals Using IF and Values() in Power BIPower BI 中使用 IF 和 Values() 的错误总计
【发布时间】:2017-01-31 05:02:26
【问题描述】:

我正在计算上一年和年初至今的销售额的新销售额和销售额损失。我试图在表格中显示它,然后用年份切片器过滤该表格。 以下是我使用的公式:

SalesPY = CALCULATE(SUM(SalesData[Value]),SAMEPERIODLASTYEAR('Calendar'[DateKey]))

SalesYTD = TOTALYTD(SUM(SalesData[Value]), 'Calendar'[DateKey])

NewSalesUppdate = SUMX(VALUES(SalesData[CustomerName]),IF([SalesYTD] > 0 && [SalesPY] = 0, [SalesYTD]))

LostSalesUppdate = SUMX(VALUES(SalesData[CustomerName]),IF([SalesYTD] = 0 && [SalesPY] > 0, -[SalesPY]))

LostSalesOld = IF([SalesPY] > 0 && [SalesYTD] = 0, -[SalesPY])

NewSalesUppdate 公式可以正常工作并且总结正确。然而LostSalesUppdate 不起作用,尽管与NewSalesUppdate 相比具有几乎相反的公式。似乎IF 声明永远不会成为真的。这很奇怪,因为LostSalesOld 公式显示了正确的值,但没有显示总数。

感谢所有提示!


样本数据:

当前结果:

注意客户 A 年初至今没有销售额。 LostSalesOld 显示销售额为 -85000,但总额中没有任何反映。 LostSalesUppdate 什么也没显示。

期望的结果:

现在丢失的销售列之一(不管哪个)对客户 A 具有价值,并且总计

【问题讨论】:

  • 你能用一些样本(比如每月)数据来解释你想要完成什么以及你目前看到了什么吗? SalesPY 和 SalesYTD 度量是不同的(一个仅限于当前日期上下文,另一个是 YTD 度量)。因此,一旦本年度发生销售,SalesYTD 永远不会为 0,而 SalesPY 可能经常为 0。因此,我不会将 LostSalesUppdate 和 NewSalesUpdate 描述为相互对立的。
  • 感谢您的回复@Leonard!我会尽量具体一点。
  • 在下表中,您可以看到我希望它如何工作。但是,正如我之前所说,LostSalesOld 公式在 lostSales 中显示客户 A 的 -70000,但不显示总数。当我改为尝试使用 LostSalesUpdated 时,lostSales 列会变为空白(永远不会变为真)。所以我知道当我只使用 IF 语句时该公式有效,但当我添加 Values 方法时它不起作用。由于我正在过滤每个客户的 SalesYTD,感觉 SalesYTD 应该可能为 0。@Leonard
  • 我希望很清楚我想要达到的目标。您对我可以使用的其他公式是否有任何提示以获得所需的结果? CustomerName SalesPY SalesYTD NewSales LostSales A 70000 0 -70000 B 0 50000 50000 Total 70000 50000 50000 -70000
  • 我现在意识到,我试图在 cmets 字段中写入的表格并没有那么好。如果您能通过 derf95stack@gmail.com 给我发电子邮件,我将不胜感激,这样我就可以更轻松地在 power bi 中发送我的桌子的图像。这样我觉得会更容易理解。如果其他人也想帮助我,也非常欢迎您给我发电子邮件。找到答案后,我们可以在这里发布,以便其他人看到。 @伦纳德

标签: powerbi


【解决方案1】:

关注 LostSalesUppdate,问题是上下文之一。您的衡量标准是“对于SalesData 表中的每个客户名称,如果他们去年有销售而今年没有销售,则显示他们去年的销售是否定的”。

问题(我承认这很微妙)是因为今年客户 A 没有销售,客户 A 不在销售数据中表就这项措施而言。因此,公式的其余部分被忽略。

我建议添加一个包含客户列表的单独表格,类似于您的日期表(每个客户一行)。然后,更新您的 LostSalesUppdate 公式,这样它就不会从 SalesData 中提取 CustomerName,而是从您的新客户表中提取它。

LostSalesUppdate =
SUMX (
VALUES ( Customer[CustomerName] ),
IF ( [SalesYTD] = 0 && [SalesPY] > 0, - [SalesPY] )
)

【讨论】:

  • 感谢您的帮助@Leonard!它现在似乎可以正常工作了。
猜你喜欢
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2022-11-20
  • 2020-06-12
  • 1970-01-01
  • 2022-07-07
  • 2018-11-28
  • 1970-01-01
相关资源
最近更新 更多