variables
적용 대상: Databricks Runtime 14.1 이상
변수는 형식화되고 세션에 비공개인 값을 저장하는 스키마 정규화된 개체입니다. Azure Databricks 변수는 DECLARE VARIABLE 문을 사용하여 세션 내에서 임시로 선언됩니다.
용어 임시 변수 및 세션 변수 는 서로 교환할 수 있습니다.
임시 변수가 있는 스키마는 system.session
.
변수를 정의하는 세션이 끝날 때 변수가 암시적으로 삭제됩니다. 그러나 DROP VARIABLE 문을 사용하여 이전에 명시적으로 삭제할 수 있습니다.
변수가 정의된 경우 해당 값은 NULL
선택적으로 지정된 기본 식의 결과입니다.
세션 중에 언제든지 SET VARIABLE 문을 사용하여 임의의 수의 변수 값을 수정할 수 있습니다.
쿼리 변수 이름 내에서 참조되는 경우 열 이름, 열 별칭 및 함수 매개 변수 이름과 네임스페이스를 공유합니다. 변수는 이름 충돌이 발생할 경우 해결 순서대로 마지막입니다.
변수는 다음 세 가지 방법으로 매개 변수 표식과 의미상 다릅니다.
- 매개 변수 표식은 단일 문 내에만 존재합니다. 호출 API는 값과 형식을 제공해야 합니다. 변수는 세션 기간 동안 존재하므로 모든 문에 대한 값을 전달할 필요 없이 여러 문에서 참조할 수 있습니다.
- SQL 컨텍스트를 벗어나지 않고 변수를 설정할 수 있습니다.
- 임시 뷰 및 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