本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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,对应的行将被舍弃。