if you are doing group by, you could have potential duplicates on your 
concat_ws....take a look at using collect_set or collect_list.  if you do
select col_a,
collect_set(concat_ws(', ',col_b,col_c))
from t

you will have an array of unique collection pairs...collect_list will give you 
all pairs.

hope that helps

From: Deepak Khandelwal [mailto:[email protected]]
Sent: Tuesday, April 26, 2016 11:35 AM
To: [email protected]
Subject: Re: Hive query to split one row into many rows such that Row 1 will 
have col 1 Name, col 1 Value and Row 2 will have col 2 Name and col 2 value

Thanks a lot Dudu.

Could you also tell how can  I use concat with group by clause in have. I have 
n rows with col1, col2, col3 and i want a result grouped by col1 and concat all 
values of col2 and col3.

Id,key,value, value2
______________________
1,fname,Dudu, m1
1,lname,Markowitz, m2
2,fname, Andrew, m3
2,lname, Sears,m4
And I need result like below

Id, appended (group by key)
______________________
Fname ,          Dudu | m1 | Andrew | m3
Lname,           Markowitz| m2 | Sears | m4
Thanks a lot for your help.


On Saturday, April 23, 2016, Markovitz, Dudu 
<[email protected]<mailto:[email protected]>> wrote:
Another example (with first name and last name), same principal

Dudu


Given the following table:

id, first_name,last_name
______________________
1,Dudu,Markovitz
2,Andrew,Sears

select id,key,value from my_table lateral view explode 
(map('fname',first_name,'lname',last_name)) t;

The result will look like:

Id,key,value
______________________
1,fname,Dudu
1,lname,Markovitz
2,fname, Andrew
2,lname, Sears


From: Deepak Khandelwal 
[mailto:[email protected]<javascript:_e(%7B%7D,'cvml','[email protected]');>]
Sent: Saturday, April 23, 2016 9:04 AM
To: [email protected]<javascript:_e(%7B%7D,'cvml','[email protected]');>
Subject: Hive query to split one row into many rows such that Row 1 will have 
col 1 Name, col 1 Value and Row 2 will have col 2 Name and col 2 value

Hi All,

I am new to Hive and I am trying to create a query for below aituation. Would 
appreciate if someone could guide on same. Thans a lot in advance.

I have two TABLES shown below

TABLE1 (USER_dETAILS)
**USER_ID**  |  **USER_NAME**  |   **USER_ADDRESS**
 ------------+------------------+----------------
1          USER1           ADDRESS111
2          USER2             ADDRESS222

TABLE2 (USER_PARAMETERS)
**USER_ID**  |  **PARAM_NAME**  |   **PARAM_VALUE**
 ------------+------------------+------------------
1           USER_NAME        USER1
1           USER_ADDRESS  ADDRESS111
2           USER_NAME        USER2
2            USER_ADDRESS  ADDRESS222

I need to insert data in table2(USER_PARAMETERS) FROM table1(USER_DETAILS) in 
the format shown above. I can do this using UNION ALL but I want to avoid it as 
there are like 10 such columns that i need to split like above.

Can someone suggest a efficient hive query so that i can achieve the results 
shown in table 2 from data in table 1 (Hive query to split one row of data into 
multiple rows like such that Row 1 will have column1 Name, column1 Value and 
Row 2 will have column 2 Name and column 2 value...).

Thanks a lot
Deepak


======================================================================
THIS ELECTRONIC MESSAGE, INCLUDING ANY ACCOMPANYING DOCUMENTS, IS CONFIDENTIAL 
and may contain information that is privileged and exempt from disclosure under 
applicable law. If you are neither the intended recipient nor responsible for 
delivering the message to the intended recipient, please note that any 
dissemination, distribution, copying or the taking of any action in reliance 
upon the message is strictly prohibited. If you have received this 
communication in error, please notify the sender immediately.  Thank you.

Reply via email to