本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
CREATE FUNCTION
Amazon Kinesis Data Analytics 提供了许多,还允许用户通过用户定义函数 (UDF) 扩展其功能。函数Amazon Kinesis Data Analytics 仅支持 SQL 中定义的 UDF。
用户定义的函数可以使用完全限定名称调用,也可以仅使用函数名来调用。
传递给(或从)用户定义的函数或转换返回的值必须与相应的参数定义完全相同的数据类型。换句话说,在将参数传递给用户定义的函数(或从中返回值)时,不允许隐式转换。
用户定义函数 (UDF)
用户定义的函数可以实现复杂的计算,采用零个或多个标量参数并返回标量结果。UDF 的运行方式类似于 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 分配一个在应用程序中唯一的特定函数名称。请注意,常规函数名称不必是唯一的(两个或多个函数可以共享相同的名称,只要它们的参数列表可以区分它们)。
DERMINISTIC/NOT DERMINISTIC 表示函数是否总是会为一组给定的参数值返回相同的结果。您的应用程序可能将其用于查询优化。
读取 SQL 数据和修改 SQL 数据分别表明该函数是否可能读取或修改 SQL 数据。如果函数尝试在未指定 READS SQL DATA 的情况下从表或流读取数据,或者在未指定 MODIFIES SQL 数据的情况下插入流或修改表,则会引发异常。
在 NULL 输入时返回 NULL 并在空输入时调用,表示如果函数的任何参数为空,则该函数是否被定义为返回空值。如果未指定,则默认为 NULL 输入时调用。
SQL 定义的函数体仅由单个 RETURN 语句组成。
示例
CREATE FUNCTION get_fraction( degrees DOUBLE ) RETURNS DOUBLE CONTAINS SQL RETURN degrees - FLOOR(degrees) ;