Data Warehouse TP Cheat Sheet
Airflow ***
Apache Airflow est une plateforme open-source de gestion et d’orchestration de workflows.
Elle est conçue pour planifier, organiser et surveiller des workflows complexes de manière
programmable.
DAG ***
Un DAG, ou Directed Acyclic Graph, représente un ensemble de tâches avec des
dépendances définies, organisées à refléter leur séquence d’exécution sans boucles.
Superset *
Apache Superset est une plateforme d’exploration de données open source qui permet aux
utilisateurs de visualiser et d’analyser des données de manière interactive.
dbt *
`dbt` (data build tool) est un outil en ligne de commande qui permet aux analystes et
ingénieurs de données de transformer des données dans leur Data Warehouse en utilisant
SQL.
Sa principale fonction est de faciliter la transformation des données (la partie “T” de l’ETL)
Architecture d’Airflow
Airflow Scheduler **
Le scheduler orchestre l’exécution des tâches en fonction de leur planification et leurs
dépendances. Il surveille les DAGs pour déclencher les tâches dès que leurs critères de
planification et leurs dépendances sont satisfaits.
Airflow Webserver **
Le serveur web fournit une interface utilisateur d’Airflow, permettant aux utilisateurs de
visualiser et de gérer les DAGs, les tâches, les logs, et la configuration du système
Meta Database
Stocke l’état de tous les DAGs et tâches, ainsi que les informations d'exécution, les
informations sur les utilisateurs, les logs, et d'autres données.
( Dans notre cas, on a utilisé SQLite dans un premier temps puis on a basculé vers
PostgreSQL dans TP2 )
Executor
L'Executor est le composant qui exécute réellement les tâches.
Airflow propose différents types d’executors comme `SequentialExecutor` (l'executor par
défaut et le plus simple. Il exécute une seule tâche à la fois) , `LocalExecutor` (permet une
exécution parallèle des tâches sur le même hôte.) ,etc…
Composants clés d’Airflow
Operator *
Un Operator représente une tâche unique dans un workflow. C'est une classe Python qui
définit une opération spécifique à exécuter. Comme:
BashOperator: pour éxecuter des commandes Bash
PythonOperator: pour éxecuter des fonctions Python
Sensor *
Un Sensor (Capteur) est un type spécial d'opérateur dont le but est d'attendre qu'une
certaine condition soit remplie. Comme:
FileSensor: attend l’existence d’un fichier dans un système de fichiers.
Hook *
un interface pour se connecter à des services externes, des bases de données ou d'autres
systèmes. Comme PostgresHook
XCom *
XCom “Cross-Communication”, est une fonctionnalité qui permet aux tâches de
communiquer entre elles en partageant des données.
Lorsqu’une tâche dans un DAG s’exécute, elle peut envoyer un message XCOM qui contient
des données en les “poussant” dans la BD. Une autre tâche peut ensuite “tirer” ces données
pour son propre usage.
Quelques commandes d’Airflow **
airflow db
init
Initialise la base de données d’Airflow. Elle crée toutes les tables nécessaires les
configurations initiales dans la base de données spécifiée dans le fichier de configuration
d’Airflow `[Link]`
airflow scheduler
-D
Cette commande lance le planificateur (scheduler), l’option -D signifie que l'exécution sera
en arrière plan (Vous pouvez donc continuer d’utiliser cette instance du terminal sans
interrompre le scheduler)
airflow
webserver
Cette commande lance le web server. Par défaut, il occupe le port 8080. Vous pouvez
utiliser l’option -p pour changer le port (ex: airflow webserver -p 8090).
airflow users create \
--username airflow-user
\
--firstname airflow-
user \
--lastname airflow-user
\
--role Admin \
--password pass1234 \
--email
test@[Link]
Cette commande permet de créer un nouvel utilisateur dans l’interface utilisateur web
d’Apache Airflow avec les champs spécifiées dans la commande.
Exploration du DAG
`dag_id` : identifiant unique pour le DAG
`default_args`: dictionnaire des arguments par défaut qui seront appliqués à chaque
tâche du DAG
`description`: description du DAG, utile pour documenter le but et le fonctionnement
du DAG
`schedule_interval`: la fréquence à laquelle le DAG doit être exécuté. Dans ce cas, le
DAG devrait s'exécuter chaque jour
`start_date`: la première date à laquelle le DAG devrait commencer à s'exécuter
`catchup`: si réglée sur `True`, Airflow va créer et planifier des instances de tâches
manquées pour tous les intervalles entre la `start_date` et la date actuelle, selon la
périodicité définie dans `schedule_interval`
`tags`: permet de catégoriser et de filtrer les DAGs dans l’interface utilisateur
d’Airflow
Exemple expliqué du DAG
Voir la vidéo `Exemple DAG` dans le même dossier
Exemple DAG.mp4
Quelques commandes de Superset *
superset db
upgrade
mise à niveau de la base de données de Superset
superset fab create-
admin
Créer un utilisateur administrateur dans la base de données
superset
load_examples
Charger des exemples de données
superset
init
Créer les rôles et les permissions par défaut
superset run -p 8088 --with-threads --reload --
debugger
Démarrer le server web de Superset
Quelques commandes et concept de dbt
dbt
init
Initialiser un projet dbt
profiles.y
ml
Fichier de configuration de `dbt`, contient par exemple les informations pour se connecter à
la BD
dbt
debug
valider la configuration de votre projet dbt et de vérifier la connexion à la base de données
[Link]
l
un fichier de configuration utilisé pour définir la structure et la documentation des colonnes
de vos modèles de données
dbt run --project-dir
path/to/project
Commande utilisée pour lancer le modèle dbt
Quelques commandes de postgres
sudo -u postgres psql -U user -d database -h localhost -
p 5432
Cette commande permet de se connecter à la base de données PostgreSQL `database` en
utilisant l’utilisateur `user` avec un hôte `localhost` et un port `5432`
sudo -u postgres psql -U user -d database -h localhost -p 5432 -f
[Link]
Le fait d’ajouter une option avec -f permet d'exécuter un fichier sql spécifié après `-f`