Hive - ตรวจสอบว่าอาร์เรย์ในแต่ละแถวของตารางมีข้อมูลที่ตรงกันในคอลัมน์ของตารางอื่นหรือไม่

ฉันมีสองตารางที่มีคอลัมน์ดังที่แสดงด้านล่าง

Posts:
user STRING,
tag_list ARRAY<STRING>

Tags:
tag STRING

นี่คือข้อมูลตัวอย่างบางส่วนในตารางเหล่านั้น

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

Tags:
hadoop
hiveql

หากฉันต้องการกรองเฉพาะแถวในตาราง Post ที่มีแท็กที่แสดงอยู่ในตารางแท็กดังที่แสดงในผลลัพธ์ด้านล่าง ฉันจะทำอย่างไรในแบบสอบถามแบบไฮฟ์ ฉันไม่แน่ใจว่าจะรวมสองตารางนี้โดยใช้ array_contains ได้อย่างไร

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

ขอบคุณ


person rev    schedule 27.01.2014    source แหล่งที่มา


คำตอบ (1)


ฉันสามารถได้รับผลลัพธ์ที่คาดหวังจากแบบสอบถามนี้

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