반정형 데이터 쿼리

Snowflake 데이터 파이프라인 자동화

Emily Melhuish

Technical Curriculum Developer, Snowflake

반정형 데이터 로딩

data loading.png

1 * Snowflake Learning Material
Snowflake 데이터 파이프라인 자동화

다양한 데이터 형태 처리

운송사 A 운송사 A JSON

운송사 B

운송사 B JSON

Snowflake 데이터 파이프라인 자동화

변환 예시

Screenshot 2026-05-11 at 5.56.34 pm.png

Snowflake 데이터 파이프라인 자동화

Snowflake 데이터 타입

분류 타입 예시
숫자 NUMBER, INT, FLOAT credits_used NUMBER(10,2)
텍스트 VARCHAR, STRING, TEXT carrier_name VARCHAR
날짜/시간 DATE, TIME, TIMESTAMP dispatch_date DATE
불리언 BOOLEAN is_active BOOLEAN
반정형 VARIANT, OBJECT, ARRAY event_payload VARIANT
Snowflake 데이터 파이프라인 자동화

VARIANT 타입

  • VARIANT는 반정형 데이터를 있는 그대로 저장: 스키마 불필요
  • JSON, Parquet, Avro, ORC, XML 직접 로드 가능
  • 데이터 구조는 쿼리 시점에 결정 (schema-on-read)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

VARIANT가 보유하는 반정형 데이터 유형을 나타내는 워드 클라우드: JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

Snowflake 데이터 파이프라인 자동화

JSON 탐색

JSON 예시

{
  "shipment_id": "SHP-001",
  "carrier": { "name": "FastFreight" },
  "stops": [
    { "location": "Rotterdam Port" },
    { "location": "Amsterdam Hub" }
  ]
}

JSON 탐색

구조 탐색:

<column>:<level1_element>.<level2_element>

SELECT 
event:id::STRING AS shipment_id
, event:carrier.name::STRING AS carrier
, event:stops[0]:location::STRING 
AS first_stop 
FROM shipment_events;
Snowflake 데이터 파이프라인 자동화

FLATTEN으로 배열을 행으로 변환

Flatten.png

Snowflake 데이터 파이프라인 자동화

LATERAL FLATTEN 사용

SELECT 
  s.event_data:shipment_id::STRING AS shipment_id,
  f.value:location::STRING AS stop,
  f.value:arrived_at::TIMESTAMP AS arrived_at 
FROM shipment_events s,
  LATERAL FLATTEN(input => s.event_data:stops) f;

Flatten.png

Snowflake 데이터 파이프라인 자동화

연습해 봅시다!

Snowflake 데이터 파이프라인 자동화

Preparing Video For Download...