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

执行BigQuery ML.GENERATE_EMBEDDING时遇content列缺失错误求助

解决ML.GENERATE_EMBEDDING报错:缺少content列

错误原因

报错信息明确指出ML.GENERATE_EMBEDDING要求输入表必须包含名为content的STRING类型列,但你创建的image_object_table仅存储了GCS对象的元数据(uri、generation等),并没有这个关键列。

解决方法

修改查询语句,在传入ML.GENERATE_EMBEDDING前构造包含content列的子查询,通过FILE_CONTENTS读取GCS图片内容并转为BASE64字符串(满足STRING类型要求):

create or replace table `my_project_ID.my_dataset_ID.image_embeddings` as (
  select *,
  regexp_extract(uri,r'[^/]+$') as obj_name,
  regexp_replace(regexp_extract(uri,r'[^/]+$'),r'\.jpg$','') as sku_id,
  '' as product_name
  from ML.GENERATE_EMBEDDING(
    MODEL `my_project_ID.my_dataset_ID.embedding_model`,
    (
      SELECT 
        uri,
        TO_BASE64(FILE_CONTENTS(uri)) AS content
      FROM `my_project_ID.my_dataset_ID.image_object_table`
    )
  )
);

关键说明

  • FILE_CONTENTS(uri):从指定GCS uri读取图片的二进制内容,返回BYTES类型。
  • TO_BASE64():将二进制内容转换为STRING类型的BASE64编码,完全符合ML.GENERATE_EMBEDDING对content列的类型要求。
  • 需确保BigQuery服务账号拥有目标GCS存储桶my_images_bucket_ID的读取权限,否则FILE_CONTENTS会触发权限错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 06:47:33