Skip to content

Commit 5cc5431

Browse files
author
superpios
committed
fix(adapt): entity_id/subject_id usano codice IPA stabile (fallback object_key)
1 parent b778568 commit 5cc5431

1 file changed

Lines changed: 15 additions & 6 deletions

File tree

scripts/adapt_explorer.py

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@
44
55
Mappatura 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
1414
La 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+
3746
def 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:
4756
def 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:
5867
def 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

Comments
 (0)