airflow-dag-patterns
Créer des DAG Apache Airflow avec des patterns de production
Également disponible depuis: wshobson
Créer des DAG Airflow prêts pour la production nécessite de comprendre les opérateurs, les capteurs et les patterns de gestion d'erreurs. Cette compétence fournit des modèles éprouvés et des bonnes pratiques pour l'orchestration de pipelines de données.
Télécharger le ZIP du skill
Importer dans Claude
Allez dans Paramètres → Capacités → Skills → Importer un skill
Activez et commencez à utiliser
Tester
Utilisation de "airflow-dag-patterns". Créer un DAG ETL quotidien avec des tâches d'extraction, transformation et chargement
Résultat attendu:
- DAG créé avec la planification '0 6 * * *' (quotidien à 6h)
- Trois tâches PythonOperator : extract_data, transform_data, load_data
- Dépendances de tâches : extract >> transform >> load
- Configuration de nouvelle tentative : 3 tentatives avec backoff exponentiel de 5 minutes
- Notifications par email configurées pour les échecs de tâches
Utilisation de "airflow-dag-patterns". Ajouter un capteur pour attendre un fichier S3 avant le traitement
Résultat attendu:
- S3KeySensor ajouté avec un délai d'attente de 2 heures et un intervalle d'interrogation de 5 minutes
- Capteur configuré avec mode='reschedule' pour libérer les slots de worker
- Tâche de traitement définie comme dépendance en aval du capteur
- Le DAG attend maintenant la disponibilité du fichier avant l'exécution
Audit de sécurité
SûrStatic analysis detected 41 patterns but all are false positives. Backtick characters are markdown formatting for code blocks, not shell execution. globals() usage is standard Airflow pattern for dynamic DAG generation. URLs are documentation references. This is educational documentation with no executable security risks.
Score de qualité
Ce que vous pouvez construire
Équipes Data Engineering construisant des pipelines ETL
Créer des pipelines de données planifiés qui extraient depuis des sources, transforment les données et les chargent dans des entrepôts avec une gestion d'erreurs et une surveillance appropriées.
Équipes Analytics orchestrant la génération de rapports
Planifier des tâches automatisées de génération de rapports avec des dépendances sur la disponibilité des données et l'achèvement du traitement en amont.
Ingénieurs ML entraînant des modèles selon un calendrier
Orchestrer des pipelines d'entraînement de machine learning avec des étapes de validation des données, d'entraînement de modèle et de déploiement.
Essayez ces prompts
Créer un DAG Airflow qui s'exécute quotidiennement à 6h pour extraire des données d'un fichier CSV, les transformer et les charger dans une base de données. Inclure une gestion d'erreurs de base avec des nouvelles tentatives.
Générer plusieurs DAG similaires à partir d'une liste de configuration pour traiter différentes sources de données. Chaque DAG doit avoir la même structure mais des planifications et chemins sources différents.
Créer un DAG qui vérifie les métriques de qualité des données et se branche vers différents chemins de traitement en fonction du score de qualité. Inclure une logique de jonction appropriée après le branchement.
Construire un DAG qui attend l'arrivée de fichiers dans S3, dépend de l'achèvement d'un autre DAG et surveille un endpoint de santé d'API avant le traitement. Utiliser le mode reschedule pour les capteurs.
Bonnes pratiques
- Utiliser l'API TaskFlow pour un code plus propre et la transmission automatique de XCom entre les tâches
- Concevoir toutes les tâches pour qu'elles soient idempotentes afin que les nouvelles tentatives ne causent pas de duplication de données
- Définir des délais d'attente appropriés sur les tâches et utiliser le mode reschedule pour les capteurs afin de libérer les ressources de worker
Éviter
- Utiliser depends_on_past=True qui crée des goulots d'étranglement inutiles et bloque l'exécution parallèle
- Coder en dur des dates ou des valeurs au lieu d'utiliser des macros Airflow comme {{ ds }} pour les dates d'exécution
- Placer une logique métier lourde directement dans les fichiers DAG au lieu d'importer depuis des modules séparés