更新时间:2025-12-18 GMT+08:00

DataArts Fabric SQL UDF概述

用户自定义函数(User-Defined Function,简称UDF)是指由用户根据特定需求自定义的函数,用于扩展数据库或数据处理系统的功能。UDF可以执行各种操作,如数据转换、复杂计算、数据聚合等,这些操作可能超出了系统提供的内置函数的能力。

UDF的主要用途包括:

  • 扩展功能:UDF允许用户扩展数据库或数据处理系统的功能,执行内置函数不支持的操作。
  • 复杂计算:UDF可用于执行复杂的数学或逻辑计算,这些计算可能涉及多个步骤和条件。
  • 数据转换:UDF可用于数据清洗和转换,如格式化日期、转换字符串或编码数据。
  • 业务逻辑封装:UDF可将业务逻辑封装在函数中,使得数据处理更加模块化和可重用。
  • 性能优化:在某些情况下,通过UDF将复杂的计算逻辑移到数据库服务器上执行,可以减少数据传输和提高性能。

从类型上来分,UDF包括以下三种主要类型:

表1 UDF类型

UDF类型

输入值

返回值

描述

标量函数(Scalar UDF,一般简称UDF)

一行数据

一个标量值

Scalar UDF是一种用户自定义函数。Scalar UDF输入是数据库中一行数据,输出是一个标量值;对于每一行的输入数据处理是独立的,不依赖于其他行的数据。这类函数适用于需要对数据进行特定计算或转换的场景。本特性引入的Scalar UDF允许用户使用Python的语法在数据库中对数据进行计算或转换。

聚合函数(Aggregate UDF,简称UDAF)

多行数据

一个聚合值

UDAF是一种聚合类型的用户自定义函数。UDAF的输入是一组数据行,而输出是对整组数据进行聚合后得到的单个结果值。UDAF通常用于分组统计、聚合计算等场景。

表值函数(Table-Valued UDF,简称UDTF)

一行数据

多行结果

UDTF是一种以表作为输出的用户自定义函数,其输入是一行数据,输出则是一个包含多行多列的表结构。UDTF通常用于行生成、数据展开、多值解析等场景

约束限制

  • UDF编程语言仅支持Python。
  • UDF的参数不支持设置默认值,如果创建函数时参数或返回值带有精度,不进行精度检测。
  • 不支持函数重载。