String HiveQL字符串函数问题
我正在使用HiveQL运行下面的查询 其目的是,case语句根据后缀(.com、.co.uk)从域末尾删除最后XX个字符 这似乎不起作用,因为输出中“domainnew”列中的字符串没有更改 有谁能告诉我该怎么做 然后,当从右手边读取时,我还需要获取“domainnew”的输出,并且只获取第一个“.”右边的字符 域名=mobile.domain.facebook.com domainnew=mobile.domain.facebook newcalc=facebook 任何关于这方面的建议都会非常棒 多谢各位String HiveQL字符串函数问题,string,hive,hiveql,String,Hive,Hiveql,我正在使用HiveQL运行下面的查询 其目的是,case语句根据后缀(.com、.co.uk)从域末尾删除最后XX个字符 这似乎不起作用,因为输出中“domainnew”列中的字符串没有更改 有谁能告诉我该怎么做 然后,当从右手边读取时,我还需要获取“domainnew”的输出,并且只获取第一个“.”右边的字符 域名=mobile.domain.facebook.com domainnew=mobile.domain.facebook newcalc=facebook 任何关于这方面的建议都会非
select domain, catid, apnid, sum(optimisedsize) as bytes,
CASE domain
WHEN instr(domain, '.co.uk') THEN substr(domain,LENGTH(domain)-6)
WHEN instr(domain, '.com') THEN substr(domain,LENGTH(domain)-6)
ELSE domain
END as domainnew
from udsapp.web
where dt = 20170330 and hour = 04 and loc = 'FAR1' and catid <> "0:0" group by domain, catid, apnid sort by bytes desc;
选择域、catid、apnid、和(优化大小)作为字节,
案例域
当instr(域,'.co.uk')时,则substr(域,长度(域)-6)
当instr(domain,'.com')时,则substr(domain,LENGTH(domain)-6)
其他域
以域名new结束
从udsapp.web
其中dt=20170330,小时=04,loc=FAR1,catid“0:0”按域分组,catid,apnid按字节排序desc;
with t as (select 'mobile.domain.facebook.com' as domain)
select regexp_extract(domain,'(.*?)(\\.com|\\.co\\.uk|)$',1) as domainnew
,regexp_extract(domain,'.*?([^.]+)(\\.com|\\.co\\.uk|)$',1) as new_calc
from t
;
+------------------------+----------+
| domainnew | new_calc |
+------------------------+----------+
| mobile.domain.facebook | facebook |
+------------------------+----------+