Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/pre-commit-tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,4 +37,4 @@ jobs:
poetry run pytest -v
- name: Verify tests results
if: ${{ failure() }}
run: exit 1
run: exit 1
19 changes: 18 additions & 1 deletion datasources.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ domains:
API: GEO.api.gouv.fr
description: Référentiel géographique GEO - niveau commune
type: JsonExtractor
endpoint: /communes?fields=code,nom,population,departement,region,centre
endpoint: /communes?fields=code,nom,population,departement,region,centre,epci
format: json

arrondissements:
Expand Down Expand Up @@ -607,6 +607,23 @@ domains:
data: observations
next: paging.next
is_last: paging.isLast

population_totale:
API: INSEE.Melodi
description: recuperation des populations communale et totale des communes
type: MelodiExtractor
endpoint: /data/DS_POPULATIONS_REFERENCE
format: json
extract_params:
maxResult: 10000
TIME_PERIOD: 2022
GEO: ["COM"]
POPREF_MEASURE: ["PMUN", "PTOT"]
page: 1
response_map:
data: observations
next: paging.next
is_last: paging.isLast

categorie_socio_pro:
API: INSEE.Melodi
Expand Down
25 changes: 25 additions & 0 deletions dbt_odis/models/bronze/_odis_bronze__models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1101,6 +1101,12 @@ models:
- name: geo_coordonnees_longitude
description: Coordonnées longitudinales, string pour données en -01.00
data_type: text
- name: epci_code
description: Code de l'EPCI rattaché à la commune
data_type: integer
- name: epci_nom
description: Nom de l'EPCI rattaché à la commune
data_type: integer
- name: created_at
description: date d'extraction des données
data_type: timestamp without time zone
Expand Down Expand Up @@ -3718,6 +3724,25 @@ models:
- name: presentation_page_elus_communes

- name: presentation_page_epci
description: Extraction du JSON source geographical_references_epcis
columns:
- name: nom
description: Nom de l'EPCI
data_type: text
- name: code
description: Code SIREN de l'EPCI
data_type: integer
tests:
- unique
- name: population
description: Population totale regroupée en vigueur selon le dernier recensement INSEE
data_type: integer
- name: codesRegions
description: Code de la région associée
data_type: integer
- name: codesDepartements
description: Code du département associé
data_type: integer

- name: presentation_page_population_communes

Expand Down
10 changes: 9 additions & 1 deletion dbt_odis/models/bronze/_odis_bronze__sources.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ sources:
- name: geographical_references_intercommunalites
description: Source xlsx loadée dans le champ data contenant les références des intercommunalites

- name: geographical_references_epci
- name: geographical_references_epcis
description: Source JSON loadée dans le champ data contenant les références des EPCI
loaded_at_field: created_at

Expand Down Expand Up @@ -133,6 +133,14 @@ sources:
description: feuille xlsx transformée en CSV contenant toutes les données des logements des bailleurs sociaux (appelées Répertoire des logements locatifs des bailleurs sociaux ou RPLS) déclinées par régions
loaded_at_field : created_at

- name: population_population_totale
description: Source JSON loadée dans le champ data
loaded_at_field: created_at

- name: population_categorie_socio_pro
description: Source JSON loadée dans le champ data
loaded_at_field: created_at

- name: population_by_age
description: Source JSON - Estimation de population INSEE par âge
loaded_at_field: created_at
Expand Down
4 changes: 3 additions & 1 deletion dbt_odis/models/bronze/geographical_references_communes.sql
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ with communes as
(data::jsonb) -> 'region' ->> 'code' as region_code,
(data::jsonb) -> 'departement' ->> 'nom' as departement_nom,
(data::jsonb) -> 'departement' ->> 'code' as departement_code,
(data::jsonb) -> 'population' as population,
((data::jsonb) -> 'population' ->> 0)::int as population,
(data::jsonb) -> 'epci' ->> 'code' as epci_code,
(data::jsonb) -> 'epci' ->> 'nom' as epci_nom,
created_at
from {{ source('bronze', 'geographical_references_communes') }}
)
Expand Down
9 changes: 9 additions & 0 deletions dbt_odis/models/bronze/geographical_references_epcis.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{{ config(
tags = ['bronze', 'geographical', 'epci'],
alias='vw_geographical_references_epcis'
)
}}

select
{{ dbt_utils.star(from=source('bronze', 'geographical_references_epcis')) }}
from {{ source('bronze', 'geographical_references_epcis') }}
13 changes: 13 additions & 0 deletions dbt_odis/models/bronze/population_totale.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{{ config(
tags = ['bronze', 'population'],
alias = 'vw_population_totale'
)
}}

SELECT
(data::jsonb)->'dimensions'->>'GEO'::VARCHAR AS geo,
(data::jsonb)->'dimensions'->>'FREQ'::VARCHAR AS freq,
((data::jsonb)->'dimensions'->'TIME_PERIOD'->>0)::INTEGER AS time_period,
(data::jsonb)->'dimensions'->>'POPREF_MEASURE'::VARCHAR AS popref_measure,
((data::jsonb)->'measures'->'OBS_VALUE_NIVEAU'->'value'->>0)::DECIMAL AS value
FROM {{ source('bronze', 'population_population_totale') }}
12 changes: 9 additions & 3 deletions dbt_odis/models/bronze/presentation_page_epci.sql
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,12 @@
)
}}

