edx-enterprise-data 10.2.0__py3-none-any.whl → 10.3.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: edx-enterprise-data
3
- Version: 10.2.0
3
+ Version: 10.3.0
4
4
  Summary: Enterprise Reporting
5
5
  Home-page: https://github.com/openedx/edx-enterprise-data
6
6
  Author: edX
@@ -1,4 +1,4 @@
1
- enterprise_data/__init__.py,sha256=msobjDbSxGnYjz9FZlLzQBbpW1Y81HKRCZo4uSEsQic,124
1
+ enterprise_data/__init__.py,sha256=6rH0qHB00YhC1K50WQ5dAUe_C5igFqH4ZSxJxVLLZZA,124
2
2
  enterprise_data/apps.py,sha256=aF6hZwDfI2oWj95tUTm_2ikHueQj-jLj-u0GrgzpsQI,414
3
3
  enterprise_data/clients.py,sha256=GvQupy5TVYfO_IKC3yzXSAgNP54r-PtIjidM5ws9Iks,3947
4
4
  enterprise_data/constants.py,sha256=uCKjfpdlMYFZJsAj3n9RMw4Cmg5_6s3NuwocO-fch3s,238
@@ -15,8 +15,8 @@ enterprise_data/admin_analytics/data_loaders.py,sha256=NixI-4M3D4MnI279x5hqqTw84
15
15
  enterprise_data/admin_analytics/database/__init__.py,sha256=vNSWKf2VV5xMegN7htJJtxtQEb0ASLC6frE2w0ZpYpE,104
16
16
  enterprise_data/admin_analytics/database/utils.py,sha256=5u-d6ZQW95mF_r4bH8Xdi7DgpYAuDFOG_q0P-bjKXHU,1712
17
17
  enterprise_data/admin_analytics/database/queries/__init__.py,sha256=IC5TLOr_GnydbrVbl2mWhwO3aUbYeHuDmfPTLmwGhZA,218
18
- enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py,sha256=ms7wFVSC53VD0IHH9sXmfx7Eh0BoEDDtE0gdTRddKzg,9274
19
- enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py,sha256=6EX0W3RWRzSrpIbqFJvStnj5Rkfzi9KyFP0UNmb75pU,8814
18
+ enterprise_data/admin_analytics/database/queries/fact_engagement_admin_dash.py,sha256=eLy9GT0gFGLbw8yZZdEaeCAw0pTEUsy0-Ud5g2T9T80,10836
19
+ enterprise_data/admin_analytics/database/queries/fact_enrollment_admin_dash.py,sha256=w30BiDOcKzV_FCdtxIG-_7zSCu5f3x5pgBRFCGjHu04,11011
20
20
  enterprise_data/admin_analytics/database/queries/skills_daily_rollup_admin_dash.py,sha256=PgWwvtVCK5lbiq6z44lH0fwbkdWYukhyXZL9X8lNWCY,4099
21
21
  enterprise_data/admin_analytics/database/tables/__init__.py,sha256=Z-c3P9hqR-dC9uYKe63qHkQG9Nms8cLE2jRN-4jeMM0,289
22
22
  enterprise_data/admin_analytics/database/tables/base.py,sha256=1KyKsC18pW3m-5U-T6pdt5rIwsz6Wp3QFFbD3r6L6YQ,395
@@ -171,8 +171,8 @@ enterprise_reporting/tests/test_send_enterprise_reports.py,sha256=WtL-RqGgu2x5PP
171
171
  enterprise_reporting/tests/test_utils.py,sha256=Zt_TA0LVb-B6fQGkUkAKKVlUKKnQh8jnw1US1jKe7g8,9493
172
172
  enterprise_reporting/tests/test_vertica_client.py,sha256=-R2yNCGUjRtoXwLMBloVFQkFYrJoo613VCr61gwI3kQ,140
173
173
  enterprise_reporting/tests/utils.py,sha256=xms2LM7DV3wczXEfctOK1ddel1EE0J_YSr17UzbCDy4,1401
