我想从存储在 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数据添加身份列的任何方法,请提及该解决方案。在这里对我有很大帮助。
答案 0 :(得分:0)
因此,基本上,您没有执行order by
子句的任何列。
因此,您可以通过在order by子句上使用(select 1)
来实现此目的。
select row_number() over (partition by col1 order by (select 1)) as Slno....
这将按顺序将默认值插入表中。