إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يتعذر حل الدالة <routineName> في مسار <searchPath>البحث .
المعلمات
- اسم الروتين: اسم الدالة التي لا يمكن حلها.
- searchPath: القائمة مرتبة من المخططات التي تم البحث فيها إذا
routineNameلم يكن المخطط مؤهلا.
الشرح
تتكون الدالات المستمرة من ثلاثة أجزاء اسم: <catalog>.<schema>.<relation>.
إذا لم تحدد كافة الأجزاء الثلاثة من الاسم، يتم إكماله ضمنيا باستخدام الكتالوج الحالي أو المخطط الحالي.
هذا مشابه للطريقة التي يؤثر بها دليل العمل لنظام الملفات على الملفات التي يمكنك رؤيتها، ما لم تحدد المسار بالكامل.
الوظائف المؤقتة موجودة فقط داخل جلسة العمل أو الاستعلام ويجب ألا تكون مؤهلة أبدا.
السبب الأكثر شيوعا لعدم العثور على دالة هو:
- الدالة غير موجودة.
- اسم الدالة به خطأ إملائي.
- توجد الدالة المعرفة من قبل المستخدم في مخطط مختلف.
- لا توجد الدالة المعرفة من قبل المستخدم في المخطط الحالي.
- لا يمكنك عرض الدالة المعرفة من قبل المستخدم لأنه ليس لديك حق الوصول.
- الوظيفة المضمنة التي تحاول استدعاؤها غير متوفرة في هذا الإصدار من Azure Databricks.
التخفيف
التخفيف من الأخطاء من خلال مراجعة ما يلي.
هل قمت بتهجئة اسم الدالة بشكل غير صحيح؟
استخدم
SHOW FUNCTIONS IN <schema>للتحقق من اسم الدالة الصحيح.هل الدالة في مخطط مختلف؟
إذا كانت الدالة موجودة على كتالوج في كتالوج Unity، فقم بتشغيل الاستعلام التالي:
SELECT routine_schema FROM information_schema.routines WHERE routine_name = '<routinename>'يسرد هذا المخطط داخل الكتالوج الحالي حيث توجد الدالة.
إذا كانت الدالة موجودة خارج كتالوج Unity، فاستخدم
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