メインコンテンツまでスキップ

UNRESOLVED_ROUTINE エラークラス

SQLSTATE: 42883

検索パス の関数 <routineName> を解決できません パス <searchPath>

パラメーター

  • routineName : 解決できない関数の名前。
  • searchPath : スキーマが修飾されていない場合に検索されたスキーマの順序付きリスト routineName

説明

永続化された関数は、 <catalog>.<schema>.<relation>の 3 つの名前部分で構成されます。名前の 3 つの部分をすべて指定しない場合、名前は現在のカタログまたは現在のスキーマを使用して暗黙的に完了します。これは、パスを完全に指定しない限り、ファイルシステムの作業ディレクトリが表示できるファイルに影響を与える方法と似ています。

一時関数はセッションまたはクエリ内にのみ存在し、修飾することはできません。

関数が見つからない最も一般的な理由は次のとおりです。

  • この関数は存在しません。
  • 関数名のスペルが間違っています。
  • ユーザー定義関数は、別のスキーマにあります。
  • ユーザー定義関数が現在のスキーマにありません。
  • アクセス権がないため、ユーザー定義関数を表示できません。
  • 呼び出そうとしている組み込み関数は、このリリースの Databricks では使用できません。

緩和

エラーを軽減するには、次の点を確認します。

  • 関数名のスペルが間違っていませんか?

    SHOW FUNCTIONS IN \<schema\> を使用して、正しい関数名を確認します。

  • 関数は別のスキーマにありますか?

    関数が Unity Catalog のカタログにある場合は、次のクエリを実行します。

    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\> …を使用して一時関数を再作成するか、永続関数の使用に切り替えます。

  • オブジェクトが存在する場合に備えて DROP FUNCTION などの DDL ステートメントを発行しますか?

    IF EXISTS節を使用して、次のようなステートメントを発行します。 DROP FUNCTION \<routineName\> IF EXISTS

  • 関数が存在することは知っていますが、 SHOW FUNCTIONSでは見えませんか?

    管理者に連絡して、機能へのアクセスを取得してください。 また、スキーマとカタログへのアクセスも必要になる場合があります。

エラーの解決方法の詳細については、「 関数の解決」を参照してください。

SQL
> 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

関連