System save at 23/05/2025 19:01 by user_client2024

This commit is contained in:
user_client2024 2025-05-23 13:31:14 +00:00
parent a73e5758e1
commit 0ecf48e442
3 changed files with 278 additions and 346 deletions

View File

@ -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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Focal_id</th>\n",
" <th>Cash_deposit_total</th>\n",
" <th>Cash_deposit_count</th>\n",
" <th>Segment</th>\n",
" <th>Risk</th>\n",
" <th>SAR_FLAG</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PN469304</td>\n",
" <td>8049952.0</td>\n",
" <td>141</td>\n",
" <td>Mass Market</td>\n",
" <td>High Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>PN605743</td>\n",
" <td>9766101.0</td>\n",
" <td>175</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>PN399215</td>\n",
" <td>8469943.0</td>\n",
" <td>164</td>\n",
" <td>Mass Market</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>PN175020</td>\n",
" <td>17724959.0</td>\n",
" <td>313</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>PN345085</td>\n",
" <td>7518628.0</td>\n",
" <td>124</td>\n",
" <td>Others</td>\n",
" <td>Medium Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9005</th>\n",
" <td>PN660329</td>\n",
" <td>8528178.0</td>\n",
" <td>141</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9006</th>\n",
" <td>PN336833</td>\n",
" <td>8475036.0</td>\n",
" <td>150</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9007</th>\n",
" <td>PN428534</td>\n",
" <td>7871170.0</td>\n",
" <td>129</td>\n",
" <td>Priority Banking</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9008</th>\n",
" <td>PN101660</td>\n",
" <td>8450309.0</td>\n",
" <td>142</td>\n",
" <td>Mass Market</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9009</th>\n",
" <td>PN198641</td>\n",
" <td>8690226.0</td>\n",
" <td>166</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9010 rows × 6 columns</p>\n",
"</div>"
],
"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()"

View File

@ -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": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Focal_id</th>\n",
" <th>Cash_deposit_total</th>\n",
" <th>Cash_deposit_count</th>\n",
" <th>Segment</th>\n",
" <th>Risk</th>\n",
" <th>SAR_FLAG</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>PN469304</td>\n",
" <td>8049952.0</td>\n",
" <td>141</td>\n",
" <td>Mass Market</td>\n",
" <td>High Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>PN605743</td>\n",
" <td>9766101.0</td>\n",
" <td>175</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>PN399215</td>\n",
" <td>8469943.0</td>\n",
" <td>164</td>\n",
" <td>Mass Market</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>PN175020</td>\n",
" <td>17724959.0</td>\n",
" <td>313</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>PN345085</td>\n",
" <td>7518628.0</td>\n",
" <td>124</td>\n",
" <td>Others</td>\n",
" <td>Medium Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9005</th>\n",
" <td>PN660329</td>\n",
" <td>8528178.0</td>\n",
" <td>141</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9006</th>\n",
" <td>PN336833</td>\n",
" <td>8475036.0</td>\n",
" <td>150</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9007</th>\n",
" <td>PN428534</td>\n",
" <td>7871170.0</td>\n",
" <td>129</td>\n",
" <td>Priority Banking</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9008</th>\n",
" <td>PN101660</td>\n",
" <td>8450309.0</td>\n",
" <td>142</td>\n",
" <td>Mass Market</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9009</th>\n",
" <td>PN198641</td>\n",
" <td>8690226.0</td>\n",
" <td>166</td>\n",
" <td>Others</td>\n",
" <td>Low Risk</td>\n",
" <td>N</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>9010 rows × 6 columns</p>\n",
"</div>"
],
"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()"

90
main.py
View File

@ -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()