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 |