For the first question, is there any way to use "set" instead of an "array"
to dedupe all elements?

"select array(1,1)" will return "[1,1]", not "[1]".



On Sat, Mar 12, 2016 at 5:26 PM, Rex X <dnsr...@gmail.com> wrote:

> Thank you, Chandeep. Yes, my first problem solved.
> How about the second one? Is there any way to append an element to an
> existing array?
>
>
>
> On Sat, Mar 12, 2016 at 5:10 PM, Chandeep Singh <c...@chandeep.com> wrote:
>
>> If you only want the array while you’re querying table1 your example
>> should work. If you want to add AB to the table you’ll probably need to
>> create a new table by selecting everything you need from table1.
>>
>> hive> select * from table1 limit 1;
>> OK
>> temp1 temp2 temp3
>>
>> hive> select f1, array(f2, f3) AS AB from table1 limit 1;
>> OK
>> temp1 [“temp2”,"temp3"]
>>
>>
>> On Mar 13, 2016, at 12:33 AM, Rex X <dnsr...@gmail.com> wrote:
>>
>> How to make the following work?
>>
>> 1. combine columns A and B to make one array as a new column AB. Both
>> column A and B are string types.
>>
>>   select
>> string_columnA,
>> string_columnB,
>> *array(string_columnA, string_columnB) *as AB
>> from Table1;
>>
>> 2. append columnA to an existing array-type column B
>>
>> select
>> string_columnA,
>> array_columnB,
>> array_flatmerge(string_columnA, array_columnB) as AB
>> from Table2;
>>
>> In fact, I should say "set" instead of "array" above, since I expect no
>> duplicates.
>>
>> Any idea?
>>
>>
>>
>

Reply via email to