拆开数据库表某列内容后转成字段

查询 BigQuery 数据库的某张表,结果的第 4 个字段是逗号分隔的字符串。

user_idfst_namelst_nameteam_list
1111DANNYCRUISETEAM34,TEAM12,TEAM4
2222CARLOSSMITHTEAM34,TEAM44,TEAM12
33333SASHACONORTEAM5,TEAM34,TEAM44

用 Java 实现:保留前 3 个字段,把第 4 个字段的所有内容拆分去重,作为第 4-N 个字段名,内容填 0/1 表示本行原来是否包含该值。结果存为 csv 文件。

user_id,fst_name,lst_name,TEAM34,TEAM12,TEAM4,TEAM44,TEAM5

1111,DANNY,CRUISE,1,1,1,0,0

2222,CARLOS,SMITH,1,1,0,1,0

33333,SASHA,CONOR,1,0,0,1,1

编写SPL代码:

A
1=bigqry1.query("select user_id,fst_name,lst_name,team_list from data where p=1")
2=A1.news(team_list.split@c();user_id,fst_name,lst_name,~)
3=A2.pivot@s(#1,#2,#3; #4,if(#4,1,0))
4=T("d:/result.csv":A3)

A1:通过 JDBC 查询数据库。

A2:将第 4 列拆成多项,每项生成一条记录,~ 表示当前项。

A3:行转列,其中前 3 列保留,第 4 列的内容转为新字段名,如果包含第 4 列则新内容填 1,否则填 0。

A4:将计算结果写入 csv。

Java 集成 SPL 可参考 Java 如何调用 SPL 脚本

SPL开源地址

SPL免费下载地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值