2013-02-15 7 views
6

誰も私の結果セットの各f0、月、日、時、分グループのカウントが得られない理由を教えてもらえますか?HIVE - 日付によるグループ機能

結果セット:

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(分配カラム)
F1 INT
F2 STRING
F3のSTRING( P artition列)
F4 STRING
F5 STRING
F6 STRING
F7のMAP <STRING,STRING>

* f2は、それが上の適用だときTO_DATEリターンをnullこれがあるかもしれない16進形式で

+0

のコアライブラリから取られていると仮定しますか?今はクエリと出力のみしか表示されません。どのようなクエリを適用しているのかわからなくても、クエリの何が間違っているのか把握するのは非常に難しいです。 –

+0

@Charles:通常、私は細部の不足についてあなたに同意します。しかし、私が扱っているデータソースは独自のものであり、私の質問であいまいさや曖昧さがあるとしても、私はむしろ「安全な」側にいると思います。 – Jubbles

+0

グループ外のデータを取得しましたか? –

答えて

9

UNIXタイムスタンプでありますUnixの時間。 Hive manualによると

TO_DATE(文字列のタイムスタンプ):タイムスタンプ 文字列の日付部分を返します
:TO_DATE( "1970年1月1日夜12時00分00秒")=「1970年から1901年-01 "

代わりにfrom_unixtimeを使用して、正しい日付部分を取得してください。

注:
私はあなたの入力データに関するいくつかの詳細を共有することができHEX2DEC UDFがHIVE-1545