🕌

Dagster Workspace

に公開

普段使ってるツールの使ってない機能を使ってみる Advent Calendar 2025です。

Dagsterのドキュメント読み直したら、前はなかった(気がする)workspaceというページが増えてるので触ってみました。

workspaceとは

公式ページ曰く

A workspace allows you to manage and orchestrate multiple Dagster projects together.

ということで、複数のプロジェクト(Asset定義とかの集まり)を管理する仕組みです。

触ってみる

  1. workspaceディレクトリを作成(create-dagster workspace)
  2. projectディレクトリを作成(create-dagster project)

するだけです。

workspaceの作成

> uvx create-dagster workspace dagster-workspace && cd dagster-workspace

コマンドを実行すると

  • dg.toml
  • ローカル実行用のuv環境の設定ファイル(pyproject.toml/uv.lcok)
    • project/Code Locationの実行で使う環境は別です
> tree
.
├── deployments
│   └── local
│       ├── pyproject.toml
│       └── uv.lock
├── dg.toml
└── projects

projectの作成

せっかくなので二つ作ります。

uvx create-dagster project projects/project-1
uvx create-dagster project projects/project-2

それぞれのプロジェクト毎に

  • uv環境(pyproject.toml/uv.lcok)
  • definitions.py

が追加されます。

.
├── deployments
│   └── local
│       ├── pyproject.toml
│       └── uv.lock
├── dg.toml
└── projects
    ├── project-1
    │   ├── pyproject.toml
    │   ├── src
    │   │   └── project_1
    │   │       ├── __init__.py
    │   │       ├── definitions.py
    │   │       └── defs
    │   │           ├── __init__.py
    │   │           └── assets.py
    │   ├── tests
    │   │   └── __init__.py
    │   └── uv.lock
    └── project-2
        ├── pyproject.toml
        ├── src
        │   └── project_2
        │       ├── __init__.py
        │       ├── definitions.py
        │       └── defs
        │           ├── __init__.py
        │           └── assets.py
        ├── tests
        │   └── __init__.py
        └── uv.lock

18 directories, 25 files

起動

workspaceのuv環境でdg devコマンドで起動すると、projectをそれぞれ読み込んで起動できます。

> source deployments/local/.venv/bin/activate.fish
> dg dev

workspace内にあるprojectが、それぞれcode locationとして読み込めています。

なお、プロジェクト単位で起動することも出来ます。

> cd projects/project-1/
> source .venv/bin/activate.fish
# project-1のCode Locationだけが読み込める
> dg dev

workspace.yaml

create-dagster workspaceでworkspaceを作りましたが、それとは別にworkspace.yamlというものあります。

workspace.yamlも複数のCode Location(=project)を管理する設定ファイルで、dg devコマンドでもworkspace.yamlを一時的に作っているので、create-dagster workspaceはworkspace.yamlのラッパーと言えそうです。

Discussion