Skip to content

Commit 20bc464

Browse files
luke-gerschwitzbeniericsage-maker
authored
fix: fix ValueError when updating a data quality monitoring schedule (#5002)
* fix: fix ValueError when updating a data quality monitoring schedule * Add unit test * black formatting --------- Co-authored-by: Erick Benitez-Ramos <[email protected]> Co-authored-by: parknate@ <[email protected]>
1 parent f6da8e5 commit 20bc464

File tree

2 files changed

+37
-1
lines changed

2 files changed

+37
-1
lines changed

src/sagemaker/model_monitor/model_monitoring.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2413,7 +2413,12 @@ def _update_data_quality_monitoring_schedule(
24132413
)
24142414
self.sagemaker_session.sagemaker_client.create_data_quality_job_definition(**request_dict)
24152415
try:
2416-
self._update_monitoring_schedule(new_job_definition_name, schedule_cron_expression)
2416+
self._update_monitoring_schedule(
2417+
job_definition_name=new_job_definition_name,
2418+
schedule_cron_expression=schedule_cron_expression,
2419+
data_analysis_start_time=data_analysis_start_time,
2420+
data_analysis_end_time=data_analysis_end_time,
2421+
)
24172422
self.job_definition_name = new_job_definition_name
24182423
if role is not None:
24192424
self.role = role

tests/unit/sagemaker/monitor/test_model_monitoring.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@
7373
LINFINITY_METHOD = "LInfinity"
7474

7575
CRON_DAILY = CronExpressionGenerator.daily()
76+
CRON_NOW = CronExpressionGenerator.now()
7677
BASELINING_JOB_NAME = "baselining-job"
7778
BASELINE_DATASET_PATH = "/my/local/path/baseline.csv"
7879
PREPROCESSOR_PATH = "/my/local/path/preprocessor.py"
@@ -1136,6 +1137,36 @@ def _test_data_quality_monitor_update_schedule(data_quality_monitor, sagemaker_s
11361137
sagemaker_session.sagemaker_client.delete_data_quality_job_definition.assert_not_called()
11371138
sagemaker_session.sagemaker_client.create_data_quality_job_definition.assert_not_called()
11381139

1140+
# update schedule
1141+
sagemaker_session.describe_monitoring_schedule = MagicMock()
1142+
sagemaker_session.sagemaker_client.describe_data_quality_job_definition = MagicMock()
1143+
sagemaker_session.sagemaker_client.create_data_quality_job_definition = MagicMock()
1144+
1145+
# Test updating monitoring schedule with schedule_cron_expression set to NOW
1146+
sagemaker_session.sagemaker_client.update_monitoring_schedule = Mock()
1147+
data_quality_monitor.update_monitoring_schedule(
1148+
data_analysis_start_time="-PT24H",
1149+
data_analysis_end_time="-PT0H",
1150+
schedule_cron_expression=CRON_NOW,
1151+
)
1152+
1153+
sagemaker_session.sagemaker_client.update_monitoring_schedule.assert_called_once_with(
1154+
MonitoringScheduleName=data_quality_monitor.monitoring_schedule_name,
1155+
MonitoringScheduleConfig={
1156+
"MonitoringJobDefinitionName": data_quality_monitor.job_definition_name,
1157+
"MonitoringType": DefaultModelMonitor.monitoring_type(),
1158+
"ScheduleConfig": {
1159+
"ScheduleExpression": CRON_NOW,
1160+
"DataAnalysisStartTime": "-PT24H",
1161+
"DataAnalysisEndTime": "-PT0H",
1162+
},
1163+
},
1164+
)
1165+
1166+
# A new data quality job definition should be created
1167+
sagemaker_session.sagemaker_client.describe_data_quality_job_definition.assert_called_once()
1168+
sagemaker_session.sagemaker_client.create_data_quality_job_definition.assert_called_once()
1169+
11391170
# update one property of job definition
11401171
time.sleep(
11411172
0.001

0 commit comments

Comments
 (0)