如何按字符解析Hive中的数据&
How to parse data in Hive by character &
数据如下所示:
fsid=4778&awid=5&url=http%3a%2f%2fwww.abcd.com%2f2-03&pfhid=-356847895&event=Login&Incorrect=False
fsid=3478&awid=5&url=http%3a%2f%2fwww.abcd.com%2f2-03&pfhid=-356847895&event=Login&userid=10598&Incorrect=False
我想看看我总共有多少个fsid和多少个userid,很多记录都没有userid。
我正在使用 Hive,也许这不是最好的方法,如果这是一个平面文本文件,我知道如何在 python 中执行此操作。
谢谢你。
使用正则表达式。
Select sum(case when fsid is not null then 1 else 0 end) as count_fsid
, sum(case when userid is not null then 1 else 0 end) as count_userid
from
(Select regexp_extract(my_string, '.*fsid=(//d*)&.*') as fsid
, regexp_extract(my_string, '.*userid=(//d*)&.*') as userid
from my table
) a ;
数据如下所示:
fsid=4778&awid=5&url=http%3a%2f%2fwww.abcd.com%2f2-03&pfhid=-356847895&event=Login&Incorrect=False
fsid=3478&awid=5&url=http%3a%2f%2fwww.abcd.com%2f2-03&pfhid=-356847895&event=Login&userid=10598&Incorrect=False
我想看看我总共有多少个fsid和多少个userid,很多记录都没有userid。 我正在使用 Hive,也许这不是最好的方法,如果这是一个平面文本文件,我知道如何在 python 中执行此操作。 谢谢你。
使用正则表达式。
Select sum(case when fsid is not null then 1 else 0 end) as count_fsid
, sum(case when userid is not null then 1 else 0 end) as count_userid
from
(Select regexp_extract(my_string, '.*fsid=(//d*)&.*') as fsid
, regexp_extract(my_string, '.*userid=(//d*)&.*') as userid
from my table
) a ;