从 csv 文件定义时间戳失败

failed defining the timestamp from csv file

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

20171011133902

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

CREATE EXTERNAL TABLE IF NOT EXISTS default.elb_logs ( 'request_timestamp' bigint, 'id' int, .....)

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

2033-12-02T01:51:53.000Z

有人可以帮我处理这种类型的日期格式吗?

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

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

并且您的 date/time 字段定义为字符串:

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

有 2 种解决方案:-

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

parseDate(uploadtimestamp, 'yyyyMMddHHmmss')

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

CREATE EXTERNAL TABLE IF NOT EXISTS default.elb_logs ( 'request_timestamp' string, 'id' int, .....)