在 Amazon Kinesis 的 Streaming SQL 中获取会话 ID

Getting Session ID in Streaming SQL for Amazon Kinesis

我已经能够将我的数据规范化为以下格式:

|ID | SessionState | PreviousID |
|1  |   OFF        |    -       |
|2  |   ON         |    1       |
|3  |   ON         |    2       |
|4  |   OFF        |    3       |

我想做的是向其中添加一个 CycleID,它将允许以下内容:

|ID | SessionState | PreviousID | CycleID |
|1  |   OFF        |    -       |    -    |
|2  |   ON         |    1       |    1    |
|3  |   ON         |    2       |    1    |
|4  |   OFF        |    3       |    1    |

目前我正在使用一个滞后函数来获取之前的状态和 previousID(我之前正在获取),但是,在状态改变之前我无法让它持续存在。我或多或少需要一个来自

的 window

SessionState = 'OFF-->ON' 到 'ON-->OFF'

由于我是在 Kinesis Analytics 中执行此操作,因此我们将不胜感激。

谢谢

有一个相关问题 - Using Kinesis Analytics to construct real time sessions,它提出了解决会话化问题的几个选项。

如果您的情况允许您将所有数据推送到数据库,然后使用标准 SQL - 那就去做吧。但是,如果你有时间 window 语义并且需要实时响应,复杂的业务逻辑,你将需要一个专门的工具,如 Kafka、Spark 或 Drools。