Fonctions définies par l’utilisateur dans Snowflake

Types de données et fonctions dans Snowflake

Jake Roach

Field Data Engineer

Qu’est-ce qu’une fonction définie par l’utilisateur (UDF) ?

« Emballez » une logique complexe dans une fonction unique et réutilisable

$$

  • Plus lisible
  • Moins d’erreurs
  • Partagez la logique avec d’autres

$$

$$

                      ... examinons cela de plus près !

Image illustrant le concept de fonction définie par l’utilisateur.

Types de données et fonctions dans Snowflake

Refactorer le code avec une UDF

SELECT
    first_name, last_name, school_name,

    CONCAT(
        first_name,
        '.',
        last_name,
        '@',
        school_name,
        '.com'
    )

FROM STUDENTS.personal_info;
SELECT
    first_name, 
    last_name, 
    school_name,

-- Réutilisable, lisible build_email_address( first_name, last_name, school_name ) AS email_address
FROM STUDENTS.personal_info;
Types de données et fonctions dans Snowflake

Définir une UDF

CREATE OR REPLACE FUNCTION <name> (

-- Spécifiez les arguments et les types <arg1> <type1>, <arg2> <type2>, ... )
RETURN <type> -- Déclarez le type de retour
AS $$ -- Définissez votre fonction ici $$

$$

$$

  1. CREATE OR REPLACE FUNCTION
  2. Indiquez un nom de fonction
  3. Entre parenthèses, indiquez le nom et le type de chaque argument
  4. Déclarez le type de RETURN
  5. Définissez la logique entre $$ ... $$
Types de données et fonctions dans Snowflake

Créer une adresse e-mail

CREATE OR REPLACE FUNCTION build_email_address(

first_name TEXT, last_name TEXT, school_name TEXT
)
RETURN TEXT
AS $$ CONCAT(LOWER(first_name), '.', LOWER(last_name), '@', LOWER(school_name), '.com') $$;
Types de données et fonctions dans Snowflake

Utiliser une UDF

SELECT
    first_name, last_name, school_name,
    build_email_address(first_name, last_name, school_name) AS email_address

FROM STUDENTS.personal_info;
      first_name  |  last_name  |  school_name  |        email_address
     ------------ | ----------- | ------------- | ----------------------------
       Ryan       |  Cohen      |  Harvard      |  [email protected]
       Tatiana    |  Doyle      |  Stanford     |  [email protected]
       Pankaj     |  Pandey     |  MIT          |  [email protected]
       Jake       |  Roach      |  Purdue       |  [email protected]
Types de données et fonctions dans Snowflake

Passons à la pratique !

Types de données et fonctions dans Snowflake

Preparing Video For Download...