从hiveql中的url字段解析和提取字段

gojuced7  于 2021-06-25  发布在  Hive
关注(0)|答案(1)|浏览(496)

我从一个表中得到了以下数据:

id,uri,date_entered,p_id,ads_id
1,http://vegiefood.com/path1/p.php?keyword=veganway&country=france#Ref1,30/JUN/2016,PVEGIEFOOD,GOOGLEADSENSE
2,http://techteacher.com/path1/p.php?keyword=datascience&country=norway#Ref1,15/JAN/2018,PTECHTEACHER,GOOGLEADSENSE

我想转换或创建一个带有以下字段的新分区表:字段:id,date,pub\u id,advertiser\u id,关键字分区字段:host,country
关键字=素食
主机=vegiefood.com
国家=法国
找张这样的table

+-------------+---------------+-----------------+-----------------------+------------------+------------------+------------------+
| id          | date          |  pub_id         |       advertiser_id   |  keyword         |   host           | country          |
+-------------+---------------+-----------------+-----------------------+------------------+------------------+------------------+
| 1           | 30/JUN/2016   | PVEGIEFOOD      | GOOGLEADSENSE         | veganway         | vegiefood.com    | france           |
| 2           | 15/JAN/2018   | PTECHTEACHER    | GOOGLEADSENSE         | datascience      | techteacher.com  | norway           |
+-------------+---------------+-----------------+-----------------------+------------------+------------------+------------------+

我对分区表或从另一个表加载数据没有任何问题,但是,我的问题是我没有解析uri字段[http://vegiefood.com/path1/p.php?keyword=veganway&country=france#ref1]但是。我用[regexp\u extract(str,regexp[,idx])尝试过这个方法-提取与regexp匹配的组]
有谁能帮我或给我一些关于regex或其他函数的线索来解析uri吗?
提前谢谢。

9bfwbjaz

9bfwbjaz1#

使用内置函数 parse_url_tuple 提取所需字段。由于所显示的url是非标准格式的,因此您可能需要执行额外的操作 split 以获得国家价值。否则你可以用 QUERY:country 在函数中。

select t.*,parsed.host,parsed.keyword,split((split(query,';')[1]),'=')[1]
from tbl t
lateral view parse_url_tuple(uri,'HOST','QUERY:keyword','QUERY') parsed as host,keyword,query

相关问题