From 0ecf48e442d81b2abf1b44959c0a3253cfd0e09a Mon Sep 17 00:00:00 2001 From: user_client2024 Date: Fri, 23 May 2025 13:31:14 +0000 Subject: [PATCH] System save at 23/05/2025 19:01 by user_client2024 --- .ipynb_checkpoints/main-checkpoint.ipynb | 267 ++++++++--------------- main.ipynb | 267 ++++++++--------------- main.py | 90 +++++++- 3 files changed, 278 insertions(+), 346 deletions(-) diff --git a/.ipynb_checkpoints/main-checkpoint.ipynb b/.ipynb_checkpoints/main-checkpoint.ipynb index 1c3643e..90f3c1f 100644 --- a/.ipynb_checkpoints/main-checkpoint.ipynb +++ b/.ipynb_checkpoints/main-checkpoint.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "e706cfb0-2234-4c4c-95d8-d1968f656aa0", "metadata": { "tags": [] @@ -94,181 +94,104 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, + "id": "b6c85de2-6a47-4109-8885-c138c289ec25", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# import pandas as pd\n", + "\n", + "# query = \"\"\"\n", + "# SELECT \n", + "# t.transaction_id,\n", + "# t.transaction_date,\n", + "# t.transaction_amount,\n", + "# t.transaction_desc,\n", + "# t.benef_account_number,\n", + "\n", + "# -- Account data\n", + "# a.account_number,\n", + "# a.customer_number AS acc_customer_number,\n", + "# a.account_type,\n", + "# a.branch_code,\n", + "\n", + "# -- Party data\n", + "# p.customer_number AS party_customer_number,\n", + "# p.customer_name,\n", + "# p.date_of_birth,\n", + "# p.nationality,\n", + "# p.business_segment,\n", + "# CASE\n", + "# WHEN p.risk_classification = 1 THEN 'Low Risk'\n", + "# WHEN p.risk_classification = 2 THEN 'Medium Risk'\n", + "# WHEN p.risk_classification = 3 THEN 'High Risk'\n", + "# ELSE 'Unknown Risk'\n", + "# END AS risk_level,\n", + "\n", + "# -- Alert data\n", + "# COALESCE(al.sar_flag, 'N') AS sar_flag\n", + "\n", + "# FROM {trans_data} t\n", + "\n", + "# -- Join with account data on beneficiary account\n", + "# LEFT JOIN {acc_data} a\n", + "# ON t.benef_account_number = a.account_number\n", + "\n", + "# -- Join with party/customer data using account's customer number\n", + "# LEFT JOIN {cust_data} p\n", + "# ON a.customer_number = p.customer_number\n", + "\n", + "# -- Join with alert data using party's customer number\n", + "# LEFT JOIN {alert_data} al\n", + "# ON p.customer_number = al.customer_number\n", + "\n", + "# WHERE a.account_number IS NOT NULL\n", + "# limit 100\n", + "# \"\"\"\n", + "\n", + "# from tms_data_interface import SQLQueryInterface\n", + "\n", + "# class Scenario:\n", + "# seq = SQLQueryInterface(schema=\"transactionschema\")\n", + "\n", + "# def logic(self, **kwargs):\n", + "# row_list = self.seq.execute_raw(query.format(trans_data=\"transaction10m\",\n", + "# cust_data=\"customer_data_v1\",\n", + "# acc_data=\"account_data_v1\",\n", + "# alert_data=\"alert_data_v1\")\n", + "# )\n", + "# cols = [\n", + "# \"transaction_id\",\n", + "# \"transaction_date\",\n", + "# \"transaction_amount\",\n", + "# \"transaction_desc\",\n", + "# \"benef_account_number\",\n", + "# \"account_number\",\n", + "# \"acc_customer_number\",\n", + "# \"account_type\",\n", + "# \"branch_code\",\n", + "# \"party_customer_number\",\n", + "# \"customer_name\",\n", + "# \"date_of_birth\",\n", + "# \"nationality\",\n", + "# \"business_segment\",\n", + "# \"risk_level\",\n", + "# \"sar_flag\"\n", + "# ]\n", + "# df = pd.DataFrame(row_list, columns = cols)\n", + "# return df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "id": "1f20337b-8116-47e5-8743-1ba41e2df819", "metadata": { "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Focal_idCash_deposit_totalCash_deposit_countSegmentRiskSAR_FLAG
0PN4693048049952.0141Mass MarketHigh RiskN
1PN6057439766101.0175OthersLow RiskN
2PN3992158469943.0164Mass MarketLow RiskN
3PN17502017724959.0313OthersLow RiskN
4PN3450857518628.0124OthersMedium RiskN
.....................
9005PN6603298528178.0141OthersLow RiskN
9006PN3368338475036.0150OthersLow RiskN
9007PN4285347871170.0129Priority BankingLow RiskN
9008PN1016608450309.0142Mass MarketLow RiskN
9009PN1986418690226.0166OthersLow RiskN
\n", - "

9010 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " Focal_id Cash_deposit_total Cash_deposit_count Segment \\\n", - "0 PN469304 8049952.0 141 Mass Market \n", - "1 PN605743 9766101.0 175 Others \n", - "2 PN399215 8469943.0 164 Mass Market \n", - "3 PN175020 17724959.0 313 Others \n", - "4 PN345085 7518628.0 124 Others \n", - "... ... ... ... ... \n", - "9005 PN660329 8528178.0 141 Others \n", - "9006 PN336833 8475036.0 150 Others \n", - "9007 PN428534 7871170.0 129 Priority Banking \n", - "9008 PN101660 8450309.0 142 Mass Market \n", - "9009 PN198641 8690226.0 166 Others \n", - "\n", - " Risk SAR_FLAG \n", - "0 High Risk N \n", - "1 Low Risk N \n", - "2 Low Risk N \n", - "3 Low Risk N \n", - "4 Medium Risk N \n", - "... ... ... \n", - "9005 Low Risk N \n", - "9006 Low Risk N \n", - "9007 Low Risk N \n", - "9008 Low Risk N \n", - "9009 Low Risk N \n", - "\n", - "[9010 rows x 6 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# sen = Scenario()\n", "# sen.logic()" diff --git a/main.ipynb b/main.ipynb index 1c3643e..90f3c1f 100644 --- a/main.ipynb +++ b/main.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "id": "e706cfb0-2234-4c4c-95d8-d1968f656aa0", "metadata": { "tags": [] @@ -94,181 +94,104 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, + "id": "b6c85de2-6a47-4109-8885-c138c289ec25", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# import pandas as pd\n", + "\n", + "# query = \"\"\"\n", + "# SELECT \n", + "# t.transaction_id,\n", + "# t.transaction_date,\n", + "# t.transaction_amount,\n", + "# t.transaction_desc,\n", + "# t.benef_account_number,\n", + "\n", + "# -- Account data\n", + "# a.account_number,\n", + "# a.customer_number AS acc_customer_number,\n", + "# a.account_type,\n", + "# a.branch_code,\n", + "\n", + "# -- Party data\n", + "# p.customer_number AS party_customer_number,\n", + "# p.customer_name,\n", + "# p.date_of_birth,\n", + "# p.nationality,\n", + "# p.business_segment,\n", + "# CASE\n", + "# WHEN p.risk_classification = 1 THEN 'Low Risk'\n", + "# WHEN p.risk_classification = 2 THEN 'Medium Risk'\n", + "# WHEN p.risk_classification = 3 THEN 'High Risk'\n", + "# ELSE 'Unknown Risk'\n", + "# END AS risk_level,\n", + "\n", + "# -- Alert data\n", + "# COALESCE(al.sar_flag, 'N') AS sar_flag\n", + "\n", + "# FROM {trans_data} t\n", + "\n", + "# -- Join with account data on beneficiary account\n", + "# LEFT JOIN {acc_data} a\n", + "# ON t.benef_account_number = a.account_number\n", + "\n", + "# -- Join with party/customer data using account's customer number\n", + "# LEFT JOIN {cust_data} p\n", + "# ON a.customer_number = p.customer_number\n", + "\n", + "# -- Join with alert data using party's customer number\n", + "# LEFT JOIN {alert_data} al\n", + "# ON p.customer_number = al.customer_number\n", + "\n", + "# WHERE a.account_number IS NOT NULL\n", + "# limit 100\n", + "# \"\"\"\n", + "\n", + "# from tms_data_interface import SQLQueryInterface\n", + "\n", + "# class Scenario:\n", + "# seq = SQLQueryInterface(schema=\"transactionschema\")\n", + "\n", + "# def logic(self, **kwargs):\n", + "# row_list = self.seq.execute_raw(query.format(trans_data=\"transaction10m\",\n", + "# cust_data=\"customer_data_v1\",\n", + "# acc_data=\"account_data_v1\",\n", + "# alert_data=\"alert_data_v1\")\n", + "# )\n", + "# cols = [\n", + "# \"transaction_id\",\n", + "# \"transaction_date\",\n", + "# \"transaction_amount\",\n", + "# \"transaction_desc\",\n", + "# \"benef_account_number\",\n", + "# \"account_number\",\n", + "# \"acc_customer_number\",\n", + "# \"account_type\",\n", + "# \"branch_code\",\n", + "# \"party_customer_number\",\n", + "# \"customer_name\",\n", + "# \"date_of_birth\",\n", + "# \"nationality\",\n", + "# \"business_segment\",\n", + "# \"risk_level\",\n", + "# \"sar_flag\"\n", + "# ]\n", + "# df = pd.DataFrame(row_list, columns = cols)\n", + "# return df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, "id": "1f20337b-8116-47e5-8743-1ba41e2df819", "metadata": { "tags": [] }, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Focal_idCash_deposit_totalCash_deposit_countSegmentRiskSAR_FLAG
0PN4693048049952.0141Mass MarketHigh RiskN
1PN6057439766101.0175OthersLow RiskN
2PN3992158469943.0164Mass MarketLow RiskN
3PN17502017724959.0313OthersLow RiskN
4PN3450857518628.0124OthersMedium RiskN
.....................
9005PN6603298528178.0141OthersLow RiskN
9006PN3368338475036.0150OthersLow RiskN
9007PN4285347871170.0129Priority BankingLow RiskN
9008PN1016608450309.0142Mass MarketLow RiskN
9009PN1986418690226.0166OthersLow RiskN
\n", - "

9010 rows × 6 columns

\n", - "
" - ], - "text/plain": [ - " Focal_id Cash_deposit_total Cash_deposit_count Segment \\\n", - "0 PN469304 8049952.0 141 Mass Market \n", - "1 PN605743 9766101.0 175 Others \n", - "2 PN399215 8469943.0 164 Mass Market \n", - "3 PN175020 17724959.0 313 Others \n", - "4 PN345085 7518628.0 124 Others \n", - "... ... ... ... ... \n", - "9005 PN660329 8528178.0 141 Others \n", - "9006 PN336833 8475036.0 150 Others \n", - "9007 PN428534 7871170.0 129 Priority Banking \n", - "9008 PN101660 8450309.0 142 Mass Market \n", - "9009 PN198641 8690226.0 166 Others \n", - "\n", - " Risk SAR_FLAG \n", - "0 High Risk N \n", - "1 Low Risk N \n", - "2 Low Risk N \n", - "3 Low Risk N \n", - "4 Medium Risk N \n", - "... ... ... \n", - "9005 Low Risk N \n", - "9006 Low Risk N \n", - "9007 Low Risk N \n", - "9008 Low Risk N \n", - "9009 Low Risk N \n", - "\n", - "[9010 rows x 6 columns]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "# sen = Scenario()\n", "# sen.logic()" diff --git a/main.py b/main.py index 121063e..7d20451 100644 --- a/main.py +++ b/main.py @@ -1,7 +1,7 @@ #!/usr/bin/env python # coding: utf-8 -# In[2]: +# In[3]: import pandas as pd @@ -87,7 +87,93 @@ class Scenario: return df -# In[3]: +# In[6]: + + +# import pandas as pd + +# query = """ +# SELECT +# t.transaction_id, +# t.transaction_date, +# t.transaction_amount, +# t.transaction_desc, +# t.benef_account_number, + +# -- Account data +# a.account_number, +# a.customer_number AS acc_customer_number, +# a.account_type, +# a.branch_code, + +# -- Party data +# p.customer_number AS party_customer_number, +# p.customer_name, +# p.date_of_birth, +# p.nationality, +# p.business_segment, +# CASE +# WHEN p.risk_classification = 1 THEN 'Low Risk' +# WHEN p.risk_classification = 2 THEN 'Medium Risk' +# WHEN p.risk_classification = 3 THEN 'High Risk' +# ELSE 'Unknown Risk' +# END AS risk_level, + +# -- Alert data +# COALESCE(al.sar_flag, 'N') AS sar_flag + +# FROM {trans_data} t + +# -- Join with account data on beneficiary account +# LEFT JOIN {acc_data} a +# ON t.benef_account_number = a.account_number + +# -- Join with party/customer data using account's customer number +# LEFT JOIN {cust_data} p +# ON a.customer_number = p.customer_number + +# -- Join with alert data using party's customer number +# LEFT JOIN {alert_data} al +# ON p.customer_number = al.customer_number + +# WHERE a.account_number IS NOT NULL +# limit 100 +# """ + +# from tms_data_interface import SQLQueryInterface + +# class Scenario: +# seq = SQLQueryInterface(schema="transactionschema") + +# def logic(self, **kwargs): +# row_list = self.seq.execute_raw(query.format(trans_data="transaction10m", +# cust_data="customer_data_v1", +# acc_data="account_data_v1", +# alert_data="alert_data_v1") +# ) +# cols = [ +# "transaction_id", +# "transaction_date", +# "transaction_amount", +# "transaction_desc", +# "benef_account_number", +# "account_number", +# "acc_customer_number", +# "account_type", +# "branch_code", +# "party_customer_number", +# "customer_name", +# "date_of_birth", +# "nationality", +# "business_segment", +# "risk_level", +# "sar_flag" +# ] +# df = pd.DataFrame(row_list, columns = cols) +# return df + + +# In[5]: # sen = Scenario()