Skip to content

Commit e989f87

Browse files
committed
prise en compte des remarques de @gounux 🙏
1 parent c5aebb6 commit e989f87

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

‎content/articles/2025/2025-06-05_taradata_transform_mapillary.md‎

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ tags:
2828

2929
![Logo Mapillary](https://cdn.geotribu.fr/img/logos-icones/divers/mapillary.png){: .img-thumbnail-left }
3030

31-
Salut everybody, tout le monde ! Ça y est, c'est le deuxième article !
31+
Salut _everybody_, tout le monde ! Ça y est, c'est le deuxième article !
3232

3333
Dans [le précédent opus](./2025-05-27_taradata_extract_load_mapillary.md), nous avons vu comment [Apache Airflow](https://airflow.apache.org/) nous permet d'extraire et de charger les [_features_ de Mapillary](https://help.mapillary.com/hc/en-us/articles/115002332165-Map-features) à proximité du réseau routier départemental gardois.
3434

3535
Cette fois, nous allons transformer les données pour les rendre exploitables avec [QGIS](https://qgis.org/) car, souviens-toi, nous avions stocké directement les éléments retournés par les API au format JSON.
3636

37-
Pour faire ces transformations, nous allons utiliser Data Build Tool ; [dbt](https://www.getdbt.com/) pour les intimes.
37+
Pour faire ces transformations, nous allons utiliser Data Build Tool : [dbt](https://www.getdbt.com/) pour les intimes.
3838

3939
----
4040

@@ -48,7 +48,7 @@ Il existe en [version _Core Open Source_](https://github.com/dbt-labs/dbt-core)
4848

4949
Tout comme Apache Airflow, dbt adopte l'approche "as code" et mélange [SQL](https://fr.wikipedia.org/wiki/Structured_Query_Language), [Jinja](https://fr.wikipedia.org/wiki/Jinja_(moteur_de_template)) et [YAML](https://fr.wikipedia.org/wiki/YAML). Il va donc te falloir réviser tes `select`, `from` et `where`. Cela dit, peut-on vraiment faire l'impasse sur le SQL quand on fait de la data, qu'elle soit géographique ou non ? Je ne pense pas :innocent:.
5050

51-
L'avantage de dbt est qu'il ne vient pas en coupure du moteur de bases de données sous-jacent mais, qu'au contraire, il s'appuie pleinement sur ce dernier. De fait, toute la puissance du moteur est là, entre tes mains. Avoue que c'est vraiment un plus quand on dispose d'un système extensible tel que [PostgreSQL](https://www.postgresql.org/) pour, au hasard, traiter des données géographiques avec [PostGIS](https://postgis.net/).
51+
Si plusieurs ETL proposent des _transformers_ qui fonctionnent indépendamment du moteur de bases de données cible, dbt lui s'appuie pleinement sur ce dernier en exploitant les fonctions qu'il propose. De fait, toute la puissance du moteur est là, entre tes mains. Avoue que c'est vraiment un plus quand on dispose d'un système extensible tel que [PostgreSQL](https://www.postgresql.org/) pour, au hasard, traiter des données géographiques avec [PostGIS](https://postgis.net/).
5252

5353
Tu es sceptique, je l'étais aussi ! Histoire d'accroître un peu plus tes doutes, je dois t'apprendre que pour faire les transformations, tu auras uniquement droit à des `select` ; ni `ìnsert` ni `update` et encore moins de `create` ou d'`alter` puisque c'est dbt qui prend en charge la partie [DDL (Data Definition Language)](https://fr.wikipedia.org/wiki/Langage_de_d%C3%A9finition_de_donn%C3%A9es).
5454

@@ -100,7 +100,9 @@ Il est construit avec un couple SQL+Jinja / YAML :
100100

101101
En aucun cas, le SQL ne doit accéder directement à une table ou une vue de l'entrepôt. Les `from` doivent à la place faire référence à une source, via le template Jinja {% raw %}`{{ source("<source_name>", "<table_name>") }}`{% endraw %}, ou à un autre modèle, via le template Jinja {% raw %}`{{ ref("<model_name>") }}`{% endraw %}.
102102

103-
Voici par exemple un modèle de transformation des observations extraites et chargées dans l'entrepôt au format JSON depuis l'[API Hydrométrie de Hubeau](https://hubeau.eaufrance.fr/page/api-hydrometrie).
103+
Voici par exemple un modèle de transformation des observations extraites et chargées dans l'entrepôt depuis l'[API Hydrométrie de Hubeau](https://hubeau.eaufrance.fr/page/api-hydrometrie).
104+
105+
Son rôle est de transformer le résultat JSON issu de l'appel à l'API en un tableau des observations contenant 4 colonnes : `code_station`, `date_heure`, `resultat` et `grandeur_hydro`.
104106

105107
```yaml title="YAML de déclaration d'un modèle de données"
106108
version: 2
@@ -411,7 +413,7 @@ Dans notre cas, nous essayons à cette étape de nous rapprocher d'un modèle re
411413

412414
Sur ce dernier point, nous avions pris soin lors de l'EL de ne conserver que les cellules à proximité du réseau. Malgré tout, chacune couvre environ 90 hectares et une partie seulement de cette surface peut se trouver réellement à 10 mètres d'une route.
413415

414-
Tu peux voir dans le YAML que, si nous mentionnons Mapillary dans le documentation, le schéma comme la table portent désormais un nom "métier" (`wrh_signalisation_routiere.panneaux_police`).
416+
Tu peux voir dans le YAML que, si nous mentionnons Mapillary dans la documentation, le schéma comme la table portent désormais un nom "métier" (`wrh_signalisation_routiere.panneaux_police`).
415417

416418
```yaml title="Déclaration et documentation du modèle de données contenant les panneaux de police de circulation"
417419
version: 2

0 commit comments

Comments
 (0)