ONUS Rejection Rate, Month X Rule wise breach summary, fill rate
Fri May 16 2025 10:27:34 GMT+0000 (Coordinated Universal Time)
Saved by @shubhangi.b
-- MONTH x CATEGORY X RULE wise Rejected txn & gmv, Attempted txn & gmv and Rejection rate DROP TABLE team_kingkong.onus_rej_rate_monthly; CREATE TABLE team_kingkong.onus_rej_rate_monthly AS WITH flattened as (SELECT DISTINCT mnth, txn_date, transactionid, strategy_name, actionrecommended, amt, case when m1.mid is not null then category else 'Others' end as business_category FROM (select transactionid , json_extract_scalar(actionrecommendedrules,'$.actionRecommendedRules[0]') as strategy_name , cast(eventAmount as double)/100 as amt , substr(cast(dateinserted as varchar), 1,7) as mnth , dateinserted as txn_date , paytmmerchantid , actionrecommended FROM cdp_risk_transform.maquette_flattened_onus_snapshot_v3 WHERE dl_last_updated BETWEEN date '2025-01-01' AND DATE'2025-07-08' AND SOURCE = 'PG') a left join (select * from team_kingkong.voc_mid_categorization where mid != '') m1 on a.paytmmerchantid = m1.mid) SELECT A.mnth, A.txn_date, A.business_category, A.strategy_name, A.rej_txns, A.rej_gmv, B.attempted_txns, B.attempted_gmv FROM (select mnth, txn_date , business_category , strategy_name , count(transactionid) as rej_txns , sum(amt) as rej_gmv from flattened WHERE actionrecommended = 'BLOCK' GROUP BY 1,2,3,4)A INNER JOIN (SELECT mnth, txn_date, business_category , count(transactionid) as attempted_txns , sum(amt) as attempted_gmv FROM flattened GROUP BY 1,2,3)B ON A.mnth = B.mnth AND A.business_category = B.business_category AND A.txn_date = B.txn_date; -- Rule X Monthly Breach rate SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'CCBP_attempt_Txn_user_1d_7d_30d' AS rule_name FROM team_kingkong.onus_CCBP_attempt_Txn_user_1d_7d_30d_breaches GROUP BY 1 -- UNION -- SELECT substr(cast(txn_date as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(txn_amount) as breach_amt -- , 'on_us_sbi_nb_limit' AS rule_name -- FROM team_kingkong.onus_on_us_sbi_nb_limit_breaches -- GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'CCBP_sucTxn_user_1d_7d_30d' AS rule_name FROM team_kingkong.onus_CCBP_sucTxn_user_1d_7d_30d_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'Fastag_TrustedUser_CCDC_Weekly_Monthly_limitCheck' AS rule_name FROM team_kingkong.onus_Fastag_TrustedUser_CCDC_Weekly_Monthly_limitCheck_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'Fastag_Trusted_VRN_CCDC_Weekly_Monthly_limitCheck' AS rule_name FROM team_kingkong.onus_Fastag_Trusted_VRN_CCDC_Weekly_Monthly_limitCheck_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'UtilityEventTxnLImit' AS rule_name FROM team_kingkong.onus_UtilityEventTxnLImit_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'on_us_loan_repayments_user_limits' AS rule_name FROM team_kingkong.onus_on_us_loan_repayments_user_limits_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'Fastag_NonTrustedUser_CCDC_Monthly_limitCheck' AS rule_name FROM team_kingkong.onus_Fastag_NonTrustedUser_CCDC_Monthly_limitCheck_breaches GROUP BY 1 UNION SELECT substr(cast(dateinserted as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt , 'CCBP_GMV_per_user_1d_7d_30d' AS rule_name FROM team_kingkong.onus_CCBP_GMV_per_user_1d_7d_30d_breaches GROUP BY 1; -- ONUS OVERALL BREACH RATE SELECT substr(cast(txn_date as varchar(30)), 1, 7) as year_month, COUNT(transactionid) as breach_cnt, SUM(amt) as breach_amt FROM (SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_CCBP_attempt_Txn_user_1d_7d_30d_breaches -- UNION -- SELECT DATE(dateinserted) AS txn_date, transactionid, amt -- FROM team_kingkong.onus_on_us_sbi_nb_limit_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_CCBP_sucTxn_user_1d_7d_30d_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_Fastag_TrustedUser_CCDC_Weekly_Monthly_limitCheck_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_Fastag_Trusted_VRN_CCDC_Weekly_Monthly_limitCheck_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_UtilityEventTxnLImit_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_on_us_loan_repayments_user_limits_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_Fastag_NonTrustedUser_CCDC_Monthly_limitCheck_breaches UNION SELECT DATE(dateinserted) AS txn_date, transactionid, amt FROM team_kingkong.onus_CCBP_GMV_per_user_1d_7d_30d_breaches ) GROUP BY 1; -- ONUS FILL RATE CREATE TABLE team_kingkong.onus_fill_rate AS WITH -- 1. onus maquette onus_maquette AS ( SELECT *, count(*) OVER () AS total_rows FROM cdp_risk_transform.maquette_flattened_onus_snapshot_v3 WHERE dl_last_updated > DATE(CURRENT_DATE - INTERVAL '7' DAY) ), -- 2. pplus async pplus_async AS ( SELECT *, count(*) OVER () AS total_rows FROM risk_maquette_data_async.pplus_payment_result_prod_async_snapshot_v3 WHERE dl_last_updated > DATE(CURRENT_DATE - INTERVAL '7' DAY) ) -- Fill Rate % for onus maquette SELECT 'cdp_risk_transform' as db_name, 'maquette_flattened_onus_snapshot_v3' as table_name, 'transactionid' as column_name, 100.0 * COUNT_IF(transactionid IS NOT NULL AND trim(transactionid) != '') / MAX(total_rows) AS fill_rate_pct FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'eventAmount', 100.0 * COUNT_IF(eventAmount IS NOT NULL AND trim(eventAmount) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'paytmmerchantid', 100.0 * COUNT_IF(paytmmerchantid IS NOT NULL AND trim(paytmmerchantid) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'actionrecommended', 100.0 * COUNT_IF(actionrecommended IS NOT NULL AND trim(actionrecommended) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'actionrecommendedrules', 100.0 * COUNT_IF(actionrecommendedrules IS NOT NULL AND trim(actionrecommendedrules) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'SOURCE', 100.0 * COUNT_IF(SOURCE IS NOT NULL AND trim(SOURCE) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'userid', 100.0 * COUNT_IF(userid IS NOT NULL AND trim(userid) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'paymethod', 100.0 * COUNT_IF(paymethod IS NOT NULL AND trim(paymethod) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'responsestatus', 100.0 * COUNT_IF(responsestatus IS NOT NULL AND trim(responsestatus) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'velocitytimestamp', 100.0 * COUNT_IF(velocitytimestamp IS NOT NULL AND trim(velocitytimestamp) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'eventid', 100.0 * COUNT_IF(eventid IS NOT NULL AND trim(eventid) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'apicodeoption', 100.0 * COUNT_IF(apicodeoption IS NOT NULL AND trim(apicodeoption) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'subscriberid', 100.0 * COUNT_IF(subscriberid IS NOT NULL AND trim(subscriberid) != '') / MAX(total_rows) FROM onus_maquette UNION ALL SELECT 'cdp_risk_transform', 'maquette_flattened_onus_snapshot_v3', 'amount', 100.0 * COUNT_IF(amount IS NOT NULL AND trim(amount) != '') / MAX(total_rows) FROM onus_maquette -- Fill Rate % for pplus async UNION ALL SELECT 'risk_maquette_data_async', 'pplus_payment_result_prod_async_snapshot_v3', 'eventlinkid', 100.0 * COUNT_IF(eventlinkid IS NOT NULL AND trim(eventlinkid) != '') / MAX(total_rows) FROM pplus_async;
Comments