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

里卡多·弗朗索瓦

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

CREATE TABLE IF NOT EXISTS如果分区尚不存在,我的想法是理想地具有类似于每天通过新分区将数据添加到现有表命令的命令,但我不知道如何将其集成到我的询问。

我的查询:

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

请参阅:插入 - 亚马逊雅典娜

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章