variables

적용 대상: Databricks Runtime check marked yes 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