Monthly ALERT: top 5 landlords based on highest tenants cnt

PHOTO EMBED

Thu Nov 03 2022 07:57:12 GMT+0000 (Coordinated Universal Time)

Saved by @shubhangi_burle

with base as
    (SELECT DISTINCT A.landlord
    , IF(B.phone_number IS NOT NULL, B.phone_number, NULL) AS landlord_phoneno
    , IF(C.reciver_vpa IS NOT NULL, C.reciver_vpa, NULL) AS landlord_vpa
    , IF(B.user_id IS NOT NULL, B.user_id, C.user_id) as landlord_user_id
    , A.sender
    , A.txn_id, A.amt, A.CC, A.day
    , A.month
    FROM
        (select distinct eventdata_merchantcontext_contactid as landlord
        , eventdata_transactionid AS txn_id
        ,eventdata_sender as sender
        ,eventdata_senderphone
        ,eventdata_totaltransactionamount/100 as amt
        ,eventdata_senderglobalcardid as CC
        ,month,day
        from foxtrot_stream.payment_backend_transact
        where 0 = 0
        AND year = year(date_sub ('2022-11-03', 15)) 
        AND month = month(date_sub ('2022-11-03', 15))
        AND eventtype = 'PAYMENT'
        AND eventdata_status = 'COMPLETED'
        AND eventdata_receiveruser = 'PHONEPERENTPAYMENT'
        AND eventdata_sendertype = 'INTERNAL_USER'
        AND eventdata_workflowtype = 'CONSUMER_TO_MERCHANT'
        AND eventdata_receiversubtype = 'ONLINE_MERCHANT'
        AND eventdata_receivertypeinrequest = 'MERCHANT'
        AND eventdata_receivertype = 'MERCHANT'
        AND ((LENGTH(eventdata_merchantcontext_contactid) = 10) 
            OR (eventdata_merchantcontext_contactid LIKE '%@ybl') 
            OR (eventdata_merchantcontext_contactid LIKE '%@ibl') 
            OR (eventdata_merchantcontext_contactid LIKE '%@axl')))A
    LEFT JOIN
        (SELECT DISTINCT user_ext_id AS user_id, phone_number
        FROM users.users
        WHERE blacklisted = 0)B
    ON A.landlord = B.phone_number
    LEFT JOIN
        (SELECT DISTINCT receiveruser as user_id, reciver_vpa
        FROM fraud.transaction_details_v3
        WHERE year(updated_date) = year(date_sub ('2022-11-03', 15))
        AND Month(updated_date) =  month(date_sub ('2022-11-03', 15))
        AND errorcode = 'SUCCESS' and pay_transaction_status = 'COMPLETED'
        AND ((reciver_vpa LIKE '%@ybl') OR (reciver_vpa LIKE '%@ibl') OR (reciver_vpa LIKE '%@axl')))C
    ON A.landlord = C.reciver_vpa)

SELECT DATE_SUB('2022-11-03',34) starting_date, DATE_SUB('2022-11-03',4) ending_date
,A.identifier identifier
,active_days active_days 
,'top_landlord_highest_tenants' red_flag
,'monthly' date_range
,'AML' `group`
,'FRA' `type`
,'Alerts' type_fra
,'User' issue_type
,'CC' sub_issue_type
,A.tenants comment
,A.totRentAmt value
,(case when B.identifier is null then 'New' else 'Repeat' end) as new_or_repeat
,'2022-11-03' run_date FROM
    (SELECT landlord_user_id as identifier
    , month
    , COUNT(DISTINCT sender) as tenants
    , SUM(amt) as totRentAmt
    , COUNT(DISTINCT day) as active_days 
    , row_number() OVER (PARTITION BY month ORDER BY COUNT(DISTINCT sender) DESC, SUM(amt) DESC) rn
    FROM base
    WHERE landlord_user_id IS NOT NULL
    GROUP BY landlord_user_id, month
    HAVING tenants > 1)A
LEFT JOIN
    (select DISTINCT identifier from fraud.aml_freshdesk_month)B
on A.identifier = B.identifier  
WHERE A.rn <= 5

-----------------------------------------------------------------------------
%jdbc(hive)
set tez.queue.name=default;
set hive.execution.engine=tez;

