HIVE - 按日期分组功能

Jub*_*les 7 hadoop hive group-by date

谁能告诉我为什么我的结果集中每个f0,MONTH,DAY,HOUR,MINUTE组都没有计数?

结果集:

结果集

查询:

SELECT t.f0, MONTH(TO_DATE(Hex2Dec(t.f2))), DAY(TO_DATE(Hex2Dec(t.f2))), HOUR(TO_DATE(Hex2Dec(t.f2))), MINUTE(TO_DATE(Hex2Dec(t.f2))), COUNT(DISTINCT t.f1)  
FROM table t  
WHERE (t.f0 = 1 OR t.f0 = 2)  
AND (t.f3 >= '2013-02-06' AND t.f3 < '2013-02-15')   
AND (Hex2Dec(t.f2) >= 1360195200 AND Hex2Dec(t.f2) < 1360800000)  
AND *EXTRA CONDITIONS*  
GROUP BY t.f0, MONTH(TO_DATE(Hex2Dec(t.f2))), DAY(TO_DATE(Hex2Dec(t.f2))),   HOUR(TO_DATE(Hex2Dec(t.f2))), MINUTE(TO_DATE(Hex2Dec(t.f2)))  
Run Code Online (Sandbox Code Playgroud)

架构:

f0 INT(分区列)
f1 INT
f2 STRING
f3 STRING(分区列)
f4 STRING
f5 STRING
f6 STRING
f7 MAP<STRING,STRING>

*f2是十六进制格式的unix时间戳

Lor*_*dig 11

这可能是因为to_date在unix时间应用时返回null.
根据Hive手册:

to_date(string timestamp):
返回时间戳字符串的日期部分:to_date("1970-01-01 00:00:00")="1970-01-01"

使用from_unixtime代替返回正确的日期部分.

注意:
我假设Hex2Dec UDF来自HIVE-1545的核心库