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
Don't Panic
Don't Panic: Dagster Fundamentals
Dagster is a Python orchestration framework for data pipelines. Its main trick is changing what you treat as the center of the system. Instead of starting with tasks that happen to run in a useful order, Dagster starts with assets, the tables, files, models, reports, or other data products that should exist.
That shift matters because data teams usually debug outputs. Which table is stale? Which upstream asset broke it? Which run last materialized it? Which check failed? Dagster's asset graph makes those questions first-class instead of asking you to reconstruct them from job names and folklore.
An asset is a Python function plus an AssetKey and declared dependencies. Materializing the asset executes the function in a run and records an event. The IO manager decides where outputs are stored, so transformation code does not need to carry every storage decision on its back like a tiny, resentful warehouse.
Automation can arrive several ways. Schedules fit clock-based work. Sensors fit external conditions. Asset sensors react to materialization events. Declarative automation attaches update rules to the asset itself. Partitions divide an asset by time or category, and backfills materialize ranges when history needs to be built or repaired.
A deployment has moving parts. The webserver serves the UI and API. The daemon handles schedules, sensors, and run queuing. Code location servers expose definitions from their Python environments. A run launcher, run worker, and executor do the actual execution chain.
Use the Practice Reference for commands and object-model checks. Do the Exercise to define assets, resources, partitions, and checks. The Cheatsheet is the fast map for decorators, automation, runtime components, and CLI commands. Keep one sentence in mind: the object you schedule is the same object you inspect, check, and trust.
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
