更新时间:2025-07-08 GMT+08:00
分享

Scalar UDF隐式注册语法

隐式注册的含义是依赖Python运行时自动发现并注册Scalar UDF。用户不需要在Python代码中侵入式添加注册逻辑代码,而是使用@装饰器修饰原始Python函数,然后在DataFrame中使用被装饰的原始Python函数的标识符,即可完成注册。隐式注册在使用@装饰器时不需要获得backend会话对象,后续在ibis DataFrame中获取backend会话对象。

推荐使用隐式注册的场景:如果用户希望无侵入式的注册Scalar UDF,且对同一个Backend连接下的Scalar UDF注册和使用分离无要求。

一个典型的场景是1个用户的Python脚本中直接写了整个UDF的注册和使用全流程。

表1 隐式注册语法

UDF类型

UDF类型(二级)

代码入口

参考

udf

python

@fabric.udf.python(<注册参数>)

Scalar Python UDF注册参数

builtin

@fabric.udf.builtin(<注册参数>)

Scalar Builtin UDF注册参数

对于隐式注册,实际注册动作的发生时间根据DataFrame操作模式Lazy、Eager有所区别。

参考上文提及的ibis官方文档,对于DataFrame的操作分为Eager、Lazy两种模式,由配置项ibis.options.interactive控制,默认为False,即所有的DataFrame都默认是Lazy模式。对于两种DataFrame执行模式,UDF注册的发生时间不同,详情说明如下:

表2 DataFrame执行模式

ibis.options.interactive

DataFrame执行模式

UDF注册时间

UDF使用时间

False

Lazy

整个DataFrame调用execute方法时

整个DataFrame调用execute方法时

True

Eager

第一次在DataFrame中使用

每一次在DataFrame中使用

相关文档