在Presto SQL中优雅生成URL主机子串列的方法咨询
优雅实现Presto SQL中按part拼接后续所有部分的subset列
不需要提前查询最大拆分part数,直接通过窗口函数结合字符串聚合函数就能实现需求,具体实现如下:
核心SQL语句
SELECT host, part, n, array_join( collect_list(part) OVER ( PARTITION BY host ORDER BY n ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING ), '.' ) AS subset FROM your_table_name
逻辑说明
PARTITION BY host:按主机分组,确保每个host的拆分part独立处理ORDER BY n:按拆分后的序号排序,保证part的拼接顺序和原主机结构一致ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING:锁定当前行到该组最后一行的所有part数据collect_list(part):将范围内的part收集为数组,array_join(..., '.')用点号将数组元素拼接成完整的域名片段
这个方法自动适配不同host的拆分part数量,无需预先获取最大part数,完全替代繁琐的逐窗口列创建方式。
内容的提问来源于stack exchange,提问作者broti
相关产品推荐
相关产品推荐

