为下面的问题编写配置单元查询以打印id值如果id为1则打印id 1次,如果id值为2则打印id 2次,依此类推

9ceoxa92  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(398)

为以下问题编写配置单元查询以打印id值如果id为1则打印id 1次,如果id值为2则打印id 2次,依此类推

  1. Input Table
  2. Id
  3. ---
  4. 1
  5. 2
  6. 3
  7. 4
  8. Output
  9. -------
  10. Id
  11. --
  12. 1
  13. 2
  14. 2
  15. 3
  16. 3
  17. 3
  18. 4
  19. 4
  20. 4
  21. 4
9fkzdhlc

9fkzdhlc1#

使用 space(id-1) 要获取长度为id-1的空格字符串,请拆分字符串并使用侧向视图+ explode 生成行。
演示:

  1. with your_table as (
  2. select stack (4,
  3. 1,
  4. 2,
  5. 3,
  6. 4) as id
  7. )
  8. select t.id
  9. from your_table t
  10. lateral view outer explode(split(space(id-1),' ')) e

结果:

  1. t.id
  2. 1
  3. 2
  4. 2
  5. 3
  6. 3
  7. 3
  8. 4
  9. 4
  10. 4
  11. 4

更多说明: split(space(id-1),' ') -这将生成id-1空间数组 explode() -是一个表生成函数,从数组生成表 lateral view outer 工作方式类似于主表与explode生成的表的左联接。对于每一行,它与explode()的每一行连接,并以这种方式为每一行生成重复项。

展开查看全部

相关问题