Date 配置单元-按日期分组功能

Date 配置单元-按日期分组功能,date,hadoop,group-by,hive,Date,Hadoop,Group By,Hive,有人能告诉我为什么我的结果集中没有得到每个f0、月、日、小时、分钟组的计数吗 结果集: 查询: 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)

有人能告诉我为什么我的结果集中没有得到每个f0、月、日、小时、分钟组的计数吗

结果集:

查询:

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)))  
选择t.f0、月(截止日期(Hex2Dec(t.f2))、日(截止日期(Hex2Dec(t.f2))、小时(截止日期(Hex2Dec(t.f2))、分钟(截止日期(Hex2Dec(t.f2))、计数(不同的t.f1)
来自表t
式中(t.f0=1或t.f0=2)
和(t.f3>='2013-02-06'和t.f3<'2013-02-15')
和(Hex2Dec(t.f2)>=1360195200和Hex2Dec(t.f2)<1360800000)
和*附加条件*
按t.f0、月(截止日期(Hex2Dec(t.f2))、日(截止日期(Hex2Dec(t.f2))、小时(截止日期(Hex2Dec(t.f2))、分钟(截止日期(Hex2Dec(t.f2)))分组
模式:

f0 INT(分区列)
f1 INT
f2字符串
f3字符串(分区列)
f4字符串
f5字符串
f6字符串
f7地图


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

这可能是因为在unix时间上应用时,to_date返回null。
根据报告:

to_date(字符串时间戳):
返回时间戳的日期部分 字符串:截止日期(“1970-01-01 00:00:00”)=“1970-01-01”

改用from_unixtime返回正确的日期部分

注:

我假设Hex2Dec UDF来自的核心库

您能分享一些关于输入数据的详细信息吗?现在我只看到了查询和输出,在不知道您将其应用于什么的情况下,很难找出查询中的错误。@Charles:通常情况下,我同意您缺乏细节的说法。然而,我正在处理的数据源是专有的,我宁愿站在“安全”的一边,即使我的问题有含糊不清和/或含糊不清的风险。你有没有得到任何没有分组的数据?