本地SQL视图迁移Databricks时string_agg函数转换方法咨询
Databricks SQL 替换 string_agg 函数方案
你用到的string_agg(field_name, ', ')在Databricks SQL中可以直接用array_join + collect_list的组合实现等价转换,写法如下:
array_join(collect_list(field_name), ', ')
collect_list(字段名):将分组内指定字段的所有值按原有顺序收集为数组,保留重复值array_join(数组, 分隔符):将数组内的所有元素用指定分隔符拼接为单个字符串,完全匹配string_agg的输出逻辑
常见扩展场景适配
带排序的拼接
如果原string_agg需要指定拼接顺序,比如原写法为string_agg(field_name, ', ' order by create_time desc),转换后写法为:
array_join(collect_list(field_name order by create_time desc), ', ')
去重拼接
如果需要对拼接的内容自动去重,将collect_list替换为collect_set即可:
array_join(collect_set(field_name), ', ')
完整示例对比
原SQL(支持string_agg的语法):
select user_id, string_agg(order_id, ', ') as order_ids from orders group by user_id
转换后Databricks SQL写法:
select user_id, array_join(collect_list(order_id), ', ') as order_ids from orders group by user_id
内容的提问来源于stack exchange,提问作者JWorrell
相关产品推荐
相关产品推荐

