Share via


Variablen

Gilt für: Databricks Runtime check marked yes 14.1 und höher

Variablen sind typ- und schemaqualifizierte Objekte, die Werte speichern, die für eine Sitzung privat sind. In Azure Databricks sind Variablen temporär und werden mithilfe der Anweisung DECLARE VARIABLE innerhalb einer Sitzung deklariert.

Die Begriffe temporäre Variable und Sitzungsvariable können synonym verwendet werden.

Das Schema, in dem sich temporäre Variablen befinden, ist system.session.

Eine Variable wird implizit am Ende der Sitzung getrennt, in der sie definiert ist. Sie können sie jedoch mit der DROP VARIABLE-Anweisung explizit früher trennen.

Wenn für eine Variable definiert ist, hat sie den Wert NULL oder das Ergebnis des optional angegebenen Standardausdrucks. Sie können den Wert einer beliebigen Anzahl von Variablen mit der SET VARIABLE-Anweisung jederzeit während der Sitzung ändern.

Wenn innerhalb einer Abfrage darauf verwiesen wird, verwenden Variablennamen dieselben Namespaces wie Spaltennamen, Spaltenaliase und Funktionsparameternamen. Im Fall von Namenskonflikten stehen Variablen in der Reihenfolge der Auflösung am Ende.

Variablen unterscheiden sich semantisch von Parametermarkern auf drei Arten:

  • Parametermarker werden nur innerhalb einer einzelnen Anweisung verwendet. Die aufrufende API muss den Wert und den Typ bereitstellen. Variablen gelten für die Dauer einer Sitzung, sodass sie in mehreren Anweisungen referenziert werden können, ohne dass für jede Anweisung ein Wert übergeben werden muss.
  • Variablen können festgelegt werden, ohne den SQL-Kontext zu verlassen.
  • Auf Variablen kann in den Körpern temporärer Sichten und SQL-Funktionen verwiesen werden. Wenn Sie auf eine temporäre Sicht oder temporäre SQL-Funktion verweisen, wird der aktuelle Wert einer Variable im Körper verwendet.

Die IDENTIFIER-Klausel akzeptiert Variablen als Argumente. Daher können Sie Bezeichner mithilfe von Variablen und Ergebnissen von Abfragen parametrisieren, die zum Festlegen dieser Variablen verwendet werden.

Beispiele

-- A verbose definition of a temporary variable
> DECLARE OR REPLACE VARIABLE myvar INT DEFAULT 17;

-- A dense definition, including derivation of the type from the default expression
> DECLARE address = named_struct('street', 'Grimmauld Place', 'number', 12);

-- Referencing a variable
> SELECT myvar, session.address.number;
 17  12

-- Setting a single variable
> SET VAR myvar = (SELECT max(c1) FROM VALUES (1), (2) AS t(c1));
> SELECT myvar;
  2

-- Setting multiple variables
> SET VAR (myvar, address) = (SELECT address.number, named_struct('street', address.street, 'number', 10));
> SELECT myvar, address;
  12    {"street":"Grimmauld Place","number":10}

-- Drop a variable
> DROP TEMPORARY VARIABLE myvar;
> DROP TEMPORARY VARIABLE IF EXISTS address;

-- Use the IDENTIFIER clause with a variable
> DECLARE view = 'tempv';
> CREATE OR REPLACE TEMPORARY VIEW IDENTIFIER(view) (c1) AS SELECT 1;
> SELECT * FROM IDENTIFIER(view);
  1