{ "cells": [ { "cell_type": "code", "execution_count": 1, "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", "# CAST(final.Cash_deposit_total AS DECIMAL(18, 2)) AS Cash_deposit_total,\n", "# final.Cash_deposit_count,\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.Cash_deposit_total,\n", "# subquery.Cash_deposit_count\n", "# from \n", "# (\n", "# select customer_number as CUSTOMER_NUMBER_1, \n", "# sum(transaction_amount) as Cash_deposit_total, \n", "# count(*) as Cash_deposit_count\n", "# from \n", "# (\n", "# select * \n", "# from {trans_data} trans_table \n", "# left join {acc_data} acc_table\n", "# on trans_table.benef_account_number = acc_table.account_number\n", "# ) trans\n", "# where account_number not in ('None')\n", "# and transaction_desc = 'CASH RELATED TRANSACTION'\n", "# group by customer_number\n", "# ) subquery\n", "# ) main \n", "# left join \n", "# (\n", "# select cd.CUSTOMER_NUMBER_3 as CUSTOMER_NUMBER_cust,\n", "# cd.SEGMENT,\n", "# cd.RISK,\n", "# case\n", "# when ad.SAR_FLAG is NULL then 'N'\n", "# else ad.SAR_FLAG\n", "# end as SAR_FLAG \n", "# from\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 \n", "# left join\n", "# (\n", "# select customer_number as CUSTOMER_NUMBER_4, \n", "# sar_flag as SAR_FLAG\n", "# from {alert_data}\n", "# ) ad \n", "# on cd.CUSTOMER_NUMBER_3 = ad.CUSTOMER_NUMBER_4\n", "# ) as cust_alert\n", "# on cust_alert.CUSTOMER_NUMBER_cust = main.CUSTOMER_NUMBER_main\n", "# ) as 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\", \"Cash_deposit_total\", \"Cash_deposit_count\",\n", "# \"Segment\", \"Risk\", \"SAR_FLAG\"]\n", "# df = pd.DataFrame(row_list, columns = cols)\n", "# df[\"Cash_deposit_total\"] = df[\"Cash_deposit_total\"].astype(float)\n", "# return df" ] }, { "cell_type": "code", "execution_count": 5, "id": "b6c85de2-6a47-4109-8885-c138c289ec25", "metadata": { "tags": [] }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "query = \"\"\"\n", " SELECT \n", " t.transaction_key,\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", "\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_key\",\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", " \"Focal_id\",\n", " \"customer_name\",\n", " \"date_of_birth\",\n", " \"nationality\",\n", " \"Segment\",\n", " \"Risk\", \n", " \"SAR_FLAG\"\n", " ]\n", " df = pd.DataFrame(row_list, columns = cols)\n", " return df" ] }, { "cell_type": "code", "execution_count": 4, "id": "1f20337b-8116-47e5-8743-1ba41e2df819", "metadata": { "tags": [] }, "outputs": [], "source": [ "# sen = Scenario()\n", "# sen.logic()" ] }, { "cell_type": "code", "execution_count": null, "id": "6de62b37-00d1-4c88-b27b-9a70e05add91", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.8" } }, "nbformat": 4, "nbformat_minor": 5 }