Skip to content

Commit 5b22362

Browse files
authored
Feat/165 population densite (#199)
2 parents c4eeb07 + 390980c commit 5b22362

11 files changed

+2599
-2088
lines changed

datasources.yaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -612,8 +612,7 @@ domains:
612612
format: json
613613
extract_params:
614614
maxResult: 10000
615-
startPeriod: "2009-01-01"
616-
endPeriod: "2025-10-01"
615+
TIME_PERIOD: 2022
617616
GEO: ["COM","DEP","REG"]
618617
RP_MEASURE: ["POP","SUP"]
619618
OCS: "_T"

dbt_odis/models/bronze/_odis_bronze__models.yml

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3702,6 +3702,7 @@ models:
37023702

37033703
- name: presentation_page_population_communes
37043704

3705+
# Population
37053706
- name: population_categorie_socio_pro
37063707
description: Extraction du JSON source CSP par population
37073708
columns:
@@ -3729,8 +3730,6 @@ models:
37293730
description: nombre mesuré du type d'habitation = appartement par zone géographique et par année
37303731
data_type: text
37313732

3732-
# Population
3733-
37343733
- name: population_by_age
37353734
description: Répartition de la population par tranches d'âge
37363735
columns:
@@ -3812,7 +3811,7 @@ models:
38123811
- name: nivgeo
38133812
description: |-
38143813
Niveau de granularité géographique.
3815-
Pour ce dateset, une seul valeur possible :
3814+
Pour ce dateset, une seule valeur possible :
38163815
COM = Commune
38173816
data_type: text
38183817
- name: codgeo
@@ -3832,3 +3831,35 @@ models:
38323831
- name: nb
38333832
description: TBD
38343833
data_type: float
3834+
3835+
- name: population_population_superficie
3836+
description: |-
3837+
Extraction de fichiers JSON avec données historiques population et superficie des territoires.
3838+
columns:
3839+
- name: id
3840+
description: index
3841+
data_type: integer
3842+
- name: geo
3843+
description: |-
3844+
Union année code - type de code - code géographique.
3845+
e.g. 2025-COM-01001.
3846+
L'année correspond à l'année de définition du code géographique par l'insee.
3847+
data_type: text
3848+
- name: ocs
3849+
description: |-
3850+
Catégorie du logement (seulement "_T", pour total).
3851+
data_type: text
3852+
- name: freq
3853+
description: Intervalle de temps séparant deux observations.
3854+
data_type: integer
3855+
- name: rp_measure
3856+
description: Indicateur d'intérêt.
3857+
data_type: text
3858+
- name: time_period
3859+
description: |-
3860+
Période ou point dans le temps auquel l'observation se réfère effectivement.
3861+
data_type: text
3862+
- name: measure_value
3863+
description: |-
3864+
Valeur de l'indicateur d'intérêt.
3865+
data_type: text

dbt_odis/models/bronze/_odis_bronze__sources.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@ sources:
149149
description: Source CSV
150150
loaded_at_field: created_at
151151

152+
- name: population_population_superficie
153+
description: Source JSON, superficie et population associées aux codes geo (COM, DEP, REG) et années de mesure.
154+
loaded_at_field: created_at
155+
152156
- name: population_taux_pauvrete_communes_filo2021_disp_pauvres_com
153157
description: Source CSV, taux de pauvrete au niveau de la commune par seuil
154158
loaded_at_field: created_at
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{{ config(
2+
tags = ['bronze', 'population'],
3+
alias = 'vw_population_population_superficie'
4+
) }}
5+
6+
with population_superficie as
7+
(
8+
select
9+
id,
10+
(data::jsonb)->'dimensions'->>'GEO'::text as geo,
11+
(data::jsonb)->'dimensions'->>'OCS'::text as ocs,
12+
(data::jsonb)->'dimensions'->>'FREQ'::text as freq,
13+
(data::jsonb)->'dimensions'->>'RP_MEASURE'::text as rp_measure,
14+
(data::jsonb)->'dimensions'->>'TIME_PERIOD'::text as time_period,
15+
(data::jsonb)->'measures'->'OBS_VALUE_NIVEAU'->>'value'::text as measure_value
16+
17+
from {{ source('bronze', 'population_population_superficie') }}
18+
19+
)
20+
21+
select * from population_superficie

dbt_odis/models/gold/_odis_gold__models.yml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ models:
457457
- name: f90p
458458
description: population de femmes de 90 ou plus
459459
data_type: numeric
460+
460461
- name: gold_services
461462
description: Table recensant les nombres de services identifiés d'une zone géographique identifiée
462463
columns:
@@ -503,3 +504,16 @@ models:
503504
description: Nombre de restaurants ou restauration rapide dans la zone géographique identifiée
504505
data_type: double precision
505506
quote: true
507+
508+
- name: vw_population_densite
509+
description: Densité de population associée aux codes géographiques (communes, départements, régions), par année.
510+
columns:
511+
- name: codegeo
512+
description: code géographique (seulement COM, DEP, REGION).
513+
data_type: text
514+
- name: year
515+
description: année de la dernière mesure.
516+
data_type: text
517+
- name: densite
518+
description: densité de population, nombre d'habitants au kilomètre carré.
519+
data_type: numeric

dbt_odis/models/gold/_odis_gold__sources.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,7 @@ sources:
5151
description: Table contenant
5252
loaded_at_field: created_at
5353

54+
- name: vw_population_population_superficie_stg
55+
description: Table contenant population et superficie par code géographique et année.
56+
loaded_at_field: created_at
57+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{ config(
2+
tags=['gold', 'population'],
3+
alias='vw_population_densite'
4+
) }}
5+
6+
with densite as (
7+
select
8+
-- ajout du prefix 'reg' pour les régions, pour les differencier des DEP
9+
case
10+
when codegeo_type = 'REG' then concat('reg', codegeo) else codegeo end
11+
as codegeo,
12+
"year",
13+
-- densite au km2, mais superficie exprimee en hectares
14+
cast(round(population / nullif(superficie * 1e-2, 0), 0) as int) as densite
15+
from {{ ref('stg_population_population_superficie') }}
16+
where "year" = '2022'
17+
)
18+
19+
select * from densite

