{ "cells": [ { "cell_type": "code", "execution_count": 2, "id": "e706cfb0-2234-4c4c-95d8-d1968f656aa0", "metadata": { "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "query = \"\"\"\n", " select final.CUSTOMER_NUMBER_main as Focal_id,\n", " final.Credit_transaction_amount,\n", " final.Total_no_of_credit_transactions,\n", " final.Debit_transaction_amount,\n", " final.Total_no_of_debit_transactions,\n", " final.SEGMENT,\n", " final.RISK,\n", " final.SAR_FLAG\n", " from \n", " (\n", " (\n", " select subquery.CUSTOMER_NUMBER_1 as CUSTOMER_NUMBER_main,\n", " subquery.Credit_transaction_amount,\n", " subquery.Total_no_of_credit_transactions,\n", " case\n", " when subquery.Debit_transaction_amount is NULL then 0\n", " else Debit_transaction_amount\n", " end as Debit_transaction_amount,\n", " case\n", " when subquery.Total_no_of_debit_transactions is NULL then 0\n", " else Total_no_of_debit_transactions\n", " end as Total_no_of_debit_transactions\n", " from \n", " (\n", " (\n", " select customer_number as CUSTOMER_NUMBER_1, \n", " sum(transaction_amount) as Credit_transaction_amount, \n", " count(*) as Total_no_of_credit_transactions\n", " from \n", " (\n", " select * \n", " from {trans_data} trans_table left join {acc_data} acc_table\n", " on trans_table.benef_account_number = acc_table.account_number\n", " )\n", " where account_number not in ('None')\n", " group by 1\n", " ) credit left join\n", " (\n", " select customer_number as CUSTOMER_NUMBER_2, \n", " sum(transaction_amount) as Debit_transaction_amount, \n", " count(*) as Total_no_of_debit_transactions\n", " from \n", " (\n", " select * \n", " from {trans_data} trans_table left join {acc_data} acc_table\n", " on trans_table.orig_account_number = acc_table.account_number\n", " )\n", " where account_number not in ('None')\n", " group by 1\n", " ) debit on credit.CUSTOMER_NUMBER_1 = debit.CUSTOMER_NUMBER_2 \n", " ) subquery\n", " ) main left join \n", " (\n", " select subquery.CUSTOMER_NUMBER_3 as CUSTOMER_NUMBER_cust,\n", " subquery.SEGMENT,\n", " subquery.RISK,\n", " case\n", " when subquery.SAR_FLAG is NULL then 'N'\n", " else subquery.SAR_FLAG\n", " end as SAR_FLAG \n", " from\n", " (\n", " (\n", " select customer_number as CUSTOMER_NUMBER_3, \n", " business_segment as SEGMENT,\n", " case\n", " when RISK_CLASSIFICATION = 1 then 'Low Risk'\n", " when RISK_CLASSIFICATION = 2 then 'Medium Risk'\n", " when RISK_CLASSIFICATION = 3 then 'High Risk'\n", " else 'Unknown Risk'\n", " end AS RISK\n", " from {cust_data}\n", " ) cd left join\n", " (\n", " select customer_number as CUSTOMER_NUMBER_4, \n", " sar_flag as SAR_FLAG\n", " from {alert_data}\n", " ) ad on cd.CUSTOMER_NUMBER_3 = ad.CUSTOMER_NUMBER_4\n", " ) subquery\n", " ) cust_alert on cust_alert.CUSTOMER_NUMBER_cust = main.CUSTOMER_NUMBER_main\n", " ) final\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 = [\"Focal_id\", \"Credit_transaction_amount\", \"Total_no_of_credit_transactions\",\n", " \"Debit_transaction_amount\", \"Total_no_of_debit_transactions\",\n", " \"Segment\", \"Risk\", \"SAR_FLAG\"]\n", " df = pd.DataFrame(row_list, columns = cols)\n", " return df" ] }, { "cell_type": "code", "execution_count": 3, "id": "741546f6-df8f-4578-bbd2-79aa38a98c5b", "metadata": { "tags": [] }, "outputs": [ { "data": { "text/html": [ "
| \n", " | Focal_id | \n", "Credit_transaction_amount | \n", "Total_no_of_credit_transactions | \n", "Debit_transaction_amount | \n", "Total_no_of_debit_transactions | \n", "Segment | \n", "Risk | \n", "SAR_FLAG | \n", "
|---|---|---|---|---|---|---|---|---|
| 0 | \n", "PN182121 | \n", "1.644268e+09 | \n", "1168 | \n", "1.717572e+09 | \n", "1198 | \n", "SME | \n", "Low Risk | \n", "N | \n", "
| 1 | \n", "PN476208 | \n", "2.792031e+09 | \n", "1993 | \n", "2.777591e+09 | \n", "2010 | \n", "Whole Sale Banking | \n", "Low Risk | \n", "N | \n", "
| 2 | \n", "PN413985 | \n", "3.621153e+09 | \n", "2438 | \n", "3.290559e+09 | \n", "2375 | \n", "SME | \n", "High Risk | \n", "N | \n", "
| 3 | \n", "PN906130 | \n", "1.666937e+09 | \n", "1222 | \n", "1.756952e+09 | \n", "1177 | \n", "Whole Sale Banking | \n", "Low Risk | \n", "N | \n", "
| 4 | \n", "PN446914 | \n", "3.379522e+09 | \n", "2378 | \n", "3.512353e+09 | \n", "2454 | \n", "SME | \n", "Low Risk | \n", "N | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 10009 | \n", "PN723207 | \n", "4.765892e+07 | \n", "298 | \n", "2.651826e+07 | \n", "378 | \n", "Ultra High NetWorth | \n", "Low Risk | \n", "N | \n", "
| 10010 | \n", "PN860773 | \n", "3.537672e+07 | \n", "256 | \n", "2.578618e+07 | \n", "363 | \n", "Others | \n", "Low Risk | \n", "N | \n", "
| 10011 | \n", "PN741843 | \n", "3.787797e+07 | \n", "255 | \n", "2.909541e+07 | \n", "346 | \n", "Priority Banking | \n", "Medium Risk | \n", "N | \n", "
| 10012 | \n", "PN588393 | \n", "3.567320e+07 | \n", "254 | \n", "2.676294e+07 | \n", "391 | \n", "Mass Market | \n", "Low Risk | \n", "N | \n", "
| 10013 | \n", "PN168372 | \n", "3.166679e+07 | \n", "253 | \n", "2.707380e+07 | \n", "355 | \n", "Mass Market | \n", "Low Risk | \n", "N | \n", "
10014 rows × 8 columns
\n", "