From 9ce2809804cbf163de30534bbd684603281e8e0c Mon Sep 17 00:00:00 2001 From: Colas Geier Date: Tue, 7 Oct 2025 17:09:16 +0200 Subject: [PATCH] adapt script for get infraction --- 15_POLICE/v_infraction_rnn.py | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/15_POLICE/v_infraction_rnn.py b/15_POLICE/v_infraction_rnn.py index 992619f..48c950c 100644 --- a/15_POLICE/v_infraction_rnn.py +++ b/15_POLICE/v_infraction_rnn.py @@ -14,6 +14,24 @@ WITH photos as ( FROM police.infraction_rnn WHERE tablename = 'photos_repeat' group by json_data->>'__Submissions-id'::text +), strip_infra as ( + SELECT + inf.json_data->>'__Submissions-id' "__Submissions-id", + json_data->>'__id' "__id", + json_strip_nulls(inf.json_data) json_data + FROM police.infraction_rnn inf + WHERE inf.tablename = 'multiple_infract' +), key_infra as ( + select + json_data->>'__Submissions-id' "__Submissions-id", + json_data->>'__id' "__id", + json_object_keys(json_data::json) data_keys + from strip_infra +), key_infra_agg as ( + select + "__Submissions-id","__id", array_agg(data_keys) data_keys + from key_infra + group by 2,1 ) SELECT inf.json_data->>'__id'::text id_infraction, @@ -24,9 +42,16 @@ SELECT autre_catego_sensi, autre_type_sanct, inf.json_data->>'catego_infract'::text catego_infract, + inf.json_data->>key_infra_agg.data_keys[1] nature_infra, + case when SPLIT_PART(key_infra_agg.data_keys[3],'_',1) = 'natinf' + then inf.json_data->>key_infra_agg.data_keys[2] + else null + end code_catego, + case when SPLIT_PART(key_infra_agg.data_keys[3],'_',1) = 'natinf' + then inf.json_data->>key_infra_agg.data_keys[3] + else inf.json_data->>key_infra_agg.data_keys[2] + end code_infra, inf.json_data->>'descrpt_infract'::text descrpt_infract, - inf.json_data->>'nat_aff_niv_3'::text nat_aff_niv_3, - inf.json_data->>'natinf_rn'::text natinf_rn, "Commentaire_remarque_nombre_de_tentes", "Conformit_du_contr_le", "day" "date", @@ -44,12 +69,12 @@ SELECT "updatedAt" date_maj, st_force2d(st_geomfromgeojson(replace(COALESCE(geom,point_carte),'\\','')))::geometry(geometry, 4326) AS geom FROM police.infraction_rnn_submissions_data AS sub -JOIN police.infraction_rnn inf ON sub.data_id::text = inf.json_data->>'__Submissions-id'::text - and inf.tablename = 'multiple_infract' +JOIN strip_infra inf ON sub.data_id::text = inf."__Submissions-id"::text +join key_infra_agg on inf.__id = key_infra_agg.__id JOIN photos ph ON sub.data_id::text = ph."__Submissions-id"::text ORDER BY 2,1 ; - +GRANT SELECT ON TABLE police.infraction_rnn TO grp_police; ''' with con_odk.begin() as cnx: