在创建雅典娜表时添加标识列

时间:2019-08-20 09:48:18

标签: amazon-athena

我想从存储在 aws-s3 中的数据创建一个雅典娜表。但除此之外,我还想要一个身份列。由于 Athena 使用 presto sql引擎,因此我在 Athena 中运行了下面编写的查询,但它给出了错误代码400 无效的请求例外雅典娜查询写在下面:-

CREATE EXTERNAL TABLE `db_name`.`preprocessed` (
id bigint unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
`event_action` string
)
PARTITIONED BY (
`platform` string
`dateval` string
)
STORED AS PARQUET
LOCATION <S3-LOCATION>
tblproperties ("parquet.compress"="SNAPPY");

这里 S3-LOCATION 是我的实木复合地板文件的位置,数据存储在 aws-s3 内部。 可能是因为雅典娜 AUTO_INCREMENT 是个问题,因为 CREATE TABLE 查询仅使用 table plan 创建一个存储在镶木地板文件中的 s3数据的帮助,而不是从 s3 加载数据。但是,如果可以通过 s3数据添加身份列的任何方法,请提及该解决方案。在这里对我有很大帮助。

1 个答案:

答案 0 :(得分:0)

因此,基本上,您没有执行order by子句的任何列。 因此,您可以通过在order by子句上使用(select 1)来实现此目的。

select row_number() over (partition by col1 order by (select 1)) as Slno....

这将按顺序将默认值插入表中。