@@ -12,6 +12,8 @@ def post_parse(event: Metro2Event, strategy:str = 'chunk') -> None:
1212 logger .info ("Calculating total records." )
1313 save_total_records (event )
1414 if event .total_tradelines > 0 :
15+ logger .info ("Calculating total accounts." )
16+ save_total_accts (event )
1517 logger .info ("Calculating event date range." )
1618 save_date_range (event )
1719 logger .info ("Beginning progressive evaluator query." )
@@ -27,6 +29,11 @@ def save_date_range(event: Metro2Event):
2729 event .date_range_end = date_range ['latest' ]
2830 event .save ()
2931
32+ def save_total_accts (event : Metro2Event ):
33+ event .total_accounts = event .accountactivity_set .values (
34+ 'cons_acct_num' ).distinct ().count ()
35+ event .save ()
36+
3037def save_total_records (event : Metro2Event ):
3138 event .total_tradelines = event .calculate_total_tradelines ()
3239 event .save ()
@@ -54,7 +61,7 @@ def associate_previous_records(event: Metro2Event, strategy: str = 'chunk'):
5461 except ValueError :
5562 chunk_method_associate_prior_records (event )
5663 elif strategy == 'skip' :
57- logger .info ("'Skip' option, was used ; skipping prior records step." )
64+ logger .info ("'Skip' option selected ; skipping prior records step." )
5865 else :
5966 logger .info (
6067 f"Invalid strategy input: { strategy } . "
@@ -66,12 +73,12 @@ def report_on_prior_record_outcome(event: Metro2Event):
6673 record_set = event .get_all_account_activity ()
6774 total_updated = record_set .filter (previous_values_id__isnull = False ).count ()
6875 logger .info (f"Records with a previous record associated: { total_updated :,} " )
69- total_not_updated = record_set .filter (previous_values_id__isnull = True ).count ()
70- logger .info (f"Records with NO previous record associated: { total_not_updated :,} " )
71-
7276 event .prior_records_associated = total_updated
7377 event .save ()
7478
79+ total_not_updated = record_set .filter (previous_values_id__isnull = True ).count ()
80+ logger .info (f"Records with NO previous record associated: { total_not_updated :,} " )
81+
7582
7683# Chunk strategy for associating prior records
7784##########################################################################
@@ -84,7 +91,11 @@ def report_on_prior_record_outcome(event: Metro2Event):
8491def chunk_method_associate_prior_records (event : Metro2Event , chunk_size = 100_000 ):
8592 logger = logging .getLogger ('parse_m2.chunk_method_associate_prior_records' )
8693 # Count the number of distinct account numbers
87- total_accts = event .accountactivity_set .values ('cons_acct_num' ).distinct ().count ()
94+ if event .total_accounts :
95+ total_accts = event .total_accounts
96+ else :
97+ total_accts = event .accountactivity_set .values (
98+ 'cons_acct_num' ).distinct ().count ()
8899
89100 # Use that to decide number of chunks
90101 q ,r = divmod (total_accts , chunk_size )
0 commit comments