【问题标题】:Basic issue with SUMXSUMX 的基本问题
【发布时间】:2020-03-29 22:02:18
【问题描述】:

所以我尝试自己制作一些仪表板。我在 Excel 中创建了一个销售小数据库(随机数据)。

在那个数据库中,有 2 行包含相同的数据:

所以列 A : clientnr, B : productnr; C:销售量; D:日期。 (列 E 到 H 我通过快速查找来检查为什么 pbi 文件显示不同的总数)

所以客户 296 总共购买了 6 次产品 194(=Mercury sable 2002 muave)。但这在数据库中注册了 2 次(假设他想要 2 张发票?)

每行占 121.25 美元 -> 当天向客户 296 的总销售额为 (121.25 * 2) = 242.50 美元

我检查了一个数据透视表:

现在在 PBI 中(我发现那天的总销售额高于我的枢轴,正好是那个数量)=

我做了一个表格来检查这个,它给出了两倍的金额:所以 484.99 美元

对于该度量“不带光盘的总收入(数量)”,我使用了以下公式:

因此 sumx 应该在总销量(来自销售)和相关销售价格(通过 productkey 链接)之间给出“somproduct”。

产品 194 的销售价格 = 40.42 / 产品

(下面是producttable[Salesprice](从excel打印):

所以 6 次销售 = 242.50 美元,而不是 484.99 美元 PBI 节目。

我认为 SUMX 公式出错是因为 sales 表中的双“相同”行?

如果是这样?为什么以及如何解决这个问题(因为这可能是现实生活中的问题,exe 客户需要 2 张发票或通过 2 个 PO 等订购的订单等)..

感谢您的帮助!

亲切的问候,

【问题讨论】:

  • 请将所有代码以文本形式填写并包含您的措施代码[Total Units Sold](我认为该措施是您的问题)。
  • 嗨,Alexis,感谢您的帮助,因为这是我的第一篇文章,“所有文本形式的代码”是什么意思?
  • 使用 DAX 测量已售总单位数
  • 总销量 = sum(sales[Units Sold])
  • Alexis 的意思是,最好将代码示例为文本而不是图像,更易于复制粘贴。至于您的问题,我认为您的表之间的链接存在错误。请概述表关系。

标签: powerbi dax


【解决方案1】:

我不会详细解释这个问题,请参阅这个答案: https://stackoverflow.com/a/60668597/9614903

你是对的,有两个相同的行导致了问题。 SUMX 生成一个“行上下文”,它通过 CALCULATE 或通过调用度量转换为等效的“过滤器上下文”,它是一个全局过滤器。

由于您在表中没有唯一键,“过滤上下文”匹配多行并计算计算。 这会在样本数据中重复 N 次(因为 SUMX 迭代器)。

返回错误值的度量(在行上下文中计算时)是 [Total Unit Sold],它在每次迭代中返回 6 而不是 3。 您可以使用以下度量来查看它: check = SUMX([Total Unit Sold])

为避免这种情况,您有两种选择:

  1. SUMX 中的参考列(而不是度量) - 它应该返回正确的结果,因为它不会创建上下文转换:Revenue = SUMX(Sales, 'Sales'[QuantityColumn]*RELATED('Product'[售价]))
  2. 添加唯一的行 id - 如果源数据中没有它,可以在 power 查询中生成它(添加列 -> 索引列),这将防止在发生上下文转换。

【讨论】:

  • 嗨乔瓦尼!多谢!我以为是这样的!我会养成在那些“事务”表中添加唯一行 ID 的习惯...
  • 很高兴它有帮助。如果这确实解决了问题,请接受它作为答案
猜你喜欢
  • 1970-01-01
  • 2011-07-13
  • 2012-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多