目录
0 需求描述
输出结果如下所示:
1
2
3
4
5
...
100
1 问题分析
方法一:起始值(start)+步长(diff)=结束值(end)
select split(space(5), ' ')
+----------------------+
| _c0 |
+----------------------+
| ["","","","","",""] |
+----------------------+
select posexplode(split(space(5), ' '))
+------+------+
| pos | val |
+------+------+
| 0 | |
| 1 | |
| 2 | |
| 3 | |
| 4 | |
| 5 | |
+------+------+
select
id_start+pos as id
from(
select
1 as id_start,
100 as id_end
) m lateral view posexplode(split(space(id_end-id_start), ' ')) t as pos, val
方法2:利用row_number() over()生成id序列
select
row_number() over() as id
from
( select explode(split(space(99), ' '))) t ;
2 小结
本问题解决主要用到:posexplode()或row_number()函数,row_number() over()可生成整表的id。