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

T 排序流输入

Amazon Kinesis Data Analytics 实时分析利用了“到达的数据按 ROWTIME 排序”这一事实。但是,有时从多个源到达的数据的时间可能不同步。

尽管 Amazon Kinesis Data Analytics 可以对来自各个数据源并且已单独插入到 Amazon Kinesis Data Analytics 应用程序的本机流的数据进行排序,但在某些情况下,此类数据可能已从多个源合并(例如为了在处理的早期阶段实现高效的使用)。在其他时候,大容量数据源可能使直接插入无法实现。

此外,不可靠的数据源还可能通过强制 Amazon Kinesis Data Analytics 应用程序无限期等待来阻止继续处理,从而使该应用程序在所有已连接数据源都传送完之前无法继续。在这种情况下,来自此源的数据可能不同步。

您可以使用 ORDER BY 子句解决这些问题。Amazon Kinesis Data Analytics 使用传入行的基于滑动时间的窗口来按照 ROWTIME 对这些行进行重新排序。

语法

您应使用以下语法指定用于排序的基于时间的参数以及其中的流式行将按时间排序的基于时间的窗口:

 ORDER BY <timestamp_expr> WITHIN <interval_literal>

限制

T 排序有以下限制:

  • ORDER BY 表达式的数据类型必须为时间戳。

  • 部分排序的表达式 <timestamp_expr> 必须存在于别名为 ROWTIME 的查询的选择列表中。

  • ORDER BY 子句的前导表达式不得包含 ROWTIME 函数且不得使用 DESC 关键字。

  • ROWTIME 列需要被完全限定。例如:

  • ORDER BY FLOOR(ROWTIME TO MINUTE), ... 无效。

  • ORDER BY FLOOR(s.ROWTIME TO MINUTE), ... 有效。

如果这些要求中有任意一条不符合,语句将失败并出现错误。

附加说明:

  • 您不能使用传入 rowtimebounds。系统将忽略它们。

  • 如果 <timestamp_expr> 的计算结果为 NULL,对应的行将被舍弃。