我正在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”、
在这方面的任何帮助都会很棒。
这样使用
合并为 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)