174
- edx_enterprise_data-10.2.0.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
175
- edx_enterprise_data-10.2.0.dist-info/METADATA,sha256=ZaH_jYk1WE6bFmmmA3vCkGzWgs_q7lZgMtUnbjk52jU,1505
176
- edx_enterprise_data-10.2.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
177
- edx_enterprise_data-10.2.0.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
178
- edx_enterprise_data-10.2.0.dist-info/RECORD,,
174
+ edx_enterprise_data-10.3.0.dist-info/LICENSE,sha256=dql8h4yceoMhuzlcK0TT_i-NgTFNIZsgE47Q4t3dUYI,34520
175
+ edx_enterprise_data-10.3.0.dist-info/METADATA,sha256=sFZPREf5_rt-G89-sU1DVA39Pm9X7lghhR0GqDnV8fk,1505
176
+ edx_enterprise_data-10.3.0.dist-info/WHEEL,sha256=P9jw-gEje8ByB7_hXoICnHtVCrEwMQh-630tKvQWehc,91
177
+ edx_enterprise_data-10.3.0.dist-info/top_level.txt,sha256=f5F2kU-dob6MqiHJpgZkFzoCD5VMhsdpkTV5n9Tvq3I,59
178
+ edx_enterprise_data-10.3.0.dist-info/RECORD,,
@@ -2,4 +2,4 @@
2
2
  Enterprise data api application. This Django app exposes API endpoints used by enterprises.
3
3
  """
4
4
 
5
- __version__ = "10.2.0"
5
+ __version__ = "10.3.0"
@@ -48,7 +48,7 @@ class FactEngagementAdminDashQueries:
48
48
  """
49
49
 
50
50
  @staticmethod
51
- def get_top_courses_by_engagement_query(record_count=20):
51
+ def get_top_courses_by_engagement_query(record_count=10):
52
52
  """
53
53
  Get the query to fetch the learning time in hours by courses.
54
54
 
@@ -61,16 +61,40 @@ class FactEngagementAdminDashQueries:
61
61
  (str): Query to fetch the learning time in hours by courses for the top courses by user engagement.
62
62
  """
63
63
  return f"""
64
- SELECT course_key, course_title, enroll_type, SUM(learning_time_seconds)/3600 as learning_time_hours
65
- FROM fact_enrollment_engagement_day_admin_dash
66
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
64
+ WITH filtered_data AS (
65
+ SELECT
66
+ course_key,
67
+ course_title,
68
+ enroll_type,
69
+ (learning_time_seconds / 60.0 / 60.0) AS learning_time_hours,
70
+ activity_date
71
+ FROM fact_enrollment_engagement_day_admin_dash
72
+ WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
67
73
  activity_date BETWEEN %(start_date)s AND %(end_date)s
68
- GROUP BY course_key, course_title, enroll_type
69
- ORDER BY learning_time_hours DESC LIMIT {record_count};
74
+ ),
75
+ top_10_courses AS (
76
+ SELECT
77
+ course_key,
78
+ SUM(learning_time_hours) as total_learning_time
79
+ FROM filtered_data
80
+ GROUP BY course_key
81
+ ORDER BY total_learning_time DESC
82
+ LIMIT {record_count}
83
+ )
84
+ SELECT
85
+ d.course_key,
86
+ d.course_title,
87
+ d.enroll_type,
88
+ ROUND(SUM(d.learning_time_hours)) AS learning_time_hours
89
+ FROM filtered_data d
90
+ JOIN top_10_courses tc
91
+ ON d.course_key = tc.course_key
92
+ GROUP BY d.course_key, d.course_title, d.enroll_type
93
+ ORDER BY total_learning_time DESC;
70
94
  """
71
95
 
72
96
  @staticmethod
73
- def get_top_subjects_by_engagement_query(record_count=20):
97
+ def get_top_subjects_by_engagement_query(record_count=10):
74
98
  """
75
99
  Get the query to fetch the learning time in hours by subjects.
76
100
 
@@ -83,12 +107,34 @@ class FactEngagementAdminDashQueries:
83
107
  (str): Query to fetch the learning time in hours by subjects for the top subjects by user engagement.
84
108
  """
