Construire des Assets Dagster

Construisez des pipelines Dagster en utilisant des assets définis par logiciel — dépendances entre assets, partitions, ressources et gestionnaires d'E/S, contrôles d'assets, et programmations/capteurs. À utiliser lors de la création d'assets ou de jobs Dagster, de la modélisation de données en tant qu'assets, de l'ajout de partitions ou de backfills, de la configuration de ressources/gestionnaires d'E/S, ou de la migration d'une orchestration basée sur des tâches vers des assets.

Qu'est-ce que Construire des Assets Dagster ?

Cette compétence vous guide dans la construction de pipelines Dagster en utilisant le paradigme des assets définis par logiciel. Au lieu de penser en tâches (ops), vous modélisez chaque sortie persistante (table, fichier, modèle ML) comme un asset, et vous déclarez les dépendances via les paramètres de fonction — Dagster construit automatiquement le graphe de lignage. La compétence couvre la mise en place de partitions pour les données découpées par temps ou catégorie, l'injection de ressources et de gestionnaires d'E/S pour rendre les assets testables et maintenables, ainsi que l'ajout de contrôles d'assets (asset checks) pour la qualité des données. Elle explique aussi comment programmer la matérialisation avec des schedules et des sensors. Les pièges courants sont identifiés, comme l'écriture d'E/S directement dans les assets (au lieu d'utiliser des resources) ou l'oubli des asset checks. La compétence est destinée aux développeurs utilisant Dagster (Python) et ne concerne pas Airflow.

Compatible avec~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 et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Construire des Assets Dagster ?

Quand l'utiliser

  • Créer ou refactoriser des assets définis par logiciel et des jobs Dagster.
  • Modéliser des tables/fichiers/modèles ML en tant qu'assets avec leur lignage.
  • Ajouter des partitions, des backfills, des contrôles d'assets, des programmations ou des capteurs.
  • Ne PAS utiliser pour Airflow (utilisez les compétences Airflow).

Workflow

- [ ] Modéliser chaque sortie comme un @asset ; déclarer les dépendances via les paramètres de fonction
- [ ] Ajouter des partitions pour les données découpées par temps ou catégorie
- [ ] Déplacer les E/S (lectures/écritures) dans des gestionnaires d'E/S ou des ressources
- [ ] Ajouter des contrôles d'assets pour la qualité des données
- [ ] Planifier ou ajouter un capteur pour matérialiser
  1. Pensez en assets, pas en tâches. Un asset est un objet persistant (une table, un fichier, un modèle). Déclarez les dépendances en référençant les assets en amont comme paramètres de fonction — Dagster construit automatiquement le graphe de lignage.
  2. Partitionnez les assets qui sont naturellement découpés (par jour, région) afin de pouvoir matérialiser ou faire un backfill d'une seule partition à la fois.
  3. Les ressources et les gestionnaires d'E/S contiennent les connexions et la logique de lecture/écriture, ce qui permet de garder les corps d'assets concentrés sur la transformation et de les rendre testables.
  4. Les contrôles d'assets attachent des assertions de qualité des données à un asset.

Patrons

Assets partitionnés avec une dépendance :

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:  # dépend de raw_orders
    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 / gestionnaire d'E/S — injectez un client d'entrepôt plutôt que de le construire à l'intérieur de l'asset :

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

Programmez un job partitionné pour que chaque exécution matérialise la dernière partition ; utilisez un capteur pour matérialiser quand un fichier/asset en amont apparaît.

Pièges courants

  • Pensée en tâches — utiliser @op/jobs bruts pour tout perd le lignage, l'observabilité et les backfills tenant compte des partitions que les assets offrent gratuitement.
  • E/S à l'intérieur des corps d'assets — coder en dur les connexions rend les assets non testables ; utilisez des ressources/gestionnaires d'E/S.
  • Assets partitionnés non idempotents — matérialiser une partition doit écraser cette partition, pas ajouter (voir writing-idempotent-transformations).
  • Ignorer les contrôles d'assets — sans eux, les mauvaises données se matérialisent silencieusement ; Dagster affiche les échecs de contrôle dans l'interface utilisateur et peut bloquer les étapes en aval.
  • Définitions de partitions incompatibles entre assets dépendants — assurez-vous que le partitions_def est cohérent pour que les correspondances soient résolues.

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.

Skills associés