dbt_odis/models/silver/_odis_silver__models.yml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,6 +1054,7 @@ models:
10541054
- name: places
10551055
description: nombre de places dans la structure d'accueil
10561056
data_type: integer
1057+
10571058
- name: silver_services
10581059
description: nombre de services totaux par zone géographique, granularité fine au niveau du code INSEE, les indicateurs ne concernent que certains types de services
10591060
columns:
@@ -1084,3 +1085,24 @@ models:
10841085
- name: code_geo
10851086
description: Code INSEE officiel pour les 3 niveaux géographiques
10861087
data_type: text
1088+
1089+
- name: vw_population_population_superficie_stg
1090+
description: population et superficie par codegeo et année
1091+
columns:
1092+
- name: codegeo_year
1093+
description: Année d'établissement du codegeo.
1094+
data_type: text
1095+
- name: codegeo_type
1096+
description: Type de code géographique ("COM", "DEP" ou "REG").
1097+
data_type: text
1098+
- name: codegeo
1099+
description: Code géographique.
1100+
data_type: text
1101+
- name: year
1102+
description: Année de la mesure.
1103+
data_type: text
1104+
- name: population
1105+
description: Population en nombre d'habitants.
1106+
data_type: integer
1107+
- name: superficie
1108+
description: Superficie en hectares.

dbt_odis/models/silver/_odis_silver__sources.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,10 @@ sources:
119119
description: View contenant
120120
loaded_at_field: created_at
121121

122-
123-
124122
- name: vw_population_categorie_socio_pro
125123
description: View contenant les informations de références des communes
126-
loaded_at_field: created_at
124+
loaded_at_field: created_at
125+
126+
- name: vw_population_population_superficie
127+
description: Vue contenant une mesure de recensement (superficie ou population) associée aux codes géographiques.
128+
loaded_at_field: created_at
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{{ config(
2+
tags=['silver', 'population'],
3+
alias='vw_population_population_superficie_stg',
4+
materialized='view'
5+
) }}
6+
7+
with pivot_pop_sup as
8+
(
9+
select
10+
split_part("geo", '-', 1) as codegeo_year,
11+
split_part("geo", '-', 2) as codegeo_type, -- REG, COM, DEP, etc.
12+
split_part("geo", '-', 3) as codegeo,
13+
time_period as "year",
14+
-- pivot population et superficie
15+
cast(max(case when rp_measure = 'POP' then split_part(measure_value, '.', 1) end) as int) as population,
16+
cast(max(case when rp_measure = 'SUP' then split_part(measure_value, '.', 1) end) as int) as superficie
17+
from {{ ref('population_population_superficie') }}
18+
-- filtres presents dans datasource.yml, mais explicites ici pour clarte
19+
where split_part("geo", '-', 2) in ('COM', 'REG', 'DEP')
20+
and ocs = '_T'
21+
group by
22+
split_part(geo, '-', 1),
23+
split_part(geo, '-', 2),
24+
split_part(geo, '-', 3),
25+
time_period
26+
)
27+
28+
select * from pivot_pop_sup

0 commit comments

Comments
 (0)