我有带有这个时间戳格式的日志文件: 04/Apr/2021:12:21:24 +0000
此RegEx与此格式匹配:
\[([0-9]{2})\/([A-Za-z]{3})\/([0-9]{4}):([0-9]{2}:[0-9]{2}:[0-9]{2}) ([+-][0-9]{4})\]是否可以添加以下修改此表达式的内容?
,将日期重新排序到YYYY。
使用日志中的日期/时间作为SQL时间戳列键的输入,需要这些更改将快速日志导入AWS雅典娜数据库。
我搜索了所有的Google和Stack溢出,但只发现替代作为一个单独的表达式。
任何帮助都是非常感谢的,谢谢!
更新:这是我的Athena Create语句,我的正则表达式用于填充快速日志中的数据。
create external table if not exists logsdb.service_logs_2021_04_04
(
`syslog_prefix` string,
`remote_ip_address` string,
`dashes` string,
`timestamp` timestamp,
`url_request` string,
`final_status_code` smallint,
`response_size` int,
`fastly_datacenter` string,
`fastly_cache_state` string,
`client_ip_address` string,
`client_geo_location` string
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES
(
'serialization.format' = '1',
'input.regex' = '^(.+]:) ([0-9.]+) ("-" "-") \\[([0-9]{2})\/([A-Za-z]{3})\/([0-9]{4}):([0-9]{2}:[0-9]{2}:[0-9]{2}) ([+-][0-9]{4})\\] \"(.+?)\" ([0-9]{3}) ([0-9]+) ([A-Za-z]+) ([A-Za-z-]+) ([0-9.]+) ([A-Za-z ]+)$'
)
LOCATION 's3://weblog-query-source/service-logs/2021-04-04/'
TBLPROPERTIES ('has_encrypted_data'='false')发布于 2021-04-06 19:15:18
绕过复杂正则表达式的一个简单方法是使用SELECT查询转换值。例如:
select date_format(date_parse('04/Apr/2021:12:21:24', '%d/%b/%Y:%T%'), '%Y-%m-%d')输出:2021-04-04
https://stackoverflow.com/questions/66973265
复制相似问题