From 366e10c8f968a6717868cc4d29d2503221ff0551 Mon Sep 17 00:00:00 2001 From: Oisin Date: Sun, 22 Feb 2026 13:54:25 +0000 Subject: [PATCH 1/5] Updated documentation --- doc/data_dictionary.csv | 12 ++++++------ doc/entity_relationship_diagram.drawio | 8 ++++---- doc/entity_relationship_diagram.jpg | Bin 54966 -> 55070 bytes 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/data_dictionary.csv b/doc/data_dictionary.csv index a0f3df4..ee5f362 100644 --- a/doc/data_dictionary.csv +++ b/doc/data_dictionary.csv @@ -1,7 +1,7 @@ Column Name,Data Type,Nullable,Example,Description userid,Integer,FALSE,2021010138044459,"A 16 digit unique user identifier number; constructed from registration date, registration iso numeric country code, and uid." -firstname,String,FALSE,kellen,The registered user firstname. -lastname,String,FALSE,mcgregor,The registered user lastname. +first_name,String,FALSE,kellen,The registered user first name. +last_name,String,FALSE,mcgregor,The registered user last name. registration_date,Date,FALSE,2021-01-13,The date the user registered on. registration_country_code,String,FALSE,FR,The user registered country code of residence. uid,Integer,FALSE,2127333684657263,A unique incremental id for the user. @@ -9,7 +9,7 @@ email_domain,String,FALSE,gmail.com,The domain of the registered user email addr device_hash,String,FALSE,5b386290c91e553e,The hashed device id the user used in the transaction. device_type,String,FALSE,Samsung Galaxy A32,The device type of the hashed device id the user used in the transaction. card_hash,String,TRUE,e00643bdd845feba,The hashed card id the user used in the transaction. -card_type,String,TRUE,visa,The card type of the hashed card id the user used in the transaction. +card_type,String,TRUE,Visa,"The card type of the hashed card id the user used in the transaction; one of ['Visa', 'Mastercard']." card_country_code,String,TRUE,ES,The card country code of the hashed card id the user used in the transaction. ip_hash,String,FALSE,1775d41b3788a941,The hashed ip address the user used in the transaction. ip_country_code,String,FALSE,PL,The ip address country code of the hashed ip address the user used in the transaction. @@ -17,7 +17,7 @@ application_hash,String,FALSE,a726fea0a21cfb47,The hashed application id the tra transaction_hash,String,FALSE,ced72c91695a15c6,The hashed id of the transaction. transaction_date,Date,FALSE,2021-01-20,The date of the transaction. transaction_amount,Float,FALSE,1.44,The transaction amount. -transaction_payment_method,String,TRUE,card,"The payment method used to complete the transaction; one of ['card', 'wallet', 'points']" -card_payment_channel,String,TRUE,paypal,"The payment channel the user used to complete the transaction; one of ['paypal', 'adyen', 'appstore', 'worldpay', 'docomo']." -transaction_status,String,FALSE,successful,"The status of the transaction; one of ['successful', 'pending', 'rejected']." +transaction_payment_method,String,TRUE,Card,"The payment method used to complete the transaction; one of ['Card', 'Wallet', 'Points']" +card_payment_channel,String,TRUE,PayPal,"The payment channel the user used to complete the transaction; one of ['PayPal', 'Adyen', 'AppStore', 'Worldpay', 'Docomo']." +transaction_status,String,FALSE,Successful,"The status of the transaction; one of ['Successful', 'Pending', 'Rejected']." transaction_error_code,String,TRUE,E902:AuthenicationFailure,"The associated error code if the transaction was rejected; one of ['E900:ConnectionTimeout', 'E901:SuspectedFraud', 'E902:AuthenicationFailure', 'E903:UserCancelled', 'E904:InsufficientFunds']." diff --git a/doc/entity_relationship_diagram.drawio b/doc/entity_relationship_diagram.drawio index 0632cea..eb67953 100644 --- a/doc/entity_relationship_diagram.drawio +++ b/doc/entity_relationship_diagram.drawio @@ -1,6 +1,6 @@ - + - + @@ -379,7 +379,7 @@ - + @@ -392,7 +392,7 @@ - + diff --git a/doc/entity_relationship_diagram.jpg b/doc/entity_relationship_diagram.jpg index ec657352c91917add5e6271a2099aa7b420ab8d6..961e20ca5b3fdc775dfafaf0c0bf222a8780306a 100644 GIT binary patch delta 38737 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 delta 38117 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 Date: Sun, 22 Feb 2026 14:05:50 +0000 Subject: [PATCH 2/5] Added .cmd file for generating kaggle release data from --- generator/exeKaggle.cmd | 1 + 1 file changed, 1 insertion(+) create mode 100644 generator/exeKaggle.cmd diff --git a/generator/exeKaggle.cmd b/generator/exeKaggle.cmd new file mode 100644 index 0000000..05597eb --- /dev/null +++ b/generator/exeKaggle.cmd @@ -0,0 +1 @@ +call uv run main.py --n_users 13000 --use_random_seed 1 --n_itr 2 --is_release \ No newline at end of file From 07348de8d534e64c6549114ae3e72a81db553a38 Mon Sep 17 00:00:00 2001 From: Oisin Date: Sun, 22 Feb 2026 14:06:57 +0000 Subject: [PATCH 3/5] Added is_release parameter logic to drop itr_hash --- generator/cons.py | 1 + generator/main.py | 4 ++++ generator/utilities/commandline_interface.py | 4 ++++ 3 files changed, 9 insertions(+) diff --git a/generator/cons.py b/generator/cons.py index 0f25067..2cfd4cf 100644 --- a/generator/cons.py +++ b/generator/cons.py @@ -56,6 +56,7 @@ default_registration_end_date = (date_today - datetime.timedelta(days=366)).strftime(date_date_strftime) default_transaction_start_date = (date_today - datetime.timedelta(days=365)).strftime(date_date_strftime) default_transaction_end_date = date_today.strftime(date_date_strftime) +default_is_release = False # define default input parameters dictionary default_input_params_dict = { "n_users": default_n_users, diff --git a/generator/main.py b/generator/main.py index 36dde7b..c41cf2a 100644 --- a/generator/main.py +++ b/generator/main.py @@ -57,6 +57,10 @@ def main(input_params_dict: dict): # order results by userid and transaction date ascending user_data = user_data.sort_values(by = 'uid').reset_index(drop = True) trans_data = trans_data.sort_values(by = 'transaction_date').reset_index(drop = True) + # if data is for release drop itr_hash column + if input_params_dict['is_release']: + user_data = user_data.drop(columns=['itr_hash']) + trans_data = trans_data.drop(columns=['itr_hash']) # print out head and shape of data logging.info(f'RandomTeleComUsersData.shape: {user_data.shape}') logging.info(f'RandomTeleComTransData.shape: {trans_data.shape}') diff --git a/generator/utilities/commandline_interface.py b/generator/utilities/commandline_interface.py index 867f866..ddbbae5 100644 --- a/generator/utilities/commandline_interface.py +++ b/generator/utilities/commandline_interface.py @@ -31,6 +31,8 @@ def commandline_interface() -> Dict[str, object]: The start date for transactions. transaction_end_date : str The end date for transactions. + is_release : bool + Whether the data being generated is for release Returns ------- @@ -48,6 +50,7 @@ def commandline_interface() -> Dict[str, object]: parser.add_argument("--registration_end_date", action="store", dest="registration_end_date", type=str, default=cons.default_registration_end_date, help="String, the end date for registrations",) parser.add_argument("--transaction_start_date", action="store", dest="transaction_start_date", type=str, default=cons.default_transaction_start_date, help="String, the start date for transactions",) parser.add_argument("--transaction_end_date", action="store", dest="transaction_end_date", type=str, default=cons.default_transaction_end_date, help="String, the end date for transactions",) + parser.add_argument("--is_release", action="store_true", dest="is_release", default=cons.default_is_release, help="Bool, whether the data being generated is for release",) # create an output dictionary to hold the results input_params_dict = cons.default_input_params_dict.copy() # extract input arguments @@ -61,4 +64,5 @@ def commandline_interface() -> Dict[str, object]: input_params_dict["registration_end_date"] = args.registration_end_date input_params_dict["transaction_start_date"] = args.transaction_start_date input_params_dict["transaction_end_date"] = args.transaction_end_date + input_params_dict["is_release"] = args.is_release return input_params_dict From 37650d7127a44219ceaabcbc24c9c77ce8be778a Mon Sep 17 00:00:00 2001 From: Oisin Date: Sun, 22 Feb 2026 14:07:13 +0000 Subject: [PATCH 4/5] Removed commented code --- generator/exeMain.cmd | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/generator/exeMain.cmd b/generator/exeMain.cmd index d338dde..edb3a72 100644 --- a/generator/exeMain.cmd +++ b/generator/exeMain.cmd @@ -1,2 +1 @@ -call uv run main.py --n_users 100 --use_random_seed 1 --n_itr 1 -:: call uv run main.py --n_users 13000 --use_random_seed 1 --n_itr 2 \ No newline at end of file +call uv run main.py --n_users 100 --use_random_seed 1 --n_itr 1 \ No newline at end of file From 286ecd7b37b3cd16a8a0c154c92c04a30a7c7eae Mon Sep 17 00:00:00 2001 From: Oisin Date: Sun, 22 Feb 2026 14:07:34 +0000 Subject: [PATCH 5/5] Updated min card hash to be at least 0 --- generator/qa/Uids.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/generator/qa/Uids.py b/generator/qa/Uids.py index 32b653d..9fcbb80 100644 --- a/generator/qa/Uids.py +++ b/generator/qa/Uids.py @@ -93,7 +93,7 @@ def unique_cards(self): nunique_cards_per_uid = self.data.groupby(by='uid', dropna=False, as_index=False).agg({'card_hash':'nunique'}).sort_values(by=['card_hash']) # test assertions assert nunique_cards_per_uid['card_hash'].max() <= 20 - assert nunique_cards_per_uid['card_hash'].min() == 0 + assert nunique_cards_per_uid['card_hash'].min() >= 0 assert self.data['card_hash'].isnull().any() if self.show_plots: # plot distribution