我正在使用雪花作为数据仓库。我在AWS S3上有一个CSV文件。我正在编写一个合并SQL,以将CSV中接收的数据合并到雪花表中。我在时间维度表中有一列,其数据类型为SF中的Number(38,0)数据类型。该表保存所有日期时间,例如是列 time_id = 232和时间= 12:00 在CSV中,我得到一列标签为时间和值的标签为12:00。
在合并SQL中,我正在获取此值并尝试获取它的time_id。
update table_name set start_time_dim_id = (select time_id from time_dim t where t.time_name = csv_data.start_time_dim_id)
在此语句上,我收到此错误“ SQL编译错误:无法评估不受支持的子查询类型”
我正在努力解决它,在此期间,我用谷歌搜索并得到了一个参考。 https://github.com/snowflakedb/snowflake-connector-python/issues/251 因此,要确定是否有人遇到此问题?如果是,请多多指教。
答案 0 :(得分:0)
似乎是转换问题。我建议您检查CSV文件中的数据。可能有错误或缺失的值。请检查您的数据,并确保其返回数字值
create table simpleone ( id number );
insert into simpleone values ( True );
最后一条语句失败:
SQL compilation error: Expression type does not match column data type, expecting NUMBER(38,0) but got BOOLEAN for column ID
如果您提供示例数据,并且使用SQL产生此错误,也许我们可以提供解决方案。
答案 1 :(得分:0)
不幸的是,雪花中相关和嵌套的子查询在此阶段受到限制。
我会尝试运行以下内容:
update table_name
set start_time_dim_id= time_id
from time_dim
where t.time_name=csv_data.start_time_dim_id