本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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>''
SPECIAL 分配一个在应用程序中是唯一的特定函数名称。请注意,常规函数名称不必是唯一的(两个或多个函数可以共享相同的名称,只要它们可以通过其参数列表进行区分)。
DEFERMINISTIC /NOT DEPERMINISTIC 表示函数是否始终会为一组给定的参数值返回相同的结果。您的应用程序可能会将其用于查询优化。
读取 SQL 数据和修改 SQL 数据分别表示该函数是否可能读取或修改 SQL 数据。如果函数在未指定 READS SQL DATA 的情况下尝试从表或流中读取数据,或者在未指定 MODIFIES SQL DATA 的情况下插入流或修改表,则会引发异常。
在 NULL 输入时返回 NULL 和 NULL INPUT 上调用表示该函数是否被定义为如果其任何参数为空则返回空值。如果未指定,则默认为 NULL INPUT 时调用。
SQL 定义的函数体仅由一个 RETURN 语句组成。
示例
CREATE FUNCTION get_fraction( degrees DOUBLE ) RETURNS DOUBLE CONTAINS SQL RETURN degrees - FLOOR(degrees) ;