ROWTIME - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

ROWTIME

ROWTIME 是一个运算符和系统列,用于返回创建流特定行的时间。

它有四种不同的方式使用:

  • 作为运算符

  • 作为流的系统列

  • 作为列别名,覆盖当前行上的时间戳

  • 作为表中的普通列

有关更多详细信息,请参阅主题:时间戳、ROWTIME 和当前行时间戳

ROWTIME 运算符

在流式处理查询的 SELECT 子句中使用时,没有被前面的 '别名' 限定。,ROWTIME 是一个运算符,它计算到即将生成的行的时间戳。

它的类型始终是时间戳不为空。

ROWTIME 系统列

每个流都有一个 ROWTIME 列。要从查询中引用此列,请使用流名称(或别名)限定该列。例如,以下连接查询返回三个时间戳列:其输入流的系统列和生成行的时间戳。

SELECT STREAM  o.ROWTIME AS leftRowtime,  s.ROWTIME AS rightRowtime,  ROWTIME AS joinRowtime FROM Orders AS o  JOIN Shipments OVER (RANGE INTERVAL '1' HOUR FOLLOWING) AS s  ON o.orderId = s.orderId leftRowtime         rightRowtime        joinRowtime =================== =================== =================== 2008-02-20 10:15:00 2008-02-20 10:30:00 2008-02-20 10:15:00 2008-02-20 10:25:00 2008-02-20 11:15:00 2008-02-20 10:25:00 2008-02-20 10:25:30 2008-02-20 11:05:00 2008-02-20 10:25:30

当它发生时,LefTrowTime 始终等于 JoinRowTime,因为指定了连接,以便输出行时间戳始终等于订单流中的 ROWTIME 列。

因此,每个流式处理查询都有一个 ROWTIME 列。但是,ROWTIME 列不会从顶级 JDBC 查询返回,除非您明确地将其包含在 SELECT 子句中。例如:

CREATE STREAM Orders(  "orderId" INTEGER NOT NULL,  "custId" INTEGER NOT NULL); SELECT columnName FROM ALL_STREAMS; columnName ========== orderId custId SELECT STREAM * FROM Orders; orderId custId ======= ======    100    501    101     22    102    699 SELECT STREAM ROWTIME, * FROM Orders; ROWTIME             orderId custId =================== ======= ====== 2008-02-20 10:15:00     100    501 2008-02-20 10:25:00     101     22 2008-02-20 10:25:30     102    699

这主要是为了确保与 JDBC 的兼容性:流订单声明了两列,所以 “SELECT STREAM *” 应该返回两列是有道理的。