greenplum STRING_AGG 函数转换为 hiveSQL

greenplum STRING_AGG functions convert to hiveSQL

我们必须将 greenplum sql 迁移到 hivesql 并且下面的查询不支持 string_agg 关键字。请帮助我们。

select data_date, subscriber_id, msisdn, product, validity,
    STRING_AGG(d0,'xx') d0, STRING_AGG(d1,'') d1, STRING_AGG(d2,'') d2, STRING_AGG(d3,'') d3, STRING_AGG(d4,'') d4,
    STRING_AGG(d5,'') d5, STRING_AGG(d6,'') d6, STRING_AGG(d7,'') d7, STRING_AGG(d8,'') d8, STRING_AGG(d9,'') d9, STRING_AGG(d10,'') d10,
    STRING_AGG(d11,'') d11
from tmp_subscription_base_02
group by 1,2,3,4,5

string_agg 在 hivesQL 中不支持。

string_agg(expression, delimiter)聚合函数在Hive中可以替换为

concat_ws(delimiter,collect_list(cast(expression as string))

或者如果您需要连接不同的值:

concat_ws(delimiter,collect_set(cast(expression as string))

注意:如果expression是字符串类型,则cast(expression as string)不是必需的,直接使用expression