44
55Mappatura documentata e revisionabile (vedi REGOLE_SEGNALAZIONE.md):
66 persona_incarico_ente__incarichi_nominativi_shard.csv
7- -> person_name = subject_key, entity_id = object_key, year = period[:4]
7+ -> person_name = subject_key, entity_id = IPA (o object_key) , year = period[:4]
88 awards__affidamenti_diretti.csv
9- -> awardee = subject_key, entity_id = object_key, award_date = period,
9+ -> awardee = subject_key, entity_id = IPA (o object_key) , award_date = period,
1010 procedure_type = "affidamento diretto" (il dataset e' gia' filtrato)
1111 cig_ente__affidamenti_diretti.csv
12- -> cig = subject_key, subject_id = object_key
12+ -> cig = subject_key, subject_id = IPA (o object_key)
1313
1414La provenienza (source_dataset, source_record_id) e' preservata cosi' com'e'.
1515"""
@@ -34,10 +34,19 @@ def _src(df: pd.DataFrame) -> dict[str, object]:
3434 }
3535
3636
37+ def _ent_id (df : pd .DataFrame ) -> "pd.Series" :
38+ # Identificativo stabile dell'ente: codice IPA se presente, altrimenti il nome (object_key)
39+ if "ipa" in df .columns :
40+ ipa = df ["ipa" ].astype (str ).str .strip ()
41+ obj = df ["object_key" ].astype (str ).str .strip ()
42+ return ipa .where (ipa != "" , obj )
43+ return df ["object_key" ].astype (str ).str .strip ()
44+
45+
3746def adapt_persona (df : pd .DataFrame ) -> pd .DataFrame :
3847 out = pd .DataFrame ()
3948 out ["person_name" ] = df ["subject_key" ]
40- out ["entity_id" ] = df [ "object_key" ]
49+ out ["entity_id" ] = _ent_id ( df )
4150 out ["year" ] = df ["period" ].astype (str ).str [:4 ]
4251 out ["source_dataset" ] = _src (df )["source_dataset" ]
4352 out ["source_record_id" ] = _src (df )["source_record_id" ]
@@ -47,7 +56,7 @@ def adapt_persona(df: pd.DataFrame) -> pd.DataFrame:
4756def adapt_awards (df : pd .DataFrame ) -> pd .DataFrame :
4857 out = pd .DataFrame ()
4958 out ["awardee" ] = df ["subject_key" ]
50- out ["entity_id" ] = df [ "object_key" ]
59+ out ["entity_id" ] = _ent_id ( df )
5160 out ["award_date" ] = df ["period" ].astype (str )
5261 out ["procedure_type" ] = "affidamento diretto"
5362 out ["source_dataset" ] = _src (df )["source_dataset" ]
@@ -58,7 +67,7 @@ def adapt_awards(df: pd.DataFrame) -> pd.DataFrame:
5867def adapt_cig (df : pd .DataFrame ) -> pd .DataFrame :
5968 out = pd .DataFrame ()
6069 out ["cig" ] = df ["subject_key" ]
61- out ["subject_id" ] = df [ "object_key" ]
70+ out ["subject_id" ] = _ent_id ( df )
6271 out ["source_dataset" ] = _src (df )["source_dataset" ]
6372 out ["source_record_id" ] = _src (df )["source_record_id" ]
6473 return out
0 commit comments