如何从 ksqldb 表中删除值或插入逻辑删除值?

2023-12-02

如何通过 Rest api 或至少作为 ksqldb-cli 中的语句来标记 ksql 表中的行以进行删除?

CREATE TABLE movies (
      title VARCHAR PRIMARY KEY,
      id INT,
      release_year INT
    ) WITH (
      KAFKA_TOPIC='movies',
      PARTITIONS=1,
      VALUE_FORMAT = 'JSON'
    );

INSERT INTO MOVIES (ID, TITLE, RELEASE_YEAR) VALUES (48, 'Aliens', 1986);

由于明显的原因,这不起作用,但是 ksqldb 中不存在 DELETE 语句:

INSERT INTO MOVIES (ID, TITLE, RELEASE_YEAR) VALUES (48, null, null);

有没有办法创建推荐的逻辑删除空值,或者我是否需要将其直接写入基础主题?


有一种方法可以做到这一点,这只是一种解决方法。诀窍是使用KAFKA将逻辑删除写入基础主题的值格式。

这是一个使用原始 DDL 的示例。

-- Insert a second row of data
INSERT INTO MOVIES (ID, TITLE, RELEASE_YEAR) VALUES (42, 'Life of Brian', 1986);

-- Query table
ksql> SET 'auto.offset.reset' = 'earliest';

ksql> select * from movies emit changes limit 2;
+--------------------------------+--------------------------------+--------------------------------+
|TITLE                           |ID                              |RELEASE_YEAR                    |
+--------------------------------+--------------------------------+--------------------------------+
|Life of Brian                   |42                              |1986                            |
|Aliens                          |48                              |1986                            |
Limit Reached
Query terminated

现在声明一个新流,它将使用相同的密钥写入相同的 Kafka 主题:

CREATE STREAM MOVIES_DELETED (title VARCHAR KEY, DUMMY VARCHAR) 
  WITH (KAFKA_TOPIC='movies', 
       VALUE_FORMAT='KAFKA');

插入墓碑消息:

INSERT INTO MOVIES_DELETED (TITLE,DUMMY) VALUES ('Aliens',CAST(NULL AS VARCHAR));

再次查询表:

ksql> select * from movies emit changes limit 2;
+--------------------------------+--------------------------------+--------------------------------+
|TITLE                           |ID                              |RELEASE_YEAR                    |
+--------------------------------+--------------------------------+--------------------------------+
|Life of Brian                   |42                              |1986                            |

检查基本主题

ksql> print movies;
Key format: KAFKA_STRING
Value format: JSON or KAFKA_STRING
rowtime: 2021/02/22 11:01:05.966 Z, key: Aliens, value: {"ID":48,"RELEASE_YEAR":1986}, partition: 0
rowtime: 2021/02/22 11:02:00.194 Z, key: Life of Brian, value: {"ID":42,"RELEASE_YEAR":1986}, partition: 0
rowtime: 2021/02/22 11:04:52.569 Z, key: Aliens, value: <null>, partition: 0
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 ksqldb 表中删除值或插入逻辑删除值? 的相关文章

  • CSS 背景过滤器在其后面的内容移动时不会更新

    我应该认为作为背后的内容backdropped元素移动时 元素的背景颜色会适应 看起来就像内容透过它发光一样 在这个例子中 情况并非如此 怎么了 在 Safari 12 0 3 macOS Mojave 10 14 3 上进行了测试 con
  • int num = new int();当这一行执行时会发生什么?

    今天了解了一个新事物 我们可以使用以下方法创建整数new运算符如下 int num new int 现在我想知道如果我以这种方式创建一个整数 那么生成的整数将是值类型还是引用类型 我想这将是一个值类型 我尝试了下面的代码 int num1
  • 生成的 Swagger REST 客户端无法正确处理查询参数的 + 字符

    我有这个 Spring REST 控制器方法 ApiOperation My method RequestMapping method RequestMethod POST value myMethod public void myMeth
  • 如何生成向量的所有可能组合

    我有一个向量 比如说A B C D E我有兴趣生成向量元素的所有可能的组合 下面给出了所需的输出 B A C A D A E A C B D B E B D C E C E D Try combn v1 2 FUN function x p
  • 如何在 JPA 中表达多态关联?

    A 多态关联类似于外键或多对一关系 不同之处在于目标可能是多种类型之一 语言中的类 数据库中的表 我正在将我使用多年的数据库设计从 PHP 移植到 Java 在旧代码中 我推出了自己的 ORM 但由于多种原因 它并不是最佳的 尽管我可能稍后

随机推荐