Door gebruikers gedefinieerde functies in Snowflake

Gegevenstypen en functies in Snowflake

Jake Roach

Field Data Engineer

Wat zijn user-defined functions (UDF’s)?

Verpak complexe logica in één herbruikbare functie

$$

  • Leesbaarder
  • Minder kans op fouten
  • Deel logica met anderen

$$

$$

                      ... laten we dit van dichterbij bekijken!

Afbeelding die het idee van een door de gebruiker gedefinieerde functie toont.

Gegevenstypen en functies in Snowflake

Code refactoren met een 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,

-- Herbruikbaar, goed leesbaar build_email_address( first_name, last_name, school_name ) AS email_address
FROM STUDENTS.personal_info;
Gegevenstypen en functies in Snowflake

Een UDF definiëren

CREATE OR REPLACE FUNCTION <name> (

-- Geef argumenten en types op <arg1> <type1>, <arg2> <type2>, ... )
RETURN <type> -- Declareer het returntype
AS $$ -- Definieer hier je functie $$

$$

$$

  1. CREATE OR REPLACE FUNCTION
  2. Geef een functienaam
  3. Zet tussen haakjes de naam en het type van elk argument
  4. Declareer het RETURN-type
  5. Definieer de logica tussen $$ ... $$
Gegevenstypen en functies in Snowflake

Een e-mailadres bouwen

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') $$;
Gegevenstypen en functies in Snowflake

Een UDF gebruiken

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]
Gegevenstypen en functies in Snowflake

Laten we oefenen!

Gegevenstypen en functies in Snowflake

Preparing Video For Download...