Benutzerdefinierte Funktionen und Stored Procedures

Automatisierung von Datenpipelines in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Was ist eine UDF?

nanobanana: half: Zwei abstrakte Vorhängeschloss-Symbole nebeneinander, eines offen und eines geschlossen, flaches minimalistisches Design, DataCamp Marineblau und Grün, weißer Hintergrund, kein Text

Benutzerdefinierte Funktionen (UDFs)

  • Eigene Operationen über integrierte SQL-Funktionen hinaus
  • Geschrieben in SQL, Python, Java, Scala oder JavaScript
  • Kein DDL oder DML — gibt nur Werte zurück
  • Standard oder SECURE (verbirgt Logik vor Aufrufern)
  • Gibt pro Zeile einen Skalarwert oder eine Tabelle zurück
Automatisierung von Datenpipelines in Snowflake

SQL-UDFs

Empfohlener Startpunkt

CREATE FUNCTION delivery_tier(days INT)
RETURNS VARCHAR AS $$
  CASE WHEN days <= 2 THEN 'Express'
       WHEN days <= 5 THEN 'Standard'
       ELSE 'Delayed' END $$;
Automatisierung von Datenpipelines in Snowflake

UDFs in Python & anderen Sprachen

Wenn SQL nicht reicht

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]) $$;
Automatisierung von Datenpipelines in Snowflake

UDFs in der Pipeline

 

 

mermaid: UDF-Transformationsschicht-Pipeline

UDFs sitzen in der Transformationsebene – zwischen Rohspeicher und Reporting

  • In SELECT aufgerufen; geben pro Zeile einen Wert zurück
  • Zentralisieren Business-Logik über mehrere Abfragen
  • SECURE hinzufügen, um die Definition für andere zu verbergen
Automatisierung von Datenpipelines in Snowflake

Was ist eine Stored Procedure?

  • Variablen deklarieren, über Ergebnisse loopen, Fehler behandeln
  • DML über mehrere Tabellen ausführen
  • Eigenständig mit CALL aufrufen

mermaid: datacamp-purple: Orchestrierungsfluss von Stored Procedures

Automatisierung von Datenpipelines in Snowflake

Stored Procedure: Snowflake Scripting

CREATE OR REPLACE PROCEDURE archive_old_shipments(cutoff INT)
RETURNS STRING LANGUAGE SQL AS $$
DECLARE                                    -- 1. Variablen deklarieren
    rows_moved INT DEFAULT 0;
BEGIN                                      -- 2. Prozedur starten
    INSERT INTO shipments_archive          -- 3. SQL-Befehle ausführen
        SELECT * FROM shipments WHERE delivery_days > :cutoff;
    rows_moved := SQLROWCOUNT;
    DELETE FROM shipments WHERE delivery_days > :cutoff;
    RETURN 'Archived ' || rows_moved       -- 4. Ergebnis zurückgeben
        || ' shipments.';
END;                                       -- 5. Prozedur beenden
$$;
Automatisierung von Datenpipelines in Snowflake

UDFs vs. Stored Procedures

UDF Stored Procedure
Aufruf in SELECT CALL
Rückgabe Ein Wert pro Zeile Einzelner Wert
DML ausführbar Nein Ja
Sprachen SQL, Python, Java, JS SQL (Snowflake Scripting), Python, Java, JS, Scala
Einsatz in Pipeline Daten transformieren Logik orchestrieren
Automatisierung von Datenpipelines in Snowflake

Lass uns üben!

Automatisierung von Datenpipelines in Snowflake

Preparing Video For Download...