
# 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())
   ```
   
 
