Hive - Memeriksa apakah array di setiap baris tabel berisi data yang cocok di kolom di tabel lain

Saya memiliki dua tabel dengan kolom seperti yang ditunjukkan di bawah ini.

Posts:
user STRING,
tag_list ARRAY<STRING>

Tags:
tag STRING

Berikut beberapa contoh data pada tabel tersebut.

Posts:
user1   help, pig
user2   bigdata, hadoop, query, hiveql
user1   hive, hiveql, help

Tags:
hadoop
hiveql

Jika saya ingin memfilter hanya baris dalam tabel Posting yang berisi tag yang tercantum dalam tabel Tag seperti yang ditunjukkan pada hasil di bawah, bagaimana saya melakukannya dalam kueri kumpulan? Saya tidak yakin bagaimana cara menggabungkan kedua tabel ini menggunakan array_contains.

Expected Query Result:
user2   bigdata, hadoop, query, hiveql
user1   hive, hiveql, help

Terima kasih


person rev    schedule 27.01.2014    source sumber


Jawaban (1)


Saya bisa mendapatkan hasil yang diharapkan dengan kueri ini.

select distinct b.user, b.tag_list from 
(select tag from tags) a
join
(select user, tag_list, exp from posts
lateral view explode(tag_list) exploded_table as exp) b
on (a.tag = b.exp);
person rev    schedule 28.01.2014