Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

CREATE FUNCTION

ينشئ دالة معرّفة من قبل المستخدم (دالة معرّفة من قبل المستخدم) من تعبير لامبدا. ويجب أن يتألف هذا التعبير من معاملات الدالة أو الثوابت أو المعاملات أو استدعاءات دوال أخرى.

الصياغة

CREATE [OR REPLACE] FUNCTION name [ON CLUSTER cluster] AS (parameter0, ...) -> expression

يمكن أن تحتوي الدالة على أي عدد من المعاملات.

توجد بعض القيود:

  • يجب أن يكون اسم الدالة فريدًا بين الدوال المعرّفة من قبل المستخدم ودوال النظام.
  • الدوال العودية غير مسموح بها.
  • يجب تحديد جميع المتغيرات التي تستخدمها الدالة ضمن قائمة معاملاتها.

إذا تم انتهاك أي قيد، فسيتم رفع استثناء.

مثال

Querysql
CREATE FUNCTION linear_equation AS (x, k, b) -> k*x + b;
SELECT number, linear_equation(number, 2, 1) FROM numbers(3);
Responsetext
┌─number─┬─plus(multiply(2, number), 1)─┐
│      0 │                            1 │
│      1 │                            3 │
│      2 │                            5 │
└────────┴──────────────────────────────┘

تُستدعى دالة شرطية ضمن دالة معرّفة من قبل المستخدم في الاستعلام التالي:

Querysql
CREATE FUNCTION parity_str AS (n) -> if(n % 2, 'odd', 'even');
SELECT number, parity_str(number) FROM numbers(3);
Responsetext
┌─number─┬─if(modulo(number, 2), 'odd', 'even')─┐
│      0 │ even                                 │
│      1 │ odd                                  │
│      2 │ even                                 │
└────────┴──────────────────────────────────────┘

استبدِل دالة معرّفة من قبل المستخدم موجودة:

Querysql
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';
Responsetext
┌─create_query─────────────────────────────────────────────┐
│ CREATE FUNCTION exampleReplaceFunction AS frame -> frame │
└──────────────────────────────────────────────────────────┘

┌─create_query───────────────────────────────────────────────────┐
│ CREATE FUNCTION exampleReplaceFunction AS frame -> (frame + 1) │
└────────────────────────────────────────────────────────────────┘
Navigation