ksqlDB技术问询:如何将两个时间戳列间的每日数据拆分为多行?
可以实现,具体方案如下
你可以通过ksqlDB的DATE_SEQUENCE函数生成日期区间内的日期数组,再结合EXPLODE函数拆分数组为多行记录,完全匹配你的需求。
核心SQL语句
CREATE STREAM exploded_dates_stream AS SELECT id, EXPLODE(DATE_SEQUENCE(startDate, endDate)) AS date FROM mystream EMIT CHANGES;
格式转换(可选)
如果需要将date字段转为YYYY-MM-DD格式的字符串,使用DATE_FORMAT函数处理即可:
CREATE STREAM exploded_dates_stream AS SELECT id, DATE_FORMAT(EXPLODE(DATE_SEQUENCE(startDate, endDate)), 'yyyy-MM-dd') AS date FROM mystream EMIT CHANGES;
关键说明
DATE_SEQUENCE(startDate, endDate)会生成从起始日期到结束日期(包含两端)的每日日期数组,默认步长为1天,无需额外配置。EXPLODE函数会将数组中的每个元素拆分为单独的记录,实现一行转多行的效果。- 该方案要求ksqlDB版本≥0.10,因为
DATE_SEQUENCE函数是在这个版本引入的。
内容的提问来源于stack exchange,提问作者faersons
相关产品推荐
相关产品推荐

