如何解决蜂巢式查询:根据其他列值与某些特定值匹配的条件选择一个列,然后将匹配结果创建为新列
您可以将单词列表转换为表格,然后使用模式匹配将其与表格连接:
select t.app, k.keyword
from mytable t
inner join (values ('anybody'), ('you'), ('xxx'), ('don''t')) as k(keyword)
on t.col1 like conca('%', k.keyword, '%')
请注意,app
如果在一个词组上有多个关键字匹配,这将重复。您未指定要如何使用此用例。
在配置单元中,您还可以将其表达为:
select t.app, k.keyword
from mytable t
inner join table(values 'anybody', 'you', 'xxx', 'don''t') as k(keyword)
on t.col1 like conca('%', k.keyword, '%')
解决方法
我必须在HiveQL中进行一些查询和创建列操作。
例如,
app col1
app1 anybody love me?
app2 I hate u
app3 this hat is good
app4 I don't like this one
app5 oh my god
app6 damn you.
app7 such nice girl
app8 xxxxx
app9 pretty prefect
app10 don't love me.
app11 xxx anybody?
我想匹配一个关键字列表,['anybody','love','you','xxx','don't']
并选择匹配的关键字结果作为新列,命名keyword
如下:
app keyword
app1 anybody,love
app4 I don't like this one
app6 damn you.
app8 xxx
app10 don't,love
app11 xxx
看来我必须使用嵌套查询。
逻辑有点像选择匹配的结果行并设置匹配的结果,这些结果应保存在列表中或类似的新列中。
但是我对HiveQL不够熟悉。
有人可以帮我吗?
在此先感谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。