2016-05-19 10 views
0

ich den ersten Teil meines Dateinamen als eine Spalte in meiner Hive TabelleTeil von Dateinamen als eine Spalte in Hive Tabelle

My filename is : 20151102114450.46400_Always_1446482638967.xml 

Ich schrieb eine Abfrage (unter Abfrage) unter Verwendung von Regex in Hive von Microsoft erhalten mag Azure bekommen den ersten Teil davon dh 20151102114450

Aber wenn ich laufe Abfrage ich die Ausgabe als 20151102164358 bekommen

select CAST(regexp_replace(regexp_replace(regexp_replace(CAST(CAST(regexp_replace(split(INPUT__FILE__NAME,'[_]')[2],'.xml','') AS BIGINT) as TimeStamp),':',''),'-',''),' ','') AS BIGINT) as VERSION 

Kann mir jemand sagen, wo ich falsch gehe und was muss korrekt sein ed?

+0

In cloudera Website, die ich gelesen: Casting einen ganzzahligen Wert N zu TIMESTAMP erzeugt einen Wert, der N Sekunden nach dem Beginn der Epoche Datum (1. Januar 1970) ist. Was muss ich tun, um den genauen Dateinamen zu erhalten? – HadoopAddict

+0

versuchen Sie 'regexp_replace (TRIM (split (INPUT__FILE__NAME, ':') [1])," \ .. * "," "), um den Wert zu extrahieren – rock321987

Antwort

0

Ich habe das in Cloudera versucht, hoffentlich sollte es auch in Azure arbeiten.

select from_unixtime(unix_timestamp(regexp_extract('20151102114450.46400_Always_1446482638967.xml','^(.*?)\\.'),'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss'); 

2015-Nov-02 11:44:50 
Time taken: 19.644 seconds, Fetched: 1 row(s) 

Eine weitere Option:

select from_unixtime(unix_timestamp(split('20151102114450.46400_Always_1446482638967.xml','\\.')[0],'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss') 
Verwandte Themen