in src/lambda/InvokeFraudEndpointLambda/lambda_function.py [0:0]
def lookup_features(credit_card_number, transaction_amount):
combined_agg_features = {}
# Initialize agg feature values
cc_num = '1111111111111111'
avg_amt_last_10m = 0
num_trans_last_10m = 0
avg_amt_last_1w = 0
num_trans_last_1w = 0
# Retrieve first set of aggregated features
cc_agg_feature_group = CC_AGG_FEATURE_GROUP
feature_names = ['cc_num', 'avg_amt_last_10m', 'num_trans_last_10m', 'trans_time']
agg_features = retrieve_aggregated_features(cc_agg_feature_group, credit_card_number, feature_names)
agg_evt_time = 0.0
if agg_features is not None:
cc_num = agg_features['cc_num']
avg_amt_last_10m = float(agg_features['avg_amt_last_10m'])
num_trans_last_10m = int(agg_features['num_trans_last_10m'])
agg_evt_time = float(agg_features['trans_time'])
# store agg features in dict
combined_agg_features.update(agg_features)
logging.debug(f'In> lookup_features: #1 Agg Features: \n {combined_agg_features}')
# Check cutoff condition before calling second Feature Group
cutoff_condition = eval_cutoff_window(agg_evt_time)
# Retrieve second set of aggregated features
batch_agg_features = None
if not cutoff_condition:
# Retrieve data from 'batch' agg feature group
cc_agg_batch_feature_group = CC_AGG_BATCH_FEATURE_GROUP
feature_names = ['cc_num', 'num_trans_last_1w', 'avg_amt_last_1w']
batch_agg_features = retrieve_aggregated_features(cc_agg_batch_feature_group, credit_card_number, feature_names)
if batch_agg_features is not None:
num_trans_last_1w = int(batch_agg_features['num_trans_last_1w'])
avg_amt_last_1w = float(batch_agg_features['avg_amt_last_1w'])
# store batch agg features in dict
combined_agg_features.update(batch_agg_features)
logging.debug(f'In> lookup_features: #2 Agg Features: \n {combined_agg_features}')
amt_ratio1, amt_ratio2, count_ratio = calc_ratios_for_inference(
transaction_amount, avg_amt_last_10m, avg_amt_last_1w,
num_trans_last_10m, num_trans_last_1w, cutoff_condition)
# Append ratios into dict
combined_agg_features['amt_ratio1'] = amt_ratio1
combined_agg_features['amt_ratio2'] = amt_ratio2
combined_agg_features['count_ratio'] = count_ratio
logging.debug(f'In> lookup_features: #3 Agg Features: \n {combined_agg_features}')
return combined_agg_features, cutoff_condition