Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Não é possível resolver a função <routineName> no caminho de busca <searchPath>.
Parâmetros
- routineName: O nome da função que não pode ser resolvida.
-
searchPath: a lista ordenada de esquemas que foi pesquisada se
routineNamenão fosse qualificado pelo esquema.
Explicação
As funções persistentes consistem em três partes de nome: <catalog>.<schema>.<relation>.
Se você não especificar todas as três partes do nome, ele será completado implicitamente usando o catálogo atual ou o esquema atual.
Isso é semelhante à maneira como o diretório de trabalho do sistema de arquivos influencia quais arquivos você pode ver, a menos que você especifique completamente o caminho.
As funções temporárias só existem na sessão ou consulta e nunca devem ser qualificadas.
Os motivos mais comuns para não encontrar uma função são:
- A função não existe.
- O nome da função está incorretamente escrito.
- A função definida pelo usuário está localizada em um esquema diferente.
- A função definida pelo usuário não está localizada no esquema atual.
- Você não pode exibir a função definida pelo usuário porque não tem acesso.
- A função interna que você está tentando invocar não está disponível nesta versão do Azure Databricks.
Mitigação
Reduza os erros revisando o seguinte.
Você digitou o nome da função incorretamente?
Use
SHOW FUNCTIONS IN \<schema\>para verificar o nome correto da função.A função está em um esquema diferente?
Se a função estiver localizada em um catálogo no Catálogo do Unity, execute a seguinte consulta:
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'Isso lista o esquema dentro do catálogo atual em que a função está localizada.
Se a função estiver localizada fora do Catálogo do Unity, use
SHOW SCHEMASpara localizar esquemas candidatos. UtilizeSHOW FUNCTIONS IN \<schema\>para testar a função.Você não qualificou totalmente o nome e o resultado de
VALUES current_schema()não corresponde ao nome qualificado da função?Qualifique
functionNamecom seu esquema e catálogo ou executeUSE SCHEMApara definir o esquema implícito.Você fez referência a uma função temporária, mas ela estava em uma sessão anterior, expirada ou diferente?
Recrie a função temporária usando
CREATE TEMPORARY FUNCTION \<routineName\> …ou alterne para o uso de uma função persistente.Deseja emitir uma instrução DDL, como
DROP FUNCTIONapenas no caso de o objeto existir?Emita a instrução usando a cláusula
IF EXISTS, como:DROP FUNCTION \<routineName\> IF EXISTS.Você sabe que a função existe, mas não consegue vê-la em
SHOW FUNCTIONS?Entre em contato com o administrador para obter acesso à função. Você também pode precisar de acesso ao esquema e ao catálogo.
Para obter mais informações sobre como resolver o erro, consulte Resolução de função.
Exemplos
> CREATE SCHEMA IF NOT EXISTS myschema;
> CREATE OR REPLACE FUNCTION myschema.myfunc() RETURNS INT RETURN 5;
--
-- The function name has been misspelled
--
> SELECT myschema.myfun();
[UNRESOLVED_ROUTINE] Cannot resolve function `myschema`.`myfun` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
-- Use SHOW FUNCTIONS to find the correct nme
> SHOW USER FUNCTIONS IN myschema;
spark_catalog.myschema.myfunc
-- Correct the spelling
> SELECT myschema.myfunc();
5
--
-- The qualifier has been misspelled
--
> CREATE SCHEMA IF NOT EXISTS wrongschema;
> SELECT wrongschema.myfunc;
[UNRESOLVED_ROUTINE] Cannot resolve function `wrongschema`.`myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
-- Find candidate schemas
> SHOW SCHEMAS;
myschema
wrongschema
-- Verify the function exists in the candidate schema
> SHOW USER FUNCTIONS IN myschema;
spark_catalog.myschema.myfunc
> SELECT myschema.myfunc();
5
--
-- Change current schema to find an unqualified function
--
> SELECT myfunc();
[UNRESOLVED_ROUTINE] Cannot resolve function `myfunc` on search path [`system`.`builtin`, `system`.`session`, `spark_catalog`.`default`].; line 1 pos 7
> USE SCHEMA myschema;
SELECT myfunc();
5