Variabili

Si applica a: Databricks Runtime check marked yes 14.1 e versioni successive

Le variabili sono oggetti tipizzati e qualificati dello schema che archiviano i valori 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.

Lo 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 VARIABLE edizione Standard T in qualsiasi momento durante la sessione.

Quando viene fatto riferimento all'interno di nomi di variabili di query, condividono lo spazio dei nomi con nomi di colonna, alias di colonna e nomi di parametri di 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 impostate senza uscire dal contesto di SQL.
  • È possibile fare riferimento alle variabili nei corpi delle viste temporanee 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 impostare 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