是否有可能取消组合在蜂房数据集?我不相信您可以将侧面视图爆炸成整数。
当前表:
(".[>].*?")|<i3dMapping id=(?P<name>".*?") node=(".[>].*?")
(".[>].*?")|<i3dMapping id=(?P<name>".*?") node=(".[>].*?")\=1
结果表:
event count
A 3
B 2
计数列显然对结果并不重要。
答案 0 :(得分:1)
使用space()
函数,您可以将count
转换为length = count-1的空格字符串,然后使用split()
将其转换为数组,并使用{{ 1}}生成行。
只需将我演示中的explode()
子查询替换为表格即可。
演示:
lateral view
结果:
a
答案 1 :(得分:0)
一个选择是创建一个号码表,并使用它进行解聚。
--create numbers table
create table if not exists dbname.numbers
location 'some_hdfs_location' as
select stack(5,1,2,3,4,5) t as num --increase the number of values as needed
--Disaggregation
select a.event,n.num --or a.cnt
from dbname.agg_table a
join dbname.numbers n on true
where a.cnt >= n.num and a.cnt <= n.num
答案 2 :(得分:0)
如果要分解的记录数量很高,并且您不想对其进行硬编码。
创建一个udf,它将返回数字序列
[prjai@lnx0689 py_ws]$ cat prime_num.py
import sys
try:
for line in sys.stdin:
num = int(line)
for i in range(1, num+1):
#print u"i".encode('utf-8')
print u"%i".encode('utf-8') %(i)
except:
print sys.exc_info()
将python脚本添加到蜂巢环境中
hive> add FILE /home/prjai/prvys/py_ws/prime_num.py
为上述脚本创建临时表
hive> create temporary table t1 as with t1 as (select transform(10) using 'python prime_num.py' as num1) select * from t1;
您的查询应该是-
hive> with t11 as (select 'A' as event, 3 as count) select t11.event, t11.count from t11, t1 where t11.count>=t1.num1;
希望这会有所帮助。