微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果新分区不存在,如何修改 CTAS 查询以将查询结果附加到表中? - 雅典娜

如何解决如果新分区不存在,如何修改 CTAS 查询以将查询结果附加到表中? - 雅典娜

我有一个要每天执行的查询,该查询将按执行日期进行分区。此查询的结果应附加到同一个表中。

我的想法是理想情况下使用类似于 CREATE TABLE IF NOT EXISTS 命令的东西,如果分区不存在,则每天通过新分区将数据添加到现有表中,但我不知道我是怎么做的d 能够将其集成到我的查询中。

我的查询

CREATE TABLE IF NOT EXISTS db_name.table_name
WITH (
   external_location = 's3://my-query-results-location/',format = 'PARQUET',parquet_compression = 'SNAPPY',partitioned_by = ARRAY['date_executed'])
AS
SELECT
{columns_that_I_am_selecting_here_including_'date_executed'}

这样做是在执行的第一天创建一个新表,但随后几天没有任何反应,我假设是因为 CREATE TABLE IF NOT EXISTS 验证该表已经存在并且不继续执行逻辑。

有没有办法修改我的查询,为执行的第一天创建一个表,并在随后的每一天通过一个新分区附加结果?

我很确定 ALTER TABLE table_name ADD [IF NOT EXISTS] PARTITION 不适用于我的用例,因为我正在运行 CTAS 查询

解决方法

您可以简单地使用 INSERT INTO existing_table SELECT...

假设您的表已经分区,因此在 SELECT 中包含该分区列,Amazon Athena 会自动将数据放在正确的目录中。

例如,您可以像这样包含 hte 列:SELECT ... CURRENT_DATE as date_executed

见:INSERT INTO - Amazon Athena

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。