Variáveis
Aplica-se a: Databricks Runtime 14.1 e superior
As variáveis são objetos digitados e qualificados schema que armazenam values e são privadas para uma sessão. No Azure Databricks, as variáveis são temporárias e declaradas dentro de 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 schema em que residem as variáveis temporárias é system.session
.
Uma variável é descartada implicitamente no final da sessão que a define. Mas tu podes 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 especificada opcionalmente.
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 nomes de variáveis compartilham seu namespace com nomes column, column aliasese nomes de parâmetros de função. As variáveis são as últimas na ordem de resolução em caso de conflitos de nomes.
As variáveis diferem semanticamente dos marcadores de parâmetros de três maneiras:
- Os marcadores de parâmetro só existem dentro de uma única instrução. A API de invocação deve fornecer o valor e o tipo. As variáveis existem durante uma sessão, permitindo que sejam referenciadas em várias instruções sem a necessidade de passar um valor para cada instrução.
- As variáveis podem ser set sem sair do contexto do SQL.
- As variáveis podem ser referenciadas nos corpos de funções temporárias views e SQL. Quando você faz referência a uma exibição temporária ou 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. Isto permite-lhe parametrizar identificadores com variáveis e resultados de consultas utilizadas para set 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