85
109
  return f"""
86
- SELECT course_subject, enroll_type, SUM(learning_time_seconds)/3600 as learning_time_hours
87
- FROM fact_enrollment_engagement_day_admin_dash
88
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
110
+ WITH filtered_data AS (
111
+ SELECT
112
+ course_subject,
113
+ enroll_type,
114
+ (learning_time_seconds / 60.0 / 60.0) AS learning_time_hours,
115
+ activity_date
116
+ FROM fact_enrollment_engagement_day_admin_dash
117
+ WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
89
118
  activity_date BETWEEN %(start_date)s AND %(end_date)s
90
- GROUP BY course_subject, enroll_type
91
- ORDER BY learning_time_hours DESC LIMIT {record_count};
119
+ ),
120
+ top_10_subjects AS (
121
+ SELECT
122
+ course_subject,
123
+ SUM(learning_time_hours) as total_learning_time
124
+ FROM filtered_data
125
+ GROUP BY course_subject
126
+ ORDER BY total_learning_time DESC
127
+ LIMIT {record_count}
128
+ )
129
+ SELECT
130
+ d.course_subject,
131
+ d.enroll_type,
132
+ ROUND(SUM(d.learning_time_hours)) AS learning_time_hours
133
+ FROM filtered_data d
134
+ JOIN top_10_subjects ts
135
+ ON d.course_subject = ts.course_subject
136
+ GROUP BY d.course_subject, d.enroll_type
137
+ ORDER BY total_learning_time DESC;
92
138
  """
93
139
 
94
140
  @staticmethod
@@ -98,7 +98,7 @@ class FactEnrollmentAdminDashQueries:
98
98
  """
99
99
 
100
100
  @staticmethod
101
- def get_top_courses_by_enrollments_query(record_count=20):
101
+ def get_top_courses_by_enrollments_query(record_count=10):
102
102
  """
103
103
  Get the query to fetch the enrollment count by courses.
104
104
 
@@ -108,15 +108,32 @@ class FactEnrollmentAdminDashQueries:
108
108
  record_count (int): Number of records to fetch.
109
109
  """
110
110
  return f"""
111
- SELECT course_key, course_title , enroll_type, count(course_key) as enrollment_count
112
- FROM fact_enrollment_admin_dash
113
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
111
+ WITH filtered_data AS (
112
+ SELECT *
113
+ FROM fact_enrollment_admin_dash
114
+ WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
114
115
  enterprise_enrollment_date BETWEEN %(start_date)s AND %(end_date)s
115
- GROUP BY course_key, course_title, enroll_type ORDER BY enrollment_count DESC LIMIT {record_count};
116
+ ),
117
+ top_10_courses AS (
118
+ SELECT course_key
119
+ FROM filtered_data
120
+ GROUP BY course_key
121
+ ORDER BY COUNT(*) DESC
122
+ LIMIT {record_count}
123
+ )
124
+
125
+ SELECT
126
+ d.course_key,
127
+ d.enroll_type,
128
+ COUNT(*) AS enrollment_count
129
+ FROM filtered_data d
130
+ JOIN top_10_courses tc
131
+ ON d.course_key = tc.course_key
132
+ GROUP BY d.course_key, d.enroll_type;
116
133
  """
117
134
 
118
135
  @staticmethod
119
- def get_top_subjects_by_enrollments_query(record_count=20):
136
+ def get_top_subjects_by_enrollments_query(record_count=10):
120
137
  """
121
138
  Get the query to fetch the enrollment count by subjects.
122
139
 
@@ -126,11 +143,27 @@ class FactEnrollmentAdminDashQueries:
126
143
  record_count (int): Number of records to fetch.
127
144
  """
128
145
  return f"""
129
- SELECT course_subject, enroll_type, count(course_subject) enrollment_count
130
- FROM fact_enrollment_admin_dash
131
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
146
+ WITH filtered_data AS (
147
+ SELECT *
148
+ FROM fact_enrollment_admin_dash
149
+ WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
132
150
  enterprise_enrollment_date BETWEEN %(start_date)s AND %(end_date)s
133
- GROUP BY course_subject, enroll_type ORDER BY enrollment_count DESC LIMIT {record_count};
151
+ ),
152
+ top_10_subjects AS (
153
+ SELECT course_subject
154
+ FROM filtered_data
155
+ GROUP BY course_subject
156
+ ORDER BY COUNT(*) DESC
157
+ LIMIT {record_count}
158
+ )
159
+ SELECT
160
+ d.course_subject,
161
+ d.enroll_type,
162
+ COUNT(*) AS enrollment_count
163
+ FROM filtered_data d
164
+ JOIN top_10_subjects ts
165
+ ON d.course_subject = ts.course_subject
166
+ GROUP BY d.course_subject, d.enroll_type;
134
167
  """
135
168
 
136
169
  @staticmethod
@@ -162,7 +195,7 @@ class FactEnrollmentAdminDashQueries:
162
195
  """
