Skip to content
This repository was archived by the owner on Mar 13, 2020. It is now read-only.

Commit 8761e52

Browse files
authored
Merge pull request #34 from PageUpPeopleOrg/feature/OSC-1304-log-execution-summary
[OSC-1304] Log execution summary
2 parents c496b75 + 4fe4bc9 commit 8761e52

File tree

4 files changed

+26
-2
lines changed

4 files changed

+26
-2
lines changed

rdl/DataLoadManager.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import uuid
33
import logging
44
import hashlib
5+
from datetime import datetime
56
from pathlib import Path
67
from json import JSONDecodeError
78

@@ -25,6 +26,9 @@ def __init__(self, configuration_path, source_db, target_db, data_load_tracker_r
2526
self.all_model_pattern = self.model_pattern.format(model_name='*')
2627

2728
def start_imports(self, force_full_refresh_models):
29+
self.logger.info(f"Starting Execution ID: '{self.correlation_id}'")
30+
execution_start_time = datetime.now()
31+
2832
model_folder = Path(self.configuration_path)
2933
if not model_folder.is_dir():
3034
raise NotADirectoryError(self.configuration_path)
@@ -57,6 +61,18 @@ def start_imports(self, force_full_refresh_models):
5761
self.start_single_import(model_file, request_full_refresh, model_number, total_number_of_models)
5862

5963
self.logger.info("Execution completed.")
64+
execution_end_time = datetime.now()
65+
total_execution_seconds = int((execution_end_time - execution_start_time).total_seconds())
66+
execution_hours = total_execution_seconds // 3600
67+
execution_minutes = (total_execution_seconds // 60) % 60
68+
execution_seconds = total_execution_seconds % 60
69+
total_number_of_rows_processed = self.data_load_tracker_repository.get_execution_rows(self.correlation_id)
70+
self.logger.info(
71+
f"Completed Execution ID: {self.correlation_id}"
72+
f"\n\tModels Processed: {total_number_of_models}"
73+
f"\n\tRows Processed: {total_number_of_rows_processed}"
74+
f"\n\tExecution Time: {execution_hours}h {execution_minutes}m {execution_seconds}s"
75+
f"\n\tAverage of {total_number_of_rows_processed//max(total_execution_seconds, 1)} rows per second.")
6076

6177
def start_single_import(self, model_file, requested_full_refresh, model_number, total_number_of_models):
6278
model_name = model_file.stem

rdl/data_load_tracking/DataLoadTracker.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ def data_load_completed(self, execution_status, failure_reason=None):
5454
self.failure_reason = failure_reason
5555
for batch in self.batches:
5656
self.total_row_count += batch.row_count
57-
self.rows_per_second = self.total_row_count / (self.total_execution_time.total_seconds() + 1e-10)
57+
self.rows_per_second = self.total_row_count / max(self.total_execution_time.total_seconds(), 1)
5858

5959
def get_statistics(self):
6060
load_type = 'FULL' if self.is_full_refresh else f"INCREMENTAL from " \

rdl/data_load_tracking/DataLoadTrackerRepository.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@ def save(self, data_load_tracker):
4040
session.commit()
4141
session.close()
4242

43+
def get_execution_rows(self, correlation_id):
44+
session = self.session_maker()
45+
results = session.query(func.sum(DataLoadExecution.rows_processed))\
46+
.filter(DataLoadExecution.correlation_id == correlation_id)\
47+
.scalar()
48+
session.close()
49+
return results
50+
4351
def get_full_refresh_since(self, timestamp):
4452
session = self.session_maker()
4553
results = session.query(DataLoadExecution.model_name)\

rdl/data_sources/MsSqlDataSource.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ def create_connection_with_failover(self):
5757
server = conn_string_data.group('server')
5858
failover = conn_string_data.group('failover')
5959
database = conn_string_data.group('database')
60-
driver = "{"+conn_string_data.group('driver').replace('+', ' ')+"}"
60+
driver = "{" + conn_string_data.group('driver').replace('+', ' ') + "}"
6161
dsn = f'DRIVER={driver};DATABASE={database};'
6262

6363
username = conn_string_data.group('username')

0 commit comments

Comments
 (0)