我有一个以下数据集,其中emp_id,org_id和res_id是关键列
输入数据是 -
emp_id | org_id | res_id | emp_sal
123 | 345 | 678 | 10000
123 | | 678 | 20000
123 | 345 | | 30000
| 345 | 678 | 10000
103 | 305 | 608 | 40000
103 | | | 50000
如果剩余记录是完整密钥的子集,我需要聚合emp_sal。例如,“123 | 345 | 678 |”在输入数据集中还有3个子集。
预期输出是 -
emp_id | org_id | res_id | emp_sal
123 | 345 | 678 | 70000
103 | 305 | 608 | 90000
如何在Pig中计算此聚合?
答案 0 :(得分:2)
SELECT c.emp_id,
c.org_id,
c.res_id,
Sum(d.emp_sal)
FROM (SELECT DISTINCT emp_id,
org_id,
res_id
FROM emptest
WHERE emp_id IS NOT NULL
AND org_id IS NOT NULL
AND res_id IS NOT NULL) AS c,
emptest AS d
WHERE d.emp_id = c.emp_id
OR d.org_id = c.org_id
OR d.res_id = c.res_id
GROUP BY c.emp_id,
c.org_id,
c.res_id;
以上Hive查询可以帮助您。