dagster

dagster-ioApache-2.0活跃维护

用 Python 编排数据管道和资产,把开发、生产到可观测性串起来,适合数据工程和 MLOps 场景。

An orchestration platform for the development, production, and observation of data assets.

1.13.29发布于 2026-11-05 18:38 UTC16,386star +10 / 7 天2,410fork同步于 2026-11-10 23:27 UTC

怎么上手

由 README 提炼,执行前请确认
uv add dagster dagster-webserver dagster-dg-cli
硬件要求按 README 说明

README 未说明硬件要求,仅说明官方支持 Python 3.9 至 3.14

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

由 README 自动翻译提炼

用 Python 声明式定义数据资产并自动编排调度的云原生数据管道平台

用 Python 编排数据管道和资产,把开发、生产到可观测性串起来,适合数据工程和 MLOps 场景。

核心能力

  • 用 @dg.asset 装饰器把 Python 函数声明为数据资产
  • 自动按依赖关系调度运行并保持资产最新
  • 内置血缘追踪、可观测性与元数据目录
  • 支持本地开发到生产的多租户编排引擎
  • 提供大量主流数据工具集成库

容易踩的坑

需同时安装 dagster-webserver 才能启动 Web UI,只装 dagster 不够;Python 版本需在 3.9~3.14 范围内;README 未给出启动 UI 的具体命令,需查阅官方文档

内容由模型根据 README 生成,可能不完整或不准确,以官方文档为准。看原文 README

最近发版

5 个版本1.13.29
  1. 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 --help showing no options or commands when typer 0.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.
  2. 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_retry setting (Helm: workspace.codeLocationStartRetry).
    • [dagster-databricks] Added a preview run_job() method to PipesDatabricksClient and PipesDatabricksServerlessClient, which triggers an existing Databricks job by ID using Dagster Pipes.
    • [dagster-databricks] Raised the databricks-sdk upper bound to <0.156.0, so newer Jobs API options like performance_target can be passed through submit_args.
    • [dagster-dbt] Added a dagster-dbt[dbt] extra that installs dbt v2 (the Fusion engine) from PyPI. Installing dbt 2.x alongside dbt-core now raises a clear error instead of an opaque ImportError.
    • [dagster-dbt] DbtProject, DagsterDbtProjectPreparer, and the DbtProjectComponent project arguments now accept install_deps=False to skip running dbt deps during project preparation, for users who install dbt packages themselves.
    • [dagster-k8s] dagster-k8s now supports version 37 of the kubernetes client.
    • [dagster-snowflake] dagster-snowflake now requires snowflake-snowpark-python>=1.37.0 and snowflake-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 as PolarsDeltaIOManager, raised an AttributeError with universal-pathlib 0.3.0 or newer. (Thanks, @abhishekacharya200!)
    • [dagster-dbt] Fixed a crash when using select or exclude on a dbt project with on-run-start or on-run-end hooks.
    • [dagster-dbt] Fixed a ModuleNotFoundError: No module named 'dateutil' when importing dagster-dbt without dbt-core installed, 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 install in images built on dagster-cloud-serverless-base no 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.
  3. 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 Exceeded alert policy. Only the [Dagster Plus] Run Exceeds 24 Hours policy 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.JOBS scan 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_string now identify Dagster as the partner application, unless application is 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.
  4. 1.13.261.13.26 (core) / 0.29.26 (libraries)2026-10-09 · 2026-10-09 23:08 UTC
    查看更新说明

    Breaking Changes

    • [dagster-dbt] dagster-dbt no longer installs dbt-core. It is now available as the dagster-dbt[dbt-core] extra. Do not install dbt-core into an environment that also has dbt Fusion's dbt PyPI package: both claim the dbt import 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_ID environment 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 OOMKilled termination reason) when it fails a started run because the run worker failed. (Thanks, @hosaka2!)
    • [dg] dg list envs, dg plus create env, and dg plus pull env now accept a --deployment option (or the DAGSTER_CLOUD_DEPLOYMENT environment variable) to target a deployment other than the configured default.
    • [dagster-cloud] The published dagster-cloud-agent image now includes the Azure Container Apps launcher.
    • [dagster-dbt] A dbt Fusion binary on PATH is now used as-is, instead of being shadowed by the dbt entry point that dbt-core installs into the virtualenv.
    • [dagster-dbt] fetch_column_metadata() and fetch_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's sqlglot dependency 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 like region=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 success and skipped are 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 as skipped.
    • [dagster-dbt] Fixed an issue where dbt Fusion models with no ref() or source() calls were still left out of asset selection in environments without dbt-core installed, which the fix in 1.13.25 did not cover. Selections other than the default select are still affected.
    • [dagster-dbt] Fixed a bug where, when running on dbt Fusion without dbt-core installed, 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
  5. 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_attempts can 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 named dbt.py to dg plus integrations dbt manage-manifest and dagster-cloud ci manage-state.
    • [dagster-dbt] Fixed an issue where dbt Fusion models with no ref() or source() calls were silently left out of asset selection, including in DbtProjectComponent.
    • [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.

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    README 原文

    未翻译

    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:

    Contributing

    For details on contributing or running the project for development, check out our contributing guide.

    License

    Dagster is Apache 2.0 licensed.