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

BigQuery合并表时遇DBT错误:Invalid NUMERIC value: nan 求助

BigQuery合并表时Invalid NUMERIC value: nan错误排查方案

错误信息

Database Error in model fact_trips (models/core/fact_trips.sql)
Invalid NUMERIC value: nan
compiled Code at target/run/taxi_rides_ny/models/core/fact_trips.sql

问题背景

已通过dbt_expectations.expect_column_values_to_be_of_type校验所有数值列,校验均通过;数值列存在NULL值,明确NULL与NaN并非同一概念,需定位具体含无效值的列并修复。

排查及修复步骤

  • 逐个排查数值列的NaN值
    针对每个NUMERIC类型的列,执行以下查询统计NaN数量:

    SELECT COUNT(*) AS nan_count
    FROM [你的源表名]
    WHERE [目标数值列名] = CAST('nan' AS FLOAT64)
    

    BigQuery中NaN属于FLOAT64类型的特殊值,无法直接转为NUMERIC,通过此查询可快速定位存在NaN的列。

  • 检查模型中的类型转换逻辑
    查看fact_trips.sql里是否存在将FLOAT64类型字段转为NUMERIC的操作(如CAST(xxx AS NUMERIC)),若原字段包含NaN,转换会直接报错。可提前过滤或替换NaN:

    CAST(IF(your_float_column IS NOT NULL AND your_float_column != CAST('nan' AS FLOAT64), your_float_column, NULL) AS NUMERIC)
    
  • 用SAFE_CAST辅助定位
    将模型中所有CAST替换为SAFE_CAST,运行模型后查看哪些字段出现了异常NULL值(原本应存在有效数值的记录),这些字段即为包含NaN的目标列。

补充说明

确实,NULL表示缺失值,NaN是浮点类型的特殊非数值,BigQuery的NUMERIC类型不支持存储NaN,因此当数据中存在NaN并尝试转为NUMERIC时会触发该错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 07:50:17