CommunityRecherche & Datenanalysegithub.com

Dagster Assets erstellen

Erstellen Sie Dagster-Pipelines mit softwaredefinierten Assets – Abhängigkeiten, Partitionen, Ressourcen, IO-Manager, Asset-Checks sowie Zeitpläne und Sensoren. Dieses Skill eignet sich für die Erstellung oder Migration von Dagster-Assets und Jobs.

Was ist Dagster Assets erstellen?

Dieser Skill befähigt Entwickler, Dagster-Pipelines mithilfe von softwaredefinierten Assets zu entwerfen. Im Gegensatz zu einem task-basierten Ansatz (z.B. mit @op) wird jeder persistente Output (Tabelle, Datei, ML-Modell) als Asset modelliert, Abhängigkeiten werden durch Funktionsparameter deklariert, und Dagster baut automatisch den Abhängigkeitsgraphen. Der Skill beschreibt, wie man zeit- oder kategoriengesteuerte Partitionen hinzufügt, IO-Manager und Ressourcen für testbare Assets einsetzt, Asset-Checks für Datenqualität integriert und Materialisierungen über Schedules oder Sensoren automatisiert. Unterstützte Plattformen sind primär Dagster (nicht Airflow). Der Workflow führt von der Asset-Definition über Partitionierung, IO-Externalisierung, Checks bis zur Automatisierung. Typische Fallstricke wie „Task-Denken”, harte Kodierung von Verbindungen oder fehlende Idempotenz werden aufgezeigt. Der Skill eignet sich sowohl für Neuerstellungen als auch für die Migration bestehender task-basierter Orchestrierungen hin zu einem asset-zentrierten Ansatz.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Unknown-333/awesome-data-engineering-skills/tree/main/skills/building-dagster-assets

Installed? Explore more Recherche & Datenanalyse skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Dagster Assets erstellen?

Wann verwenden

  • Erstellen oder Refactoren von Dagster-softwaredefinierten Assets und Jobs.
  • Modellieren von Tabellen/Dateien/ML-Modellen als Assets mit Herkunftsnachweis (Lineage).
  • Hinzufügen von Partitionen, Backfills, Asset-Checks, Zeitplänen oder Sensoren.
  • NICHT für Airflow verwenden (nutzen Sie die Airflow-Skills).

Workflow

- [ ] Jeden Output als @asset modellieren; Abhängigkeiten über Funktionsparameter deklarieren
- [ ] Partitionen für zeit- oder kategoriebasierte Daten hinzufügen
- [ ] I/O (Lese-/Schreibzugriffe) in IO-Manager oder Ressourcen auslagern
- [ ] Asset-Checks für Datenqualität hinzufügen
- [ ] Zeitplan/Sensor zur Materialisierung
  1. Denken Sie in Assets, nicht in Tasks. Ein Asset ist ein persistentes Objekt (Tabelle, Datei, Modell). Deklarieren Sie Abhängigkeiten, indem Sie Upstream-Assets als Funktionsparameter referenzieren – Dagster erstellt automatisch den Lineage-Graphen.
  2. Partitionieren Sie Assets, die natürlich unterteilt sind (nach Tag, Region), damit Sie jeweils eine Partition materialisieren oder backfillen können.
  3. Ressourcen und IO-Manager kapseln Verbindungen und Lese-/Schreiblogik, halten Asset-Bodies fokussiert auf die Transformation und machen sie testbar.
  4. Asset-Checks fügen einem Asset Datenqualitätsprüfungen hinzu.

Patterns

Partitionierte Assets mit Abhängigkeit:

import dagster as dg

daily = dg.DailyPartitionsDefinition(start_date="2026-01-01")

@dg.asset(partitions_def=daily)
def raw_orders(context: dg.AssetExecutionContext) -> None:
    day = context.partition_key
    write_parquet(f"raw/orders/{day}.parquet", fetch_orders(day))

@dg.asset(partitions_def=daily)
def orders_clean(context, raw_orders) -> None:  # hängt von raw_orders ab
    day = context.partition_key
    transform_and_load(day)

@dg.asset_check(asset=orders_clean)
def no_null_ids(context) -> dg.AssetCheckResult:
    n = count_null_order_ids(context.partition_key)
    return dg.AssetCheckResult(passed=n == 0, metadata={"null_ids": n})

Ressource / IO-Manager – injizieren Sie einen Warehouse-Client anstatt ihn im Asset zu konstruieren:

