如何在Hive中没有分组的功能

时间:2016-09-28 02:31:32

标签: hadoop hive

考虑以下配置单元查询。

SELECT  
    id,
    name,
    min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) as SYSDATE
  FROM tablename

我使用min函数的原因是我想在所有记录中使用相同的SYSDATE。如果我在此处未添加min,则可能会出现多个SYSDATE

运行查询时出错:

An exception was caught.
Error while compiling statement: FAILED: SemanticException [Error 10025]: Line 3:4 Expression not in GROUP BY key 'name'

所以我在查询中添加了GROUP BY,它确实有效。

SELECT  
    id,
    name,
    min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) as SYSDATE
  FROM tablename
  GROUP BY id, name

但如果我有二十个或更多列怎么办?将它们全部添加到GROUP BY不是不方便吗?为什么我要在这里添加GROUP BY?我只想在整个记录中保持一致的SYSDATE。有没有其他方法可以使它工作?

1 个答案:

答案 0 :(得分:0)

如果您对性能没有任何顾虑,请尝试使用窗口函数来计算min

SELECT  
    id ,
    name ,
    min(from_unixtime(unix_timestamp(), 'yyyy_MM_dd_HH_mm_ss')) over(partition by 1) as SYSDATE
FROM tablename