You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Hortonworks Sandbox中Pig Join操作如何去除重复主键列

解决Join后重复id列的问题

嘿,这个场景我太熟悉了!当你按id连接两张都包含id列的表时,默认的join操作确实会把两个id都带进来,但其实有两种简单的方式可以得到你想要的只含id、value、color的结果:

方法1:Join时直接避免重复列(推荐)

在执行join之前,先把其中一张表的id设为主键,这样join的时候就只会保留一份id列。从你的语句风格来看像是kdb+的q语言,写法可以是这样:

// 把table2的id设为主键,再和table1左连接(如果要内连接换成ej)
final = table1 lj `id xkey table2;
dump final;

或者更直观地用列选择的方式完成join:

final = select id, value, color from table1 j `id xkey table2;
dump final;

xkey会把table2的id列标记为主键,join操作就会自动复用这个主键列,不会重复添加。

方法2:对已有结果去重列

如果已经得到了包含重复id的结果表,直接筛选出你需要的列就行——因为两个id列的值是完全相等的(毕竟是按id join的),取任意一个都可以:

final = select id:first id, value, color from (join table1 by id, table2 by id);
dump final;

这里用first id提取第一个id列的值,同时保留value和color,就能得到你要的结构。

要是你用的是SQL,写法会更直白:

SELECT t1.id, t1.value, t2.color
FROM table1 t1
JOIN table2 t2 ON t1.id = t2.id;

核心思路都是要么在join阶段就避免引入重复列,要么在结果里精准选择需要的列~

内容的提问来源于stack exchange,提问作者ECE IŞIK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:26:34