Snowflake 가상 컬럼(Virtual Column)

HYUN
Snowflake Korea
Published in
4 min readMay 12, 2023

오라클 11g에 처음 소개되었던 가상 컬럼의 기능이 Snowflake에도 존재하는 것을 알고 있나요?

그럼 “가상 컬럼"이란 무엇이며 어떠한 경우 유용한지 알아보도록 하겠습니다. 가상 컬럼은 테이블에 존재하는 다른 컬럼들을 이용해 가상 컬럼의 값을 자동으로 채워주는 것을 의미합니다.

Snowflake 테이블 생성문을 살펴보면, 컬럼 기본 값에 Expression을 사용할 수 있습니다:

다음과 같이 테스트를 위한 임시 테이블을 생성해 보도록 하겠습니다:

create or replace temp table tmp_daily_temperature(
day_dt date
, temp_c_min number(4, 2)
, temp_c_max number(4, 2)
, temp_c_avg number(4, 2) as (round( (temp_c_min + temp_c_max)/2, 2))
);

보기에는 일반 테이블과 큰 차이점은 존재하지 않습니다. 그렇다면 테이블에 데이터를 입력해 보도록 하겠습니다.

insert into tmp_daily_temperature
values('2023-01-01', 12.8, 42.3, 27.55);

위와 같이 테이블 컬럼이 4개 이기 때문에, 4개의 필드의 값을 Insert하면, 가상 컬럼 제약 조건 위배로 다음과 같이 데이터 입력 오류가 발생합니다

테이블 설계 목적에 맞게 날짜, 최저 온도 및 최대 온도 컬럼에 대한 값이 입력하도록 하겠습니다.

insert into tmp_daily_temperature
values('2023-01-01', 12.8, 42.3);

데이터가 다음 그림과 같이 정상적으로 입력된 것을 확인할 수 있습니다.

그렇다면 데이터의 값을 조회해 보도록 하겠습니다. 다음 그림과 같이 TEMP_C_AVG 컬럼의 표현식에 따라 자동으로 값이 채워진 것을 확인할 수 있습니다.

그렇다면 입력된 값에 TEMP_C_MIN 컬럼의 값을 업데이트 해보도록 하겠습니다.

업데이트 후, 데이터를 조회하면 다음 그림과 같이 가상 컬럼의 값이 기존 27.55에서 28.55로 자동 갱신된 것을 확인할 수 있습니다.

테이블을 설정값을 확인해 보도록 하겠습니다. 다음 그림과 같이 TEMP_C_AVG 컬럼의 유형이 VIRTUAL임을 확인할 수 있습니다.

아마도 이 기능은 오라클 환경에서 가상 컬럼을 사용한 사용자들에게 동일 업무를 클라우드 환경으로 마이그레이션 하는데 유용한 기능일 될 수 있습니다.

--

--