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

单调函数

MONOTONIC(<expression>)

流式 GROUP BY 需要至少一个已分组的表达式为单调的非常量表达式。可预先知道的唯一单调列是 ROWTIME。有关更多信息,请参阅 单调表达式和运算符

MONOTONIC 函数允许您声明指定表达式为单调表达式,这将使流式 GROUP BY 能够将此表达式用作键。

MONOTONIC 函数将计算其参数并返回结果 (结果类型与其参数的类型相同)。

通过将表达式封闭在 MONOTONIC 中,您断言表达式的值不会增加或减少,并且绝不会更改方向。例如,如果您有一个包含订单行项目的流 LINEITEMS,并且编写 MONOTONIC(orderId),则您将断言行项目在流中是连续的。如果有订单 1000 的行项目,则可以后接订单 1001 的行项目,再后接订单 1005 的行项目。如果之后有订单 1001 的行项目 (即,行项目序列变为 1000、1001、1005、1001),则是非法的。同样,987、974、823 的行项目序列是合法的,但以下行项目序列是非法的:

  • 987、974、823、973

  • 987、974、823、1056

声明单调的表达式可减小,或甚至具有任意顺序。

请注意,MONOTONIC 的定义精确为 GROUP BY 继续进行所需的内容。

如果声明单调的表达式不是单调表达式 (即,如果断言对实际数据无效),则将取消指定 Amazon Kinesis Data Analytics 行为。

换言之,如果您肯定表达式是单调表达式,则可使用此 MONOTONIC 函数来使 Amazon Kinesis Data Analytics 将此表达式视为单调表达式。

但是,如果您是错的,并且通过计算此表达式得出的值从升序更改为降序或从降序更改为升序,则可能会出现意外结果。Amazon Kinesis Data Analytics 流式处理 SQL 将相信您的话,并根据您确定表达式是单调表达式来运行。但如果表达式实际上不是单调表达式,则无法预先确定结果 Amazon Kinesis Data Analytics 的行为,因此结果可能不是预期或所需的结果。