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

ROWTIME

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

可通过四种不同的方式使用它:

  • 作为运算符

  • 作为流的系统列

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

  • 作为表中的普通列

有关更多详细信息,请参阅本指南中的主题“时间戳”、“ROWTIME”和“CURRENT_ROW_TIMESTAMP”。

ROWTIME 运算符

当在流式查询的 SELECT 子句中使用时,如果没有被上述“别名”限定,ROWTIME 将是这样一个运算符:计算结果为即将生成的行的时间戳。

其类型始终为 TIMESTAMP NOT NULL。

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,因为指定的联接使得输出行时间戳始终等于 Orders 流中的 ROWTIME 列。

此后,每个流式查询都有一个 ROWTIME 列。但是,除非您将 ROWTIME 列显式包含在 SELECT 子句中,否则不会从顶级 JDBC 查询返回该列。例如:

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 兼容:流 Orders 声明了两个列,因此“SELECT STREAM *”应返回两个列是有道理的。