본문 바로가기

카테고리 없음

Databricks Basic Transformations 강의 정리

728x90
반응형

이 글은 Databricks에서 제공하는 "Basic Transformations" 강의 내용을 정리한 포스팅입니다. Spark SQL과 Delta Lake를 활용한 기초적인 데이터 변환 작업을 중심으로 학습한 내용을 단계별로 소개합니다. 실습 기반으로 진행되며, 실무에 바로 활용 가능한 팁들이 많이 포함되어 있습니다.


1. 가이드 목표 (Learning Objectives)

  • Spark SQL 을 이용해 외부 데이터의 처리와 계산을 구성
  • DDL (Data Definition Language) 문자를 통해 테이블 생성
  • Managed Table vs External Table 차이 이해
  • 저장 위치 관리 방식 환경 이해

2. MERGE INTO 메서드 (최가하기)

MERGE INTO 문는 "UPSERT"와 유의하며, 데이터가 규칙에 맞으면 UPDATE, 없으면 INSERT를 수행합니다.

복사 문단:

MERGE INTO target a
USING source b
ON a.id = b.id
WHEN MATCHED THEN UPDATE SET ...
WHEN NOT MATCHED THEN INSERT (...)

실습 예제:

  • a.email IS NULL AND b.email IS NOT NULL 조건에만 email 업데이트

3. 테이블 복제: DEEP CLONE vs SHALLOW CLONE

사항DEEP CLONESHALLOW CLONE

복제 범위 데이터 + 메타데이터 전체 메타데이터만 (데이터는 공유)
동기화 가변된 데이터만 추가 갱신할 수 있음 X
사용 대상 복지, 방안, 방식적 복제 테스트, 구조 검증

4. CREATE OR REPLACE TABLE 메서드 (Complete Overwrite)

각 통신 데이터를 삭제하고 다시 만들지 않고, 기존 테이블의 데이터를 전체 바꾸는 방식입니다.

CREATE OR REPLACE TABLE my_table AS
SELECT * FROM new_data_source;
  • ACID transaction 방식 지원
  • Time Travel을 통해 이전 버전 회귀 가능

5. INSERT OVERWRITE

규정된 테이블의 데이터만 갱신

INSERT OVERWRITE table_name
SELECT * FROM ...
  • 기존 스킬마가 같아야 함
  • 특정 파티션에 대해서도 복제 가능

6. Insert-Only Merge (중복 마련)

데이터가 중복되지 않게 INSERT 만 수행

MERGE INTO events a
USING source b
ON a.user_id = b.user_id AND a.event_timestamp = b.event_timestamp
WHEN NOT MATCHED THEN INSERT (...)
  • WHEN MATCHED 업데이트 없이, 중복 아닌 경우만 INSERT

7. 테이블 컬럼 정렬 및 이름 변경

CREATE OR REPLACE TABLE purchases AS
SELECT order_id AS id,
       transaction_timestamp,
       purchase_revenue_in_usd AS price
FROM historical_sales_bronze;
  • 필요한 컬럼만 가져오고 변이명
  • PII 데이터 제외, downstream system 경보를 고려

8. Generated Columns (자동 계산 컬럼)

CREATE OR REPLACE TABLE purchase_dates (
  id STRING,
  transaction_timestamp STRING,
  price STRING,
  date DATE GENERATED ALWAYS AS (
    cast(cast(transaction_timestamp/1e6 AS TIMESTAMP) AS DATE)
  ) COMMENT 'based on transaction_timestamp'
);
  • 다른 컬럼의 값을 기본으로 자동계산
  • 데이터 입력시 date 컬럼은 도움이 없이 자동으로 계산

설정:

SET spark.databricks.delta.schema.autoMerge.enabled = true;

9. CHECK Constraint (조건 제어)

ALTER TABLE purchase_dates
ADD CONSTRAINT valid_date CHECK (date > '2020-01-01');
  • 테이블에 조건 삽입 (두 가지 지원: NOT NULL, CHECK)
  • 기존 데이터가 조건을 위보할 경우, 추가 실패
  • DESCRIBE EXTENDED table_name 를 통해 검사 가능
728x90
반응형