当前位置:   article > 正文

HiveSql一天一个小技巧:如何不借助其他任何外表,产生连续数值_hive生成连续数字

hive生成连续数字

目录

0 需求描述

1 问题分析

2 小结


0 需求描述

输出结果如下所示:
1
2
3
4
5
...
100

1 问题分析

方法一起始值(start)+步长(diff)=结束值(end)

select split(space(5), ' ')

  1. +----------------------+
  2. | _c0 |
  3. +----------------------+
  4. | ["","","","","",""] |
  5. +----------------------+

select posexplode(split(space(5), ' '))

  1. +------+------+
  2. | pos | val |
  3. +------+------+
  4. | 0 | |
  5. | 1 | |
  6. | 2 | |
  7. | 3 | |
  8. | 4 | |
  9. | 5 | |
  10. +------+------+
  1. select
  2. id_start+pos as id
  3. from(
  4. select
  5. 1 as id_start,
  6. 100 as id_end
  7. ) m lateral view posexplode(split(space(id_end-id_start), ' ')) t as pos, val

方法2:利用row_number() over()生成id序列

  1. select
  2. row_number() over() as id
  3. from
  4. ( select explode(split(space(99), ' '))) t ;

2 小结

本问题解决主要用到:posexplode()或row_number()函数,row_number() over()可生成整表的id。

 欢迎关注石榴姐公众号"我的SQL呀",关注我不迷路

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/656506
推荐阅读
相关标签
  

闽ICP备14008679号