Funzioni definite dall’utente e stored procedure

Automazione delle pipeline di dati in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Cos’è una UDF?

nanobanana: metà: Due icone di lucchetto astratte affiancate, una aperta e una chiusa, design piatto minimalista, colori blu navy e verde DataCamp, sfondo bianco, senza testo

Funzioni definite dall’utente (UDF)

  • Operazioni personalizzate oltre le funzioni SQL native
  • Scritte in SQL, Python, Java, Scala o JavaScript
  • Niente DDL/DML — restituiscono solo valori
  • Standard o SECURE (nasconde la logica ai chiamanti)
  • Restituisce un valore scalare per riga o una tabella
Automazione delle pipeline di dati in Snowflake

UDF in SQL

Punto di partenza consigliato

CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
  CASE WHEN days <= 2 THEN 'Express'
       WHEN days <= 5 THEN 'Standard'
       ELSE 'Delayed' END $$;
Automazione delle pipeline di dati in Snowflake

UDF in Python e altri linguaggi

Quando SQL non basta

CREATE FUNCTION parse_weight(label STRING)
RETURNS FLOAT LANGUAGE PYTHON
RUNTIME_VERSION = '3.9' HANDLER = 'parse'
AS $$ def parse(s): return float(s.split('kg')[0]) $$;
Automazione delle pipeline di dati in Snowflake

UDF nella pipeline

 

 

mermaid: pipeline del livello di trasformazione con UDF

Le UDF stanno nel livello di trasformazione: tra storage grezzo e reportistica

  • Chiamate dentro SELECT; restituiscono un valore per riga
  • Centralizzano la logica di business usata in più query
  • Aggiungi SECURE per nascondere la definizione ad altri utenti
Automazione delle pipeline di dati in Snowflake

Cos’è una stored procedure?

  • Dichiarare variabili, ciclare sui risultati, gestire errori
  • Eseguire DML su più tabelle
  • Chiamate standalone con CALL

mermaid: datacamp-viola: flusso di orchestrazione di una stored procedure

Automazione delle pipeline di dati in Snowflake

Stored procedure: Snowflake Scripting

CREATE OR REPLACE PROCEDURE archive_old_shipments(cutoff INT)
RETURNS STRING LANGUAGE SQL AS $$
DECLARE                                    -- 1. Declare variables
    rows_moved INT DEFAULT 0;
BEGIN                                      -- 2. Begin the procedure
    INSERT INTO shipments_archive          -- 3. Execute SQL commands
        SELECT * FROM shipments WHERE delivery_days > :cutoff;
    rows_moved := SQLROWCOUNT;
    DELETE FROM shipments WHERE delivery_days > :cutoff;
    RETURN 'Archived ' || rows_moved       -- 4. Return the result
        || ' shipments.';
END;                                       -- 5. End the procedure
$$;
Automazione delle pipeline di dati in Snowflake

UDF vs stored procedure

UDF Stored procedure
Chiamata in SELECT CALL
Restituisce Un valore per riga Un singolo valore
Può eseguire DML No
Linguaggi SQL, Python, Java, JS SQL (Snowflake Scripting), Python, Java, JS, Scala
Uso nella pipeline Trasforma dati Orchestra la logica
Automazione delle pipeline di dati in Snowflake

Passiamo alla pratica !

Automazione delle pipeline di dati in Snowflake

Preparing Video For Download...