ML.IMPUTER 函数

本文档介绍 ML.IMPUTER 函数,此函数可让您替换字符串或数值表达式中的 NULL 值。对于字符串表达式,您可以将 NULL 值替换为最常用的值;对于数字表达式,可以替换为平均值中位值

TRANSFORM 子句中使用时,在训练期间计算的平均值、中间值和最常用的值会自动用于预测。

语法

ML.IMPUTER(expression, strategy) OVER()

参数

ML.IMPUTER 接受以下参数:

  • expression:要插补的数值表达式或 STRING 表达式。
  • strategy:指定如何替换 NULL 值的 STRING 值。有效值如下所示:
    • meanexpression 的平均值。此值只能用于数值表达式。
    • medianexpression 的中位值。此值只能用于数值表达式。
    • most_frequentexpression 中最常用的值。

输出

ML.IMPUTER 返回 FLOAT64(对于数值表达式)或 STRING(对于字符串表达式)值,其中包含 NULL 值的替换值。

示例

示例 1

以下示例插补数值表达式:

SELECT f, ML.IMPUTER(f, 'mean') OVER () AS output
FROM
  UNNEST([NULL, -3, -3, -3, 1, 2, 3, 4, 5]) AS f
ORDER BY f;

输出类似于以下内容:

+------+--------+
|  f   | output |
+------+--------+
| NULL |   0.75 |
|   -3 |   -3.0 |
|   -3 |   -3.0 |
|   -3 |   -3.0 |
|    1 |    1.0 |
|    2 |    2.0 |
|    3 |    3.0 |
|    4 |    4.0 |
|    5 |    5.0 |
+------+--------+

示例 2

以下示例插补字符串表达式:

SELECT f, ML.IMPUTER(f, 'most_frequent') OVER () AS output
FROM
  UNNEST([NULL, NULL, NULL, NULL, 'a', 'a', 'b', 'b', 'c', 'c', 'c']) AS f
ORDER BY f;

输出类似于以下内容:

+------+--------+
|  f   | output |
+------+--------+
| NULL | c      |
| NULL | c      |
| NULL | c      |
| NULL | c      |
| a    | a      |
| a    | a      |
| b    | b      |
| b    | b      |
| c    | c      |
| c    | c      |
| c    | c      |
+------+--------+

后续步骤