首页 > 解决方案 > 在 siddhi 文件中更新或插入以忽略不可用的字段,而不是更新所有字段

问题描述

我有一个 siddhi 文件可以从 kafka 主题中读取并写入数据库。

@store(type='rdbms' , datasource='WSO2_CLUSTER',table.name='sample_table')
define table sample_table(col1 string, col2 string, corr_id string);


from kafkaInputMetricCorr
select col1, col2, corr_id
update or insert into sample_table 
on sample_table.corr_id == corr_id;

当我使用此“更新或插入”功能时,它会更新所有字段(col1、col2、corr_id),即使该字段在 Kafka 事件中不可用。当 kafka 消息具有“col1 和 corr_id”时,我只想更新 col1 和 corr_id。现在发生的事情是,它将 col2 更新为空。我什至尝试更改为

select *

希望仅更新 Kafka 事件中可用的字段。但它不起作用。请帮助解决这个问题。谢谢。

标签: siddhi

解决方案


如果您不想更新所有字段,则必须使用 set 子句,https://siddhi.io/en/v5.1/docs/query-guide/#update-or-insert

from kafkaInputMetricCorr
select col1, col2, corr_id
update or insert into sample_table 
set sample_table.col1 = col1, sample_table.corr_id = corr_id
on sample_table.corr_id == corr_id;

推荐阅读