我需要使用德鲁伊制作某种分析平台。我想征求社区关于德鲁伊是否适合的想法以及实现此类想法的某种想法。 我有一个通过 RabbitMQ 接收消息的系统。我可能收到的示例消息如下:
session_id: 123e4567-e89b-12d3-a456-556642440000
type: NORMAL or DLR_INTERIM or DLR (as final)
direction: IN or OUT
customer_id: 1
seizures: 1
units: 1
datetime: 2022-11-08 12:00:00
status: OK
dlr_status: NONE
Final table 需要包含至少具有以下字段的所有记录(您可能建议的任何额外的帮助都很好)
DateTime InCustomer OutCustomer InSeizures OutSeizures InUnits OutUnits InStatus OutStatus InDlrStatus OutDlrStatus
系统的工作方式如下(注意这个过程中的每个session id都是一样的)(还要注意所有的消息都是通过Kafka发送给druid的):
看看我怎么说更新 - 所以基本上如果我得到两个失败的记录(第 2 步)并且第三个成功,我需要一个将返回如下内容的查询:
DateTime InCustomer OutCustomer InSeizures OutSeizures InUnits OutUnits InStatus OutStatus InDlrStatus OutDlrStatus
time 1 3 1 3 1 1 OK OK DELIEVERED DELIEVERED
failed1t 1 1 0 1 0 1 NONE RSYSERR NONE NONE
failed2t 1 2 0 1 0 1 NONE RSYSERR NONE NONE
据我了解,在德鲁伊中没有“更新”,尤其是在 Streaming 模式下。据我所知,我可能只需要添加新记录,但是在执行查询时,只需为该会话(或在本例中为时间范围)获取最后一个记录,对吗?
所以我要寻找的是一种实时存储和“更新”这些数据的方法,以及一个最终输出我想要的结果的 SQL 查询(例如上表中的那个)。
我不确定我是否能够正确解释所有内容,但我希望您至少对要求有所了解,当然,请随时在评论中要求任何进一步的说明。