Skip to content

Commit

Permalink
Update 2024-12-31_sql_json.md
Browse files Browse the repository at this point in the history
Signed-off-by: thomas-szczurek <[email protected]>
  • Loading branch information
thomas-szczurek authored Dec 31, 2024
1 parent 9f8ee4f commit 52002a6
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions content/articles/2024/2024-12-31_sql_json.md
Original file line number Diff line number Diff line change
Expand Up @@ -440,7 +440,7 @@ ORDER BY "CODGEO";

Ouf.

![donnees_communes](https://cdn.geotribu.fr/tinyfilemanager.php?p=articles-blog-rdp%2Farticles%2F2024%2Fpostgresql_json&view=donnees_communes.png){: .img-center loading=lazy }
![donnees_communes](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/postgresql_json/donnees_communes.png){: .img-center loading=lazy }

On veillera à bien grouper les inserts dans cet ordre annee/base/code_commune afin de faciliter la lecture des données par PostgreSQL (si votre table est partitionnée, celà sera facilité).

Expand Down Expand Up @@ -478,7 +478,7 @@ FROM insee.correspondance_clefs_champs AS c,
ORDER BY fk_base, clef_json;
```

![vm_presence_cles_annees](https://cdn.geotribu.fr/tinyfilemanager.php?p=articles-blog-rdp%2Farticles%2F2024%2Fpostgresql_json&view=vm_presence_cles_annees.png){: .img-center loading=lazy }
![vm_presence_cles_annees](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/postgresql_json/vm_presence_cles_annees.png){: .img-center loading=lazy }

La seule difficulté ici est la présence de [LATERAL](https://docs.postgresql.fr/17/queries-table-expressions.html#QUERIES-FROM). Ce "mot" permet d'utiliser un champ de la requête principale dans une sous requête placée dans une clause FROM. Les éléments de la sous requête seront ensuite évalués atomiquement avant d'être joins à la table d'origine. Oui, ce n'est pas très facile à expliquer. Ici, le WHERE de la sous requête va interroger le champ données de la table "donnees_communes" pour voir si il y voit la clef_json actuellement en train d'être évaluée dans la table "correspondance_clefs_champs" possédant l'alias "c". Si oui, alors on prend la valeur minimum/maximum du champ année, et on le joint à cette ligne et uniquement cette ligne. Puis évaluation de clef_json suivante ... (*évalués atomiquement*)

Expand Down Expand Up @@ -531,7 +531,7 @@ WITH
SELECT * FROM final WHERE valeur IS NOT NULL;
```

![vm_presence_cles_annees](https://cdn.geotribu.fr/tinyfilemanager.php?p=articles-blog-rdp%2Farticles%2F2024%2Fpostgresql_json&view=vm_donnees_olap.png){: .img-center loading=lazy }
![vm_presence_cles_annees](https://cdn.geotribu.fr/img/articles-blog-rdp/articles/2024/postgresql_json/donnees_communes.png)vm_donnees_olap.png){: .img-center loading=lazy }

Attention, la création de cette vue matérialisée ou son refresh peut prendre un certain temps si vous avez stocké beaucoup de données (1 heure chez moi pour les 6 volets de 2015 à 2021).

Expand Down

0 comments on commit 52002a6

Please sign in to comment.