计算 Power BI 中整个表同一行中多列的平均值

问题描述 投票:0回答:1

我想计算每行每天的平均体重增加,并将答案添加到新列中。

计算平均值的变量全部位于同一个表(原始数据)和同一行中,但遍布多个列。(体重是 1,体重是 2)。

并非所有数据都可用。 如何计算 Power Bi 中同一行中多列的平均值?

我已经通过用公式创建以下列解决了这个问题:

跨列总计

Total Across Columns= [Body Weight Yest 1.] + [Body Weight Yest 2.]

非空白列

Non Blank Columns=
IF ( ISBLANK ( [Body Weight Yest 1.] ), 0, 1 )
  + IF ( ISBLANK ( [Body Weight Yest 2.] ), 0, 1 )

每日平均体重。

Body Weight Daily AVG = [Total Across Columns] / [Non Blank Columns]

在 Power Query(Excel 插件)中:

=IFERROR(AVERAGEIF(Raw Data[@[ Body Weight Yest. 1]:[ Body Weight Yest. 2]];"<>");"")

我想知道是否有更简单/更好的解决方案?

powerbi average calculated-columns
1个回答
0
投票

如果你可以重构你的模型,我会采取的方法是使用 M:

 中的 
Table.Unpivot

来逆透视你的数据
let
  <your existing query>,
  Unpivoted = 
    Table.Unpivot(
      <your prior last step>,
      {"Body Weight Yest 1", "Body Weight Yes 2"},
      "Measurement",
      "Value")
  RemoveNulls = Table.SelectRows(Unpivoted, each [Value] <> null)
in
  RemoveNulls

这会将您的多列变成行。列标题现在是新列 [Measurement] 中的值,各个列中的值现在都在新列 [Value] 中,并且在 [Measurement] 列中具有适当的标签。

现在,您可以按如下方式定义平均值:

Total body weight = SUM ( 'Raw Data'[Value] )
Measurement count = DISTINCTCOUNT ( 'Raw Data'[Measurement] )
Average measurement = DIVIDE ( [Total body weight], [Measurement count] )

总的来说,逆透视是一种非常强大的转换,对于帮助 DAX 变得更高效、更容易编写非常有用。高桌子就是好桌子。

© www.soinside.com 2019 - 2024. All rights reserved.