Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Не удается разрешить функцию <routineName>
в поисковом пути <searchPath>
.
Параметры
- routineName: имя функции, которая не может быть разрешена.
-
searchPath: упорядоченный список схем, которые были просмотрены, если
routineName
не был указан в схеме.
Описание
Сохраненные функции состоят из трех частей названия: <catalog>.<schema>.<relation>
.
Если не указать все три части имени, оно неявно завершено с помощью текущего каталога или текущей схемы.
Это похоже на то, как рабочий каталог файловой системы влияет на файлы, которые вы видите, если вы не полностью укажете путь.
Временные функции существуют только в сеансе или запросе и никогда не должны быть квалифицированы.
Наиболее распространенными причинами, по которой не найти функцию, являются:
- Функция не существует.
- Имя функции неправильно написано.
- Определяемая пользователем функция находится в другой схеме.
- Определяемая пользователем функция не находится в текущей схеме.
- Вы не можете просмотреть определяемую пользователем функцию, так как у вас нет доступа.
- Встроенная функция, которую вы пытаетесь вызвать, недоступна в этом выпуске Azure Databricks.
Смягчение
Чтобы устранить ошибки, просмотрите следующее.
Вы неправильно написали имя функции?
Используется
SHOW FUNCTIONS IN \<schema\>
для проверки правильного имени функции.Функция находится в другой схеме?
Если функция находится в каталоге в каталоге Unity, выполните следующий запрос:
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'
В этом списке приведена схема в текущем каталоге, где находится функция.
Если функция находится вне Unity Catalog, используйте
SHOW SCHEMAS
для поиска кандидатских схем. ИспользуйтеSHOW FUNCTIONS IN \<schema\>
для исследования функции.Вы не полностью квалифицировали имя, и поэтому результат
VALUES current_schema()
не соответствует полностью квалифицированному имени функции?Присвойте
functionName
ей схему и каталог или выполните командуUSE SCHEMA
, чтобы задать неявную схему.Вы указали на временную функцию, но она была в предыдущем, истекшем или другом сеансе?
Повторно создайте временную функцию с помощью
CREATE TEMPORARY FUNCTION \<routineName\> …
или переключитесь на использование сохраненной функции.Вы хотите выдать инструкцию DDL, например
DROP FUNCTION
только в случае существования объекта?Выпустите утверждение, используя условие
IF EXISTS
, например:DROP FUNCTION \<routineName\> IF EXISTS
.Знаете ли вы, что функция существует, но вы не видите ее в
SHOW FUNCTIONS
?Чтобы получить доступ к функции, обратитесь к администратору. Вам также может потребоваться доступ к схеме и каталогу.
Дополнительные сведения об устранении ошибки см. в разделе "Разрешение функций".
Примеры
> 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