【已解决】查询数据使用自定义函数时,显示自定义函数找不到

Viewed 155

我们使用doris 2.0.1.1版本,在执行自定义函数的时候,报如下错误image.png
执行的sql语句:
SELECT
*
FROM
(select
*, get_explode_date_list('2023-01-01','2023-10-01', c_effective_dt, c_invalid_dt, 3, 2) as dt
from dashboard.personnel_employee_info WHERE c_company_id = '00000174eda744e09edbdd5faeda8f33'
)x LATERAL VIEW explode(dt) tableName AS c_date
WHERE c_date != ''

我们使用的创建函数的语句如下:
CREATE GLOBAL FUNCTION get_explode_date_list(String, String, Datetime, Datetime, Int, Int) RETURNS array PROPERTIES (
"file"="file:///data/doris/dm.bigdata.data_transformer_udf_01.jar",
"symbol"="com.dianmi.doris.udf.GetExplodeDateList",
"always_nullable"="true",
"type"="JAVA_UDF"
);

想请教一下这个是什么原因?

3 Answers

问题解决了!一开始的使用我们使用http的方式定义了好几个自定义函数,但是这些函数在执行的时候有点问题,于是我们调整了一下,使用本地文件的方式又重新定义了一下这些自定义函数。

定义函数的时候,我们部分使用了global关键字,部分没有使用global关键字,但是在drop函数的时候,没有使用global关键字。执行drop命令的时候显示成功,重新创建函数时,应该是有部分创建函数语句报错了,但是没注意到。以为是自己搭建的doris版本问题,后来才注意到global关键字,导致前一个版本的函数没有删除干净,删干净后重新创建就可以了。

自定义函数不是全局的,在哪个库下面使用,就要在哪个库下面创建;这个 sql 在哪库执行,就要在哪个库执行创建自定义函数的语句

您好,首先需要确定下您 UDF 函数中,是否有 evaluate 这个方法哈,比如:
img_v2_64db90b2-e7e1-4567-b9b8-676c4f93a1dg.jpg