Snowflake中VARIANT字段C29转数值时‘dat’识别失败异常
问题:Snowflake中VARIANT字段转数值时出现"dat"未识别错误
我有一张基础表EXTRACT_TABLE,用来存储通过COPY INTO加载的多表数据,通过TABLE_NAME字段区分不同表的数据。加载时用OBJECT_CONSTRUCT("C1",$1,"C2",$2.....C300,$300)将CSV文件转换为JSON格式存入表中。后续会把数据拆分到各个扁平化表,并进行列的类型转换。
最近多个表的SQL突然失败,仅在将C29字段转换为数值/时间戳时,出现「‘dat’未识别」的错误。
奇怪的现象
- 查询原始值仅返回有效值:
select DISTINCT VARIANT_COL:C29 FROM EXRACT_TABLE WHERE TABLE_NAME='TABLEA' -- 结果:所有值都是有效的数值
- 直接转换数值时失败:
select DISTINCT VARIANT_COL:C29::number FROM EXRACT_TABLE WHERE TABLE_NAME='TABLEA' -- 报错:Numeric value 'dat' is not recognized
测试验证结果
- 过滤掉'dat'后转换正常:
select DISTINCT VARIANT_COL:C29::number FROM EXRACT_TABLE WHERE TABLE_NAME='TABLEA' AND VARIANT_COL:C29<>'dat' -- 执行成功
- 筛选'dat'时无结果但执行正常:
select DISTINCT VARIANT_COL:C29::number FROM EXRACT_TABLE WHERE TABLE_NAME='TABLEA' AND VARIANT_COL:C29='dat' -- 执行成功,但无返回记录
- 先去重再转换正常:
select TO_NUMBER(COL1) FROM ( select DISTINCT VARIANT_COL:C29 as col1 FROM EXRACT_TABLE WHERE TABLE_NAME='TABLEA' ) -- 执行成功
所有出现失败的表都存在C29字段的类似问题,但该字段的去重值均为有效值。有没有人遇到过类似的「dat」相关问题?
内容的提问来源于stack exchange,提问作者Ankit Srivastava
相关产品推荐
相关产品推荐

