Passer au contenu principal
Crée une fonction définie par l’utilisateur (UDF) à partir d’une expression lambda. L’expression ne doit contenir que des paramètres de fonction, des constantes, des opérateurs ou d’autres appels de fonction. Syntaxe
CREATE [OR REPLACE] FUNCTION name [ON CLUSTER cluster] AS (parameter0, ...) -> expression
Une fonction peut avoir un nombre arbitraire de paramètres. Il existe quelques restrictions :
  • Le nom d’une fonction doit être unique parmi les fonctions utilisateur et les fonctions système.
  • Les fonctions récursives ne sont pas autorisées.
  • Toutes les variables utilisées par une fonction doivent être spécifiées dans sa liste de paramètres.
Si l’une de ces restrictions est enfreinte, une exception est levée. Exemple
Query
CREATE FUNCTION linear_equation AS (x, k, b) -> k*x + b;
SELECT number, linear_equation(number, 2, 1) FROM numbers(3);
Response
┌─number─┬─plus(multiply(2, number), 1)─┐
│      0 │                            1 │
│      1 │                            3 │
│      2 │                            5 │
└────────┴──────────────────────────────┘
Une fonction conditionnelle est appelée dans une fonction définie par l’utilisateur, dans la requête suivante :
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                                 │
└────────┴──────────────────────────────────────┘
Remplacez une UDF existante :
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) │
└────────────────────────────────────────────────────────────────┘
Dernière modification le 25 juin 2026