الوظائف المعرفة من قبل المستخدم (UDFs) في كتالوج Unity

هام

هذه الميزة في المعاينة العامة.

يوفر Azure Databricks بناء جملة SQL أصلي لتسجيل وظائف مخصصة إلى المخططات التي يحكمها كتالوج Unity. تختلف Python UDFs المسجلة كوظائف في كتالوج Unity في النطاق والدعم من PySpark UDFs النطاق إلى دفتر ملاحظات أو SparkSession. راجع الدالات العددية المعرفة من قبل المستخدم - Python.

للحصول على مرجع لغة SQL الكامل، راجع CREATE FUNCTION (SQL وPython).

للحصول على معلومات حول كيفية إدارة كتالوج Unity للأذونات على الوظائف، راجع CREATE FUNCTION.

المتطلبات

  • Databricks Runtime 13.3 LTS أو أعلى.
  • لاستخدام تعليمة Python البرمجية في UDFs المسجلة في كتالوج Unity، يجب استخدام مستودع SQL بلا خادم أو pro أو نظام مجموعة يقوم بتشغيل Databricks Runtime 13.3 LTS أو أعلى.
  • لحل طرق العرض التي تم إنشاؤها باستخدام UDF المسجلة في كتالوج Unity، يجب استخدام مستودع SQL بلا خادم أو pro.

وظائف SQL المخصصة في كتالوج Unity

عند إنشاء دالة SQL باستخدام حساب تم تكوينه لكتالوج Unity، يتم تسجيل الدالة في المخطط النشط حاليا بشكل افتراضي. يوضح المثال التالي بناء الجملة الذي قد تستخدمه للإعلان عن كتالوج ومخطط هدف لدالة جديدة:

CREATE FUNCTION target_catalog.target_schema.roll_dice()
    RETURNS INT
    LANGUAGE SQL
    NOT DETERMINISTIC
    CONTAINS SQL
    COMMENT 'Roll a single 6 sided die'
    RETURN (rand() * 6)::INT + 1;

يمكن لجميع المستخدمين الذين لديهم امتيازات كافية على الدالة بعد ذلك استخدام الدالة في بيئات الحوسبة المكونة ل Unity Catalog، كما في المثال التالي:

SELECT target_catalog.target_schema.roll_dice()

إشعار

يمكنك استخدام UDFs باستخدام LANGUAGE SQL لإرجاع الجداول أو القيم العددية.

تسجيل Python UDF في كتالوج Unity

في Databricks Runtime 13.3 LTS وما فوق، يمكنك استخدام عبارة SQL CREATE FUNCTION لتسجيل Python UDFs العددية في كتالوج Unity.

هام

تدعم مستودعات SQL الاحترافية وبدون خادم فقط Python UDFs ل Unity Catalog.

تم تصميم Python UDFs لتوفير التعبير الكامل ل Python مباشرة داخل وظائف SQL، ما يسمح بعمليات مخصصة مثل التحويلات المتقدمة وإخفاء البيانات والتجزئة.

يتم تنفيذ Python UDFs في بيئة آمنة ومعزولة وليس لديها حق الوصول إلى أنظمة الملفات أو الخدمات الداخلية.

تسمح Python UDFs التي تعمل على حساب بلا خادم أو في وضع الوصول المشترك بنسبة استخدام شبكة TCP/UDP عبر المنافذ 80 و443 و53.

راجع ما هي UDFs الأكثر كفاءة؟.

إشعار

يختلف بناء الجملة ودلالات Python UDFs في كتالوج Unity عن Python UDFs المسجلة في SparkSession. راجع الدالات العددية المعرفة من قبل المستخدم - Python.

تستخدم Python UDFs الخاصة بكتالوج Unity عبارات تم تعيينها بواسطة علامات الدولار المزدوجة ($$)، كما هو الحال في مثال التعليمات البرمجية التالي:

CREATE FUNCTION target_catalog.target_schema.greet(s STRING)
RETURNS STRING
LANGUAGE PYTHON
AS $$
  return f"Hello, {s}"
$$

يوضح المثال التالي استخدام هذه الدالة لإرجاع عبارات الترحيب لجميع الأسماء المخزنة first_name في عمود جدول يسمى students:

SELECT target_catalog.target_schema.greet(first_name)
FROM students;

يمكنك تحديد أي عدد من دوال Python داخل Python UDF، ولكن يجب أن ترجع قيمة عددية.

يجب أن تعالج NULL وظائف Python القيم بشكل مستقل، ويجب أن تتبع جميع تعيينات النوع تعيينات لغة Azure Databricks SQL.

يمكنك استيراد مكتبات Python القياسية المضمنة في Azure Databricks، ولكن لا يمكنك تضمين مكتبات مخصصة أو تبعيات خارجية.

إذا لم يتم تحديد كتالوج أو مخطط، يتم تسجيل Python UDFs في المخطط النشط الحالي.

يستورد المثال التالي مكتبة ويستخدم وظائف متعددة داخل Python UDF:

CREATE FUNCTION roll_dice(num_dice INTEGER, num_sides INTEGER)
RETURNS INTEGER
LANGUAGE PYTHON
AS $$
  import numpy as np

  def roll_die(num_sides):
    return np.random.randint(num_sides) + 1

  def sum_dice(num_dice,num_sides):
    return sum([roll_die(num_sides) for x in range(num_dice)])

  return sum_dice(num_dice, num_sides)
$$