2016-06-23 4 views
0

Der unter hive Befehl,Hive Timestamp für Wochen- und Quartalsdaten

select * from my_new_table 
    where month(time_stamp)= '03' 
    and year(time_stamp) = '2016' 
    and age = '1' 
    and gender = '0' 
    and income = '4' 
    and ethnicity = '3' 
    and marital_status = '1'; 

generiert die folgenden Ergebnisse für alle Daten (31 Tage) für den Monat März (03) 2016:

time_stamp    age gender income ethnicity marital_status 
[email protected]:42:47.000 1 0  4  3   1 
[email protected]:10:51.000 1 0  4  3   1 
[email protected]:16:44.000 1 0  4  3   1 
[email protected]:13:51.000 1 0  4  3   1 
[email protected]:12:51.000 1 0  4  3   1 
[email protected]:24:51.000 1 0  4  3   1 
[email protected]:02:06.000 1 0  4  3   1 

Ebenso möchte ich die Daten für das 2. Quartal 2016 (oder das n. Quartal, die Daten sollten für 3 Monate, beginnend vom 1. März bis 31. Mai für dieses Quartal) und die 12. Woche (oder die n. Woche, die Daten sollten für 7 Tage kommen für diese spezielle Woche) von 2016. Was ist der richtige Hive-Befehl dafür?

Ich erhalte einen Fehler, wenn ich month mit quarter oder week im Hive-Befehl ersetze.

select * from my_new_table 
where quarter(time_stamp)='03' 
and year(time_stamp) = '2016'; 

kehrt

FAILED: SemanticException [Error 10011]: Line 1:71 Invalid function 'quarter' 

und

select * from my_new_table 
where week(time_stamp)='12' 
and year(time_stamp) = '2016'; 

kehrt

FAILED: SemanticException [Error 10011]: Line 1:71 Invalid function 'week' 

es sieht aus wie eine Berechnung in immer die n-te Quartal oder Woche enthalten sein muss, aber nicht sicher, . Bitte helfen Sie. Vielen Dank.

+0

Es kann hilfreich sein, wenn Sie die Befehle anzeigen, die Sie versucht haben, und die spezifischen Fehler, die generiert werden. [Datum Funktionen in Hive] (http://www.folkstalk.com/2011/11/date-functions-in-hive.html) könnte informativ sein. – showdev

+0

Wählen Sie * aus my_new_table, wobei viertel (time_stamp) = '03' und year (time_stamp) = '2016'; FEHLGESCHLAGEN: SemanticException [Fehler 10011]: Zeile 1:71 Ungültige Funktion 'viertel' Wählen * aus my_new_table wobei Woche (time_stamp) = '12' und Jahr (time_stamp) = '2016'; FEHLGESCHLAGEN: SemanticException [Fehler 10011]: Zeile 1: 71 Ungültige Funktion 'Woche' – Murali

Antwort

0

Die Dokumentation besagt, dass month und week Funktionen ein "String-Datum" erwarten, kein tatsächlicher Datums- oder Zeitstempeltyp als Eingabe. Sie können die date_format Funktion verwenden müssen, um Ihre Zeitstempel in eine Zeichenfolge zu konvertieren, dann die Funktionen nutzen, wie

month(date_format(timestamp, 'yyyy-MM-dd')) 

das erklärt nicht, warum Ihr erstes Beispiel dieser Funktionen als Teil der where-Klausel zu funktionieren scheint , jedoch.