在Hive / Impala中按单个列分组的更简单方法是什么?

时间:2017-11-23 09:16:24

标签: hive

我需要从我们的数据库中输出用户的年龄,性别,教育程度,收入等报告。但是,大约有40个变量。将每个变量按一个分组分组似乎很愚蠢,但我不知道其他方法,我也不知道如何编写UDF来解决它。我很感激你的帮助。

它并不复杂,但它在日常工作中确实出现了很多。我的工作环境是Hive / Impala。

1 个答案:

答案 0 :(得分:0)

我们无法在UDF,UDAF或UDTF中的输入行上实现“分组依据”任务。

  • UDF接受单个输入行并输出单个输出行。
  • UDAF只对一列进行聚合,但不对分组行进行聚合。
  • UDTF将单个输入行转换为多个输出行。

唯一可行的解​​决方案是编写多个查询并使用UNION ALL组合它们并显示/插入表格

示例查询:

 SELECT *
    FROM
    (
        SELECT COUNT(column1),column1 FROM table GROUP BY column1
        UNION ALL
        SELECT COUNT(column2),column2 FROM table GROUP BY column2
        UNION ALL
        SELECT COUNT(column3),column3 FROM table GROUP BY column3
    ) s