Variáveis

Aplica-se a: Databricks Runtime check marked yes 14.1 e superior

As variáveis são objetos tipados e qualificados por esquema que armazenam os valores privados de uma sessão. No Azure Databricks, as variáveis são temporárias e declaradas em uma sessão utilizando a instrução DECLARAR VARIÁVEL.

Os termos variável temporária e variável de sessão são intercambiáveis.

O esquema no qual as variáveis temporárias residem é system.session.

Uma variável é removida implicitamente ao final da sessão que a define. Mas você pode removê-la explicitamente antes, utilizando a instrução REMOVER VARIÁVEL.

Quando uma variável é definida, seu valor é NULL ou o resultado da expressão padrão especificada opcionalmente. Você pode modificar o valor de qualquer número de variáveis com a instrução DEFINIR VARIÁVEL a qualquer momento durante a sessão.

Quando referenciados em uma consulta, os nomes de variáveis compartilham seu namespace com nomes de colunas, aliases de colunas e nomes de parâmetros de funções. As variáveis são as últimas na ordem de resolução no caso de conflitos de nomes.

As variáveis diferem semanticamente dos marcadores de parâmetros de três maneiras:

  • Os marcadores de parâmetros só existem em uma única instrução. A API de invocação deve fornecer o valor e o tipo. As variáveis existem durante uma sessão, o que permite que sejam referenciadas em várias instruções sem a necessidade de passar um valor para cada instrução.
  • As variáveis podem ser definidas sem sair do contexto do SQL.
  • As variáveis podem ser referenciadas nos corpos das exibições temporárias e funções SQL. Quando você referencia uma exibição temporária ou uma função SQL temporária, o valor atual de qualquer variável no seu corpo será utilizado.

A cláusula IDENTIFICADOR aceita variáveis como argumentos. Isso permite que você parametrize identificadores usando variáveis e resultados de consultas utilizadas para definir essas variáveis.

Exemplos

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