This is not a hive but a SQL question.
You need to be more clear about your data, and try to think a way to solve your 
problem. Without the detail about your data, no easy way to answer your 
question.
For example, just based on your example data you provide, does the 'abc' and 
'cde' only happen once per user? Does the 'abc' timestamp is always before or 
after 'cde' timestamp?
There is a lot of ways to archive your output, but you need to confirm your 
data.
1) Assume that each user will only have one 'abc' and 'cde', and if the 'abc' 
timestamp is always before the 'cde' timestamp, then it is very easy:
select     user_id, min(visting_time) as cde_time, max(visting_time) as 
abc_timefrom tablewhere visting_web_page contains 'abc' or visting_web_page 
contains 'cde'group by user_id

2) If the 'abc' and 'cde' visiting_time is randome, but each user will only 
have one 'abc' and 'cde', it is still not too hard, you just use the case() + 
max() from hive:
select user_id, max( case when visting_web_page contains 'cde' then 
visting_time else null end ) as cde_time, max( case when visting_web_page 
contains 'abc' then visting_time else null end ) as abc_timefrom tablegroup by 
user_id
The trick is simple, you use case function to return timestamp if it is the 
'cde' row, else return null; then apply max on top of it. Since everything is 
larger than NULL in max, you will get the cde time stamp.
3) If each user could have more than one 'abc' or 'cde', then you need  to 
decide which one you want it out.
Yong
Date: Fri, 2 Nov 2012 22:35:42 -0500
Subject: need help on writing hive query
From: qiaoresearc...@gmail.com
To: user@hive.apache.org

The table format is something like:
user_id á ávisiting_time á á ávisiting_web_pageuser1 á á á á átime11 á á á á á 
á page_string_11
user1 á á á á átime12 á á á á á á page_string_12 á á with keyword 'abc'
user1 á á á á átime13 á á á á á á page_string_13
user1 á á á á átime14 á á á á á á page_string_14 á á with keyword 'cde'
user1 á á á á átime15 á á á á á á page_string_15

á ... á á á á á á á á... á á á á á á á á á á á .....áuser2 á á á á átime21 á á 
á á á á page_string_21
user2 á á á á átime22 á á á á á á page_string_22 á ááuser2 á á á á átime23 á á 
á á á á page_string_23 á ááwith keyword 'abc'
user2 á á á á átime24 á á á á á á page_string_24 á áá
user2 á á á á átime25 á á á á á á page_string_25 á ááwith keyword 'cde'á á.... 
á á á á á á á..... á á á á á á á á á á á .... á á á á

how to obtain output like: áuser1 á átime14 - time12 ááuser2 á átime25 - 
time23á á... á á á á á .............
i.e, we need to first search keyword 'abc' in the visiting_web_page column to 
locate the first visiting_time, then search for the second visiting_time with 
keyword 'cde', and repeat the procedure for each user...

thanks in advance!


á á á


                                          

Reply via email to