UUID 데이터 타입
UUID 데이터 타입 (UUID data type)
Snowflake의 UUID 데이터 타입을 다루는 문서예요. UUID는 128비트 이진 값으로 정보를 고유하게 식별하는 범용 고유 식별자(universally unique identifier)를 저장해요. UUID 타입의 지정 방법, 특징, 제한 사항과 예제를 확인할 수 있어요.
본문
UUID 데이터 타입은 범용 고유 식별자(UUID)를 저장해요. UUID는 정보를 고유하게 식별하는 128비트 이진 값이에요. 각 UUID 값은 전역적으로 고유하게 설계되어 있어, 두 개의 서로 다른 시스템이 독립적으로 정확히 같은 UUID를 생성할 확률은 매우 낮아요. 그러나 고유성은 UUID 값이 생성되는 방식에 따라 달라지며, Snowflake UUID 데이터 타입 자체는 고유성을 보장하지 않아요. 예를 들어 사용자는 오류 없이 같은 UUID 값을 여러 번 삽입할 수 있어요.
UUID 값은 UUID 형식으로, 하이픈으로 구분된 16진수로 이루어진 36자 문자열이며 8-4-4-4-12 패턴을 따라요. 예를 들어 f353ca91-4fc5-49f2-9b9e-304f83d11914는 UUID 형식의 문자열이에요.
UUID 데이터 타입에 대한 자세한 내용은 Universally unique identifier 위키백과 문서를 참조하세요.
UUID 데이터 타입에는 다음 사항이 적용돼요.
- Snowflake 드라이버는 UUID 값을 텍스트 문자열로 취급해요.
- UUID의 ANSI 리터럴 형식이 입력으로 지원돼요.
- 모든 버전의 UUID 값을 테이블에 삽입할 수 있어요.
- UUID 값은 대소문자를 구분하지 않아요.
- 반정형 데이터 타입(예: VARIANT)과 정형 데이터 타입(예: ARRAY, OBJECT, MAP)에 UUID 값을 저장할 수 있어요.
- Apache Iceberg™ 테이블은 열 타입으로 UUID를 지원해요. Iceberg VARIANT (v3) 열과 Iceberg 정형 타입(ARRAY, OBJECT, MAP)의 요소/값 타입으로도 UUID 값을 저장할 수 있어요. 자세한 내용은 Apache Iceberg™ 테이블용 데이터 타입을 참조하세요.
UUID 데이터 타입 지정하기
- UUID 타입을 지정하려면 다음 구문을 사용해요.
<column_name> UUID
여기서 _column_name_은 테이블의 열 이름이에요.
UUID 데이터 타입의 제한 사항 (Limitations)
UUID 데이터 타입에는 다음 제한 사항이 적용돼요.
- UUID 데이터 타입은 SQL이 아닌 다른 언어(Python 또는 Java 등)로 작성된 저장 프로시저나 사용자 정의 함수(UDF)에서 지원되지 않아요.
- UUID 데이터 타입은 하이브리드 테이블에서 지원되지 않아요.
- UUID 데이터 타입은 Snowpark에서 지원되지 않아요.
- 다음 기능은 UUID 데이터 타입을 지원하지 않아요.
UUID 데이터 타입 예제 (Examples)
다음 예제는 UUID 값을 테이블에 삽입해요.
- 테이블에 UUID 값 삽입하기
- 테이블에 행을 삽입할 때 UUID 값을 자동으로 생성하기
- 반정형 또는 정형 타입에 UUID 값 저장하기
테이블에 UUID 값 삽입하기
- UUID 타입 열이 있는 테이블을 만들고 UUID 값을 삽입해요.
CREATE TABLE sample_uuid_table(uuid_col UUID);
INSERT INTO sample_uuid_table VALUES ('c73d9175-0a1d-48c6-8d30-df165461328b');
테이블에 행을 삽입할 때 UUID 값을 자동으로 생성하기
다음 예제는 테이블에 행을 삽입할 때 UUID 값을 자동으로 생성하는 방법을 보여줘요.
- UUID_STRING 함수를 사용해 테이블에 삽입된 각 행에 대한 UUID 값을 생성하는 테이블을 만들어요.
CREATE OR REPLACE TABLE sample_generate_uuid (
id UUID DEFAULT UUID_STRING() NOT NULL,
sample_column VARCHAR);
- 테이블에 값을 삽입하고
id열을 생략해 UUID 값이 자동으로 생성·삽입되도록 해요.
INSERT INTO sample_generate_uuid (sample_column) VALUES
('value_a'),
('value_b');
- 테이블을 쿼리해 생성된 UUID 값을 확인해요.
SELECT * FROM sample_generate_uuid;
+--------------------------------------+---------------+
| ID | SAMPLE_COLUMN |
|--------------------------------------+---------------|
| f353ca91-4fc5-49f2-9b9e-304f83d11914 | value_a |
| da563283-e201-4744-b158-221dd204a61f | value_b |
+--------------------------------------+---------------+
반정형 또는 정형 타입에 UUID 값 저장하기
반정형 타입(예: VARIANT) 및 정형 타입(예: ARRAY, OBJECT, MAP) 안에 UUID 값을 저장할 수 있어요.
- VARIANT 열과 UUID 요소로 된 정형 ARRAY 열이 있는 테이블을 만들어요.
CREATE OR REPLACE TABLE uuid_container_table (
v VARIANT,
uuid_array ARRAY(UUID));
- VARIANT 열과 정형 ARRAY 열에 UUID 값을 저장하는 행을 삽입해요.
INSERT INTO uuid_container_table
SELECT
OBJECT_CONSTRUCT('id', '5f4d3c2b-1a09-4e8f-8c7b-6a5d4e3f2b1a'::UUID),
[
'c73d9175-0a1d-48c6-8d30-df165461328b'::UUID,
'da563283-e201-4744-b158-221dd204a61f'::UUID
]::ARRAY(UUID);
- 테이블을 쿼리해 저장된 값을 확인해요.
SELECT * FROM uuid_container_table;
+--------------------------------------------------+------------------------------------------+
| V | UUID_ARRAY |
|--------------------------------------------------+------------------------------------------|
| { | [ |
| "id": "5f4d3c2b-1a09-4e8f-8c7b-6a5d4e3f2b1a" | "c73d9175-0a1d-48c6-8d30-df165461328b", |
| } | "da563283-e201-4744-b158-221dd204a61f" |
| | ] |
+--------------------------------------------------+------------------------------------------+
SELECT v:id::UUID AS id FROM uuid_container_table;
+--------------------------------------+
| ID |
|--------------------------------------|
| 5f4d3c2b-1a09-4e8f-8c7b-6a5d4e3f2b1a |
+--------------------------------------+