嗨,我正在尝试KSQL,发现大多数文档提供了使用kstream或ktable直接连接的示例。可以说我有X队已经创建的2个流,并且我不能更改它或重新创建新的流,并且还想使用现有的流。在默认情况下,在联接时将timetime作为时间戳列考虑。除了在现有流中将rowtime列指定为timestamp列之外,还有什么方法可以考虑并考虑将其时间窗加入KSQL。
答案 0 :(得分:0)
您可以使用WITH (TIMESTAMP='column_name')
语法指定任何有效的列。例如:
CREATE STREAM ORDERS (ORDER_ID INT,
CUSTOMER_ID INT,
ORDER_TS VARCHAR,
ORDER_TOTAL_USD DOUBLE,
MAKE VARCHAR)
WITH (KAFKA_TOPIC='orders', VALUE_FORMAT='JSON',
TIMESTAMP='ORDER_TS', TIMESTAMP_FORMAT='yyyy-MM-dd''T''HH:mm:ssX');
这将使用ORDER_TS
列作为任何与时间相关的KSQL操作(即窗口连接和聚合)中的时间戳。您可以通过将ROWTIME
的值与ORDER_TS
进行比较来验证这一点,并观察它们是否相同。
参考文献: