如何在Hive中合并同表两列数据并获取去重后的结果列表
错误原因
你之前测试的SQL语句中,'${team1,team2}'被识别为固定字符串传入处理逻辑,没有读取表中team1、team2字段的实际值,因此只会输出固定的拼接结果,和表内真实数据无关。
正确实现方案
方案1:使用UNION(最直观适配需求)
UNION本身自带结果去重能力,直接查询两个字段的结果合并即可,注意替换为你实际的表名:
SELECT team1 AS teams FROM 赛事表名 UNION SELECT team2 AS teams FROM 赛事表名;
如果需要手动控制去重逻辑,也可以用UNION ALL搭配DISTINCT:
SELECT DISTINCT teams FROM ( SELECT team1 AS teams FROM 赛事表名 UNION ALL SELECT team2 AS teams FROM 赛事表名 ) t;
方案2:使用LATERAL VIEW炸开数组(适合合并字段较多的场景)
将每行的team1、team2组装为数组,再炸开为多行后去重:
SELECT DISTINCT teams FROM 赛事表名 LATERAL VIEW EXPLODE(ARRAY(team1, team2)) temp_table AS teams;
以上两种方案针对你提供的样例数据运行后,都可以得到预期的去重队伍列表。
内容的提问来源于stack exchange,提问作者Jackie S.
相关产品推荐
相关产品推荐

