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

Scalar UDF

Scalar UDF是最基本的行处理函数, 它接受零个或多个输入参数,并对这一行数据进行操作,最终返回一行结果。

通常Scalar UDF适用于数学运算、复杂类型转换和自定义格式化等行处理的场景。

Scalar UDF的行为与内置函数(COS(), MAX(), MIN())非常相似,但其具体实现由用户自定义。

示例

  1. 建立连接。
    import ibis
    import fabric_data as fabric
    from fabric_data.udf import RegisterType
    
    con = ibis.fabric.connect(...)
  2. 定义UDF。
    def add_udf(lhs: int, rhs: int) -> int:
        return lhs + rhs
    
    def calculate_product(price: float, quantity: int) -> float:    
        return price * quantity
    
    con.create_scalar_function(
        add_udf,
        input_type=fabric.udf.InputType.PYTHON,
        database=db,
        comment="To test create_scalar_function"
    )
  3. 注册UDF。
    # 显式,直接注册UDF
    udf = con.udf.python.register(calculate_product, database="your-database", register_type=RegisterType.STAGED)
    # 或者从文件注册UDF
    udf = con.udf.python.register_from_file("your-current-file-path", "calculate_product", database="your-database", register_type=RegisterType.STAGED)
  4. 使用UDF并执行。
    # 使用UDF
    t = con.table(name="your-table", schema="your-schema")
    expression = t.select(udf(t.price, t.quantity).name("sum column"))
    print(expression.execute())

相关文档