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

CREATE FUNCTION

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

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

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

用户定义的函数 (UDF)

用户定义的函数可实施复杂计算,选取零个或零个以上的标量参数并返回标量结果。UDF 的运行方式与内置函数 (如 FLOOR() 或 LOWER()) 相似。对于出现在 SQL 语句中的每个用户定义的函数,将会为每个包含标量参数 (行中的常量或列值) 的行调用一次该用户定义的函数。

语法

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) ;