如何在Kylin中将子查询结果转为数组?PostgreSQL写法在Kylin报错
Kylin实现子查询结果转数组的方案
你之前使用的PostgreSQL风格ARRAY(子查询)语法在Kylin中不被支持,Kylin基于Calcite SQL语法体系,使用聚合函数实现多值转数组的需求,具体写法如下:
匹配你需求的等价SQL
SELECT COLLECT_LIST(A.ID) FROM A WHERE A.num = 123
补充说明
- 如果你需要对生成的数组元素去重,可以将
COLLECT_LIST替换为COLLECT_SET函数 - 上述两个函数默认在Kylin 4.x及以上版本支持,低版本需要确认项目是否开启了内置聚合函数权限
- 如果需要按维度分组生成对应数组,正常添加
GROUP BY子句即可,示例如下:
-- 按num分组,生成每个num对应的ID数组 SELECT num, COLLECT_LIST(ID) AS id_array FROM A GROUP BY num
内容的提问来源于stack exchange,提问作者Nguyễn Nguyễn Phúc
相关产品推荐
相关产品推荐

