CREATE FUNCTION -دالة معرّفة من قبل المستخدم (دالة معرّفة من قبل المستخدم)
توثيق FUNCTION
ينشئ دالة معرّفة من قبل المستخدم (دالة معرّفة من قبل المستخدم) من تعبير لامبدا. ويجب أن يتألف هذا التعبير من معاملات الدالة أو الثوابت أو المعاملات أو استدعاءات دوال أخرى.الصياغة
CREATE [OR REPLACE] FUNCTION name [ON CLUSTER cluster] AS (parameter0, ...) -> expression
يمكن أن تحتوي الدالة على أي عدد من المعاملات.توجد بعض القيود:
يجب أن يكون اسم الدالة فريدًا بين الدوال المعرّفة من قبل المستخدم ودوال النظام.
الدوال العودية غير مسموح بها.
يجب تحديد جميع المتغيرات التي تستخدمها الدالة ضمن قائمة معاملاتها.
إذا تم انتهاك أي قيد، فسيتم رفع استثناء.مثال
Query
CREATE FUNCTION linear_equation AS (x, k, b) -> k*x + b;SELECT number, linear_equation(number, 2, 1) FROM numbers(3);
تُستدعى دالة شرطية ضمن دالة معرّفة من قبل المستخدم في الاستعلام التالي:
Query
CREATE FUNCTION parity_str AS (n) -> if(n % 2, 'odd', 'even');SELECT number, parity_str(number) FROM numbers(3);
Response
┌─number─┬─if(modulo(number, 2), 'odd', 'even')─┐│ 0 │ even ││ 1 │ odd ││ 2 │ even │└────────┴──────────────────────────────────────┘
استبدِل دالة معرّفة من قبل المستخدم موجودة:
Query
CREATE FUNCTION exampleReplaceFunction AS frame -> frame;SELECT create_query FROM system.functions WHERE name = 'exampleReplaceFunction';CREATE OR REPLACE FUNCTION exampleReplaceFunction AS frame -> frame + 1;SELECT create_query FROM system.functions WHERE name = 'exampleReplaceFunction';
Response
┌─create_query─────────────────────────────────────────────┐│ CREATE FUNCTION exampleReplaceFunction AS frame -> frame │└──────────────────────────────────────────────────────────┘┌─create_query───────────────────────────────────────────────────┐│ CREATE FUNCTION exampleReplaceFunction AS frame -> (frame + 1) │└────────────────────────────────────────────────────────────────┘