Skip to content

Commit caa1ad4

Browse files
committed
chore: enhance data quality mapping and handling in water levels transfer
1 parent 2b46439 commit caa1ad4

1 file changed

Lines changed: 25 additions & 1 deletion

File tree

transfers/waterlevels_transfer.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
filter_by_valid_measuring_agency,
4242
lexicon_mapper,
4343
get_transfers_data_path,
44+
replace_nans,
4445
)
4546

4647
# constants
@@ -94,6 +95,7 @@ def __init__(self, *args, **kw):
9495

9596
def _get_dfs(self) -> tuple[pd.DataFrame, pd.DataFrame]:
9697
input_df = read_csv(self.source_table, dtype={"MeasuredBy": str})
98+
input_df = replace_nans(input_df)
9799
cleaned_df = filter_to_valid_point_ids(input_df)
98100
cleaned_df = filter_by_valid_measuring_agency(cleaned_df)
99101
logger.info(
@@ -314,7 +316,29 @@ def _make_observation(
314316
if dq_raw and pd.notna(dq_raw):
315317
dq_code = str(dq_raw).strip()
316318
try:
317-
data_quality = lexicon_mapper.map_value(f"LU_DataQuality:{dq_code}")
319+
mapped_quality = lexicon_mapper.map_value(f"LU_DataQuality:{dq_code}")
320+
if pd.isna(mapped_quality):
321+
logger.warning(
322+
"%sMapped DataQuality '%s' to NaN for WaterLevels record %s; "
323+
"storing NULL to satisfy FK",
324+
SPACE_6,
325+
dq_code,
326+
row.GlobalID,
327+
)
328+
data_quality = None
329+
else:
330+
mapped_quality_text = str(mapped_quality).strip()
331+
if mapped_quality_text and mapped_quality_text.lower() != "nan":
332+
data_quality = mapped_quality_text
333+
else:
334+
logger.warning(
335+
"%sMapped DataQuality '%s' to empty value for WaterLevels "
336+
"record %s; storing NULL to satisfy FK",
337+
SPACE_6,
338+
dq_code,
339+
row.GlobalID,
340+
)
341+
data_quality = None
318342
except KeyError:
319343
logger.warning(
320344
f"{SPACE_6}Unknown DataQuality code '{dq_code}' for WaterLevels record {row.GlobalID}"

0 commit comments

Comments
 (0)