Функция HIVE-group by date

может ли кто-нибудь сказать мне, почему я не получаю подсчеты для каждой группы f0, месяца, дня, часа, минуты в моем наборе результатов?

вывод:

result set

запрос:

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)))  

схема:

f0 INT (столбец разделов)
Ф1 ИНТ
строка f2
строка f3 (столбец раздела)
строки Ф4
строка f5
строка f6
ф7 карте<STRING,STRING>

* f2-метка времени unix в шестнадцатеричном формате

1 ответов


Это может быть потому что даты возвращает null, когда он применяется во время unix.
Согласно ручной куст:

даты(строка времени):
возвращает дату в метку времени строке: даты("1970-01-01 00:00:00") = "1970-01-01"

использовать from_unixtime вернуть правильную дату деталями.

Примечание:
Я предполагаю, что HEX2DEC UDF взят из ядра библиотека улей-1545