我必须在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如下:
['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不够熟悉。 有人可以帮我吗? 在此先感谢。
您可以将单词列表转换为表格,然后使用模式匹配将其与表格连接:
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如果在一个词组上有多个关键字匹配,这将重复。您未指定要如何使用此用例。
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, '%')