如何在Apache Doris 2.1.7/3.0中从表值生成JSON数组?
在Doris 2.1.7/3.0中生成整列值的JSON数组方法
你当前用SELECT JSON_ARRAY(col) FROM sometable;得到每行一个单值数组是正常的——JSON_ARRAY()是行级函数,仅对当前行的列值生成数组。如果要把整列的所有值合并成一个JSON数组,分版本处理:
Doris 3.0版本
直接使用内置聚合函数JSON_ARRAY_AGG(),它能将整列(或分组后的列)的所有值聚合为一个JSON数组:
-- 生成整列的JSON数组 SELECT JSON_ARRAY_AGG(col) FROM sometable; -- 按指定字段分组生成数组 SELECT group_col, JSON_ARRAY_AGG(col) FROM sometable GROUP BY group_col;
Doris 2.1.7版本
2.1.7未提供JSON_ARRAY_AGG(),可以通过GROUP_CONCAT拼接JSON格式字符串,再转成JSON类型:
-- 处理字符串类型字段(自动添加双引号保证JSON格式合法) SELECT JSON_PARSE(CONCAT('[', GROUP_CONCAT(QUOTE(col)), ']')) FROM sometable; -- 处理数值类型字段(无需加引号) SELECT JSON_PARSE(CONCAT('[', GROUP_CONCAT(col), ']')) FROM sometable; -- 需要去重的场景 SELECT JSON_PARSE(CONCAT('[', GROUP_CONCAT(DISTINCT QUOTE(col)), ']')) FROM sometable;
内容的提问来源于stack exchange,提问作者AlexB
相关产品推荐
相关产品推荐

