Funktionen der Vorlage verwenden¶
Um die Verkettung von SQL Bezeichnern, wie z. B. Datenbanknamen und Schemanamen, zu ermöglichen und die Flexibilität bei der Verwendung von Bezeichnern in Anführungszeichen oder ohne Anführungszeichen in verschiedenen Kontexten zu gewährleisten, stellt Snowflake CLI die folgenden Funktionen zur Verfügung, die Sie in Vorlagen für die Definition von Projektvorlagen verwenden können:
fn.concat_ids()
¶
Eingabe: ein oder mehrere Zeichenfolgeargumente (SQL ID oder einfacher String)
Ausgabe: eine gültige SQL ID (mit oder ohne Anführungszeichen)
Die Funktion fn.concat_ids()
verkettet mehrere Zeichenfolgenargumente zu einer einzigen Zeichenfolge, die eine SQL ID (mit oder ohne Anführungszeichen) darstellt. Wenn eine der eingegebenen Zeichenfolgen ein gültiger Bezeichner in Anführungszeichen ist, wird er vor der Verkettung „unescaped“ (nicht in Escape-Zeichen eingeschlossen). Die resultierende Zeichenfolge wird dann in Escape-Zeichen eingeschlossen und in Anführungszeichen gesetzt, wenn sie nicht-SQL sichere Zeichen enthält oder wenn eine der Eingaben ein gültiger Bezeichner in Anführungszeichen war.
Beispiele:
Aufruf von
fn.concat_ids('id1_', '"quoted_id2"')
gibt"id1_quoted_id2"
aus, da einer der Eingabewerte ein Bezeichner in Anführungszeichen ist.Der Aufruf von
fn.concat_ids('id1_', 'id2')
gibtid1_id2
aus, da keiner der Eingabewerte ein Bezeichner in Anführungszeichen ist und keiner der Eingabewerte nicht SQL sichere Zeichen enthält.
fn.str_to_id()
¶
Eingabe: ein oder mehrere Zeichenfolgeargumente (SQL ID oder einfacher String)
Ausgabe: eine gültige SQL ID (mit oder ohne Anführungszeichen)
Die Funktion fn.str_to_id()
gibt eine Zeichenfolge als ID zurück. Wenn die Zeichenfolge der Eingabe einen gültigen Bezeichner in Anführungszeichen oder ohne Anführungszeichen enthält, gibt die Funktion ihn unverändert zurück. Wenn die Eingabefolge jedoch unsichere SQL Zeichen enthält, die nicht ordnungsgemäß in Anführungszeichen gesetzt sind, gibt die Funktion ein ID zurück, das die unsicheren Zeichen umgeht.
Beispiele:
Der Aufruf von
fn.str_to_id('id1')
gibtid1
zurück, da es sich um einen gültigen nicht in Anführungszeichen gesetzten Bezeichner handelt.Aufruf von
fn.str_to_id('unsafe "id')
gibt"unsafe""id"
zurück, da es unsichere SQL-Zeichen enthält.
fn.id_to_str()
¶
Eingabe: eine Zeichenfolge als Argument (SQL ID oder einfacher String)
Ausgabe: eine einfache Zeichenfolge
Wenn die Eingabe eine gültige SQL ID ist, gibt die Funktion eine „unescapte“ (nicht in Escape-Zeichen eingeschlossene) einfache Zeichenkette zurück. Andernfalls gibt die Funktion die Zeichenfolge der Eingabe so zurück, wie sie ist.
Beispiele:
Der Aufruf von
: fn.id_to_str('id1')
, gibtid1
zurück, da er bereits keine Anführungszeichen mehr hat.Aufruf von :codenowrap:` fn.id_to_str(‚„quoted““id.example“‘)` gibt
quoted"id.example
zurück.
fn.get_username()
¶
Eingabe: eine optionale Zeichenfolge, die den Fallback-Wert enthält
Ausgabe: aktueller Benutzername des Betriebssystems
Gibt den aktuellen Benutzernamen aus den Umgebungsvariablen des Betriebssystems zurück. Wenn der aktuelle Benutzername nicht gefunden wird oder leer ist, wird entweder ein leerer Wert zurückgegeben oder der Fallback-Wert verwendet, falls einer angegeben ist.
Beispiele:
fn.get_username('default_user')
gibt den aktuellen Benutzernamen zurück, wenn er gefunden wurde, andernfalls gibt esdefault_user
zurück.
fn.sanitize_id()
¶
Eingabe: eine Zeichenfolge als Argument
Ausgabe: eine gültige SQL ID ohne Anführungszeichen
Die Funktion fn.sanitize_id()
entfernt alle unsicheren SQL Zeichen aus der Eingabe und gibt sie als gültige SQL ID ohne Anführungszeichen zurück. Wenn das Ergebnis nicht mit einem Buchstaben oder einem Unterstrich beginnt, wird ein Unterstrich angehängt. Bei sehr langen Zeichenfolgen schneidet die Funktion die Zeichenfolge auf 255 Zeichen ab.
Beispiele:
Bei Verwendung von
fn.sanitize_id('Some.id "With_Special_Chars')
ist die AusgabeSomeidWith_Special_Chars
.Bei Verwendung von
fn.sanitize_id('1abc')
ist die Ausgabe_1abc
.
Beispiel für einen Anwendungsfall¶
Das folgende Beispiel zeigt, wie Sie diese Funktionen in den Dateien der snowflake.yml
-Projektdefinition verwenden können:
definition_version: 2
entities:
pkg:
type: application package
identifier: <% fn.concat_ids(ctx.env.app_name, ctx.env.pkg_suffix) %>
artifacts:
- src: app/*
dest: ./
app:
type: application
identifier: <% fn.concat_ids(ctx.env.app_name, ctx.env.app_suffix) %>
env:
app_name: myapp_base_name_<% fn.sanitize_id(fn.get_username()) %>
app_suffix: _app_instance
pkg_suffix: _pkg
Das folgende Beispiel zeigt, wie Sie die Funktionen in einer SQL-Datei verwenden können:
DESC APPLICATION <% fn.str_to_id(ctx.entities.app.identifier) %>;
DESC APPLICATION PACKAGE <% fn.str_to_id(ctx.entities.pkg.identifier) %>;