首页 > 解决方案 > 将逗号分隔值拆分为多列

问题描述

我正在尝试使用 SQL 将逗号分隔的列拆分为多个列,以便每个分隔值都位于 Snowflake 上它自己的列下

这是我的桌子的样本

"2015-01-01","00:52:44",161144,"3.1.0","x86_64","mingw32","Formula","1.1-2","US",1

这是我尝试过的:

SELECT * FROM "TUTORIAL"."PUBLIC"."CRAN_LOGS" STRING_SPLIT('date','time','size','r_version','r_arch','r_os','package','version','country','ip_id',';')

这给了我错误消息:

SQL 编译错误:第 1 行的语法错误,位置 59 出乎意料的“日期”。位置 149 处的语法错误第 1 行意外 ')'。

标签: sqlcsvsnowflake-cloud-data-platform

解决方案


您正在寻找split_part

SPLIT_PART(<string>, <delimiter>, <partNumber>)

不过,请注意列名。其中一些可能是 SQL 中的保留关键字,可能会引发错误

with your_table as 
(select 'date,time,size,r_version,r_arch,r_os,package,version,country,ip_id' as col)

select split_part(col,',',1) as date,
       split_part(col,',',2) as time,
       split_part(col,',',3) as size,
       split_part(col,',',4) as r_version,
       split_part(col,',',5) as r_arch,
       split_part(col,',',6) as r_os,
       split_part(col,',',7) as package,
       split_part(col,',',8) as version,
       split_part(col,',',9) as country,
       split_part(col,',',10) as ip_id
from your_table;

推荐阅读