Compartilhar via


Variáveis

Aplica-se a: Databricks Runtime marca de seleção Sim 14.1 e versões superiores

Variáveis são tipos e objetos qualificados de esquema que armazenam valores que são privados para uma sessão. No Azure Databricks, as variáveis são temporárias e declaradas em uma sessão usando a instrução DECLARE VARIABLE.

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

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

Uma variável é descartada implicitamente no final da sessão que a define. Mas você pode removê-lo explicitamente mais cedo usando a instrução DROP VARIABLE.

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

Quando referenciados em uma consulta, os nomes de variáveis compartilham o respectivo 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âmetro de três maneiras:

  • Marcadores de parâmetro só existem em uma única declaração. A API de invocação deve fornecer o valor e o tipo. As variáveis existem durante a sessão, permitindo que elas 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 de exibições temporárias e funções SQL. Quando você faz referência a uma exibição temporária ou uma função SQL temporária, o valor atual de qualquer variável em seu corpo será usado.

A cláusula IDENTIFIER aceita variáveis como argumentos. Isso permite que você parametrize identificadores usando variáveis e resultados de consultas usadas 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