Auf einen Blick: Gespeicherte Prozeduren in Snowflake ermöglichen es Benutzern, Sequenzen von Befehlen für Batch-Verarbeitung und Ereignisbehandlung mit JavaScript für Variablenverwaltung und Fehlerbehandlung auszuführen. Ein Tutorial zeigt, wie man Verfahren erstellt, um Bestellpreise zu aktualisieren.
- Gespeicherte Prozeduren erleichtern batchartige Operationen.
- JavaScript ist erforderlich, um gespeicherte Prozeduren in Snowflake zu erstellen.
Snowflake unterstützt gespeicherte Prozeduren. Speicherprozeduren erlauben es, eine Reihe von Befehlen zu schreiben und sie für spätere Nutzung zu speichern.
Wann sollte man ein gespeichertes Verfahren verwenden
Wir haben zuvor benutzerdefinierte Funktionen (UDFs) behandelt, die man in einer Spalte verwendet. Eine gespeicherte Prozedur läuft von selbst. Mit anderen Worten: Sie geht ab und "tut etwas", wie zum Beispiel eine Tabelle zu aktualisieren. Deshalb sind gespeicherte Prozeduren gut für Batch-ähnliche Aktionen. Man kann gespeicherte Prozeduren auch bedingt an Datenbankereignisse verknüpfen, ähnlich wie bei anderen Datenbankprodukten. Data Engineers können auch eine Datenpipeline mit gespeicherten Prozeduren erstellen. (Ein Thema, das wir in den folgenden Beiträgen ausführlich behandeln werden.)
JavaScript für gespeicherte Prozeduren
Snowflake-gespeicherte Prozeduren müssen in JavaScript geschrieben sein. Es ist sinnvoll, dass man neben SQL eine Programmiersprache verwenden muss, da SQL keine Variablenzuweisung unterstützt. Man würde Variablen erstellen, um Berechnungen usw. durchzuführen. Mach dir keine Sorgen, wenn du JavaScript nicht kennst – du kannst einfach Standardcode kopieren und SQL an die richtige Stelle setzen. SQL ist wirklich der einzige Teil, der größtenteils variiert. Es gibt also nicht viel, das du verstehen musst. Snowflake-JavaScript ist minimales JavaScript. Es erlaubt es nicht, externe Bibliotheken der Sprache zu importieren. Du kannst also Arrays, Variablen, einfache Objekte erstellen und es gibt eine Fehlerbehandlung. Aber du könntest zum Beispiel keine mathematischen Funktionen aus der Math-Bibliothek verwenden
Zeile-für-Zeile-Tutorial: Gespeichertes Verfahren
Wir fügen hier ein einfaches Beispiel hinzu und erklären jede Zeile des Codes. (Sie benötigen also keine Beispieldaten.) Sehen Sie sich die untenstehende Funktion an. Beachten Sie Folgendes:
- Du gibst Parameter in die Funktion Funktionsname (Parametertyp) ein
- Man ruft die Funktion auf, indem man Aufruf Funktionsname(Parameter) schreibt.
- Die Funktion muss einen Wert zurückgeben, selbst wenn sie nur ein Update durchführt. Andernfalls erhält man das Fehlerergebnis NULL in einer nicht nullbaren Spalte. Das liegt daran, dass der Arbeitsblatt-Editor in Snowflake etwas anzeigen muss, selbst wenn es ein Nullwert (Nan) ist.
- Das Grundverfahren besteht darin, execute() zu verwenden, um SQL-Code auszuführen, den du in einer Zeichenfolge gespeichert hast. Datenbankprogrammierer wissen, dass dadurch ein sogenanntes Resultset erzeugt wird. Du musst also den zuerst zurückgegebenen Wert in den Scope ziehen, indem du next() aufrufst. Es gibt ein Ergebnisset mit einer Select-Anweisung, delete, insert und sogar update – auch wenn du nicht erwarten würdest, dass diese Werte zurückgeben.
- Wenn die SQL-Anweisung mehr als eine Zeile zurückgibt, wie bei einem SELECT, würdest du eine Zeit (rs.next()) verwenden, um die Ergebnisse in einer Schleife durchzugehen.
- Aus welchem Grund auch immer können die Parameter Kleinbuchstaben sein, müssen aber im JavaScript-Code Großbuchstaben sein. Du bekommst einen Fehler, wenn du versuchst, Kleinbuchstaben zu verwenden.
create or replace procedure setprice(ORDERNUMBER varchar(100))
returns float
not null
language javascript
as
$$
sql_command = "update orders set price = 2 where ordernumber = " + ORDERNUMBER ;
var stmt = snowflake.createStatement(
{
sqlText: sql_command
}
);
var res = stmt.execute();
res.next()
price = res.getColumnValue(1);
return price;
$$
;
call setprice(489)
Zusätzliche Ressourcen
Für weitere Tutorials wie dieses entdecken Sie diese Ressourcen:
Schneeflocken-Leitfaden
- Snowflake 101: Einführung in die Snowflake Data Cloud
- Wie man Amazon S3-Daten in Snowflake importiert
- Wie man JSON-Daten in Snowflake abfragt
- CSV-Dateien von S3 in Snowflake laden
- Snowflake: Verwendung von Analytik und statistischen Funktionen
- Snowflake-Fensterfunktionen: Partitionieren nach und ordnen nach
- Schneeflocken-Verzögerungsfunktion und gleitende Durchschnitte
- Snowflake SQL Aggregate Functions & Table Joins
- Benutzerdefinierte Funktionen (UDFs) in Snowflake
- Schneeflockenströme erstellen und nutzen
- Verwendung von gespeicherten Verfahren in Snowflake
- Schneeflocke vs. Redshift: Was ist der Unterschied und wie wählt man?
Diese Beiträge sind meine eigenen und spiegeln nicht unbedingt die Position, Strategien oder Meinung von BMC wider.