String HiveQL字符串函数问题

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 任何关于这方面的建议都会非

我正在使用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 |
+------------------------+----------+