我想计算每行每天的平均体重增加,并将答案添加到新列中。
计算平均值的变量全部位于同一个表(原始数据)和同一行中,但遍布多个列。(体重是 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]];"<>");"")
我想知道是否有更简单/更好的解决方案?
如果你可以重构你的模型,我会采取的方法是使用 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 变得更高效、更容易编写非常有用。高桌子就是好桌子。