Skip to main content

dagster-malloy

dagster-malloy is an unofficial community integration library providing Dagster support for Malloy models (.malloy) and notebooks (.malloynb).

Note: This is an unofficial community package and is not affiliated with, endorsed by, or maintained by Dagster Labs or Google/Malloy.

Asset Lineage Graph

It enables loading Malloy models as Dagster Software-Defined Assets, executing queries via malloy-cli or the malloy Python SDK, tracking lineage and metadata, and running data quality asset checks.


Demo Quickstart

Try the interactive Malloy demo webserver in a single command using uvx:

uvx dagster-malloy-demo

This generates a sample project (./malloy_demo) and launches the Dagster UI at http://127.0.0.1:3000.


Installation

uv add dagster-malloy

To enable DataFrame outputs via pandas:

uv add "dagster-malloy[pandas]"

To enable the in-process Python SDK backend:

uv add "dagster-malloy[python-backend]"

Usage

1. Loading Malloy Assets

Use load_malloy_assets to discover and construct Dagster assets from .malloy files or .malloynb notebooks in a directory:

from pathlib import Path
from dagster import Definitions
from dagster_malloy import load_malloy_assets, MalloyResource

malloy_assets = load_malloy_assets(path=Path(__file__).parent / "models")

defs = Definitions(
    assets=[malloy_assets],
    resources={
        "malloy": MalloyResource(
            execution_mode="auto",  # 'cli' (default), 'python', or 'auto'
        ),
    },
)

2. Execution Engines

dagster-malloy supports two execution backends via MalloyResource:

  1. cli (Default / Recommended): Executes compilation and query execution using malloy-cli / npx malloy-cli.
  2. python: Executes queries in-process using the malloy Python SDK (malloy.Runtime).
resource = MalloyResource(
    execution_mode="cli",
    cli_path="npx malloy-cli",  # Custom CLI executable path
    config_path="path/to/malloy-config.json",
)

3. Custom Translator (MalloyTranslator)

Subclass MalloyTranslator to customize asset keys, tags, group names, metadata, or upstream dependencies:

from dagster import AssetKey
from dagster_malloy import MalloyTranslator, MalloyTranslatorData, load_malloy_assets

class CustomMalloyTranslator(MalloyTranslator):
    def get_asset_key(self, data: MalloyTranslatorData) -> AssetKey:
        return AssetKey(["analytics", data.query_info.name])

    def get_group_name(self, data: MalloyTranslatorData) -> str:
        return "malloy_models"

malloy_assets = load_malloy_assets(
    path="./models",
    translator=CustomMalloyTranslator(),
)

4. Data Quality Asset Checks

Use build_malloy_asset_checks to convert Malloy validation queries (check_* or # @check) into Dagster AssetCheckResult checks:

from dagster import AssetKey
from dagster_malloy import build_malloy_asset_checks

checks = build_malloy_asset_checks(
    file_path="./models/sales.malloy",
    target_asset_key=AssetKey(["sales", "customer_analytics"]),
)

Example Project

A self-contained runnable example project is available in examples/malloy_demo.

To clone and run the example locally:

git clone https://github.com/mathisdrn/dagster-malloy.git
cd dagster-malloy/examples/malloy_demo
python generate_data.py
dagster dev -f definitions.py -p 3000

Open http://127.0.0.1:3000 to view the asset catalog and lineage graph.


Testing

Run unit tests using pytest:

pytest tests/ -v

Contributing

Contributions, issues, and pull requests are welcome! Feel free to open an issue or submit a pull request on GitHub.


License

Apache License 2.0.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dagster_malloy-0.1.0.tar.gz (492.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dagster_malloy-0.1.0-py3-none-any.whl (19.2 kB view details)

Uploaded Python 3

File details

Details for the file dagster_malloy-0.1.0.tar.gz.

File metadata

  • Download URL: dagster_malloy-0.1.0.tar.gz
  • Upload date:
  • Size: 492.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dagster_malloy-0.1.0.tar.gz
Algorithm Hash digest
SHA256 d2c482f5bea5de3d57aba85a152b97038c1a157258cd1a2cf30b47df8c7945d8
MD5 839c93a0864114f7740d48fe044a66ec
BLAKE2b-256 6fba5aa82997803db85eb7b57f6f55fb6f31cf56df8e3e0005b76c62be193679

See more details on using hashes here.

File details

Details for the file dagster_malloy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dagster_malloy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 19.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.12.2 {"installer":{"name":"uv","version":"0.12.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for dagster_malloy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0d38d8ffc8789e6f18073d8c0ad971ef4ea03fe763d912a982525af1681b279f
MD5 64e40aaf0217062081117c45c129c4b0
BLAKE2b-256 cfd23402f3f07e2e1e5c5e804934761333dfb5ebf41efa8034ea8003fd2d334a

See more details on using hashes here.

Release history Release notifications | RSS feed

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.1

2 files

0.2.0

2 files

0.1.9

2 files

0.1.8

2 files

0.1.7

2 files

0.1.6

2 files

0.1.5

2 files

0.1.4

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page