select
{{ dbt_utils.star(from=source('bronze', 'presentation_page_epci')) }}
from {{ source('bronze', 'presentation_page_epci') }}
SELECT
data->'nom'::text AS nom,
-- (data::jsonb)->'nom'::text AS nom,
(data::jsonb)->'code'->>0::int AS code,
(data::jsonb)->'population'->>0::int AS population,
(data::jsonb)->'codesRegions'->>0 AS codesRegions,
(data::jsonb)->'codesDepartements'->>0 AS codesDepartements,
created_at
FROM {{ ref('geographical_references_epcis') }}
26 changes: 26 additions & 0 deletions dbt_odis/models/gold/_odis_gold__models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -484,6 +484,32 @@ models:
- name: POP15P_CS9
description: population totale 15 ans et plus, autres inactifs (CS9).
data_type: numeric

- name: gold_presentation_page_epci
description: Population totale et municipale, et nombre de membres par EPCI et code INSEE des communes rattachées
columns:
- name: codgeo
description: "Clé primaire unique d'identification : Code INSEE (COM = 5 chiffres) de la commune rattachée à l'EPCI"
data_type: text
- name: raison_sociale
description: "Raison sociale de l'EPCI"
data_type: text
- name: nb_membres
description: "Nombre de communes rattachées à l'EPCI"
data_type: integer
- name: total_pop_tot
description: "Population totale de l'EPCI (Somme de population municipale et population comptée à part - Ex : étudiants résidant hors commune mais rattachés administrativement)"
data_type: integer
- name: total_pop_mun
description: "Population municipale de l'EPCI"
data_type: integer
- name: ptot_derniere_annee
description: "Population totale de la commune à la dernière année connue (Somme de population municipale et population comptée à part)"
data_type: integer
- name: pmun_derniere_annee
description: "Population municipale de la commune à la dernière année connue"
data_type: integer


- name: gold_services
description: Table recensant les nombres de services identifiés d'une zone géographique identifiée
Expand Down
8 changes: 8 additions & 0 deletions dbt_odis/models/gold/gold_presentation_page_epci.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{{ config(
tags = ['gold', 'homepage'],
alias = 'gold_presentation_page_epci'
) }}

SELECT
*
FROM {{ ref('silver_presentation_page_epci') }}
27 changes: 25 additions & 2 deletions dbt_odis/models/silver/_odis_silver__models.yml
Original file line number Diff line number Diff line change
Expand Up @@ -1094,7 +1094,7 @@ models:
- name: id
description: id
data_type: integer
- name: code_officiel_commube
- name: code_officiel_commune
description: code de la commune de la structure d'accueil, obtenu en calculant le centre de commune le plus proche des coordonnées gps de la structure d'accueil
data_type: text
- name: type
Expand All @@ -1103,7 +1103,30 @@ models:
- name: places
description: nombre de places dans la structure d'accueil
data_type: integer

- name: silver_presentation_page_epci
description: Population totale et municipale, et nombre de membres par EPCI et code INSEE des communes rattachées
columns:
- name: codgeo
description: "Clé primaire unique d'identification : Code INSEE (COM = 5 chiffres) de la commune rattachée à l'EPCI"
data_type: text
- name: raison_sociale
description: "Raison sociale de l'EPCI"
data_type: text
- name: nb_membres
description: "Nombre de communes rattachées à l'EPCI"
data_type: integer
- name: total_pop_tot
description: "Population totale de l'EPCI (Somme de population municipale et population comptée à part - Ex : étudiants résidant hors commune mais rattachés administrativement)"
data_type: integer
- name: total_pop_mun
description: "Population municipale de l'EPCI"
data_type: integer
- name: ptot_derniere_annee
description: "Population totale de la commune à la dernière année connue (Somme de population municipale et population comptée à part)"
data_type: integer
- name: pmun_derniere_annee
description: "Population municipale de la commune à la dernière année connue"
data_type: integer
- name: silver_services
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
columns:
Expand Down
52 changes: 52 additions & 0 deletions dbt_odis/models/silver/silver_presentation_page_epci.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{{ config(
tags = ['silver', 'homepage'],
alias = 'silver_presentation_page_epci'
) }}

WITH population_communes AS (
SELECT
RIGHT(population_totale.geo, 5)::VARCHAR AS code_insee,
SUM(
CASE
WHEN population_totale.popref_measure = 'PTOT' THEN value::int ELSE 0
END
) AS ptot_commune,
SUM(
CASE
WHEN population_totale.popref_measure = 'PMUN' THEN value::int ELSE 0
END
) AS pmun_commune
FROM {{ ref('population_totale') }} population_totale
GROUP BY RIGHT(population_totale.geo, 5)::VARCHAR
)
, agg_communes AS (
SELECT
communes.epci_code,
COUNT(communes.*) AS nb_membres,
SUM(communes.population::int) AS population_totale_communes,
SUM(population_communes.ptot_commune) AS total_ptot_communes,
SUM(population_communes.pmun_commune) AS total_pmun_communes
FROM {{ ref('geographical_references_communes') }} communes
INNER JOIN population_communes
ON population_communes.code_insee = communes.code
GROUP BY epci_code
)
SELECT
communes.code AS codgeo,
communes.nom,
communes.epci_nom AS raison_sociale,
population_communes.ptot_commune,
population_communes.pmun_commune,
agg_communes.nb_membres,
agg_communes.total_ptot_communes,
agg_communes.total_pmun_communes,
communes.population AS pmun_source_geo_communes,
agg_communes.population_totale_communes AS agg_pmun_source_geo_communes,
epci.population AS agg_pmun_source_epci
FROM {{ ref('geographical_references_communes') }} communes
INNER JOIN population_communes
ON population_communes.code_insee = communes.code
INNER JOIN agg_communes
ON agg_communes.epci_code = communes.epci_code
LEFT JOIN {{ ref('presentation_page_epci') }} epci
ON epci.code = communes.epci_code
2 changes: 1 addition & 1 deletion poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.