CREATE FUNCTION - Amazon Kinesis Data Analytics SQL 参考
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

CREATE FUNCTION

Amazon Kinesis Data Analytics 提供了许多函数功能,还允许用户通过用户定义的函数扩展其功能UDFs()。亚马逊 Kinesis Data Analytics UDFs 仅支持在 SQL 中定义。

用户定义的函数可通过完全限定名称或仅通过函数名称来调用。

传递给用户定义的函数或转换(或从用户定义的函数或转换返回)的值必须与相应的参数定义具有完全相同的数据类型。换句话说,在将参数传递给用户定义的函数(或从用户定义的函数返回值)时不允许使用隐式转换。

用户定义的函数 (UDF)

用户定义的函数可以实现复杂的计算,采用零个或多个标量参数并返回标量结果。 UDFs 操作方式类似于内置函数,例如 FLOOR () 或 LOWER ()。对于 SQL 语句中出现的每个用户定义的函数,每行都会使用标量参数(该行中的常量或列值)调用该 UDF 一次。

语法

CREATE FUNCTION ''<function_name>'' ( ''<parameter_list>'' )  RETURNS ''<data type>''  LANGUAGE SQL  [ SPECIFIC ''<specific_function_name>''  | [NOT] DETERMINISTIC ]  CONTAINS SQL  [ READS SQL DATA ]  [ MODIFIES SQL DATA ]  [ RETURNS NULL ON NULL INPUT | CALLED ON NULL INPUT ]    RETURN ''<SQL-defined function body>''

SPECIFIC 会分配一个在应用程序中唯一的特定函数名称。请注意,常规函数名称不必是唯一的(两个或多个函数可以共用同一名称,只要能够通过其参数列表加以区分即可)。

DETERMINISTIC/NOT DETERMINISTIC 表示函数是否会始终针对给定的一组参数值返回相同结果。您的应用程序可能会使用它来进行查询优化。

READS SQL DATA 和 MODIFIES SQL DATA 分别表示函数是否可能读取或修改 SQL 数据。如果函数尝试在未指定 READS SQL DATA 的情况下从表或流中读取数据,或者在未指定 MODIFIES SQL DATA 的情况下插入流或修改表,则会引发异常。

RETURNS NULL ON NULL INPUT 和 CALLED ON NULL INPUT 表示函数在其任何参数为 null 时是否会被定义为返回 null。如果未指定,则默认为 CALLED ON NULL INPUT。

SQL 定义的函数正文仅包含一个 RETURN 语句。

示例

CREATE FUNCTION get_fraction( degrees DOUBLE )    RETURNS DOUBLE    CONTAINS SQL    RETURN degrees - FLOOR(degrees) ;