Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Impossible de trouver la fonction <routineName> dans le chemin de recherche <searchPath>.
Paramètres
- routineName : nom de la fonction qui ne peut pas être résolue.
-
searchPath : liste ordonnée de schémas qui a été recherchée si
routineNamen’était pas qualifié par un schéma.
Description
Les fonctions persistantes se composent de trois parties de nom : <catalog>.<schema>.<relation>.
Si vous ne spécifiez pas toutes les trois parties du nom, celui-ci est implicitement complété à partir du catalogue actif ou du schéma actif.
Cela est similaire à la façon dont le répertoire de travail de votre système de fichiers influence les fichiers que vous pouvez voir, sauf si vous spécifiez entièrement le chemin d’accès.
Les fonctions temporaires existent uniquement dans la session ou la requête et ne doivent jamais être qualifiées.
Les raisons les plus courantes de ne pas trouver une fonction sont les suivantes :
- La fonction n’existe pas.
- Le nom de la fonction est mal orthographié.
- La fonction définie par l’utilisateur se trouve dans un autre schéma.
- La fonction définie par l’utilisateur n’est pas située dans le schéma actuel.
- Vous ne pouvez pas afficher la fonction définie par l’utilisateur, car vous n’avez pas accès.
- La fonction intégrée que vous essayez d’appeler n’est pas disponible sur cette version d’Azure Databricks.
Atténuation
Réduisez les erreurs en examinant les éléments suivants.
Avez-vous orthographié le nom de la fonction de manière incorrecte ?
Utilisez
SHOW FUNCTIONS IN \<schema\>pour vérifier le nom correct de la fonction.La fonction est-elle dans un schema différent ?
Si la fonction se trouve dans un catalogue dans Unity Catalog, exécutez la requête suivante :
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'Cela répertorie le schéma dans le catalogue actuel où se trouve la fonction.
Si la fonction se trouve en dehors de Unity Catalog, utilisez
SHOW SCHEMASpour rechercher des schémas candidats. UtilisezSHOW FUNCTIONS IN \<schema\>pour détecter la présence de la fonction.Vous n’avez pas entièrement qualifié le nom et le résultat de
VALUES current_schema()ne correspond pas au nom qualifié de la fonction ?Qualifiez
functionNameavec son schéma et son catalogue, ou exécutezUSE SCHEMApour définir le schéma implicite.Avez-vous fait référence à une fonction temporaire, mais elle était dans une session précédente, expirée ou différente ?
Recréez la fonction temporaire à l’aide de
CREATE TEMPORARY FUNCTION \<routineName\> …, ou basculez vers une fonction persistante.Voulez-vous émettre une instruction DDL, telle que
DROP FUNCTIONau cas où l’objet existe ?Émettez l’énoncé à l’aide de la clause
IF EXISTS, par exemple :DROP FUNCTION \<routineName\> IF EXISTS.Vous savez que la fonction existe, mais vous ne pouvez pas la voir dans
SHOW FUNCTIONS?Contactez votre administrateur pour accéder à la fonction. Vous devrez peut-être également accéder au schéma et au catalogue.
Pour plus d’informations sur la résolution de l’erreur, voir Résolution des fonctions et procédures.
Exemples
> 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