t-对流输入进行排序 - Amazon Kinesis Data Analytics
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

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), ...作品。

如果未满足这些要求中的任何一个,该语句将失败并显示错误。

附加说明:

  • 您不能使用传入的行时间限制。这些被系统忽略。

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