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

DAX calculate an average of a column when taking cells that contain only numbers

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

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

但它会抛出一个错误:函数 AVERAGE 接受一个计算结果为数字或日期的参数,并且不能使用 String 类型的值。

我想知道是否有一种方法可以避免此错误而无需事先 removing/cleaning NULL 值?

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

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

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

但是,我建议不要在一列中包含文本和数值。使用 Power Query 删除带有 "NULL" 的行,或将它们转换为空白。

最好的方法是将 NULL(字符串)值替换为数据库 null(无)值。这样你的行保持 null 但你的计算仍然有效。

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

现在平均计算很简单:

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