Zmienne

Dotyczy: Databricks Runtime check marked yes 14.1 i nowsze

Zmienne są typizowane i kwalifikowane obiekty schematu, które przechowują wartości prywatne w sesji. W zmiennych usługi Azure Databricks są tymczasowe i zadeklarowane w ramach sesji przy użyciu instrukcji DECLARE VARIABLE .

Terminy zmienna tymczasowa i zmienna sesji są zamienne.

Schemat, w którym znajdują się zmienne tymczasowe, to system.session.

Zmienna jest porzucana niejawnie na końcu sesji, która ją definiuje. Można jednak jawnie usunąć ją wcześniej przy użyciu instrukcji DROP VARIABLE .

Gdy zmienna jest zdefiniowana, jej wartość to NULL lub wynik opcjonalnego wyrażenia domyślnego. Wartość dowolnej liczby zmiennych można zmodyfikować za pomocą instrukcji SET VARIABLE w dowolnym momencie podczas sesji.

W przypadku przywoływanie w nazwach zmiennych kwerendy współużytkuje swoją przestrzeń nazw z nazwami kolumn, aliasami kolumn i nazwami parametrów funkcji. Zmienne są ostatnie w kolejności rozwiązywania w przypadku konfliktów nazw.

Zmienne różnią się semantycznie od znaczników parametrów na trzy sposoby:

  • Znaczniki parametrów istnieją tylko w ramach jednej instrukcji. Wywoływany interfejs API musi podać wartość i typ. Zmienne istnieją przez czas trwania sesji, co pozwala na odwołowanie się do nich w wielu instrukcjach bez konieczności przekazywania wartości dla każdej instrukcji.
  • Zmienne można ustawić bez opuszczania kontekstu języka SQL.
  • Zmienne można odwoływać się do treści widoków tymczasowych i funkcji SQL. Jeśli odwołujesz się do widoku tymczasowego lub tymczasowej funkcji SQL, zostanie użyta bieżąca wartość dowolnej zmiennej w jej treści.

Klauzula IDENTIFIER akceptuje zmienne jako argumenty. Dzięki temu można sparametryzować identyfikatory przy użyciu zmiennych i wyników zapytań używanych do ustawiania tych zmiennych.

Przykłady

-- 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