Dagster 에셋(Asset)
Dagster 에셋(Asset)
에셋(asset)은 테이블·데이터셋·머신러닝 모델처럼 논리적인 데이터 단위예요. 에셋은 다른 에셋에 의존할 수 있고, 이 의존 관계가 곧 파이프라인의 데이터 계보(lineage) 를 만들어요. Dagster의 핵심 추상화라서, 에셋을 중심으로 다른 여러 엔티티(에셋 체크·스케줄·센서·리소스 등)가 함께 동작해요.
출처: Dagster Assets
에셋 정의
에셋은 @dg.asset 데코레이터로 정의하거나, 컴포넌트(component)를 통해 만들 수도 있어요. 정의된 에셋은 자동으로 최상위 Definitions 객체에 추가돼요.
import dagster as dg
@dg.asset
def my_table(): ...
에셋을 정의하면 Dagster가 그 에셋의 존재와 의존 관계를 파악해, 실행이 필요할 때 자동으로 스케줄·트리거할 수 있어요.
에셋을 중심으로 연결되는 개념
에셋은 여러 엔티티와 관계를 맺어요.
- 에셋 체크(asset check) — 에셋이 데이터 품질·신선도·완전성 기대치를 충족하는지 검사해요.
- 에셋 스펙(asset spec) — 에셋의 동작 없이 정체성·메타데이터를 설명하는 객체예요.
- 컴포넌트(component) — 스키마화된 설정으로 에셋을 프로그래밍 방식으로 만들게 도와줘요.
- 잡(job) — 선택한 에셋을 실행 단위로 묶어요.
- 스케줄·센서 — 에셋 실행을 트리거해요.
소프트웨어 정의 에셋(Software-Defined Assets)
에셋 중심 설계는 「파이프라인이 아니라 데이터를 중심으로」 파이프라인을 생각하게 해주는 접근이에요. 데이터가 어떻게 만들어지고, 어느 에셋에 의존하는지를 선언해 두면, Dagster가 최신 데이터만 효율적으로 갱신하고, 데이터와 코드가 함께 버전 관리되도록 도와요. 이 설계를 소프트웨어 정의 에셋(Software-Defined Assets, SDA) 이라고 불러요.
에셋과 실행
정의한 에셋은 필요한 시점에 materialize(구체화)돼요. 에셋 간 의존 관계 때문에, 상위 에셋이 갱신되면 하위 에셋도 필요에 따라 다시 만들어져요. 이 흐름은 Dagster UI에서 계보로 한눈에 확인할 수 있어요.