2016-05-19 2 views
0

Я хочу, чтобы получить первую часть моего файла в качестве столбца в моей улей таблицеЧасть Имя файла в качестве столбца в таблице улей

My filename is : 20151102114450.46400_Always_1446482638967.xml 

Я написал запрос (ниже запроса) с использованием регулярных выражений в улей Microsoft Azure, чтобы получить первую часть этого есть, 20151102114450

Но когда я запускаю запрос я получаю выход в 20151102164358

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 

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

+0

На сайте Cloudera я прочитал: Casting целочисленное значение N к TIMESTAMP производит значение, которое является N секунд мимо начала даты эпохи (1 января 1970). Что делать, чтобы получить точное имя файла? – HadoopAddict

+0

попробуйте 'regexp_replace (TRIM (split (INPUT__FILE__NAME, ':') [1])," \ .. * "," ")', чтобы увеличить значение – rock321987

ответ

0

Я пробовал это в Cloudera, надеюсь, он должен работать и в Azure.

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) 

Другой вариант:

select from_unixtime(unix_timestamp(split('20151102114450.46400_Always_1446482638967.xml','\\.')[0],'yyyyMMddHHmmss'),'yyyy-MMM-dd HH:mm:ss') 
Смежные вопросы