You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何BigQuery ML的TRANSFORM子句不支持ML.NGRAM函数?

BigQuery ML TRANSFORM子句不支持ML.NGRAM的原因解析

在BigQuery中创建模型时,使用TRANSFORM子句调用ML.NGRAM函数会触发报错,提示该函数不被支持,但相同的函数(或ML.NGRAMS)在普通SELECT查询中可正常运行;同时bag_of_words、min_abs_scalar等转换函数却能在TRANSFORM子句中正常使用。以下是差异原因及相关说明:

报错的模型创建SQL

CREATE OR REPLACE MODEL
`singular-hub-291814.movie_sentiment.mymodel3`
TRANSFORM(ML.NGRAM(string_field_0,[1,2])OVER() as ngram )
OPTIONS
  ( model_type='LOGISTIC_REG',
    auto_class_weights=TRUE,
    data_split_method='RANDOM',
    DATA_SPLIT_EVAL_FRACTION = .10,
    input_label_cols=['review']
  ) AS

SELECT 
  string_field_0 , review from table;

可正常运行的SELECT查询SQL

SELECT 
  ML.NGRAMS(words_array, [1,2]) as ngrams, 
  review
from table;

差异原因说明

  • TRANSFORM子句的核心约束:BigQuery ML的TRANSFORM子句要求内部使用的转换函数必须是可序列化、能在训练和预测阶段复用的确定性转换。ML.NGRAM属于文本特征生成类函数,它的计算依赖全量数据集的统计信息(如全局词频分布),无法在单条数据层面独立完成转换,不符合TRANSFORM对“逐行独立转换”的要求。而bag_of_words、min_abs_scalar这类函数,要么是基于单条数据的规则转换,要么是能在训练阶段拟合参数并固化到模型中,因此可以被TRANSFORM支持。
  • 运行逻辑的本质区别:普通SELECT查询中的ML.NGRAMS是在查询执行阶段一次性计算全量数据的n-gram特征,无需考虑后续预测阶段的复用;但TRANSFORM子句中的转换会被嵌入到模型的推理流程中,要求在预测新数据时能独立完成转换,ML.NGRAM无法满足这个复用性要求。
  • 官方支持范围:BigQuery官方没有明确列出TRANSFORM子句的禁用转换器列表,但文档中明确说明,TRANSFORM仅支持BigQuery ML内置的可训练转换函数和部分确定性的标量/聚合转换函数。ML.NGRAM不属于这个范畴,因此被限制使用。

内容的提问来源于stack exchange,提问作者Chhavi Bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 04:35:15