0

我正在尝试将数据从 S3 存储到我的 Athena DB 中,并且我的日期时间格式如下所示:-

20171011133902

我正在尝试将格式设置为时间戳,但它无法识别,因此没有数据插入到表中。我将格式设置为 bigint 只是为了插入数据,我的查询看起来像这样。

如果不存在则创建外部表 default.elb_logs ('request_timestamp' bigint, 'id' int, .....)

我尝试在 Quicksight 中进行转换,但是当我编辑数据字段并将其更改为日期时,我变成了这样:-

2033-12-02T01:51:53.000Z

有人可以帮助我如何处理这种日期格式吗?

4

2 回答 2

2

有2个解决方案:-

  1. 我确实在 Quicksight 上使用了 parseDate 函数,它起作用了。(不更改 Athena DB 上的数据类型)-> 仅在您不使用 SPICE 时有效

parseDate(上传时间戳,'yyyyMMddHHmmss')

  1. 我还发现我需要更改它的字符串(在 Athena DB 上),以便转换为日期按钮在 QuickSight 上正常工作。

如果不存在则创建外部表 default.elb_logs ('request_timestamp' string, 'id' int, .....)

于 2017-10-17T08:22:55.607 回答
0

我建议将您的日期时间作为字符串加载,然后使用parse_datetime函数将其解析为选择查询中的时间戳。对于 JSON 数据,例如:

{"dt": "20171011133902", ... }

并且您的日期/时间字段定义为字符串:

CREATE EXTERNAL TABLE scratch.test_dates (
  `dt` string
)
...

parse_datetime用于将 dt 重新格式化为适当时间戳的查询:

SELECT
  parse_datetime(dt, 'YYYYMMddHHmmss') as parsed_date
FROM 
  scratch."test_dates" 

将产生带有时区的时间戳(在您的情况下为UTC):

2017-10-11 13:39:02.000 UTC
于 2017-10-15T20:23:49.507 回答