test
unknown
sql
2 years ago
11 kB
11
Indexable
-----------AGC----------------
-----------create sales metrics from gc datatsets----------
create temp table agc_order_base_{TEMPORARY_TABLE_SEQUENCE} as
(
select dcgoi.marketplace_id,
DATE(dcgoi.order_day) as calendar_day,
nvl(dcgoi.asin, 'Unknown') as asin,
CASE
WHEN LOWER(dcgoi.device_sub_type) LIKE '%tablet%' THEN 'Tablet'
WHEN LOWER(dcgoi.device_type) = 'pc' THEN 'Desktop'
WHEN dcgoi.device_type is NULL THEN 'Unknown'
ELSE dcgoi.device_type
END as device_type_std,
nvl(tcru.traffic_channel_id,0) as traffic_channel_id,
(COUNT(DISTINCT CASE WHEN (figt.gc_transaction_type_id = 1) THEN figt.gc_id ELSE NULL END)) -
(COUNT(DISTINCT CASE WHEN (figt.gc_transaction_type_id IN (12,14)) THEN figt.gc_id ELSE NULL END)) AS "gcs_units_net"
, (COUNT(DISTINCT CASE WHEN (figt.gc_transaction_type_id = 1) THEN dcgoi.order_id ELSE NULL END)) -
(COUNT(DISTINCT CASE WHEN (figt.gc_transaction_type_id IN (12,14)) THEN dcgoi.order_id ELSE NULL END)) AS "gcs_orders_net"
,(COALESCE(SUM(CASE WHEN (figt.gc_transaction_type_id = 1) THEN figt.amount ELSE NULL END), 0)) + (COALESCE(SUM(CASE WHEN (figt.gc_transaction_type_id = 23) THEN figt.amount ELSE NULL END), 0)) -
(COALESCE(SUM(CASE WHEN (figt.gc_transaction_type_id = 12) THEN figt.amount ELSE NULL END), 0)) - (COALESCE(SUM(CASE WHEN (figt.gc_transaction_type_id = 14) THEN figt.amount ELSE NULL END), 0)) AS "gcs_issuance_amount_net"
from gcbi_ddl.dim_csi_gc_order_items as dcgoi
inner join gcbi_ddl.fct_int_gc_transactions as figt
on dcgoi.gc_id = figt.gc_id
and dcgoi.marketplace_id = figt.marketplace_id
and figt.gc_transaction_type_id in (1,12,14)
left join charybdis_ddl.gc_order_traffic_details trfc
ON dcgoi.order_id = cast(trfc.order_id as varchar(40))
AND dcgoi.marketplace_id = trfc.marketplace_id
AND dcgoi.order_day = trfc.order_day
LEFT JOIN gcbi_ddl.o_gc_traffic_channel_rollups tcru
ON trfc.traffic_channel_id = tcru.traffic_channel_id
WHERE 1=1
AND dcgoi.order_day BETWEEN TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-{FREE_FORM} AND TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')
AND dcgoi.marketplace_id IN ({MARKETPLACE_ID})
group by 1, 2, 3, 4, 5
);
-------------------------Traffic base data creation---------------
------------------------------------------------------------------
-------------------------detect human sessions for AGC--------------------
CREATE temp table hits_{TEMPORARY_TABLE_SEQUENCE} as
select octh.* from
(select hit_hour_utc,
cast(hit_day as date) as hit_day,
asin,
site_variant,
gl_product_group,ref_marker,
is_glance_view,
hit_type,
session_id,
marketplace_id,
page_type,
page_type_id_source,
channel_id,
session_traffic_channel
from andes.GCBI_DDL.STG_O_CUSTOMER_TRAFFIC_HITS
where hit_day BETWEEN TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-{FREE_FORM} AND TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-1
and ( page_type_id_source IN ('ASIN', 'asin', 'titleId', 'GTI') OR UPPER (page_type) IN ('DETAIL', 'DETAILAW') )
and marketplace_id in (1,7)
and gl_product_group=228) octh
INNER JOIN
(select distinct session_id
from andes.RobotDetection.O_HUMAN_SESSIONS
where session_day BETWEEN TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-{FREE_FORM} AND TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-1
and legal_entity_id in (101,115)
) oh
on octh.session_id=oh.session_id;
-----------
create temp table gc_funnel_traffic_base_{TEMPORARY_TABLE_SEQUENCE} as
Select cast(hit_day as date) AS calendar_day,
h.marketplace_id,
h.asin,
CASE
WHEN LOWER(TRIM(h.site_variant)) LIKE '%mobile%' OR
LOWER(TRIM(h.site_variant)) LIKE '%phone%' OR
LOWER(TRIM(h.site_variant)) LIKE '%phon%' OR
LOWER(TRIM(h.site_variant)) LIKE '%mshop%' OR
LOWER(TRIM(h.site_variant)) LIKE '%mob%'
THEN 'Mobile'
WHEN LOWER(TRIM(h.site_variant)) LIKE '%pc%' OR
LOWER(TRIM(h.site_variant)) LIKE '%desktop%' OR
LOWER(TRIM(h.site_variant)) LIKE '%mac%'
THEN 'Desktop'
WHEN LOWER(TRIM(h.site_variant)) LIKE '%tablet%' OR
LOWER(TRIM(h.site_variant)) LIKE '%ipad%' OR
LOWER(TRIM(h.site_variant)) LIKE '%tab%' OR
LOWER(TRIM(h.site_variant)) LIKE '%kindle%'
THEN 'Tablet'
ELSE 'Unknown'
END as device,
case when os.traffic_channel_id is not null then os.traffic_channel_id
when os.traffic_channel_id is null then os.traffic_channel_id
end as session_traffic_channel_id,
--case when h.gl_product_group=228 then 'AGC' when h.gl_product_group in (396,397) then 'BGC' end as brand,
ref_marker as node_1,
sum(case when (is_glance_view=1 and lower(h.hit_type) in ('page-hit', 'back-forward-button')
) then 1 else 0 END) as total_gv_with_case
from
hits h
left join (select session_id, cast(first_viewed_page_day as date) as first_viewed_page_day, traffic_channel_id ,marketplace_id
from andes.Clickstream.O_SESSIONS where marketplace_id in (1,7)
and region_id =1
and first_viewed_page_day between TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-{FREE_FORM} AND TO_DATE('{RUN_DATE_YYYYMMDD}','YYYYMMDD')-1) os
ON h.session_id = os.session_id
and h.marketplace_id=os.marketplace_id
and hit_day = first_viewed_page_day
where 1=1
group by 1,2,3,4,5,6,7;
------ derive ingress point 1 from ref tags dataset and eliminate duplicates-------
create temp table reftag_dups_check_{TEMPORARY_TABLE_SEQUENCE} as
select
node_1, prefix, description from
(select distinct node_1 from gc_funnel_traffic_base_{TEMPORARY_TABLE_SEQUENCE}) a
left join gcbi_ddl.ref_tags b
on lower( regexp_replace(a.node_1,'_','^') ) like lower( regexp_replace(prefix,'_','^') );
create temp table reftag_dups_check_{TEMPORARY_TABLE_SEQUENCE}as
select * from (
select
*,
row_number() over(partition by node_1 order by length(prefix) desc) as sort_order
from reftag_dups_check_{TEMPORARY_TABLE_SEQUENCE})
where sort_order=1;
-------- dedupliacted ref tags addition to traffic base table and normalise sales and traffic data--------
create temp table agc_combine_order_funnel_{TEMPORARY_TABLE_SEQUENCE} AS
select
coalesce(a.calendar_day, b.calendar_day) as calendar_day,
coalesce(a.marketplace_id, b.marketplace_id) as marketplace_id,
nvl(coalesce(a.asin, b.asin),'Unknown') as asin,
nvl(coalesce(a.device, b.device_type_std), 'Unknown') as device_type,
nvl(coalesce(a.session_traffic_channel, b.traffic_channel_id),0) as traffic_channel_id,
nvl(fet.description, 'Unknown') as node_1,
total_gv as gcs_total_gv,
nvl(gcs_units_net*ratio_to_report(gcs_units_net) OVER (partition by coalesce(a.calendar_day, b.calendar_day),coalesce(a.marketplace_id, b.marketplace_id),coalesce(a.asin, b.asin),nvl(coalesce(a.device, b.device_type_std),'Unknown') ,nvl(coalesce(a.session_traffic_channel, b.traffic_channel_id),0),nvl(coalesce(a.form_factor, b.form_factor),'unknown'),0)) as ratio_gcs_units_net,
nvl(gcs_orders_net*ratio_to_report(gcs_orders_net) OVER (partition by coalesce(a.calendar_day, b.calendar_day),coalesce(a.marketplace_id, b.marketplace_id),coalesce(a.asin, b.asin),nvl(coalesce(a.device, b.device_type_std),'Unknown') ,nvl(coalesce(a.session_traffic_channel, b.traffic_channel_id),0),nvl(coalesce(a.form_factor, b.form_factor),'unknown'),0)) as ratio_gcs_orders_net,
nvl(gcs_issuance_amount_net*ratio_to_report(gcs_issuance_amount_net) OVER (partition by coalesce(a.calendar_day, b.calendar_day),coalesce(a.marketplace_id, b.marketplace_id),coalesce(a.asin, b.asin),nvl(coalesce(a.device, b.device_type_std),'Unknown') ,nvl(coalesce(a.session_traffic_channel, b.traffic_channel_id),0),nvl(coalesce(a.form_factor, b.form_factor),'unknown'),0)) as ratio_gcs_issuance_amount_net,
nvl(gcs_issuance_amount_net*ratio_to_report(gcs_issuance_amount_net_usd) OVER (partition by coalesce(a.calendar_day, b.calendar_day),coalesce(a.marketplace_id, b.marketplace_id),coalesce(a.asin, b.asin),nvl(coalesce(a.device, b.device_type_std),'Unknown') ,nvl(coalesce(a.session_traffic_channel, b.traffic_channel_id),0),nvl(coalesce(a.form_factor, b.form_factor),'unknown'),0)) as ratio_gcs_issuance_amount_net_usd
from gc_funnel_traffic_base_{TEMPORARY_TABLE_SEQUENCE} a
full outer join agc_order_base_{TEMPORARY_TABLE_SEQUENCE} b
on a.calendar_day = b.calendar_day
and a.marketplace_id = b.marketplace_id
and a.asin = b.asin
and a.session_traffic_channel = b.traffic_channel_id
and a.device = b.device_type_std
left join reftag_dups_check_{TEMPORARY_TABLE_SEQUENCE}fet
on a.node_1=fet.node_1;
---------add dimensions to sales and traffic metrics-------
create temp table agc_funnel_sales_agg_temp_{TEMPORARY_TABLE_SEQUENCE} as
select
a.calendar_day,
a.marketplace_id,
1 as Region_id,
'agc' as gc_business_stream,
nvl(a.device_type,'Unknown') as device_type,
a.asin,
a.Traffic_Channel_Id,
CASE
WHEN LOWER(TRIM(nvl(tcru.traffic_channel_rollup,'Unknown'))) IN ('google shopping','aap','aap_channel','robots','subsidiaries','deep linking','other','mobile devices','push','dra','sms') THEN 'Other'
WHEN LOWER(TRIM(nvl(tcru.traffic_channel_rollup,'Unknown'))) IN ('',' ','null','untagged') OR tcru.traffic_channel_rollup IS NULL THEN 'unknown'
ELSE LOWER(TRIM(nvl(tcru.traffic_channel_rollup,'Unknown')))
END as Traffic_Channel,
tcru.traffic_channel_rollup as Traffic_Channel_Group1,
tcru.gc_channel_class as Traffic_Channel_Group2,
node_1 as Ingress_Poin1,
nvl(sum(a.gcs_total_gv),0) as Glance_Views,
nvl(sum(a.ratio_gcs_units_net),0) as Normalize_Gc_Netunit,
nvl(sum(a.ratio_gcs_orders_net),0) as Normalize_Gc_Netorder,
nvl(sum(a.ratio_gcs_issuance_amount_net),0) as Normalize_Gc_Netissuance_Usd,
nvl(sum(a.ratio_gcs_issuance_amount_net_usd),0) as Normalize_Gc_Netissuance_Locale,
'USD' as Base_Currency_Code
from agc_combine_order_funnel_{TEMPORARY_TABLE_SEQUENCE} a
left outer join gcbi_ddl.dim_csm_asin_attributes d
on a.asin= d.asin
and a.marketplace_id = d.marketplace_id
LEFT JOIN gcbi_ddl.o_gc_traffic_channel_rollups tcru
ON a.traffic_channel_id = tcru.traffic_channel_id
group by 1,2,3,4,5,6,7,8,9,10,11;Editor is loading...
Leave a Comment