163
196
 
164
197
  @staticmethod
165
- def get_top_courses_by_completions_query(record_count=20):
198
+ def get_top_courses_by_completions_query(record_count=10):
166
199
  """
167
200
  Get the query to fetch the completion count by courses.
168
201
 
@@ -175,17 +208,40 @@ class FactEnrollmentAdminDashQueries:
175
208
  (str): Query to fetch the enrollment count by courses for the top courses by enrollment count.
176
209
  """
177
210
  return f"""
178
- SELECT course_key, course_title, enroll_type, count(course_key) as completion_count
179
- FROM fact_enrollment_admin_dash
180
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
181
- has_passed=1 AND
211
+ WITH filtered_data AS (
212
+ SELECT
213
+ course_key,
214
+ course_title,
215
+ enroll_type,
216
+ passed_date
217
+ FROM fact_enrollment_admin_dash
218
+ WHERE has_passed = 1 AND
219
+ enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
182
220
  passed_date BETWEEN %(start_date)s AND %(end_date)s
183
- GROUP BY course_key, course_title, enroll_type
184
- ORDER BY completion_count DESC LIMIT {record_count};
221
+ ),
222
+ top_10_courses AS (
223
+ SELECT
224
+ course_key,
225
+ COUNT(*) AS total_completion_count
226
+ FROM filtered_data
227
+ GROUP BY course_key
228
+ ORDER BY total_completion_count DESC
229
+ LIMIT {record_count}
230
+ )
231
+ SELECT
232
+ d.course_key,
233
+ d.course_title,
234
+ d.enroll_type,
235
+ COUNT(*) AS completion_count
236
+ FROM filtered_data d
237
+ JOIN top_10_courses tc
238
+ ON d.course_key = tc.course_key
239
+ GROUP BY d.course_key, d.course_title, d.enroll_type
240
+ ORDER BY total_completion_count DESC;
185
241
  """
186
242
 
187
243
  @staticmethod
188
- def get_top_subjects_by_completions_query(record_count=20):
244
+ def get_top_subjects_by_completions_query(record_count=10):
189
245
  """
190
246
  Get the query to fetch the completion count by subjects.
191
247
 
@@ -198,13 +254,34 @@ class FactEnrollmentAdminDashQueries:
198
254
  (str): Query to fetch the completion count by subjects for the top subjects by completion count.
199
255
  """
200
256
  return f"""
201
- SELECT course_subject, enroll_type, count(course_subject) as completion_count
202
- FROM fact_enrollment_admin_dash
203
- WHERE enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
204
- has_passed=1 AND
257
+ WITH filtered_data AS (
258
+ SELECT
259
+ course_subject,
260
+ enroll_type,
261
+ passed_date
262
+ FROM fact_enrollment_admin_dash
263
+ WHERE has_passed = 1 AND
264
+ enterprise_customer_uuid=%(enterprise_customer_uuid)s AND
205
265
  passed_date BETWEEN %(start_date)s AND %(end_date)s
206
- GROUP BY course_subject, enroll_type
207
- ORDER BY completion_count DESC LIMIT {record_count};
266
+ ),
267
+ top_10_subjects AS (
268
+ SELECT
269
+ course_subject,
270
+ COUNT(*) AS total_completion_count
271
+ FROM filtered_data
272
+ GROUP BY course_subject
273
+ ORDER BY total_completion_count DESC
274
+ LIMIT {record_count}
275
+ )
276
+ SELECT
277
+ d.course_subject,
278
+ d.enroll_type,
279
+ COUNT(*) AS completion_count
280
+ FROM filtered_data d
281
+ JOIN top_10_subjects ts
282
+ ON d.course_subject = ts.course_subject
283
+ GROUP BY d.course_subject, d.enroll_type
284
+ ORDER BY total_completion_count DESC;
208
285
  """
209
286
 
210
287
  @staticmethod