Zmienne
Dotyczy: Databricks Runtime 14.1 i nowszych
Zmienne to obiekty opatrzone typem i schema określone, które przechowują values dostępne tylko w ramach danego sesji. W Azure Databricks zmienne są tymczasowe i deklarowane w ramach sesji przy użyciu instrukcji DECLARE VARIABLE.
Określenia zmiennej tymczasowej i zmiennej sesji są wymienne.
schema, w którym znajdują się zmienne tymczasowe, system.session
.
Zmienna jest porzucana niejawnie na końcu sesji, która ją definiuje. Można ją jednak usunąć wcześniej w sposób jawny, używając instrukcji DROP VARIABLE.
Gdy zmienna jest zdefiniowana, jej wartość jest NULL
lub wynikiem opcjonalnego wyrażenia domyślnego.
Wartość dowolnej liczby zmiennych można zmodyfikować za pomocą instrukcji SET VARIABLE w dowolnym momencie podczas sesji.
Podczas odwoływanie się do nazw zmiennych zapytania współużytkują swoją przestrzeń nazw z nazwami column, aliasy columni nazwy parametrów funkcji . Zmienne są umieszczone na końcu w hierarchii 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 mogą być set bez opuszczania kontekstu języka SQL.
- Można odwoływać się do zmiennych w obiektach tymczasowych views i funkcjach 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 set 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
Powiązane artykuły
- DECLARE VARIABLE
- DROP VARIABLE
- klauzuli
- znaczniki parametrów
- Rozpoznawanie nazw
- SET VARIABLE
- nazwa zmiennej