【问题标题】:Aggregate values in different row based on group根据组聚合不同行中的值
【发布时间】:2019-05-15 14:15:24
【问题描述】:

我的目标是根据其他列的组在单个列中聚合值。

例如,我的表格如下所示:

https://imgur.com/YbTFDh2

所需的输出将是这样的:

https://imgur.com/5It0KgW

我可以在同一张表上执行此操作或创建一个新表。

我已经尝试过了:

SUMMARIZECOLUMNS (
    'Sheet1 (2)'[Item],
    'Sheet1 (2)'[Name],
    "Total", SUM([Money])
)

但返回的错误是:*表达式引用了多个列。不能将多列转换为标量值。*z

编辑

最终我的最终目标是创建一个计算列,使用 SWITCH 函数根据一系列范围四舍五入美元。

=SWITCH(TRUE(),[Money] <= 10, 0, [Money] <= 20, 10) 

...类似的东西。

【问题讨论】:

  • Power BI 将根据您为视觉对象选择的维度自动对聚合值进行分组。您无需创建单独的度量即可从屏幕截图中获得所需的输出。
  • 不幸的是,我有一个后续任务是根据输出创建另一个计算列。有没有办法使用summarizecolumns函数实现这个输出?
  • 您能否编辑您的问题以包含有关您进一步计算的列的详细信息?
  • 我已经添加了细节,提前谢谢!
  • 好的。你不需要那些花里胡哨的东西!您只需要一个简单的衡量标准,我将包括在内作为答案。

标签: powerbi dax


【解决方案1】:

最简单的方法是创建一个简单的度量:

Total=SUM([Money])

然后,您可以通过将名称放在轴上来在 Power BI 中查看:

像这样... Table Example

或者这个... Bar Chart Example

在 Excel 中,您可以使用数据透视表来显示相同​​的内容。

【讨论】:

  • 问题是我需要对该总和列执行额外的措施,这不仅仅是可视化的问题。
  • 在这种情况下,我会试试这个... 按名称总计:= SUMX ( SUMMARIZE ( Table1, Table1[Item], Table1[Name], "Total", SUM ( Table1[金钱] ) ), [总计] )
  • 感谢您的建议,不幸的是,这似乎没有按列分组,它只是汇总了表中的所有美元值。
  • 您需要为您选择的任何可视化添加分组。因此,如果您想按项目和名称查看,请将它们添加到表或矩阵中。在 Excel 中,您可以将项目和名称放在数据透视表行中,将总计放在值部分中。在 Power BI 表视觉对象中,您可以将项目、名称和总计添加到值部分。
  • 我看到你为你的问题添加了编辑。如果您想在计算后进行舍入,您可以将 SWITCH 语句更改为引用 Total 度量(而不是 [Money])的度量(非计算列)。
【解决方案2】:

您可以使用以下方法将每个组的总和向下舍入到最接近的 10:

Answer =
FLOOR ( SUM ( 'Sheet1 (2)'[Money] ), 10 )

FLOOR() 将“金钱”列的总和作为第一个参数,将所需的倍数(在本例中为 10)作为第二个参数。 CEILING()MROUND() 可以交替使用,如果你想四舍五入,或者到最接近的值。

编辑:

根据您最近的 cmets,也许这样的事情会更合适:

Answer = 
IF(SUM('Sheet1 (2)'[Money]) < 10, 0,
IF(SUM('Sheet1 (2)'[Money]) < 20, 10,
IF(SUM('Sheet1 (2)'[Money]) < 25, 20, BLANK())))

SWITCH 只能与常量一起使用,因此您需要将一些 IF 语句链接在一起以获得您要查找的内容。

【讨论】:

  • 在这里感谢您对这些功能的建议!我的四舍五入会更严格,通常不会排到第 10 位,所以这就是为什么我只喜欢使用 switch 功能。此外,上面没有根据需要对行进行分组,它只是返回四舍五入的值。
  • 动态分组行,这就是 Power BI 的美妙之处!如果您在“项目”和“名称”的上下文中查看此度量,它将按两者分组。如果您只是在“名称”的上下文中查看它,它将按名称聚合。您无需对特定的分组行为进行“硬编码”即可实现这一特定结果。
  • 您能描述一下您希望如何进行舍入吗?
  • 汇总的美元值将显示为: 0-9$ = 0$ ; 10-19 = 10; 20-24 = 20; 25-39 = 25; >40 = 40....所以真的没有逻辑,不幸的是必须硬编码
  • 尽可能使用度量而不是计算列,否则它会像你所说的那样“双重计算”。
猜你喜欢
  • 2016-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多