regex—配置单元表中作为列的文件名的一部分

yrdbyhpb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(270)

我想将文件名的第一部分作为配置单元表中的一列获取

My filename is : 20151102114450.46400_Always_1446482638967.xml

我在microsoftazure的hive中使用regex编写了一个查询(在下面的查询)来获取它的第一部分,即2015110211450
但当我运行查询时,得到的输出是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

有人能告诉我哪里出了问题,需要纠正什么吗?

8mmmxcuj

8mmmxcuj1#

我在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')

相关问题