DAX计算仅包含数字的单元格时的列平均值

时间:2019-11-25 22:12:11

标签: excel dax powerpivot

使用PowerPivot功能创建度量。
列中有两种类型的值:整数和NULL(字符串)。
试图弄清楚如何创建DAX公式以计算仅取包含整数的单元格的列的平均值。
感觉下一个基本公式会起作用:

=CALCULATE ( 
        AVERAGE ( tData[columnA]),
        FILTER (    tData, [columnA] <> "NULL" )
               )

但会引发错误:函数AVERAGE带有一个参数,其结果为数字或日期,并且不能与String类型的值一起使用。

我想知道是否有一种避免这种错误的方法,而无需事先删除/清除NULL值?

2 个答案:

答案 0 :(得分:1)

如果您将NULL(字符串)值替换为数据库null(什么都没有)值,这是最好的方法。这样,您的行将保留在null,但您的计算仍然有效。

转到Edit Queries > Transform > Repalce Values并将字符串NULL替换为数据库null。然后您的表将如下所示:

enter image description here

现在平均计算很简单:

enter image description here

数据库null的值在每次计算中都会被忽略。这是它的工作方式。

答案 1 :(得分:0)

Power BI表不能在单个列中包含混合类型的值。如果一列中有数字和文本,则列类型为文本。列中包含的数字值实际上不是数字,它们只是由数字字符组成的文本。

因此,为了使其起作用,您需要将数字字符串显式转换为实数。

= CALCULATE(
    AVERAGEX( tData[columnA], VALUE(tData[columnA]) ),
    tData[columnA] <> "NULL"
)

但是,我建议不要在一列中包含文本和数字值。使用Power Query删除带有“ NULL”的行,或将其转换为BLANK。

相关问题