변수
적용 대상: Databricks 런타임 14.1 및 그 이상
변수는 세션에 비공개인 values 저장하는 정규화된 개체를 schema 형식화됩니다. Azure Databricks 변수는 임시이며 DECLARE VARIABLE 문을 사용하여 세션 내에서 선언됩니다.
두 용어 임시 변수 및 세션 변수는 상호 교환 가능합니다.
임시 변수가 있는 곳은 schema의 system.session
입니다.
변수를 정의하는 세션이 끝날 때 변수가 암시적으로 삭제됩니다. 그러나 DROP VARIABLE 문을 사용하여 이전에 명시적으로 삭제할 수 있습니다.
변수가 정의되면 해당 값이 NULL
또는 선택적으로 지정된 기본 식의 결과입니다.
세션 중에 언제든지 SET VARIABLE 문을 사용하여 여러 변수의 값을 수정할 수 있습니다.
쿼리
변수는 세 가지 방법으로
- 매개 변수 표식은 단일 문 내에만 존재합니다. 호출 API는 값과 형식을 제공해야 합니다. 변수는 세션 기간 동안 존재하므로 모든 문에 대한 값을 전달할 필요 없이 여러 문에서 참조할 수 있습니다.
- 변수는 SQL 컨텍스트를 벗어나지 않고도 set 수 있습니다.
- 임시 views 및 SQL 함수의 본문에서 변수를 참조할 수 있습니다. 임시 뷰 또는 임시 SQL 함수를 참조하는 경우 본문에 있는 변수의 현재 값이 사용됩니다.
IDENTIFIER 절 변수를 인수로 허용합니다.
이렇게 하면 해당 변수를
예제
-- 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