프로젝트 소개

dlt(데이터 로드 도구)는 데이터 추출, 변환, 로드를 자동화하는 오픈소스 Python 라이브러리입니다. 관리형 플랫폼이 아닌 기존 Python 코드에 삽입하는 라이브러리로 설계되었습니다. **추출 소스**에는 REST API(선언적 페이지네이션, 필터링, 평탄화 지원), SQL 데이터베이스(테이블 및 타입 자동 반영), 클라우드 버킷의 파일(S3, GCS, Azure — CSV, JSONL, Parquet), 그리고 DataFrame(pandas, Polars, PyArrow, 제로카피 Arrow 지원)이 포함됩니다. **로드**는 DuckDB, BigQuery, Snowflake, Postgres, Redshift, Databricks, Athena, ClickHouse, MotherDuck, Iceberg, Delta Lake, 일반 파일시스템을 포함한 20개 이상의 대상을 지원합니다. 대상 변경은 `destination` 문자열만 업데이트하면 됩니다. 주요 기능: - **스키마 추론 및 타입 매핑**: 소스 데이터에서 스키마를 자동으로 추론하고 대상 간 타입을 매핑합니다. - **스키마 계약**: `evolve`(스키마 적응), `freeze`(불일치 거부), `discard`(문제 행/열 삭제)의 세 가지 모드. - **증분 로드**: 커서 또는 타임스탬프를 사용하여 새 레코드나 변경된 레코드만 로드하는 내장 지원. - **병합/업서트 전략**: `write_disposition="merge"` 옵션을 통한 선언적 기본 키 기반 병합. - **중첩 데이터 정규화**: 중첩 구조를 자동으로 평탄화하고 정규화합니다. - **Ibis 통합**: 로드된 테이블을 Ibis 표현식으로 변환하여 대상 방언의 SQL로 컴파일되는 구성 가능한 Python 쿼리를 지원합니다. - **비밀 관리**: `secrets.toml` 또는 환경 변수에서 자격 증명을 주입합니다. - **파이프라인 재연결**: `dlt.attach()`를 사용하여 이름으로 파이프라인에 재연결하고 `.df()`, `.arrow()`, `.to_ibis()`를 지원하는 `Dataset` API를 통해 데이터를 읽을 수 있습니다. dlt는 LLM 및 코딩 에이전트 호환성을 염두에 두고 구축되어 AI 지원 파이프라인 생성에 적합한 선언적이고 사람이 읽을 수 있는 프리미티브를 제공합니다. Python 3.10부터 3.14까지 지원합니다. 설치: `pip install dlt` (선택적 확장 기능: `[duckdb]`, `[bigquery]`, `[sql_database]`, `[hub]`).