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

UDTF

UDTF整体开发流程可参考Scalar UDF,需要注意以下几点:

  • Handler目前仅支持返回迭代器,推荐使用yield。
  • UDTF不支持开启并发和向量化计算。
  • 当Handler出现死循环,无限输出结果时,FabricSQL会根据超时时间自动关闭程序,默认超时时间为1000s。

示例

  1. 创建UDTF:
    CREATE FUNCTION py_generate_series(start int, endnum int, step int)
    RETURNS TABLE(a int)
    LANGUAGE python
    RUNTIME_VERSION='3.11.2'
    HANDLER='generate_series'
    as $$
    def generate_series(start, endnum, step):
        current = start
        while current <= endnum:
            yield current
            current += step
    $$;
  2. 执行UDTF:
    SELECT py_generate_series(1,4,1);
     py_generate_series 
    ----------------------
                        1
                        2
                        3
                        4
    (4 rows)

相关文档