SQL과 Python 중에서 선택

Lakeflow 파이프라인은 일괄 처리 및 스트리밍 파이프라인을 정의하기 위한 SQL 및 Python 인터페이스를 모두 지원합니다. 두 인터페이스 모두 동일한 기본 데이터 흐름 그래프를 생성하므로 대부분의 데이터 처리에 동등한 기능을 제공합니다. 유연성, 접근성 및 기능 적용 범위가 다릅니다.

다음 지침을 사용하여 사용할 인터페이스를 결정합니다.

  • SQL에서 논리를 표현할 수 있는 경우 SQL을 사용합니다.
  • 프로그래밍 방식 컨트롤 또는 Python 전용 기능이 필요한 경우 Python 사용합니다.
  • Python이 더 편하다면 Python을 사용하세요. 전체 파이프라인 기능 집합을 다루므로 친숙함이 충분한 이유입니다. 반대로는 그렇지 않습니다. SQL은 모든 기능을 포괄하지 않으므로, 단지 익숙하다는 이유만으로 선택하지 마세요.

동일한 파이프라인에서 두 인터페이스를 결합할 수도 있습니다. MIX SQL 및 Python 참조하세요.

SQL을 사용하는 경우

SQL은 원하는 경우에 적합합니다.

  • 읽기 가능하고 선언적인 정의: 데이터 엔지니어와 분석가가 유지할 수 있는 명확한 논리입니다.
  • 표준 테이블 형식: 스트리밍 테이블 및 구체화된 뷰에서 주로 빌드된 파이프라인입니다.
  • 선형 변환 체인: 절차적 논리 없이 브론즈-실버-골드 흐름과 같은 간단한 수집 및 변환입니다.
  • 독립 실행형 테이블: SQL에서 작성하는 독립 실행형 스트리밍 테이블 또는 구체화된 뷰입니다.

SQL에서 파이프라인을 개발하는 방법에 대한 개요는 SQL을 사용하여 Lakeflow 파이프라인 코드 개발을 참조하세요.

Python 사용하는 경우

Python 필요할 때 적합합니다.

  • 프로그래밍 방식 제어: 파이프라인 정의를 동적으로 생성하는 루프, 조건부 및 메타프로그래밍입니다.
  • 외부 라이브러리: Python 패키지(예: faker 또는 boto3. 파이프라인에 대한 Python 종속성 관리를 참조하세요.
  • UDF(사용자 정의 함수) : Python UDF를 정의하고 Python 및 SQL 원본 파일 모두에서 UDF를 호출할 수 있습니다. UDF(스칼라 사용자 정의 함수)Python 참조하세요.
  • Python 전용 기능:
    • create_auto_cdc_from_snapshot_flow() 데이터베이스 스냅샷에서 변경 데이터 캡처를 적용합니다.
    • create_sink()foreach_batch_sink()를 사용하여 외부 이벤트 스트리밍 또는 Delta 대상에 쓸 수 있습니다.

Python 파이프라인 개발에 대한 개요는 Python 사용하여 파이프라인 코드 개발을 참조하세요.

SQL 및 Python 혼합

단일 파이프라인은 SQL 및 Python 정의를 결합할 수 있지만 각 언어는 별도의 소스 파일에 있어야 합니다. 예를 들어 Python 브론즈 테이블과 실버 테이블을 정의하고 SQL에서 골드 테이블을 정의할 수 있습니다.

기능 가용성

다음 표에서는 각 인터페이스가 일반적인 파이프라인 기능을 지원하는 방법을 비교합니다.

Feature SQL Python
스트리밍 테이블 CREATE STREAMING TABLE create_streaming_table(), table()
구체화된 뷰 CREATE MATERIALIZED VIEW materialized_view()
Iceberg 호환 구체화된 뷰(공개 미리 보기) CREATE MATERIALIZED VIEW ... USING ICEBERG; 외부 Iceberg 판독기와 호환되는 구체화된 보기 만들기를 참조하세요. 지원되지 않음
임시 보기 CREATE TEMPORARY VIEW temporary_view()
프라이빗 테이블 CREATE PRIVATE STREAMING TABLE, CREATE PRIVATE MATERIALIZED VIEW table(private=True)
오토 CDC AUTO CDC ... INTO create_auto_cdc_flow()
스냅샷 기반 자동 CDC 지원되지 않음 create_auto_cdc_from_snapshot_flow()
Flow CREATE FLOW append_flow()
싱크대 지원되지 않음 create_sink(), foreach_batch_sink()
Expectations CONSTRAINT ... EXPECT expect(), expect_or_drop(), expect_or_fail()expect_all 변형

의사 결정 개요

필요한 경우...

목표 권장되는 인터페이스
단순성 및 가독성 SQL
빠른 선언적 설정 SQL
독립 실행형 스트리밍 테이블 또는 구체화된 뷰 SQL
조건부 또는 루핑 논리 Python
UDF 또는 외부 Python 라이브러리 Python
스냅샷 또는 싱크 대상으로부터 자동 CDC 생성 Python
전체 프로그래밍 방식 제어 및 모듈성 Python