
# WITH ARGUMENTS语法
WITH ARGUMENTS语法扩展了现有用户定义函数（UDF）的功能，主要作用是允许用户在UDF运行时设置初始状态。通过这一功能，用户可以：
- 配置运行时资源和并发度：用户可以指定UDF运行时所需的资源（如内存、CPU等）以及并发执行的实例数量，从而优化性能和资源利用率。
- 设置类的初始化参数：对于以类（class）形式定义的UDF，用户可以通过WITH ARGUMENTS语法传递初始化构造参数，从而在UDF实例化时设置特定的初始状态。
使用注意事项如下：
- WITH ARGUMENTS支持几个固定的参数配置，具体的参数信息请参考[表1]。对于class的初始化参数名称不能与固定参数同名，参数名称是大小写敏感的。
- 入参列表仅支持常量。
- 以class形式定义的UDF函数体，用户按需定义class的__init__和__del__成员方法，但必须定义__call__成员方法，该方法为主函数入口。
- min_concurrency和max_concurrency需要同时设置，设置成功后表示开启自适应并发度。
- init_concurrency需先开启[enable_udf_global_actor_pool](https://support.huaweicloud.com/sqlref-aura-aidatalake/aidatalake_061_0267.html#aidatalake_061_0267__section423991313109)，且需同时设置min_concurrency和max_concurrency，否则将报错。
 表1UDF运行时配置列表 
| 参数名                 | 参数描述                                                                                                                                                | 默认值                                                                                                                                                                                                                             |
|:---|:---|:---|
| concurrency         | UDF的运行并发度，取值范围\[1,1024\]。                                                                                                                           | 1                                                                                                                                                                                                                               |
| min_concurrency     | UDF的运行最小并发度，取值范围\[1,1024\]。                                                                                                                         | null                                                                                                                                                                                                                            |
| max_concurrency     | UDF的运行最大并发度，取值范围\[1,1024\]。                                                                                                                         | null                                                                                                                                                                                                                            |
| init_concurrency    | UDF运行时的预热并发度，取值范围\[min_concurrency, max_concurrency\]。                                                                                              | (min_concurrency + max_concurrency) / 2                                                                                                                                                                                         |
| timeout             | UDF执行的超时时间，取值范围\[1,3600\]，单位为s。                                                                                                                     | 1000                                                                                                                                                                                                                            |
| cpu                 | UDF运行时单个Actor的CPU资源，取值范围为\[0.33, 1\]之间的分数值、\[1, 16\]的整数值。 **需注意，系统会将输入值四舍五入，保留两位小数。**                        | 1                                                                                                                                                                                                                               |
| memory              | UDF运行时单个Actor的Memory资源，取值范围为\[128, 65536\]，单位为MB，不支持小数。                                                                                             | 4096                                                                                                                                                                                                                            |
| arch                | UDF运行时的物理架构类型，取值为"arm"或"x86"。不同的apu值，arch会有不同的默认值。                                                                                                  | - NPU：默认值为"arm"  - 其他：默认值为"x86"   |
| apu                 | 指定异构资源的类型和规格，例如"NPU/.+/1"。                                                                                                                          | null                                                                                                                                                                                                                            |
| env_vars            | 运行时环境变量，dict\[str, str\]或JSON字符串，参见[环境变量设置](https://support.huaweicloud.com/sqlref-aura-aidatalake/aidatalake_061_0122.html)。                       | null                                                                                                                                                                                                                            |
| scheduling_strategy | UDF Actor放置策略，SchedulingStrategy对象、对象列表或JSON字符串，参见[UDF Actor放置策略](https://support.huaweicloud.com/sqlref-aura-aidatalake/aidatalake_061_0123.html)。 | null                                                                                                                                                                                                                            |
   
