【问题标题】:Calculated field totals not correct in PowerPivotPowerPivot 中的计算字段总计不正确
【发布时间】:2014-01-08 08:09:01
【问题描述】:

我有一个包含大量切片器的基本数据集,大致如下所示:

       Hours    SpreadPerHr      Spread
       5.00        5.00          25.00
       10.00       2.00          20.00
       8.00       10.00          80.00

Spread 是一个计算值,其中 Spread = Hours*SpreadPerHour。问题是,这些列的总数也遵循这个公式,所以看起来像这样:

       Hours    SpreadPerHr      Spread
       5.00        5.00          25.00
       10.00       2.00          20.00
       8.00       10.00          80.00
Total: 23.00      17.00         391.00

虽然总小时数还不错,但 SpreadPerHour 是动态的,Spread 也是如此。说 Total Spread = Total Hours * Total SpreadPerHour 是不正确的。总计应该是:

Total: 23.00      17.00         125.00 

有没有一种方法可以按原样制作 Excel 休假总数,但对Spread 列求和而不是乘以总数?

【问题讨论】:

    标签: excel powerpivot


    【解决方案1】:

    以下是我认为您的 Power Pivot 模型中的内容:

    您有一个已计算的Spread 度量,我将其标记为SpreadCalc1。这样做的问题是它在进行乘法之前进行了聚合。您需要逐行完成此操作,然后进行聚合。因此,您需要创建一个计算列,然后对该列求和,而不是计算度量。

    我标记为SpreadCalc具有公式=[Hours] * [SpreadPerHr]。 我称为Spread 的计算度量只是Sum([SpreadCalc])。您可以在那里看到总数是 125,而不是 391。

    【讨论】:

    • 这看起来不错,但我不明白其中的区别。我的点差(即 [小时]*[SpreadPerHr])本身就是一个计算量度,它不存在于原始数据中,它是我在 PowerPivot 中创建的一个字段。我可以为 sum([Spread]) 创建一个新度量,但它会出错。我错过了什么吗?
    • 扩展字段不在我的原始数据集中。您必须在 Power Pivot 表中添加计算字段,而不是作为计算度量,而是作为 calculated column。然后更改您的计算度量以对新列求和,它将起作用。这是good article,关于何时使用计算列与计算度量。
    • 啊,谢谢!这真的很清楚了。感谢您的帮助!
    【解决方案2】:

    我知道现在这可能有点多余,但我建议采用稍微不同的方法。

    在“小”表中添加计算列是可以的,但它可能会导致大型数据库出现严重的性能问题。

    所以要解决你的问题,我相信“正确”的方法是使用SUMX函数。

    它专门为每一行计算表达式,这正是您所需要的。就性能而言,它非常智能(无需添加计算列或执行任何源数据操作)。

    如果你使用这个公式(更正表格/度量的名称),你应该得到想要的结果:

    SUMX(YourTable, [Sum Hour] * [Sum SpreadPerHr])
    

    【讨论】:

    • 我通常读到你想avoid SUMX 因为性能问题,但this blog post 似乎证实了你所说的简单计算。感谢您指出了这一点。我认为在这种情况下,性能差异可以忽略不计,但我很欣赏新知识。
    • 感谢您的文章,将看看它们。
    • 这也很有效。这似乎也更简单一些。感谢您的意见!
    猜你喜欢
    • 1970-01-01
    • 2018-02-12
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2021-10-19
    • 1970-01-01
    相关资源
    最近更新 更多