@dg.asset
def orders_summary(context, warehouse: WarehouseResource, orders_clean):
    warehouse.execute("insert into summary select ...")

Zeitplan für einen partitionierten Job – jeder Lauf materialisiert die neueste Partition; verwenden Sie einen Sensor, um zu materialisieren, sobald eine upstream-Datei/ein upstream-Asset erscheint.

Häufige Fehler

  • Task-Denken – die Verwendung von bloßem @op/Jobs für alles verliert die Lineage, Beobachtbarkeit und die partition-bewussten Backfills, die Assets kostenlos bieten.
  • I/O innerhalb von Asset-Bodies – hartkodierte Verbindungen machen Assets untestbar; nutzen Sie Ressourcen/IO-Manager.
  • Nicht-idempotente partitionierte Assets – das Materialisieren einer Partition muss diese Partition überschreiben, nicht anhängen (siehe writing-idempotent-transformations).
  • Asset-Checks auslassen – ohne sie werden schlechte Daten stillschweigend materialisiert; Dagster zeigt Check-Fehler in der UI an und kann Downstream blockieren.
  • Nicht übereinstimmende Partitionsdefinitionen zwischen abhängigen Assets – halten Sie die partitions_def konsistent, damit die Zuordnungen aufgelöst werden.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

Unknown-333/authoring-airflow-dags

Write production-grade Apache Airflow DAGs using the TaskFlow API — idempotent tasks, correct scheduling and catchup, retries/SLAs, connections/variables, and avoiding top-level code. Use when creating or reviewing Airflow DAGs, scheduling pipelines, wiring task dependencies, configuring retries/backfills, or fixing non-idempotent tasks.

Unknown-333/building-dbt-models

Build well-structured dbt models — staging/intermediate/marts layers, ref() and source(), materializations, and incremental models with the right strategy. Use when creating or refactoring dbt models, choosing table vs view vs incremental, structuring a dbt project, or writing incremental logic.

Unknown-333/building-feature-pipelines

Build ML feature pipelines and feature stores — point-in-time-correct joins to avoid label leakage, offline/online parity, feature freshness and backfills, and materialization with tools like Feast. Use when engineering features for ML, preventing train/serve skew or data leakage, building a feature store, or backfilling historical features for training.

Unknown-333/building-iceberg-tables

Design and operate Apache Iceberg tables — partitioning and hidden partitioning, partition/schema evolution, snapshots and time travel, compaction and small-file cleanup, and MERGE/upsert for lakehouse tables on Spark, Flink, Trino, or Snowflake. Use when creating or maintaining Iceberg tables, choosing partitioning, evolving schema/partitions, or fixing small-file and metadata bloat.

Unknown-333/building-ingestion-pipelines

Build batch and incremental data ingestion (extract-load) pipelines — full vs incremental extraction, change data capture (CDC), watermarks and high-water marks, API pagination and rate limits, and choosing managed EL tools (Fivetran, Airbyte) vs custom code. Use when ingesting data from databases, APIs, files, or SaaS into a warehouse/lake, or designing incremental extraction and CDC.

Unknown-333/building-kafka-consumers

Build reliable Apache Kafka consumers and producers — consumer groups and partition assignment, offset commit strategy, at-least-once vs exactly-once, idempotent/transactional producers, rebalancing, and dead-letter handling. Use when writing Kafka consumers/producers, configuring offset commits or consumer groups, tuning throughput, or handling rebalances and poison messages.

Unknown-333/debugging-data-pipelines

Systematically root-cause data pipeline failures and data incidents — job errors, wrong or missing data, duplicates, and freshness misses — by tracing lineage upstream, isolating the failing stage, reconciling against source, and planning a safe fix and backfill. Use when a pipeline fails, numbers look wrong, data is missing or duplicated, a dashboard is stale, or a stakeholder reports a data discrepancy.

Unknown-333/designing-backfills-and-replays

Plan and run safe data backfills and replays — idempotent reprocessing of historical windows, partition-by-partition execution, isolating backfill compute from production, verifying results, and avoiding double-counting or changed history. Use when backfilling a new or fixed model, reprocessing after a bug, replaying events, or loading history for a new pipeline without corrupting existing data.

Unknown-333/designing-data-contracts

Define and enforce data contracts between producers and consumers — explicit schema, semantics, ownership, SLAs, and versioning — to prevent silent upstream changes from breaking downstream pipelines. Use when a producer schema change could break consumers, defining an interface between teams/services and the warehouse, or adding schema enforcement at ingestion.

Verwandte Skills