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

Snowflake CSV加载报错:未知自定义函数T.TRY_TO_DECIMAL

Snowflake CSV数据复制时TRY_TO_DECIMAL函数报错修复

加载CSV文件至临时表后,复制数据到最终表时出现小数类型被截断的情况。为解决该问题,编写了新的复制流程,尝试用TRY_TO_DECIMAL转换部分字段数据类型,却触发错误:Unknown user-defined function T.TRY_TO_DECIMAL

错误代码如下:

use warehouse P_TEMP_WH;
alter warehouse P_TEMP_WH resume;

-- 查询暂存数据文件
select t.$1,t.$2,t.$3,t.$4,t.$5,t.$6,t.$7,t.$8,t.$9,t.$10,t.$11,t.$12,t.$13,t.$14,t.$15,t.$16,t.$17,t.$18,t.$19,t.$20,t.$21,t.$22,t.$23,t.$24,t.$25,t.$26,t.$27,t.$28,t.$29,t.$30  from @%players t;

-- 将暂存CSV列数据转换为指定数据类型后加载至目标表
copy into PLAYERS(rk,
player,
pos,
age,
team,
games,
games_started,
minutes_played,
field_goals,
field_goals_attempted,
field_goal_percentage,
threes,
three_points_attempted,
three_point_percentage,
two_pointers,
two_pointers_attempted,
two_point_percentage,
effective_field_goal_percentage,
free_throws,
free_throws_attempted,
free_throw_percentage,
offensive_rebounds,
defensive_rebounds,
total_rebound_percentage,
assists,
steals,
blocks,
turnovers,
fouls,
points)
from (
select t.$1,t.$2,t.$3,t.$4,t.$5,t.$6 ,t.$7,t.$8,t.$9,TRY_TO_DECIMAL(t.$10, '99.9', 9, 5),TRY_TO_DECIMAL(t.$11, '99.9',9,5),TRY_TO_DECIMAL(t.$12, '99.9', 9, 5),TRY_TO_DECIMAL(t.$13, '99.9', 9, 5),TRY_TO_DECIMAL(t.$14, '99.9', 9, 5),TRY_TO_DECIMAL(t.$15, '99.9', 9, 5),TRY_TO_DECIMAL(t.$16, '99.9', 9, 5),TRY_TO_DECIMAL(t.$17, '99.9', 9, 5),TRY_TO_DECIMAL(t.$18, '99.9', 9, 5),TRY_TO_DECIMAL(t.$19, '99.9', 9, 5),TRY_TO_DECIMAL(t.$20, '99.9', 9, 5),TRY_TO_DECIMAL(t.$21, '99.9', 9, 5),t.TRY_TO_DECIMAL($22, '99.9', 9, 5),TRY_TO_DECIMAL(t.$23, '99.9', 9, 5),TRY_TO_DECIMAL(t.$24, '99.9', 9, 5),TRY_TO_DECIMAL(t.$25, '99.9', 9, 5),TRY_TO_DECIMAL(t.$26, '99.9', 9, 5),TRY_TO_DECIMAL(t.$27, '99.9', 9, 5),TRY_TO_DECIMAL(t.$28, '99.9', 9, 5),TRY_TO_DECIMAL(t.$29, '99.9', 9, 5),TRY_TO_DECIMAL(t.$30, '99.9', 9, 5)
from @%players t
)

错误原因

TRY_TO_DECIMAL是Snowflake系统内置函数,不属于表别名t的成员函数。代码中错误地写成了t.TRY_TO_DECIMAL($22, ...),正确写法应为TRY_TO_DECIMAL(t.$22, ...)。

修正后的代码

use warehouse P_TEMP_WH;
alter warehouse P_TEMP_WH resume;

-- 查询暂存数据文件
select t.$1,t.$2,t.$3,t.$4,t.$5,t.$6,t.$7,t.$8,t.$9,t.$10,t.$11,t.$12,t.$13,t.$14,t.$15,t.$16,t.$17,t.$18,t.$19,t.$20,t.$21,t.$22,t.$23,t.$24,t.$25,t.$26,t.$27,t.$28,t.$29,t.$30  from @%players t;

-- 将暂存CSV列数据转换为指定数据类型后加载至目标表
copy into PLAYERS(rk,
player,
pos,
age,
team,
games,
games_started,
minutes_played,
field_goals,
field_goals_attempted,
field_goal_percentage,
threes,
three_points_attempted,
three_point_percentage,
two_pointers,
two_pointers_attempted,
two_point_percentage,
effective_field_goal_percentage,
free_throws,
free_throws_attempted,
free_throw_percentage,
offensive_rebounds,
defensive_rebounds,
total_rebound_percentage,
assists,
steals,
blocks,
turnovers,
fouls,
points)
from (
select t.$1,t.$2,t.$3,t.$4,t.$5,t.$6 ,t.$7,t.$8,t.$9,TRY_TO_DECIMAL(t.$10, '99.9', 9, 5),TRY_TO_DECIMAL(t.$11, '99.9',9,5),TRY_TO_DECIMAL(t.$12, '99.9', 9, 5),TRY_TO_DECIMAL(t.$13, '99.9', 9, 5),TRY_TO_DECIMAL(t.$14, '99.9', 9, 5),TRY_TO_DECIMAL(t.$15, '99.9', 9, 5),TRY_TO_DECIMAL(t.$16, '99.9', 9, 5),TRY_TO_DECIMAL(t.$17, '99.9', 9, 5),TRY_TO_DECIMAL(t.$18, '99.9', 9, 5),TRY_TO_DECIMAL(t.$19, '99.9', 9, 5),TRY_TO_DECIMAL(t.$20, '99.9', 9, 5),TRY_TO_DECIMAL(t.$21, '99.9', 9, 5),TRY_TO_DECIMAL(t.$22, '99.9', 9, 5),TRY_TO_DECIMAL(t.$23, '99.9', 9, 5),TRY_TO_DECIMAL(t.$24, '99.9', 9, 5),TRY_TO_DECIMAL(t.$25, '99.9', 9, 5),TRY_TO_DECIMAL(t.$26, '99.9', 9, 5),TRY_TO_DECIMAL(t.$27, '99.9', 9, 5),TRY_TO_DECIMAL(t.$28, '99.9', 9, 5),TRY_TO_DECIMAL(t.$29, '99.9', 9, 5),TRY_TO_DECIMAL(t.$30, '99.9', 9, 5)
from @%players t
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:01:38