我有以下数据集,其中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中计算此聚合?

最佳答案

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查询可以为您提供帮助。

关于hadoop - 如何根据Pig/Hive中的关键子集进行汇总?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49626364/

10-12 23:01