“ 不使用任何表,通过hsql直接查询出1-100的数字”
如题,如何使用hive sql生成1-100的数字呢?通常sql主要用来查询和处理数据,题目中要求不借助表,着实是一个有挑战的事情,如何实现呢?我们逐步拆解一下这个问题。
思路分析:如果我们有100行数据,只需要对这些数据进行排序,然后就可以得到目标结果;
如何得到100行数据呢?如果有99个分隔符,我们通过行转列,即可得到对应的数据;
那么这个题目即可转化为生成一个字符串,里面有99个可以作为分隔符的内容。这让我们想到了hive中的space 函数。
语法: space(int n)返回值: string说明:返回长度为n的空格字符串
开始试验
1.测试space函数
select space(10);
2.测试分隔符
select split(space(10),' ');
3.试验生成1-10的数据
select row_number() over() as idfrom(select split(space(9), ' ') as space_list) tlateral view explode(space_list) tt;

4.结论
我们只需要通过把space(9) 改为space(99) 即可完成生成1-100的需求;
原文作者:数据仓库技术;如有侵权,请联系管理员删除。