From ff3be85bc1c3eb48c9e498ef913b7a520235808e Mon Sep 17 00:00:00 2001 From: muhammad-ammar Date: Thu, 22 Feb 2024 17:39:26 +0500 Subject: [PATCH] fix: update prepared learners query --- CHANGELOG.rst | 4 ++ outcome_surveys/__init__.py | 2 +- ...d_learning_time_achieved_segment_events.py | 50 ++++++++----------- 3 files changed, 25 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 46961a2..144b3bf 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -15,6 +15,10 @@ Unreleased ~~~~~~~~~~ +[2.5.1] - 2024-02-22 +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +* Update prepared learners query + [2.5.0] - 2023-11-02 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * Add management command to trigger segment events for learners who have achieved 30 minutes of learning diff --git a/outcome_surveys/__init__.py b/outcome_surveys/__init__.py index dbe5efc..f648998 100644 --- a/outcome_surveys/__init__.py +++ b/outcome_surveys/__init__.py @@ -2,6 +2,6 @@ Outcome Surveys. """ -__version__ = '2.5.0' +__version__ = '2.5.1' default_app_config = 'outcome_surveys.apps.OutcomeSurveysConfig' # pylint: disable=invalid-name diff --git a/outcome_surveys/management/commands/send_learning_time_achieved_segment_events.py b/outcome_surveys/management/commands/send_learning_time_achieved_segment_events.py index e2d7232..9574f93 100644 --- a/outcome_surveys/management/commands/send_learning_time_achieved_segment_events.py +++ b/outcome_surveys/management/commands/send_learning_time_achieved_segment_events.py @@ -22,34 +22,25 @@ ENTERPRISE = settings.ENTERPRISE_VSF_UUID QUERY = f''' -WITH prepared_learners as ( --- get users who have hit :30 --- minutes threshold, but haven't been --- surveyed yet. -SELECT - user_id, - SUM(learning_time_seconds) as learning_time_seconds -FROM - PROD.BUSINESS_INTELLIGENCE.LEARNING_TIME -WHERE - enterprise_customer_uuid='{ENTERPRISE}' -AND - user_id not in ( - -- filter learners who already emitted this event. - SELECT - user_id - FROM - PROD.LMS.OUTCOME_SURVEYS_LEARNERCOURSEEVENT - WHERE - event_type = 'edx.course.learner.achieved.learning.time' - AND - already_sent = TRUE - ) -GROUP BY - user_id -HAVING - -- filter learners who haven't hit the threshold. - SUM(learning_time_seconds) >= 1800 +WITH prepared_learners AS ( + SELECT + lms_user_id as user_id + FROM + prod.enterprise.verizon_internal_reporting + WHERE + is_prepared_learner=TRUE + AND + lms_user_id NOT IN ( + -- filter learners who already emitted this event + SELECT + user_id + FROM + PROD.LMS.OUTCOME_SURVEYS_LEARNERCOURSEEVENT + WHERE + event_type = 'edx.course.learner.achieved.learning.time' + AND + already_sent = TRUE + ) ), last_course as ( @@ -73,13 +64,12 @@ -- join it all together. select pl.user_id, - pl.learning_time_seconds, runs.courserun_key, runs.course_key, runs.courserun_title from prepared_learners pl -left join +inner join last_course lc on pl.user_id = lc.user_id