Dagster Fundamentals
Dagster is an open-source Python framework and orchestration platform that builds, schedules, and observes data pipelines around the data they produce, such as tables, files, and machine learning models, rather than around the individual steps that produce them.
itData engineering and analytics | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Intro
Dagster Fundamentals
Dagster is an open-source Python framework and orchestration platform for building, scheduling, and observing data pipelines. It models a pipeline as a graph of assets — the tables, files, models, and reports a pipeline produces — instead of a graph of tasks that happen to run in some order.
The central mental model is you declare what should exist, and Dagster figures out how and when to build it.
Python function -> @asset -> AssetKey + dependencies -> asset graph
|
materialization run
|
stored output + tracked lineage
An asset represents a logical unit of data such as a table, dataset, or machine learning model. You write a Python function that computes it, and Dagster tracks the function, its declared upstream dependencies, and every time it runs.
Why an asset-based model exists
A data platform is usually described by the outputs people actually care about: a customer table, a daily report, a trained model. A task-based orchestrator asks you to describe the steps that produce those outputs — extract, transform, load — and leaves the mapping from steps to data implicit in the code that connects them.
That gap creates real operational costs:
- Which table does a failed step actually affect?
- Is this table stale, and which upstream table caused it?
- What is the full lineage from raw source to this report?
- Can someone browse the data platform without reading pipeline code?
Dagster's asset graph answers these questions directly, because the object you materialize — a table — and the object you schedule and observe — an asset — are the same object.
An asset is a Python function plus a key
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.dagster.io/
Supports
- Dagster as a data orchestrator with integrated lineage, observability, a declarative programming model, and testability
- Documentation organized around build, automate, operate, log and debug, observe, and test
- https://docs.dagster.io/getting-started/what-why-dagster
Supports
- The rationale for an asset-based orchestration model
- Dagster Plus as the managed offering built on the open-source engine
- https://docs.dagster.io/getting-started/concepts
Supports
- Definitions of asset, asset check, AssetSpec, AutomationCondition, code location, component, config, Definitions, executor, graph, IO manager, job, op, partition, resource, schedule, and sensor
- Asset as a logical unit of data such as a table, dataset, or machine learning model
- https://docs.dagster.io/guides/build/assets/defining-assets
Supports
- The @asset decorator as the primary way to create an asset
- AssetKey, upstream asset keys, and the computing function as the three parts of an asset definition
- Dependency declaration through function parameters or the deps argument
- The @asset, @multi_asset, @graph_asset, and @graph_multi_asset decorators
- The optional AssetExecutionContext parameter
- https://docs.dagster.io/guides/build/io-managers
Supports
- IO managers separating data-processing code from data storage/retrieval code
- Built-in IO managers for local filesystem, S3, Azure ADLS2, GCS, and warehouses such as Snowflake, BigQuery, and DuckDB
- Swapping storage backends by changing the IO manager rather than asset code
- https://docs.dagster.io/guides/build/external-resources
Supports
- Resources as objects providing access to external systems, databases, or services
- ConfigurableResource as the primary resource-authoring API
- Swapping resource implementations between environments (e.g. testing vs. production)
- Resource configuration surfacing in the Dagster UI
- https://docs.dagster.io/guides/automate/schedules
Supports
- ScheduleDefinition combining a job or asset selection with a cron_schedule
- build_schedule_from_partitioned_job aligning a schedule with a partition cadence
- Default UTC execution with configurable execution_timezone
- https://docs.dagster.io/guides/automate/sensors
Supports
- The @sensor decorator and minimum_interval_seconds as a minimum polling interval
- RunRequest and SkipReason as the two sensor evaluation outcomes
- Cursors for stateful tracking across sensor evaluations
- https://docs.dagster.io/guides/automate
Supports
- Schedules, sensors, asset sensors, and declarative automation as the four automation mechanisms
- Asset sensors triggering jobs when specific assets are materialized
- Declarative automation as a framework for AutomationConditions on assets and asset checks
- https://docs.dagster.io/guides/build/partitions-and-backfills/partitioning-assets
Supports
- DailyPartitionsDefinition and TimeWindowPartitionsDefinition for time-based partitions
- StaticPartitionsDefinition for a fixed category list
- DynamicPartitionsDefinition for runtime-discovered partitions
- MultiPartitionsDefinition for combining two partition dimensions
- https://docs.dagster.io/guides/build/partitions-and-backfills/backfilling-data
Supports
- Backfilling as running partitions for assets that do not yet exist or need updating
- Backfill use cases of initial pipeline setup and reprocessing after a logic change
- One-run-per-partition, batched, and single-run backfill policies via BackfillPolicy and max_partitions_per_run
- https://docs.dagster.io/guides/test/asset-checks
Supports
- The @asset_check decorator and AssetCheckResult with a passed value
- The blocking argument preventing downstream materialization on check failure
- Severity as configurable on a check result
- https://docs.dagster.io/deployment/oss/oss-deployment-architecture
Supports
- Webserver, daemon, and code location servers as the three required long-running OSS services
- Webserver supporting multiple replicas; daemon and each code location server supporting one
- dagster.yaml (instance), workspace.yaml (workspace), and run config as the three configuration tiers
- The daemon, run coordinator, run launcher, run worker, and executor sequence for a scheduled run
- Each component being swappable and configurable with automatic defaults
- https://docs.dagster.io/deployment/dagster-plus
Supports
- Dagster+ as a managed orchestration platform built on the open-source engine
- Serverless running code inside Dagster's own environment
- Hybrid keeping the control plane in Dagster's infrastructure while an agent executes code in the user's own infrastructure
- Insights, alerts, RBAC, and branch deployments as Dagster+ features
- https://docs.dagster.io/getting-started/installation
Supports
- create-dagster as the recommended project scaffolding tool
- uv, Homebrew, and curl installation paths
- dagster, dagster-webserver, and dagster-dg-cli as the manually installed packages
- Python 3.10+ requirement
- https://docs.dagster.io/api/clis/cli
Supports
- dagster dev starting a local webserver and daemon
- dagster asset materialize, dagster asset list, and dagster job launch commands
- dagster schedule and dagster sensor start/stop/list commands
- dagster definitions validate for loading and validating definitions
- https://docs.dagster.io/api/clis/dg-cli/dg-cli-reference
Supports
- dg dev as the dg-CLI equivalent of dagster dev
- dg scaffold, dg check defs, dg list defs, and dg launch commands
- https://docs.dagster.io/guides/build/projects
Supports
- The recommended Dagster project layout (pyproject.toml, src/, definitions.py, tests/)
- create-dagster as the opinionated project-scaffolding CLI
- Workspaces combining multiple projects/code locations
- https://dagster.io/blog/dagster-1-0-hello
Supports
- Dagster 1.0 released August 5, 2022
- The project beginning four years earlier when the founder wrote the first code (dating the founding to 2018)
- Dagster reaching 1.0 once ops, graphs, jobs, schedules, sensors, and asset-related APIs stopped requiring breaking changes
- https://dagster.io/blog/announcing-dagster-day
Supports
- Dagster Cloud reaching general availability on August 9, 2022, alongside the Dagster 1.0 release
- https://dagster.io/blog/decade-of-data
Supports
- Elementl's $14M Series A, led by Mike Volpi of Index Ventures with Sequoia Capital and other investors, announced November 16, 2021
- https://dagster.io/blog/elementl-series-b
Supports
- Elementl's $33M Series B led by Georgian, announced May 24, 2023, bringing total funding to $48.8 million
- https://dagster.io/blog/introducing-dagster-labs
Supports
- The company renaming from Elementl to Dagster Labs, announced August 21, 2023
- https://dagster.io/blog/announcing-dagster-university
Supports
- Dagster University launching October 11, 2023, as a free self-guided learning platform
- Dagster Essentials as Dagster University's first course
- https://dagster.io/events/dagster-plus-launch-event
Supports
- The Dagster+ launch event held April 17, 2024
- https://dagster.io/blog/dagster-1-9-spooky
Supports
- Dagster 1.9, published October 31, 2024, marking Declarative Automation as stable
- AutomationCondition as the mature mechanism for controlling asset rematerialization
- https://github.com/dagster-io/awesome-dagster/blob/main/README.md
Supports
- Curated community and reference projects built on Dagster, including Dagster Open Platform, PUDL, Anomstack, Datadex, and the Geoconnex.us scheduler
- https://github.com/dagster-io/dagster-open-platform
Supports
- Dagster Open Platform as Dagster Labs' own open-source internal data platform built with Dagster
- https://github.com/catalyst-cooperative/pudl
Supports
- The Public Utility Data Liberation Project as an actively maintained open data project orchestrated with Dagster
- https://github.com/andrewm4894/anomstack
Supports
- Anomstack as an open-source anomaly-detection platform built on Dagster
- https://github.com/datonic/datadex
Supports
- Datadex as a serverless, local-first open data platform combining Dagster, dbt, and DuckDB
- https://github.com/internetofwater/scheduler
Supports
- The Geoconnex.us scheduler as a production Dagster-orchestrated crawler harvesting United States water data
- https://docs.dagster.io/integrations/libraries
Supports
- dbt, Airbyte, Fivetran, and Great Expectations among Dagster's supported integration libraries
- https://airflow.apache.org/
Supports
- Apache Airflow as an open-source platform for authoring, scheduling, and monitoring workflows
- Airflow workflows as DAGs composed of tasks and their dependencies
- https://www.prefect.io/how-it-works
Supports
- Prefect workflows as Python functions decorated as flows and decomposed into observable tasks
- Self-hosted and managed orchestration with workers executing code in the user's infrastructure
- https://kestra.io/docs
Supports
- Kestra as an open-source declarative orchestration platform
- Scheduled and event-driven workflows expressed through flows, tasks, and plugins
- https://docs.mage.ai/introduction/overview
Supports
- Mage as a framework combining an interactive editor with modular pipeline code
- Mage orchestration for batch and real-time pipelines written in Python, SQL, or R
- https://flyte.org/platform
Supports
- Flyte as an orchestration platform for data and machine-learning workflows
- Typed task interfaces, scheduled workflows, Kubernetes execution, and failure recovery
