UNRESOLVED_ROUTINE错误类
无法解析函数< routineName >
在搜索路径上< searchPath >
.
解释
持久化函数由三个名称部分组成:<目录>。< schema >。< >的关系
.如果没有指定名称的所有三个部分,则使用当前目录或当前模式隐式完成。这类似于文件系统的工作目录影响您可以看到哪些文件的方式,除非您完全指定路径。
临时函数只存在于会话或查询中,并且永远不能限定。
找不到函数的最常见原因是:
函数不存在。
函数名拼写错误。
用户定义的函数位于不同的模式中。
用户定义的函数不在当前模式中。
您无法查看用户定义的函数,因为您没有访问权限。
您试图调用的内置函数在此发行版Databricks上不可用。
缓解
通过检查以下内容来减少错误。
函数名拼写错误了吗?
使用显示
中的函数 验证正确的函数名。函数是不同的模式吗?
如果函数位于Unity catalog中的某个目录中,则执行以下查询:
选择routine_schema从information_schema.routines在哪里routine_name=' < routinename >”
这将列出函数所在的当前目录中的模式。
你没有完全限定名字和结果吗的值current_schema()”与函数的限定名不匹配?
有资格
functionName
与其模式和目录,或运行“使用模式”设置隐式模式。您是否引用了一个临时函数,但它在以前的、过期的或不同的会话中?
使用重新创建临时函数创建临时函数
… ,或切换到使用持久函数。您是否希望发出DDL语句,例如
下降函数
只是为了以防对象存在?命令发出语句
如果存在
子句,例如:' DROP FUNCTIONIF EXISTS ' .你是否知道函数存在,但你看不到它的显示功能?
请与管理员联系以获得该功能的访问权。您可能还需要访问模式和编目。
有关如何解决错误的详细信息,请参见函数解析.
例子
>创建模式如果不存在myschema;>创建或取代函数myschema.myfunc()返回INT返回5;--——函数名拼写错误-->选择myschema.myfun();[UNRESOLVED_ROUTINE]不能解决函数`myschema`.`myfun`在搜索路径[`系统`.`内装式`,`系统`.`会话`,`spark_catalog`.`默认的`]。行1pos7—使用SHOW函数找到正确的nme>显示用户功能在myschema;spark_catalog.myschema.myfunc——纠正拼写错误>选择myschema.myfunc();5--限定词拼错了-->创建模式如果不存在wrongschema;>选择wrongschema.myfunc;[UNRESOLVED_ROUTINE]不能解决函数`wrongschema`.`myfunc`在搜索路径[`系统`.`内装式`,`系统`.`会话`,`spark_catalog`.`默认的`]。行1pos7——寻找候选模式>显示模式;myschemawrongschema——验证该函数存在于候选模式中>显示用户功能在myschema;spark_catalog.myschema.myfunc>选择myschema.myfunc();5--—更改当前模式以查找不合格的函数-->选择myfunc();[UNRESOLVED_ROUTINE]不能解决函数`myfunc`在搜索路径[`系统`.`内装式`,`系统`.`会话`,`spark_catalog`.`默认的`]。行1pos7>使用模式myschema;选择myfunc();5