استدعاء الدالة

ينطبق على: وضع علامة Databricks SQL وضع علامة Databricks Runtime

يقوم استدعاء الدالة بتنفيذ دالة مضمنة أو دالة معرفة من قبل المستخدم بعد ربط الوسيطات بمعلمات الدالة.

يدعم Azure Databricks استدعاء المعلمة الموضعية بالإضافة إلى استدعاء المعلمة المسماة.

استدعاء المعلمة الموضعية

يتم تعيين كل وسيطة إلى المعلمة المطابقة في الموضع المحدد.

يمكن استخدام هذا العلامات من قبل كافة الدالات ما لم يتم توثيقه بشكل صريح أن استدعاء المعلمة المسماة مطلوب.

إذا كانت الدالة تدعم المعلمات الاختيارية، يتم تعيين المعلمات اللاحقة التي لم يتم تحديد وسيطات لها افتراضيا.

استدعاء المعلمة المسماة

يتم تعيين الوسيطات بشكل صريح إلى المعلمات باستخدام أسماء المعلمات المنشورة بواسطة الدالة.

يجب استخدام هذا العلامات لمجموعة فرعية محددة من الوظائف المضمنة التي تسمح بالعديد من المعلمات الاختيارية، ما يجعل استدعاء المعلمة الموضعية غير عملي. قد تسمح هذه الدالات باستدعاء مختلط حيث من المتوقع تعيين مجموعة بادئة من المعلمات حسب الموضع والمجموعة الاختيارية اللاحقة من المعلمات حسب الاسم.

يمكن أيضا استخدام استدعاء المعلمة المسماة، بما في ذلك استدعاء مختلط، ل SQL UDF وPython UDF.

بناء الجملة

function_name ( [ argExpr | table_argument | star_clause ] [, ...]
                [ namedParameter => [ argExpr | table_argument ] [, ...] )

table_argument
  { TABLE ( { table_name | query } )
    [ table_partition ]
    [ table_order ]

table_partitioning
  { WITH SINGLE PARTITION |
    { PARTITION | DISTRIBUTE } BY { partition_expr | ( partition_expr [, ...] ) } }

table_ordering
  { { ORDER | SORT } BY { order_by_expr | ( order_by_expr [, ...] } }

المعلمات

  • function_name

    اسم الدالة المضمنة أو المعرفة من قبل المستخدم. عند حل Azure Databricks غير المؤهلة function_name ، ستفكر أولا في دالة مضمنة أو مؤقتة، ثم دالة في المخطط الحالي.

  • argExpr

    أي تعبير يمكن تحويله ضمنيا إلى المعلمة المقترنة به.

    قد تفرض الدالة مزيدا من القيود على الوسيطة مثل إدارة القيم الحرفية أو التعبيرات الثابتة أو قيم معينة.

  • star_clause

    اختصار لتسمية كافة الأعمدة القابلة للرجوع إليها في العبارة FROM ، أو أعمدة أو حقول مرجع جدول معين في العبارة FROM .

  • table_argument

    ! [حدد علامة نعم] (.. /.. /_static/الصور/الأيقونات/check.png Databricks SQL! [حدد علامة نعم] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 وما فوق)

    تحديد وسيطة لمعلمة عبارة عن جدول.

    • TABLE ( table_name )

      تعريف جدول لتمريره إلى الدالة بالاسم.

    • TABLE ( استعلام )

      تمرير نتيجة query إلى الدالة .

    • تقسيم الجدول

      ! [حدد علامة نعم] (.. /.. /_static/الصور/الأيقونات/check.png Databricks SQL! [حدد علامة نعم] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 وما فوق)

      يحدد اختياريا أن وسيطة الجدول مقسمة. إذا لم يتم تحديد التقسيم يتم تحديده بواسطة Azure Databricks.

      • WITH SINGLE PARTITION

        وسيطة الجدول غير مقسمة.

      • partition_expr

        تعبير واحد أو أكثر يحدد كيفية تقسيم وسيطة الجدول. يمكن أن يتكون كل تعبير من أعمدة موجودة في وسيطة الجدول والأحرف الحرفية والمعلمات والمتغيرات والدالات الحتمية.

    • table-ordering

      ! [حدد علامة نعم] (.. /.. /_static/الصور/الأيقونات/check.png Databricks SQL! [حدد علامة نعم] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.1 وما فوق)

      يحدد اختياريا ترتيبا يتم فيه تمرير صفوف النتائج لكل قسم من وسيطة الجدول إلى الدالة .

      بشكل افتراضي، يكون الطلب غير معرف.

      • order_by_expr

        تعبير واحد أو أكثر. يمكن أن يتكون كل تعبير من أعمدة موجودة في وسيطة الجدول والأحرف الحرفية والمعلمات والمتغيرات والدالات الحتمية.

  • المعلمة المسماة

    ! [حدد علامة نعم] (.. /.. /_static/الصور/الأيقونات/check.png Databricks SQL! [حدد علامة نعم] (.. /.. /_static/images/icons/check.png Databricks Runtime 14.0 وما فوق)

    الاسم غير المؤهل للمعلمة argExpr التي تم تعيين .

    يتم دعم تدوين المعلمة المسماة ل SQL UDF وPython UDF والوظائف المضمنة المحددة.

الأمثلة

-- The substr function has three parameter and expects arguents to be passed by position.
> SELECT substr('hello', 3, 2);
  ll

-- The last parameter, the length, of substr is optional, when it is ommited it retrns the remainder of the string.
> SELECT substr('hello', 3);
  llo

-- Use the star clause to turn a set of columns into an array.
> SELECT array(*) FROM VALUES (1, 2, 3) AS t(a, b, c);
  [1, 2, 3]

-- The second parameter, start position, is not optional
> SELECT substr('hello');
  Error: WRONG_NUM_ARGS

-- read_files() is a function that accepts numerous parameters, many of which depend on the data source
-- The first parameter is positional, after that use named parameter invocation
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'csv',
    schema => 'id int, ts timestamp, event string');

-- cloud_files_state() is a function that expects a table name as an argument
> SELECT path FROM cloud_files_state(TABLE(mytable));
  /some/input/path
  /other/input/path

-- Invoking a SQL UDF using named parameter invocation
> CREATE TEMPORARY FUNCTION increase(base INT, factor FLOAT DEFAULT 1) RETURNS INT RETURN base * factor;

-- Out of order assignment
> SELECT increase(factor => 1.2, base => 100);
 120

-- Mixed invocation
> SELECT increase(100, factor => 1.3);
 130

-- Using default
> SELECT increase(base => 100);
 100

-- No position invocation after named invocation is allowed
> SELECT increase(base => 100, 1.4);
 Error: UNEXPECTED_POSITIONAL_ARGUMENT