【问题标题】:How do i set a key field when creating table in KSQL?在 KSQL 中创建表时如何设置关键字段?
【发布时间】:2019-08-06 01:22:47
【问题描述】:

请问建表时可以设置key字段吗?

我已经通过聚合创建了一个表,如下所示:

CREATE TABLE withdrawal_less_than_5min AS 
SELECT executedate, status, count(*) as count 
FROM TB3_WITHDRAW_RECORD_EXCLUDE_INTERNAL_USERS 
GROUP BY executedate,status;

当我DESCRIBE EXTENDED withdrawal_less_than_5min时,表格的关键字段设置如下,我认为应该是执行者和状态。

Key field : KSQL_INTERNAL_COL_0|+|KSQL_INTERNAL_COL_1

但是,当我尝试将它与另一个具有相同聚合的表连接时,它会返回此错误。

Source table (A) key column (KSQL_INTERNAL_COL_0|+|KSQL_INTERNAL_COL_1) 
is not the column used in the join criteria (EXECUTEDATE).

如何设置关键字段?谢谢你。

【问题讨论】:

    标签: apache-kafka ksqldb


    【解决方案1】:

    您可以通过以下方式创建密钥-

    CREATE TABLE withdrawal_less_than_5min with (key='EXECUTEDATE') AS 
    SELECT executedate, status, count(*) as count 
    FROM TB3_WITHDRAW_RECORD_EXCLUDE_INTERNAL_USERS 
    GROUP BY executedate,status partition by 'EXECUTEDATE';
    

    您也可以关注 Robin 的博客 - https://www.confluent.io/stream-processing-cookbook/ksql-recipes/inspecting-changing-topic-keys

    对于 Ksql 的任何错误或问题,请搜索 Robin Moffet,他已经回答了我们的问题以提供帮助 :)

    【讨论】:

    • 这将返回错误消息mismatched input 'partition' expecting ';'
    • 我和 OP 在同一条船上,CREATE TABLE 不喜欢 PARTITION BY 子句。
    猜你喜欢
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2020-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多