Construcción de activos de Dagster

Construye pipelines de Dagster utilizando activos definidos por software: dependencias de activos, particiones, recursos y gestores de E/S, comprobaciones de activos y programadores/sensores. Úsalo al crear activos o trabajos de Dagster, modelar datos como activos, añadir particiones o rellenos, configurar recursos/gestores de E/S o migrar desde orquestación basada en tareas a activos.

¿Qué es Construcción de activos de Dagster?

Esta habilidad te guía en la construcción de pipelines de Dagster utilizando el paradigma de activos definidos por software, en lugar del tradicional enfoque basado en tareas. Define cada salida persistente (tabla, archivo, modelo ML) como un activo, y Dagster construye automáticamente el grafo de linaje a partir de las dependencias declaradas entre activos. La habilidad cubre aspectos esenciales como la partición de datos (por tiempo o categoría), el uso de recursos y gestores de E/S para externalizar conexiones y lógica de lectura/escritura, la incorporación de comprobaciones de calidad de datos, y la configuración de programaciones y sensores para automatizar la materialización. También advierte sobre errores comunes, como pensar en términos de tareas, codificar E/S dentro de los activos, o no particionar correctamente. Funciona con cualquier herramienta que soporte SKILL.md, como Claude Code, Cursor o Codex, y asume que el usuario tiene Dagster instalado y conoce los conceptos básicos de Python y pipelines de datos.

Compatible con~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 Investigación y análisis de datos skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace Construcción de activos de Dagster?

Cuándo usarlo

  • Crear o refactorizar activos y trabajos definidos por software de Dagster.
  • Modelar tablas/archivos/modelos ML como activos con linaje.
  • Añadir particiones, rellenos, comprobaciones de activos, programaciones o sensores.
  • NO usar para Airflow (usar las habilidades de Airflow).

Flujo de trabajo

- [ ] Modelar cada salida como un @asset; declarar dependencias mediante argumentos de función
- [ ] Añadir particiones para datos segmentados por tiempo o categoría
- [ ] Mover E/S (lecturas/escrituras) a gestores de E/S o recursos
- [ ] Añadir comprobaciones de activos para calidad de datos
- [ ] Programar/sensor para materializar
  1. Piensa en activos, no en tareas. Un activo es un objeto persistente (una tabla, archivo, modelo). Declara dependencias referenciando activos upstream como parámetros de función: Dagster construye el grafo de linaje automáticamente.
  2. Particiona activos que estén naturalmente segmentados (por día, región) para poder materializar/rellenar un segmento a la vez.
  3. Recursos y gestores de E/S mantienen conexiones y lógica de lectura/escritura, manteniendo los cuerpos de los activos centrados en la transformación y haciéndolos comprobables.
  4. Comprobaciones de activos adjuntan aserciones de calidad de datos a un activo.

Patrones

Activos particionados con dependencia:

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:  # depende 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})

Recurso / gestor de E/S — inyecta un cliente de almacén en lugar de construirlo dentro del activo:

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

Programa un trabajo particionado para que cada ejecución materialice la partición más reciente; usa un sensor para materializar cuando aparezca un archivo/activo upstream.

Errores comunes

  • Pensar en tareas — usar @op/trabajos simples para todo pierde el linaje, la observabilidad y los rellenos conscientes de particiones que los activos proporcionan gratis.
  • E/S dentro de los cuerpos de los activos — codificar conexiones dificulta la comprobación de los activos; usa recursos/gestores de E/S.
  • Activos particionados no idempotentes — materializar una partición debe sobrescribir esa partición, no añadir (ver writing-idempotent-transformations).
  • Omitir comprobaciones de activos — sin ellas, los datos incorrectos se materializan silenciosamente; Dagster muestra fallos de comprobación en la interfaz de usuario y puede bloquear downstream.
  • Definiciones de partición no coincidentes entre activos dependientes — mantén partitions_def consistente para que los mapeos se resuelvan.

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 relacionados