KSQL:具有相关字段的Topk

问题描述 投票:1回答:1

关于topk聚合的问题。我有一个事件流,每个事件都有三个字段id,accountid,priority。我正在尝试一个视图,其中包含按ID分组的ID列表,按帐户ID排在前5位,实际上,我提出了给出前5个优先事件的查询

select topk(priority, 5), accountId 
 from events_stream 
 group by accountId 
 emit changes;

但是我无法关联该事件的相应ID。样本事件:

{
    "ROWTIME": 1588619792693,
    "ROWKEY": "99a5e4ac-a4be-4aa4-8222-3e95a4811994",
    "TIMESTAMP": 1588619792691,
    "ID": "99a5e4ac-a4be-4aa4-8222-3e95a4811994",
    "PRIORITY": 262,
    "ACCOUNTID": "345"
}

是否可以将ids的优先级设为topk

apache-kafka ksql confluent-kafka ksqldb
1个回答
0
投票

我想为每个帐户设置前5个高优先级事件。

以下查询应该可以解决问题:

SELECT accountId, id, TOPK(priority, 5) \
FROM events_stream \
GROUP BY accountId;
© www.soinside.com 2019 - 2024. All rights reserved.