#!/bin/bash echo -e " \n----------- Reseller Business metrics Metabase Dashboard Code --------------\n" echo " --------------------------Reseller Business metrics-------------------------- Drop table if exists public.om_app_installed_reseller_business_metrics_db create table public.om_app_installed_reseller_business_metrics_db as select App_install_date_1 as App_install_date,profile_objectid,profile_phone,profile_email,User_id,tier,flag,r_f,R from ( select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when App_install_date_1 >= app_install_date and App_install_date_1 < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag, row_number() over (partition by User_id,date_trunc('month', App_install_date_1) - interval '0 month' order by date_trunc('month', App_install_date_1) - interval '0 month') as R_f, row_number() over (partition by User_id order by App_install_date_1) as R from ( select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_install_date_1, profile_objectid,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id --coalesce(profile_phone,profile_objectid) as User_id from clevertap.app_installed ) a left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1 ) where R_f=1 --order table creation Drop table if exists public.om_order_reseller_business_metrics_db create table public.om_order_reseller_business_metrics_db as select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag from ( select a.*,b.shipping_to from ( select replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(created_at as date) as created_at ,count(distinct id) as order_id,sum(payment_amount) as payment_amount from raena_order_management.order where payment_status='Paid' and cast(is_archived as varchar)='false' group by 1,2 ) a left join ( select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile, row_number() over (partition by replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') order by shipping_to) as R_asc ,shipping_to from raena_order_management.order where payment_status='Paid' and cast(is_archived as varchar)='false' ) b on a.mobile=b.mobile and b.R_asc=1 ) a left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1 --app_uninstalled table creation Drop table if exists public.om_app_uninstalled_reseller_business_metrics_db create table public.om_app_uninstalled_reseller_business_metrics_db as select * from ( select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when app_uninstall_date >= app_install_date and app_uninstall_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag, row_number() over (partition by User_id,date_trunc('month', App_uninstall_date) - interval '0 month' order by date_trunc('month', App_uninstall_date) - interval '0 month') as R_f from ( select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_uninstall_date, profile_phone,profile_objectid as Uninstall_profile_objectid ,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id from clevertap.app_uninstalled ) a left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1 ) where R_f=1 --app launched Drop table if exists public.om_app_launched_reseller_business_metrics_db create table public.om_app_launched_reseller_business_metrics_db as select * from ( select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when App_launch_date >= app_install_date and App_launch_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag, row_number() over (partition by User_id,date_trunc('month', App_launch_date) - interval '0 month' order by date_trunc('month', App_launch_date) - interval '0 month') as R_f, row_number() over (partition by User_id order by App_launch_date) as R from ( select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_launch_date, profile_phone,profile_objectid as launch_profile_objectid ,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id from clevertap.app_launched ) a left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1 ) where R_f=1 --view Drop table if exists public.om_product_view_reseller_business_metrics_db create table public.om_product_view_reseller_business_metrics_db as select * from ( select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when App_view_date >= app_install_date and App_view_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag, row_number() over (partition by User_id,date_trunc('month', App_view_date) - interval '0 month' order by date_trunc('month', App_view_date) - interval '0 month') as R_f from( select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_view_date, profile_objectid as view_object_id,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id from clevertap.view_item vi union select distinct cast(left(ts,4) || '-' || right(left(ts,6),2) || '-' || right(left(ts,8),2) as date) as App_view_date, profile_objectid as view_object_id,profile_phone,profile_email,case when profile_phone=' ' then profile_objectid else profile_phone end as user_id from clevertap.view_cart vi ) a left join om_New_Existing_flag b on a.profile_phone=b.profile_phone and b.r_flag=1 ) where R_f=1 --view conversion Drop table if exists public.om_order_reseller_business_metrics_db_view_conversion create table public.om_order_reseller_business_metrics_db_view_conversion as select distinct a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag from ( select a.*,b.shipping_to from ( select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(created_at as date) as created_at ,ID as order_id, payment_amount from raena_order_management.order where payment_status='Paid' and cast(is_archived as varchar)='false' ) a left join ( select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile, row_number() over (partition by replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') order by shipping_to) as R_asc ,shipping_to from raena_order_management.order where payment_status='Paid' and cast(is_archived as varchar)='false' ) b on a.mobile=b.mobile and b.R_asc=1 ) a left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1 --Sku order/--Unique sku Drop table if exists public.om_sku_reseller_business_metrics_db create table public.om_sku_reseller_business_metrics_db as select a.*,coalesce(b.tier,'Not Present') as tier,case when b.profile_phone isnull then 'New' when created_at >= app_install_date and created_at < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag from ( select distinct replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') as mobile,cast(oi.created_at as date) as created_at, sku from raena_order_management.order_item oi inner join raena_order_management.order o on oi.order_id=o.id where o.payment_status='Paid' and cast(o.is_archived as varchar)='false' --and replace(json_extract_path_text(reseller_info,'mobile',TRUE),'+','') !=' ' ) a left join om_New_Existing_flag b on a.mobile=b.profile_phone and b.r_flag=1 Drop table if exists public.OM_Post_disc_reseller_business_db create table OM_Post_disc_reseller_business_db as select transaction_date,coalesce(b.tier,'Not Present') as tier, case when b.profile_phone isnull then 'New' when transaction_date >= app_install_date and transaction_date < cast(dateadd(day,30,app_install_date) as date) then 'New' else 'Existing' end as flag, sum(quantity) as quantity,sum(discounted_price) as discounted_price,sum(cogs) as cogs from OM_GM_DB_Product_category a left join om_New_Existing_flag b on replace(a.reseller_mobile,'+','')=b.profile_phone and b.R_flag=1 group by 1,2,3 " > /home/ec2-user/cronjob/new_users/reseller_business_metrics_code.sql psql "host=raen-prd-sg-redshift-cluster.cdqj58hfx4p7.ap-southeast-1.redshift.amazonaws.com user=dbadmin dbname=analytics port=5439 password=5qCif6eyY3Kmg4z"-f /home/ec2-user/cronjob/new_users/new_users/reseller_business_metrics_code.sql > reseller_business_metrics_code_Metabase.log