clickhouse应用- 实现spark/hive的collect_list/collect_set

1、先通过concat函数人肉拼接json字符串

2、再通过group分组,用groupArray计算出Array(String)(如:['{"enrollment_year_grade_name": "2021级二年级", "avg_value": "0.00"}','{"enrollment_year_grade_name": "2022级二年级", "avg_value": "0.00"}']),

再用arrayStringConcat转换成String(如:{"enrollment_year_grade_name": "2021级二年级", "avg_value": "0.00"},{"enrollment_year_grade_name": "2022级二年级", "avg_value": "0.00"})

最后用cancat拼接成json字符串

select school_id,school_name,
concat('[',arrayStringConcat(arrayDistinct(groupArray(avg_value_json)),','),']') avg_value_json_array
from(select 
	tenant_id school_id,tenant_name school_name,enrollment_year,
	concat('{"enrollment_year_grade_name": "', concat(toString(enrollment_year),'级',grade_name), '", "avg_value": "',  toString(avg_value), '"}') avg_value_json
	from tab
	order by enrollment_year
)
group by school_id,school_name

其中,添加arrayDistinct函数实现spark/hive的collect_set

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值