-- active in last 3 months too
with base as
    (SELECT DISTINCT A.landlord
    , IF(B.phone_number IS NOT NULL, B.phone_number, NULL) AS landlord_phoneno
    , IF(C.reciver_vpa IS NOT NULL, C.reciver_vpa, NULL) AS landlord_vpa
    , IF(B.user_id IS NOT NULL, B.user_id, C.user_id) as landlord_user_id
    , A.sender
    , A.txn_id, A.amt, A.CC, A.day
    , A.month, A.year
    FROM
        (select distinct eventdata_merchantcontext_contactid as landlord
        , eventdata_transactionid AS txn_id
        ,eventdata_sender as sender
        ,eventdata_senderphone
        ,eventdata_totaltransactionamount/100 as amt
        ,eventdata_senderglobalcardid as CC
        ,month,day, year
        from foxtrot_stream.payment_backend_transact
        where 0 = 0
        AND year IN (year(date_sub ('2022-12-03', 15)),  year(date_sub ('2022-12-03', 45)), year(date_sub ('2022-12-03', 75)), year(date_sub ('2022-12-03', 105)))
        AND month IN (month(date_sub ('2022-12-03', 15)),  month(date_sub ('2022-12-03', 45)), month(date_sub ('2022-12-03', 75)), month(date_sub ('2022-12-03', 105)))
        AND eventtype = 'PAYMENT'
        AND eventdata_status = 'COMPLETED'
        AND eventdata_receiveruser = 'PHONEPERENTPAYMENT'
        AND eventdata_sendertype = 'INTERNAL_USER'
        AND eventdata_workflowtype = 'CONSUMER_TO_MERCHANT'
        AND eventdata_receiversubtype = 'ONLINE_MERCHANT'
        AND eventdata_receivertypeinrequest = 'MERCHANT'
        AND eventdata_receivertype = 'MERCHANT'
        AND ((LENGTH(eventdata_merchantcontext_contactid) = 10) 
            OR (eventdata_merchantcontext_contactid LIKE '%@ybl') 
            OR (eventdata_merchantcontext_contactid LIKE '%@ibl') 
            OR (eventdata_merchantcontext_contactid LIKE '%@axl')))A
    LEFT JOIN
        (SELECT DISTINCT user_ext_id AS user_id, phone_number
        FROM users.users
        WHERE blacklisted = 0)B
    ON A.landlord = B.phone_number
    LEFT JOIN
        (SELECT DISTINCT receiveruser as user_id, reciver_vpa
        FROM fraud.transaction_details_v3
        WHERE year(updated_date) IN (year(date_sub ('2022-12-03', 15)),  year(date_sub ('2022-12-03', 45)), year(date_sub ('2022-12-03', 75)), year(date_sub ('2022-12-03', 105)))
        AND Month(updated_date) IN (month(date_sub ('2022-12-03', 15)),  month(date_sub ('2022-12-03', 45)), month(date_sub ('2022-12-03', 75)), month(date_sub ('2022-12-03', 105)))
        AND errorcode = 'SUCCESS' and pay_transaction_status = 'COMPLETED'
        AND ((reciver_vpa LIKE '%@ybl') OR (reciver_vpa LIKE '%@ibl') OR (reciver_vpa LIKE '%@axl')))C
    ON A.landlord = C.reciver_vpa)
 
SELECT DATE_SUB('2022-12-03',34) starting_date, DATE_SUB('2022-12-03',4) ending_date
,A.identifier identifier
,A.active_days active_days 
,'top_landlord_highest_tenants' red_flag
,'monthly' date_range
,'AML' `group`
,'FRA' `type`
,'Alerts' type_fra
,'User' issue_type
,'CC' sub_issue_type
,A.tenants comment
,A.totRentAmt value
,(case when (B.identifier is null AND D.identifier is null) then 'New' else 'Repeat' end) as new_or_repeat
,'2022-12-03' run_date FROM
    (SELECT landlord_user_id as identifier
    , month
    , COUNT(DISTINCT sender) as tenants
    , SUM(amt) as totRentAmt
    , COUNT(DISTINCT day) as active_days 
    , row_number() OVER (PARTITION BY month ORDER BY COUNT(DISTINCT sender) DESC, SUM(amt) DESC) rn
    FROM base
    WHERE year = year(date_sub ('2022-12-03', 15)) AND month = month(date_sub ('2022-12-03', 15))
    AND landlord_user_id IS NOT NULL
    GROUP BY landlord_user_id, month
    HAVING tenants > 3)A
INNER JOIN
    (SELECT identifier, COUNT(DISTINCT month) as months FROM
        (SELECT landlord_user_id as identifier
        , month
        , COUNT(DISTINCT sender) as tenants
        FROM base
        WHERE year IN (year(date_sub ('2022-12-03', 105)), year(date_sub ('2022-12-03', 45)), year(date_sub ('2022-12-03', 75)))  
        AND month IN (month(date_sub ('2022-12-03', 105)), month(date_sub ('2022-12-03', 45)), month(date_sub ('2022-12-03', 75)))
        AND landlord_user_id IS NOT NULL
        GROUP BY landlord_user_id, month)X
    WHERE tenants > 3
    GROUP BY identifier
    HAVING months = 3)C
ON A.identifier = C.identifier
LEFT JOIN
    (select DISTINCT identifier from fraud.aml_freshdesk_month)B
on A.identifier = B.identifier
LEFT JOIN
    (select DISTINCT identifier from fraud.aml_freshdesk)D
on A.identifier = D.identifier
WHERE A.rn <= 5
content_copyCOPY