使用 Select 查询作为输入的合并语句在 AWS Athena 中不起作用

问题描述 投票:0回答:1

我正在AWS Athena中编写以下合并查询,根据文档可以将表或查询输入到合并语句中。

我在 Athena 中有一个 Iceberg 表,当收到新表时间戳时需要插入该表,但对于现有表,时间应该更新。

WITH temporaryTable (database_name, table_name, max_redshift_timestamp) AS (
    select 'iddna' as database_name, 'TEAM_DIM' as table_name, timestamp '2024-08-21 12:33:59.000001' as max_redshift_timestamp
)
MERGE INTO derived_load_support.redshift_last_processed_dttm as t
USING temporaryTable as s
ON s.database_name=t.database_name and s.table_name=t.table_name
WHEN MATCHED
    THEN UPDATE SET (max_redshift_timestamp = s.max_redshift_timestamp )
WHEN NOT MATCHED
    THEN INSERT (database_name, table_name, max_redshift_timestamp) VALUES (s.database_name, s.table_name, s.max_redshift_timestamp)

我也尝试过不使用 CTS,但遇到了同样的错误

MERGE INTO derived_load_support.redshift_last_processed_dttm as t
USING select 'iddna' as database_name, 'TEAM_DIM' as table_name, timestamp '2024-08-21 12:33:59.000001' as max_redshift_timestamp as s
ON s.database_name=t.database_name and s.table_name=t.table_name
WHEN MATCHED
    THEN UPDATE SET (max_redshift_timestamp = s.max_redshift_timestamp )
WHEN NOT MATCHED
    THEN INSERT (database_name, table_name, max_redshift_timestamp) VALUES (s.database_name, s.table_name, s.max_redshift_timestamp)

在这两种情况下,我都收到此错误

第 2:7 行:输入“select”不匹配。预期:“(”、“横向”、“表格”、“UNNEST”、

在这方面的任何帮助都会很棒。

sql amazon-web-services amazon-athena trino sql-merge
1个回答
0
投票

这样使用

合并为 derivative_load_support.redshift_last_processed_dttm 作为 t USING (选择 'iddna' 作为数据库名称,'TEAM_DIM' 作为表名称,时间戳 '2024-08-21 12:33:59.000001' 作为 max_redshift_timestamp) as s ON s.database_name=t.database_name 和 s.table_name=t.table_name 匹配时 然后更新设置(max_redshift_timestamp = s.max_redshift_timestamp) 当不匹配时 然后插入 (database_name, table_name, max_redshift_timestamp) VALUES (s.database_name, s.table_name, s.max_redshift_timestamp)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.