Pipeline de transformation de données pour DossierFacile.
- Présentation
- Architecture
- Installation
- Configuration
- Utilisation
- Tests
- Développement
- Support
- Licence
Ce projet fait partie de l'écosystème DossierFacile et gère la transformation des données via DBT. Il permet de :
- Transformer et modéliser les données en provenance de notre application en production
- Assurer la qualité des données via la mise en place d'une modélisation et des tests
- Générer des analyses directement consommables par Metabase
Le projet suit une architecture DBT standard avec les composants suivants :
models/: Modèles de données principauxmacros/: Fonctions réutilisablesseeds/: Données de référencetests/: Tests de données
Les modèles sont organisés en 3 couches techniques :
-
Staging : Première couche de transformation des données brutes
- tenant (locataire)
- owner (propriétaire)
- operation (opérations sur les dossiers)
- document
-
Core : Modèles métier enrichis et normalisés
- tenant
- owner
- operation
- document
-
Analytics : Modèles d'analyse et de reporting prêts à être utilisés par Metabase
- Python 3.10+
- PostgreSQL 15+
- DBT Core 1.9.0+
- Accès à la base de données DossierFacile
# Création de l'environnement virtuel
python -m venv .venv
source .venv/bin/activate
# Installation des dépendances
pip install dbt-core dbt-postgres- Créez un fichier
profiles.ymlà la racine du projet :
dossierfacile:
target: dev
outputs:
dev:
type: postgres
host: {{ host }}
user: {{ user}}
password: {{ password }}
port: {{ port }}
dbname: {{ database }}
schema: {{ schema }}
threads: 3-
Remplacez les valeurs
{{}}avec celles du secret "user SQL df-data dbt_dev" dans vaultwarden. -
Testez la connexion :
dbt debugpip install sqlfluff sqlfluff-templater-dbt# Exécution complète
dbt run
# Exécution d'un modèle spécifique
dbt run -s model_name
# Tests unitaires
dbt test -s test_type:unit
# Génération de la documentation
dbt docs generate
dbt docs serve# Vérification
sqlfluff lint
# Correction automatique
sqlfluff fixCes tests sont définis directement dans le fichier YAML du modèle et vérifient des contraintes basiques :
version: 2
models:
- name: core_tenant_account
columns:
- name: id
data_tests:
- unique
- not_null:
config:
where: "id is not null"- unique : Vérifie que chaque valeur de la colonne est unique
- not_null : Vérifie qu'aucune valeur n'est NULL
- accepted_values : Vérifie que les valeurs sont dans une liste prédéfinie
Il est également possible d'étendre ces capacités de tests avec des tests génériques custom
Tests plus complexes qui vérifient la logique de transformation des données. Exemple avec le test core_tenant_account.test.yml
-
Tests simples/generic
- Vérifient des contraintes basiques sur les colonnes
- Faciles à mettre en place
- Exemple :
unique,not_null,accepted_values - Idéal pour la validation des données
-
Tests unitaires
- Vérifient la logique de transformation complexe
- Permettent de tester avec des données d'entrée contrôlées
- Exemple : logique de détermination de l'origine du locataire
- Idéal pour tester la logique métier
# Tous les tests
dbt test
# Tests unitaires uniquement
dbt test -s test_type:unit
# Tests spécifiques à un modèle
dbt test -s core_tenant_account- Installation :
pip install pre-commit- Configuration dans
.pre-commit-config.yaml:
repos:
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.3.0
hooks:
- id: sqlfluff-lint
- id: sqlfluff-fix- Activation :
pre-commit install-- Accès par défaut aux futures tables
alter default privileges
for user sql_user
in schema sql_schema
grant select on tables
to group sql_group;
-- Accès aux tables existantes
alter default privileges in schema sql_schema
grant select on tables to group sql_group;
-- Usage du schéma
grant usage on schema sql_schema to group sql_group;
-- Accès SELECT à toutes les tables
grant select on all tables in schema sql_schema to group sql_group;Pour toute question ou problème :
- Contacter l'équipe technique de DossierFacile [email protected]
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.