让决策更智能
新一代智能数据分析平台

sequence函数的用法和注意事项

观小数发表于:2022年04月18日 19:13:35更新于:2022年04月26日 11:30:39

一、语法:

sequence(start, stop, step)

比如:

> SELECT sequence(1, 5);

 [1,2,3,4,5]

> SELECT sequence(5, 1); 

 [5,4,3,2,1]

> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval 1 month); 

 [2018-01-01,2018-02-01,2018-03-01]

> SELECT sequence(to_date('2018-01-01'), to_date('2018-03-01'), interval '0-1' year to month);

 [2018-01-01,2018-02-01,2018-03-01]

二、具体使用场景及注意事项

1、使用场景:

sequence后面的日期,第一个是开始日期,第二个是结束日期,后面是步长,开始日期在结束日期前面,那么步长就是正数,比如:sequence([开始日期],[结束日期],interval 1 month)

001625d43a6263ab755af266fbf91d6

结果如下:

001625d43f2c68d38f32d03b91899ae

下一步需要用explode函数将日期显示出来:explode([sequence])

001625d442dd7b9f66b4bd5b4e41081

结果如下:

001625d4449aeee1812737bd5e5f55a

二、常见报错及解决方法:

1、步长正负写错了,或者开始日期和结束日期写错了,那么就会出现这种报错:

001625d473a6b2aab71273ccf414bd3

001625d4756ee0c6428d917f3c294a4


2、步长和日期的顺序都是对的,但是就是报错:

这种情况下可能是因为在实际使用过程中,出现了脏数据,使得开始日期和结束日期并不是始终是开始日期小于等于结束日期,会有交叉日期的出现,此时,可能就会报如下的错:

001625d4529338594e7e53b599821af


检查下原数据,发现有一条记录是开始日期大于结束日期的:

001625d4627e2e014ea8a3f4753b92e

解决方法是通过筛选,把脏数据过滤掉:

001625d4683a270e800b5506ab415a1

此时,数据就正常了:

001625d46ac596ad6969546ec241d3b


    您需要登录后才可以回复