Condividi tramite


Variabili

Si applica a: Databricks Runtime contrassegnato con segno di spunta sì 14.1 e versioni successive

Le variabili sono oggetti tipizzati e schema qualificati che archiviano values che sono privati di una sessione. Nelle variabili di Azure Databricks sono temporanee e dichiarate all'interno di una sessione usando l'istruzione DECLARE VARIABLE.

I termini variabile temporanea e variabile di sessione sono intercambiabili.

Il schema in cui risiedono le variabili temporanee è system.session.

Una variabile viene eliminata in modo implicito alla fine della sessione che la definisce. È tuttavia possibile eliminarlo in modo esplicito in precedenza usando l'istruzione DROP VARIABLE.

Quando viene definita una variabile, il relativo valore è NULL o il risultato dell'espressione predefinita specificata facoltativamente. È possibile modificare il valore di un numero qualsiasi di variabili con l'istruzione SET VARIABLE in qualsiasi momento durante la sessione.

Quando viene fatto riferimento all'interno di un nome di variabile query condividere lo spazio dei nomi con nomi column, alias columne nomi dei parametri della funzione . Le variabili sono ultime nell'ordine di risoluzione in caso di conflitti di nome.

Le variabili differiscono semanticamente dai marcatori di parametro in tre modi:

  • I marcatori di parametro esistono solo all'interno di una singola istruzione. L'API di chiamata deve fornire il valore e il tipo. Le variabili esistono per la durata di una sessione, consentendo di farvi riferimento in più istruzioni senza la necessità di passare un valore per ogni istruzione.
  • Le variabili possono essere set senza uscire dal contesto di SQL.
  • È possibile fare riferimento alle variabili nei corpi delle funzioni temporanee views e delle funzioni SQL. Quando si fa riferimento a una vista temporanea o a una funzione SQL temporanea, verrà usato il valore corrente di qualsiasi variabile nel relativo corpo.

La clausola IDENTIFIER accetta variabili come argomenti. In questo modo è possibile parametrizzare gli identificatori usando variabili e risultati delle query usate per set tali variabili.

Esempi

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