CommunityPesquisa e Análise de Dadosgithub.com

Construção de Assets Dagster

Construa pipelines Dagster usando assets definidos por software — dependências entre assets, partições, recursos e IO managers, verificações de assets e schedules/sensors. Use ao criar assets ou jobs Dagster, modelar dados como assets, adicionar partições ou backfills, configurar recursos/IO managers ou migrar de orquestração baseada em tarefas para assets.

O que é Construção de Assets Dagster?

Esta skill orienta o desenvolvimento de pipelines Dagster utilizando o conceito de *software-defined assets*, onde tabelas, arquivos e modelos de ML são representados como assets com linhagem explícita. Diferente da abordagem tradicional baseada em tarefas (`@op`/jobs), os assets permitem que o Dagster construa automaticamente o grafo de dependências a partir dos parâmetros das funções, oferecendo observabilidade, partições conscientes e backfills granulares. A skill cobre desde a modelagem inicial de assets até a adição de partições (diárias, por região, etc.), uso de recursos e IO managers para isolar lógica de I/O, verificação de qualidade de dados com *asset checks*, e agendamento de materializações via schedules e sensors. É especialmente útil para equipes que desejam migrar de orquestração baseada em tarefas (como Airflow) para a abordagem mais declarativa e rastreável do Dagster, ou que precisam criar novos pipelines com partições, backfills e validações de dados integradas. Suporta as principais plataformas de execução do Dagster e segue as boas práticas da documentação oficial.

Funciona com~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 Pesquisa e Análise de Dados skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que Construção de Assets Dagster faz?

Quando usar

  • Criar ou refatorar assets e jobs definidos por software do Dagster.
  • Modelar tabelas/arquivos/modelos de ML como assets com linhagem.
  • Adicionar partições, backfills, verificações de assets, schedules ou sensors.
  • Não usar para Airflow (use a skill de Airflow).

Fluxo de trabalho

- [ ] Modelar cada saída como um @asset; declarar deps via argumentos da função
- [ ] Adicionar partições para dados divididos por tempo/categoria
- [ ] Mover I/O (leituras/escritas) para IO managers ou recursos
- [ ] Adicionar verificações de assets para qualidade de dados
- [ ] Schedule/sensor para materializar
  1. Pense em assets, não em tarefas. Um asset é um objeto persistente (uma tabela, arquivo, modelo). Declare dependências referenciando assets upstream como parâmetros da função — o Dagster constrói o grafo de linhagem automaticamente.
  2. Particione assets que são naturalmente divididos (por dia, região) para que você possa materializar/backfill uma partição de cada vez.
  3. Recursos e IO managers mantêm conexões e lógica de leitura/escrita, mantendo os corpos dos assets focados na transformação e tornando-os testáveis.
  4. Verificações de assets anexam asserções de qualidade de dados a um asset.

Padrões

Assets particionados com dependência:

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 / IO manager — injete um cliente de warehouse em vez de construí-lo dentro do asset:

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

Schedule um job particionado para que cada execução materialize a partição mais recente; use um sensor para materializar quando um arquivo/asset upstream aparecer.

Armadilhas comuns

  • Pensamento em tarefas — usar @op/jobs simples para tudo perde linhagem, observabilidade e backfills conscientes de partição que os assets oferecem gratuitamente.
  • I/O dentro dos corpos dos assets — conectar-se diretamente torna os assets não testáveis; use recursos/IO managers.
  • Assets particionados não idempotentes — materializar uma partição deve sobrescrever essa partição, não anexar (consulte writing-idempotent-transformations).
  • Pular verificações de assets — sem elas, dados ruins são materializados silenciosamente; o Dagster exibe falhas de verificação na UI e pode bloquear downstream.
  • Definições de partição incompatíveis entre assets dependentes — mantenha o partitions_def consistente para que os mapeamentos sejam resolvidos.

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.

Habilidades Relacionadas