Funcții definite de utilizator și proceduri stocate

Automatizarea pipeline-urilor de date în Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Ce este un UDF?

nanobanana: half: Două pictograme abstracte de lacăt alăturate, una deschisă și una închisă, design minimalist plat, culori DataCamp bleumarin și verde, fundal alb, fără text

Funcții definite de utilizator

  • Operații personalizate dincolo de funcțiile SQL standard
  • Scrise în SQL, Python, Java, Scala sau JavaScript
  • Fără DDL sau DML — returnează doar valori
  • Standard sau SECURE (ascunde logica față de apelanți)
  • Returnează o valoare scalară per rând sau un tabel
Automatizarea pipeline-urilor de date în Snowflake

UDF-uri SQL

Punct de plecare recomandat

CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
  CASE WHEN days <= 2 THEN 'Express'
       WHEN days <= 5 THEN 'Standard'
       ELSE 'Delayed' END $$;
Automatizarea pipeline-urilor de date în Snowflake

UDF-uri Python și alte limbaje de programare

Când SQL nu este suficient

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]) $$;
Automatizarea pipeline-urilor de date în Snowflake

UDF-uri în pipeline

 

 

mermaid: Nivelul de transformare UDF în pipeline

UDF-urile se află în nivelul de transformare — între stocarea brută și raportare

  • Apelate în SELECT; returnează o valoare per rând
  • Centralizează logica de business utilizată în mai multe interogări
  • Adăugați SECURE pentru a ascunde definiția față de alți utilizatori
Automatizarea pipeline-urilor de date în Snowflake

Ce este o procedură stocată?

  • Declarați variabile, iterați rezultate, gestionați erori
  • Executați DML (Data Manipulation Language) pe mai multe tabele
  • Apelate independent cu CALL

mermaid: datacamp-purple: fluxul de orchestrare al procedurii stocate

Automatizarea pipeline-urilor de date în Snowflake

Procedură stocată: 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
$$;
Automatizarea pipeline-urilor de date în Snowflake

UDF-uri vs. proceduri stocate

UDF Procedură stocată
Apelată în SELECT CALL
Returnează O valoare per rând O singură valoare
Poate executa DML Nu Da
Limbaje SQL, Python, Java, JS SQL (Snowflake Scripting), Python, Java, JS, Scala
Utilizare în pipeline Transformare date Orchestrare logică
Automatizarea pipeline-urilor de date în Snowflake

Hai să exersăm!

Automatizarea pipeline-urilor de date în Snowflake

Preparing Video For Download...