Here is a dbt-core project that loads & transform bixi OpenData thanks to DuckDB 🦆🚀
After the pandemic, Montrealers realy went back to bixi 🥳
Bixi Rentals OpenData (link)
- 🚲 Rentals V1 : from 2014 to 2021
for station info, join to station yearly file with station_code
- ⛽ Stations V1 : from 2014 to 2021
1 station code per year
- 🚲 Rentals V2 : from 2022 to 2024+
start/end station info on each rentals
-> 2.7 times heavier.csv1.4Gb -> 0.5Gb
-> 2.3 times heavier.parquet250Mb -> 106Mb
- 🧭 Municipal sectors : from the OD 2013 survey (cf. donnees quebec)
GBFS means General Bikeshare Feed Specification, it's a standardized data feed for shared mobility system availability (cf. Github > MobilityData/gbfs)
💡 Max Halford launch a web scrapping on 76 bikeshares around the globe at summer 2023. (cf. it's bike sharing forecasting training set article) Montréal was added at the end of spring.
- raw : raw tables loaded as is from .csv
- stg : intermediate tables
- dtm : tables ready for analytics & reporting use
- reports : aggregations for viz' use
dbt docs catalog & lineage (url)
dbt colibri column lineage view (url)
if needed : 🖼 DBeaver MLD
DuckDB realy shines by it's speed & local OLAP capabilities 😎
Here is 🚲 v1 rentals (2014 - 2021) load & offload to .parquet
.csvis 4.5 times heavier than.parquet.jsonis 2.7 times heavier than.csv
- dbt-core enables data analysts and engineers to transform their data using the same practices that software engineers use to build applications.

- git gestion de versions
- VS Code éditeur de code
- uv extremely fast Python package & project manager, written in Rust.
- DuckDB analytical in-process SQL database
- DBeaver Database Management Tool
- dbt colibri Column level lineage & documentation to your dbt projects
- Suivre le tutoriel/badge dbt-fundamentals
- Consulter la doc dbt
ex:
- how we structure our dbt projects
- jouer avec le projet jaffle-shop (guide)
- Alimenter sa veille & suivre sur LinkedIn
- Bruno Lima → partage bcp sur dbt
- Christophe Blefari → son regard critique sur la data (newsletter, nao)
- Robin Conquet aka DataGen & ses podcast stratégie data
- Creuser plus loin
- Faire les autres eLearning dbt
- Essayer un quick start dbt ?
- lire Continuous integration in dbt → avancé
- lire Using defer in dbt → avancé
| Commande | Rôle |
|---|---|
dbt ls |
Liste les modèles |
dbt parse |
Vérifie syntaxe et validité |
dbt compile |
Génère SQL à partir des modèles |
dbt run |
Exécute les modèles (sans tests) |
dbt test |
Lance uniquement les tests |
dbt build |
Exécute modèles + tests |
dbt build -s +stg_commande+ |
Construit stg_commande + parent & enfants |
dbt retry |
Reprendre depuis la dernière erreur (run, build, test, compile, docs...) |
dbt docs generate |
Génère la documentation |
dbt docs serve |
Lance un serveur web pour explorer doc & lineage |
colibri generate |
Générer le lineage à la colonne |
Norme conventional commit : <type>(optional scope): <description>
| type | usage | exemple 💡 |
|---|---|---|
| feat | nouvelle fonctionnalité visible | ajout d’auth Google |
| fix | correction de bug | pagination API |
| docs | changement de documentation | mise à jour README |
| style | formatage sans impact logique | indentation |
| refactor | amélioration interne sans ajout ni bugfix | simplification parsing |
| test | ajout/modif de tests | tests unitaires user |
| chore | maintenance/config sans impact fonctionnel | mise à jour dépendances, script CI |
- git ou
winget install --id Git.Git -e --source winget- Dire à git qui vous êtes
git config --global user.name "PrenomNom" git config --global user.email votresuper@email.fr
- Dire à git qui vous êtes
- uv ou
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" - DuckDB ou
winget install DuckDB.cli - DBeaver ou windows store
- VS Code ou windows store
git clone https://github.com/AntoineGiraud/dbt_bixi_opendata.gitcd dbt_bixi_opendatase déplacer dans le dossier récupéré avec gituv sync- télécharge python si non présent
- initialise un environnement virtuel python (venv) si non présent
- télécharge les dépendances / extensions python
.venv/Scripts/activate.ps1(unixsource .venv/bin/activate)
rendre dbt disponible dans le terminalcode .ouvrir dans VS Code le répertoire courrant- S'assurer que
pre-commitest installé (cf. 📹 vidéo intro - 5min)uv tool install pre-commit --with pre-commit-uv: installer pre-commit comme outil python global (option)uv run pre-commit install: initialiser le hook git- juste avec ça, sur les prochains fichiers édités, ruff sera lancé automatiquement
uv run pre-commit run --all-files: pour traiter TOUS les fichiers



