Define Dagster asset checks to validate data quality constraints on software-defined assets after materialization
domain: docs.dagster.io · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Decorate a function with @asset_check(asset=my_asset) to define a check that runs against a specific asset; the function receives the asset's output or queries the downstream store directly
Return an AssetCheckResult with passed=True/False and a description or metadata dict summarizing the check outcome
Group multiple checks per asset; use AssetCheckSeverity.WARN for non-blocking checks and AssetCheckSeverity.ERROR for blocking ones
Include asset checks in a Definitions object alongside assets and jobs so they are discoverable in the Dagster UI
Trigger checks automatically after materialization by enabling run_on_each_materialization=True on the check, or schedule them independently
View check results in the Dagster UI Asset Catalog under the Checks tab, where pass/fail history and metadata are surfaced per asset
Known gotchas
Asset checks with blocking severity do not automatically block downstream asset materializations unless you configure check-blocking dependencies explicitly; the check result is advisory by default
Checks that query external systems (warehouse row counts, schema assertions) can add significant wall-clock time to a materialization run — consider running them on a separate schedule
The @asset_check decorator requires Dagster 1.4+; older Dagster versions use a different validation pattern via op-level assertions
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp