ML.TRANSFORM 函数

本文档介绍了可用于预处理特征数据的 ML.TRANSFORM 函数。此函数通过应用现有模型的 TRANSFORM 子句中捕获的数据转换来处理输入数据。模型训练期间针对数据转换计算的统计信息应用于函数的输入数据。

如需详细了解哪些模型支持特征预处理,请参阅每个模型的端到端用户体验历程

语法

ML.TRANSFORM(
  MODEL `project_id.dataset.model`,
  { TABLE `project_id.dataset.table` | (query_statement) }
)

参数

ML.TRANSFORM 接受以下参数:

  • project_id:您的项目 ID。
  • datasetSTRING 值,指定包含模型的 BigQuery 数据集。
  • model:模型的名称。模型必须是使用 CREATE MODEL 语句创建的,而该语句包含 TRANSFORM 子句以手动预处理特征数据。您可以通过使用 bq show 命令查看模型的元数据,来检查模型是否使用 TRANSFORM 子句。 如果模型是使用 TRANSFORM 子句训练的,则模型元数据包含有关转换列的部分。如果您指定的模型不是使用 TRANSFORM 子句训练的,则该函数会返回错误。
  • table:包含要预处理的特征数据的输入表的名称。

    如果指定了 table,则表中的输入列名称必须与模型 TRANSFORM 子句中的输入列名称匹配,并且根据 BigQuery 隐式强制转换规则,它们的类型应兼容。 您可以从模型的元数据中有关特征列的部分获取输入列名称和数据类型。

  • query_statement:生成要预处理的特征数据的查询。如需了解 query_statement 子句支持的 SQL 语法,请参阅 GoogleSQL 查询语法

    如果指定了 query_statement,则查询中的输入列名称必须与模型 TRANSFORM 子句中的输入列名称匹配,并且根据 BigQuery 隐式强制转换规则,它们的类型应兼容。 您可以从模型的元数据中有关特征列的部分获取输入列名称和数据类型。

输出

ML.TRANSFORM 会返回在模型 TRANSFORM 子句中指定的列。

示例

以下示例返回的特征数据已使用默认项目中名为 mydataset.mymodel 的模型中包含的 TRANSFORM 子句进行了预处理。

创建包含 TRANSFORM 子句的模型:

CREATE OR REPLACE MODEL `mydataset.mymodel`
  TRANSFORM(
    species,
    island,
    ML.MAX_ABS_SCALER(culmen_length_mm) OVER () AS culmen_length_mm,
    ML.MAX_ABS_SCALER(flipper_length_mm) OVER () AS flipper_length_mm,
    sex,
    body_mass_g)
  OPTIONS (
    model_type = 'linear_reg',
    input_label_cols = ['body_mass_g'])
AS (
  SELECT *
  FROM `bigquery-public-data.ml_datasets.penguins`
  WHERE body_mass_g IS NOT NULL
);

返回由模型 TRANSFORM 子句预处理的特征数据:

SELECT
  *
FROM
  ML.TRANSFORM(
    MODEL `mydataset.mymodel`,
    TABLE `bigquery-public-data.ml_datasets.penguins`);

结果类似于以下内容:

+-------------------------------------+--------+---------------------+---------------------+--------+-----------------+-------------+
| species                             | island | culmen_length_mm    | flipper_length_mm   | sex    | culmen_depth_mm | body_mass_g |
--------------------------------------+--------+ ------------------- +---------------------+--------+-----------------+-------------+
| Adelie Penguin (Pygoscelis adeliae) | Dream  | 0.61409395973154368 | 0.79653679653679654 | Female | 18.4            | 3475.0      |
| Adelie Penguin (Pygoscelis adeliae) | Dream  | 0.66778523489932884 | 0.79653679653679654 | Male   | 19.1            | 4650.0      |
+-------------------------------------+--------+---------------------+---------------------+--------+-----------------+-------------+

后续步骤