我有一个表中的数据:
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,日期,pub_id,advertiser_id,关键字分区字段:主机,国家/地区
关键字=素食主义者
主持人= vegiefood.com
国家=法国
并得到一张这样的桌子
+-------------+---------------+-----------------+-----------------------+------------------+------------------+------------------+
| 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_extract(str,regexp [,idx])-提取与regexp匹配的组]
有人可以帮助我,或者提供一些有关正则表达式或其他函数来解析uri的线索吗?
提前致谢。
使用内置函数parse_url_tuple
提取必填字段。由于显示的网址是非标准格式,因此您可能需要做一些额外的工作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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句