Impala 库杜有条件向上插入

Impala 库杜有条件向上插入,impala,apache-kudu,Impala,Apache Kudu,Kudu是否支持向上插入到的更新部分的条件 我是否可以提供一个条件子句,仅基于insert值和目标表之间的比较来更新给定的值? 实际的用例是用最新的数据更新时间戳列 这是我想象中的行为 CREATE TABLE my\u first\u TABLE ( id INT, 名称字符串, 状态INT, 主键(id) ) 按哈希分区进行分区4 储存为库杜; 在我的第一个表格中插入值(1,“lee”,101),(2“shiv”,102),(3,“bob”,103); --条件为FALSE,未执行更新 作为

Kudu是否支持
向上插入到
更新部分的条件

我是否可以提供一个条件子句,仅基于insert值和目标表之间的比较来更新给定的值? 实际的用例是用最新的数据更新时间戳列

这是我想象中的行为

CREATE TABLE my\u first\u TABLE
(
id INT,
名称字符串,
状态INT,
主键(id)
)
按哈希分区进行分区4
储存为库杜;
在我的第一个表格中插入值(1,“lee”,101),(2“shiv”,102),(3,“bob”,103);
--条件为FALSE,未执行更新
作为t插入我的第一张表格
值(3,“bobby”,100)为v
其中v.status>t.status
+----+------+--------+
|id |名称|状态|
+----+------+--------+
|1 |李| 101|
|2 | shiv | 102|
|3 |鲍勃| 103|
+----+------+--------+
--条件为真,已执行更新
作为t插入我的第一张表格
值(3,“bobby”,100)为v
其中v.status
如果3不存在,则应插入


如果没有,是否有一个优雅的解决方案?

我找到的一个解决方案是在
选择表达式中使用
左连接和过滤器。因此,假设我们有一个表
要插入
与目标表相同,包含所有潜在的插入

插入到插入值中(3,“bobby”100),(5,“newgal”,600);
插入我的第一张桌子
选择至\u upsert.id、至\u upsert.name、至\u upsert.status
从上到下
左键将我的\u第一个\u表连接到\u upsert.id=我的\u第一个\u表.id
其中my_first_table.status>to_upsert.status或my_first_table.id为空;
从my_first_表中选择*;
+----+--------+--------+
|id |名称|状态|
+----+--------+--------+
|3 |鲍比| 100|
|1 |李| 101|
|2 | shiv | 102|
|5 | newgal | 600|
+----+--------+--------+
感谢您收看本期《看我学sql》