2016-07-07 8 views
0

Ich versuche, einen Zeitstempel in einigen Daten (mit Apache Drill) in die Woche des Jahres zu konvertieren.Woche des Jahres von Datum in Apache Drill

Nach der reference die Schranksache, die ich sehen kann, ist die "Extrakt" -Funktion, aber das funktioniert nur für Jahr, Monat, Tag, Stunde, Minute, Sekunde Einheiten.

Original-Datum Beispiel

ID, START_DATE 
1, 2014-07-07T13:20:34.000Z 

Query (so etwas wie dieses)

SELECT ID, EXTRACT(WEEK, START_DATE) FROM MY_TABLE; 

Und ein Ergebnis wie diese:

ID, START_DATE 
1, 27 

Antwort

0

Ich kam ein paar Wochen später wieder auf dieses Problem und nicht eine Funktion in drill Schreiben (wie ich mich fühlte, dies zu viel war und ich brauchte nur eine grobe Schätzung einer Woche) Ich habe folgendes statt:

# 7 * 24 * 60 * 60 = 604800 

select 
    START_DATE as `ORIGINAL DATE`, 
    TRUNC(CAST((CAST((UNIX_TIMESTAMP(START_DATE,'yyyy-MM-dd HH:mm:ss.SSS') - UNIX_TIMESTAMP(EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')),'yyyy')) AS FLOAT)/CAST(604800 AS FLOAT)) AS FLOAT)) + 1 as `WEEK_NO`, 
    EXTRACT(year FROM TO_DATE(START_DATE, 'yyyy-MM-dd HH:mm:ss.SSS')) as `YEAR` 
from 
    GAME_DATA 
order by 
    START_DATE 
limit 10; 
1

Curently, Extract function unterstützt folgende Zeit Einheiten: Jahr, Monat, Tag, Stunde , MINUTE, ZWEITE.

Beispiel:

SELECT ID,EXTRACT(YEAR FROM START_DATE) from dfs.`/home/dev/Desktop/date.csv`; 

Sie können Ihre eigene Funktion für das Erhalten Woche des Jahres erstellen. Überprüfen Sie docs für die Entwicklung von benutzerdefinierten Funktionen.