我想知道以下公式有什么问题。
IF [Age] = Null() THEN Average([Age]) ELSE [Age] ENDIF
我正在尝试做什么“如果单元格为空白,则用所有其他单元格的平均值填充单元格,称为 [Age]。
非常感谢大家!
在我们的 ETL 过程中,我们做了很多插补来纠正空值,实际上有两种方法可以完成它。
第一种方式:插补工具。您可以使用准备类别中的“插补”工具。在工具选项中,选择您希望估算的字段,单击“要替换的传入值”上的“Null”单选按钮,然后单击“用值替换”部分中的“Average”单选按钮。直接使用该工具的优点是它比其他方式简单得多。缺点是 1)如果您尝试修复与机器规格相关的大量行,它可能会非常慢(比下一种方法慢得多),以及 2)当我们在没有太多解释的情况下在我们的过程中使用它时偶尔会出错.
第二种方法:计算平均值并使用公式。您还可以使用“转换”类别中的“汇总”工具为每列生成一个平均字段。生成平均值后,使用 Join 类别中的“Append”工具将它们重新加入流中。对于数据库中的每一行,您将拥有相同的平均值。此时,您可以按照您在问题中尝试的方式使用公式工具。例如 IF [Age] = Null() THEN [Ave_Age] ELSE [Age] ENDIF
第二种方法对于超大数据集运行速度明显更快(例如,在超过 7000 万行的几十列中修复可能的空值),但设置起来需要更多时间,并且必须为每一列创建。
这不是 Average 函数的工作方式。您需要将整个值列表传递给它,而不仅仅是一个。