需同时安装 dagster-webserver 才能启动 Web UI,只装 dagster 不够;Python 版本需在 3.9~3.14 范围内;README 未给出启动 UI 的具体命令,需查阅官方文档
dagster
dagster-ioApache-2.0活跃维护用 Python 编排数据管道和资产,把开发、生产到可观测性串起来,适合数据工程和 MLOps 场景。
An orchestration platform for the development, production, and observation of data assets.
uv add dagster dagster-webserver dagster-dg-cliREADME 未说明硬件要求,仅说明官方支持 Python 3.9 至 3.14
用 Python 声明式定义数据资产并自动编排调度的云原生数据管道平台
用 Python 编排数据管道和资产,把开发、生产到可观测性串起来,适合数据工程和 MLOps 场景。
核心能力
- 用 @dg.asset 装饰器把 Python 函数声明为数据资产
- 自动按依赖关系调度运行并保持资产最新
- 内置血缘追踪、可观测性与元数据目录
- 支持本地开发到生产的多租户编排引擎
- 提供大量主流数据工具集成库
容易踩的坑
- 1.13.291.13.29 (core) / 0.29.29 (libraries)最新正式版2026-11-05 · 2026-11-05 18:38 UTC
New
- [ui] Run pages now start loading logs sooner.
- [ui] The code location overview, deployment code locations list, and sensor and schedule detail pages now have mobile layouts.
- [ui] Improved global search performance on the home page and catalog.
- [ui] Improved global search responsiveness for deployments with many assets.
- [ui] Improved asset catalog load performance by sharing asset selection filtering across the page.
Bugfixes
- [dg] Fixed
dg --helpshowing no options or commands whentyper0.26 or later was installed. (Thanks, @DRACULA1729!) - [ui] Fixed shift-click selection in run, asset, and automation tables selecting nothing when the range crossed row 10.
- [ui] Selecting a large asset group in the catalog with its group checkbox no longer freezes the page.
- [ui] Fixed asset pages opening in the desktop layout on phones.
- [ui] Fixed the Runs page's bulk actions menu so that actions the user doesn't have permission for cannot be taken, and are shown as disabled.
- [ui] Fixed duplicate and stale rows accumulating in global search results when editing the query.
- 1.13.281.13.28 (core) / 0.29.28 (libraries)2026-10-30 · 2026-10-30 15:31 UTC
查看更新说明
New
- Dagster now supports protobuf 7.
- [ui] Selection input suggestions now update when their values finish loading.
- [ui] Selection inputs now suggest a tag key's values right after
=or an opening quote, and while typing a tag value. - [ui] When no suggestion matches, selection inputs now offer the typed value in quotes if it needs them.
- [ui] The Runs filter now lists tag keys, tag values, backfills, and partitions alphabetically.
- [ui] Background browser tabs no longer poll for updates on job tiles, sync pages, and log views, and finished run groups refresh less often.
- [dagster-cloud] Agents can now retry code locations that fail to start (for example, from an image pull failure or startup timeout) using the new opt-in
code_location_start_retrysetting (Helm:workspace.codeLocationStartRetry). - [dagster-databricks] Added a preview
run_job()method toPipesDatabricksClientandPipesDatabricksServerlessClient, which triggers an existing Databricks job by ID using Dagster Pipes. - [dagster-databricks] Raised the
databricks-sdkupper bound to<0.156.0, so newer Jobs API options likeperformance_targetcan be passed throughsubmit_args. - [dagster-dbt] Added a
dagster-dbt[dbt]extra that installs dbt v2 (the Fusion engine) from PyPI. Installingdbt2.x alongsidedbt-corenow raises a clear error instead of an opaqueImportError. - [dagster-dbt]
DbtProject,DagsterDbtProjectPreparer, and theDbtProjectComponentprojectarguments now acceptinstall_deps=Falseto skip runningdbt depsduring project preparation, for users who install dbt packages themselves. - [dagster-k8s]
dagster-k8snow supports version 37 of thekubernetesclient. - [dagster-snowflake]
dagster-snowflakenow requiressnowflake-snowpark-python>=1.37.0andsnowflake-connector-python>=3.14.0. Older snowpark releases fail to import with setuptools 82 or newer.
Bugfixes
- Fixed an issue where
UPathIOManager.storage_options, used by IO managers such asPolarsDeltaIOManager, raised anAttributeErrorwith universal-pathlib 0.3.0 or newer. (Thanks, @abhishekacharya200!) - [dagster-dbt] Fixed a crash when using
selectorexcludeon a dbt project withon-run-startoron-run-endhooks. - [dagster-dbt] Fixed a
ModuleNotFoundError: No module named 'dateutil'when importingdagster-dbtwithoutdbt-coreinstalled, such as with dbt v2 (Fusion).
Dagster Plus
- The audit log now records organization settings changes, removing users, team and custom role changes, API (SCIM) token creation and revocation, enabling or disabling SCIM, deployment agent type changes, and group and user changes made through SCIM provisioning.
- The "Runs in progress" and "Runs queued" Insights metrics now capture short-lived spikes, such as bursts of very short runs, that were previously missed. Alerts on these metrics may now trigger on short bursts. Requests for these metrics that don't specify an aggregation now use Max.
- The "Run concurrency" Insights metric is deprecated in favor of "Runs in progress".
- The Serverless base and user-code images now ship pip 26.2.2, so
pip installin images built ondagster-cloud-serverless-baseno longer trusts the compromised eMudhra/emSign CA roots. - Fixed
add_historical_run(used by Airlift) failing with a GraphQL error. - [ui] The audit log event details dialog now scales with the window, wraps long lines, and supports folding the JSON.
- [ui] Fixed a false warning that a code location's component repository differs from the repository it deploys from.
- 1.13.271.13.27 (core) / 0.29.27 (libraries)2026-10-26 · 2026-10-26 15:36 UTC
查看更新说明
New
- New Dagster+ organizations no longer start with a
[Dagster Plus] Credit Limit Exceededalert policy. Only the[Dagster Plus] Run Exceeds 24 Hourspolicy is created by default. - [ui] Added a mobile layout for the run details page, showing the run's tags, logs, and steps.
- [dagster-cloud] BigQuery Insights cost queries now bound the
INFORMATION_SCHEMA.JOBSscan to the dbt invocation's time window, instead of scanning up to 180 days of job history. (Thanks, @pathisaivarun!) - [dagster-sling] Snowflake connections defined with
connection_stringnow identify Dagster as the partner application, unlessapplicationis already set.
Bugfixes
- [ui] Fixed an issue where run action menus stayed open after selecting an item, so clicking "Re-execute" more than once while a launch was in progress created duplicate runs.
- [ui] Fixed a crash when selecting an asset from the asset graph's "Jump to…" search with the keyboard.
- [ui] Fixed an issue where pages could fail to load, or emit repeated errors, when the browser's IndexedDB storage was unavailable or over quota. Cached data now falls back to memory.
- [ui] Selection inputs no longer drop values containing characters such as
@,-, or., so values like email addresses and dbt model names are kept whole when committing and in autocomplete suggestions. - [ui] Selection inputs, including the Runs search, now suggest and apply queries correctly when the query starts with whitespace.
- [ui] Fixed an issue where selection inputs containing emoji, or spaces around commas, could commit a corrupted query.
- [ui] Failing backfills now appear when filtering the Runs page by Failed, and are included in the Failed count.
- [ui] The delete run dialog no longer offers "Terminate instead" to users without permission to terminate the run.
Documentation
- Added a guide for deploying the Dagster+ Hybrid agent on Azure Container Apps.
- New Dagster+ organizations no longer start with a
- 1.13.261.13.26 (core) / 0.29.26 (libraries)2026-10-09 · 2026-10-09 23:08 UTC
查看更新说明
Breaking Changes
- [dagster-dbt]
dagster-dbtno longer installsdbt-core. It is now available as thedagster-dbt[dbt-core]extra. Do not installdbt-coreinto an environment that also has dbt Fusion'sdbtPyPI package: both claim thedbtimport namespace and overwrite each other's files, and pip reports no error.
New
- Sensor ticks that request a run larger than the instance's run size limit now fail with an explicit error naming the offending run requests, instead of storing those requests in tick history.
- The
SF_PARTNER_IDenvironment variable is now set by default, to allow for partner attribution on Snowflake connections made through third-party libraries. - Run monitoring now includes the run worker's debug info (for example, a Kubernetes
OOMKilledtermination reason) when it fails a started run because the run worker failed. (Thanks, @hosaka2!) - [dg]
dg list envs,dg plus create env, anddg plus pull envnow accept a--deploymentoption (or theDAGSTER_CLOUD_DEPLOYMENTenvironment variable) to target a deployment other than the configured default. - [dagster-cloud] The published
dagster-cloud-agentimage now includes the Azure Container Apps launcher. - [dagster-dbt] A dbt Fusion binary on
PATHis now used as-is, instead of being shadowed by thedbtentry point thatdbt-coreinstalls into the virtualenv. - [dagster-dbt]
fetch_column_metadata()andfetch_row_counts()no longer fail the step when running on the dbt Fusion engine, or when dbt adapter initialization fails. They now log a warning and emit events without the metadata. - [dagster-dbt]
dagster-dbt'ssqlglotdependency no longer pins an upper bound. Column lineage generation now works on sqlglot 28.1 and later, including the performance improvements in 30.x for wide models. - [dagster-dbt] Asset materializations from dbt runs now carry the node's dbt status as metadata.
Bugfixes
- GraphQL event-log, tick, and run-record queries no longer fail when the requested limit exceeds the server-side default. The limit is clamped to the default, and the remaining rows are available by paginating.
- Fixed a bug where a run's asset list could be under-reported in the UI for runs with a large number of materializations, and where an asset could be reported as failed even though it was materialized by a different step than the one that planned it.
- Fixed an issue where the UI could keep displaying a code location's previous container image after a rolling update, until browser storage was cleared. (Thanks, @HynekBlaha!)
- [ui] Run filters now keep tag values that contain
=, such as partition keys likeregion=west. - [ui] Selection inputs no longer collapse repeated spaces inside quoted values, and now have an accessible name.
- [ui] On cursor-paginated lists such as Runs, "Newer" now returns to the previous page after you switch tabs and press browser Back, instead of jumping to the first page.
- [dagster-dbt] Fixed a bug where dbt models that finished with a no-op, reused, or warn status emitted no materialization, so the asset silently stopped updating and downstream freshness checks and automation conditions never fired.
partial successandskippedare still treated as failures, since dbt marks a partial-success node's dependents as errored, and dbt Fusion reports both a genuine no-op and an upstream-failure skip asskipped. - [dagster-dbt] Fixed an issue where dbt Fusion models with no
ref()orsource()calls were still left out of asset selection in environments withoutdbt-coreinstalled, which the fix in 1.13.25 did not cover. Selections other than the defaultselectare still affected. - [dagster-dbt] Fixed a bug where, when running on dbt Fusion without
dbt-coreinstalled, every passing dbt test was reported as a failed asset check. - [dagster-dbt] Fixed a bug where a dbt Cloud run containing seeds executed under dbt Fusion
- [dagster-dbt]
- 1.13.251.13.25 (core) / 0.29.25 (libraries)2026-10-01 · 2026-10-01 18:17 UTC
查看更新说明
New
- Improved the performance of declarative automation for partitioned assets with a long materialization history.
- [ui] The UI now has a mobile layout for phones, with a new navigation menu and mobile versions of the Home, Jobs, Automation, Timeline, Asset Catalog, and Asset Overview pages. Pages without a mobile version show a banner with an option to always use the desktop site, which can also be set in user settings.
- [ui] When launching a time-partitioned asset, the partition selector now shows the most recent 90 days by default, with an option to show all partitions.
- [dagster-aws] The ECS run launcher now supports resuming run workers, so run monitoring's
max_resume_run_attemptscan be set above 0 on ECS deployments. - [dagster-prefect] The Prefect Pipes clients now read messages through Prefect's logs API by default, so a shared filesystem or bucket is no longer needed. Prefect deployments work without changes to the flow. Flows and tasks that open a Pipes session must pass
message_writer=PipesPrefectLogsMessageWriter().
Bugfixes
- [dg] Fixed
AttributeError: module 'dbt' has no attribute 'contracts'when passing a file nameddbt.pytodg plus integrations dbt manage-manifestanddagster-cloud ci manage-state. - [dagster-dbt] Fixed an issue where dbt Fusion models with no
ref()orsource()calls were silently left out of asset selection, including inDbtProjectComponent. - [ui] Fixed an issue where pressing Newer on paginated lists such as Runs jumped to the first page after using the browser Back button or reloading the page.
Documentation
- Added a dbt Fusion page to the dbt integration docs.
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
Dagster is a cloud-native data pipeline orchestrator for the whole development lifecycle, with integrated lineage and observability, a declarative programming model, and best-in-class testability.
It is designed for developing and maintaining data assets, such as tables, data sets, machine learning models, and reports.
With Dagster, you declare—as Python functions—the data assets that you want to build. Dagster then helps you run your functions at the right time and keep your assets up-to-date.
Here is an example of a graph of three assets defined in Python:
import dagster as dg
import pandas as pd
from sklearn.linear_model import LinearRegression
@dg.asset
def country_populations() -> pd.DataFrame:
df = pd.read_html("https://tinyurl.com/mry64ebh")[0]
df.columns = ["country", "pop2022", "pop2023", "change", "continent", "region"]
df["change"] = df["change"].str.rstrip("%").astype("float")
return df
@dg.asset
def continent_change_model(country_populations: pd.DataFrame) -> LinearRegression:
data = country_populations.dropna(subset=["change"])
return LinearRegression().fit(pd.get_dummies(data[["continent"]]), data["change"])
@dg.asset
def continent_stats(
country_populations: pd.DataFrame, continent_change_model: LinearRegression
) -> pd.DataFrame:
result = country_populations.groupby("continent").sum()
result["pop_change_factor"] = continent_change_model.coef_
return result
The graph loaded into Dagster's web UI:
Dagster is built to be used at every stage of the data development lifecycle - local development, unit tests, integration tests, staging environments, all the way up to production.
Quick Start:
If you're new to Dagster, we recommend checking out the docs or following the hands-on tutorial.
Dagster is available on PyPI and officially supports Python 3.9 through Python 3.14.
uv add dagster dagster-webserver dagster-dg-cli
Documentation
You can find the full Dagster documentation here, including the Quickstart guide.
Key Features:
Dagster as a productivity platform
Identify the key assets you need to create using a declarative approach, or you can focus on running basic tasks. Embrace CI/CD best practices from the get-go: build reusable components, spot data quality issues, and flag bugs early.
Dagster as a robust orchestration engine
Put your pipelines into production with a robust multi-tenant, multi-tool engine that scales technically and organizationally.
Dagster as a unified control plane
Maintain control over your data as the complexity scales. Centralize your metadata in one tool with built-in observability, diagnostics, cataloging, and lineage. Spot any issues and identify performance improvement opportunities.
Master the Modern Data Stack with integrations
Dagster provides a growing library of integrations for today’s most popular data tools. Integrate with the tools you already use, and deploy to your infrastructure.
Community
Connect with thousands of other data practitioners building with Dagster. Share knowledge, get help, and contribute to the open-source project. To see featured material and upcoming events, check out our Dagster Community page.
Join our community here:
- 🌟 Star us on GitHub
- 📥 Subscribe to our Newsletter
- 🐦 Follow us on Twitter
- 🕴️ Follow us on LinkedIn
- 📺 Subscribe to our YouTube channel
- 📚 Read our blog posts
- 👋 Join us on Slack
- 🗃 Browse Slack archives
- ✏️ Start a GitHub Discussion
Contributing
For details on contributing or running the project for development, check out our contributing guide.
License
Dagster is Apache 2.0 licensed.