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",
- " Focal_id | \n",
- " Cash_deposit_total | \n",
- " Cash_deposit_count | \n",
- " Segment | \n",
- " Risk | \n",
- " SAR_FLAG | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " PN469304 | \n",
- " 8049952.0 | \n",
- " 141 | \n",
- " Mass Market | \n",
- " High Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " PN605743 | \n",
- " 9766101.0 | \n",
- " 175 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " PN399215 | \n",
- " 8469943.0 | \n",
- " 164 | \n",
- " Mass Market | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " PN175020 | \n",
- " 17724959.0 | \n",
- " 313 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " PN345085 | \n",
- " 7518628.0 | \n",
- " 124 | \n",
- " Others | \n",
- " Medium Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 9005 | \n",
- " PN660329 | \n",
- " 8528178.0 | \n",
- " 141 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9006 | \n",
- " PN336833 | \n",
- " 8475036.0 | \n",
- " 150 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9007 | \n",
- " PN428534 | \n",
- " 7871170.0 | \n",
- " 129 | \n",
- " Priority Banking | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9008 | \n",
- " PN101660 | \n",
- " 8450309.0 | \n",
- " 142 | \n",
- " Mass Market | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9009 | \n",
- " PN198641 | \n",
- " 8690226.0 | \n",
- " 166 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- "
\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",
- " Focal_id | \n",
- " Cash_deposit_total | \n",
- " Cash_deposit_count | \n",
- " Segment | \n",
- " Risk | \n",
- " SAR_FLAG | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " | 0 | \n",
- " PN469304 | \n",
- " 8049952.0 | \n",
- " 141 | \n",
- " Mass Market | \n",
- " High Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 1 | \n",
- " PN605743 | \n",
- " 9766101.0 | \n",
- " 175 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 2 | \n",
- " PN399215 | \n",
- " 8469943.0 | \n",
- " 164 | \n",
- " Mass Market | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 3 | \n",
- " PN175020 | \n",
- " 17724959.0 | \n",
- " 313 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 4 | \n",
- " PN345085 | \n",
- " 7518628.0 | \n",
- " 124 | \n",
- " Others | \n",
- " Medium Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- " ... | \n",
- "
\n",
- " \n",
- " | 9005 | \n",
- " PN660329 | \n",
- " 8528178.0 | \n",
- " 141 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9006 | \n",
- " PN336833 | \n",
- " 8475036.0 | \n",
- " 150 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9007 | \n",
- " PN428534 | \n",
- " 7871170.0 | \n",
- " 129 | \n",
- " Priority Banking | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9008 | \n",
- " PN101660 | \n",
- " 8450309.0 | \n",
- " 142 | \n",
- " Mass Market | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- " | 9009 | \n",
- " PN198641 | \n",
- " 8690226.0 | \n",
- " 166 | \n",
- " Others | \n",
- " Low Risk | \n",
- " N | \n",
- "
\n",
- " \n",
- "
\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()