1201 lines
36 KiB
SQL
1201 lines
36 KiB
SQL
-- Databricks notebook source
|
||
-- MAGIC %md
|
||
-- MAGIC 此代码主要加工 free report 中retail 自有部分的 overview 文件 和 b2c配置表维度 及品牌数据报表指标导出
|
||
-- MAGIC * 1.dm_zk_retail_overview_data overview 文件union 表格
|
||
-- MAGIC * 2.dm_zk_retail_product_info B2C 配置表的维度(底表直接抽)
|
||
-- MAGIC * 3.dm_zk_retail_brand 品牌数据报表中的指标
|
||
-- MAGIC
|
||
|
||
-- COMMAND ----------
|
||
|
||
----------------------------------------------------------------------------------------
|
||
--修改时间:20240821
|
||
--修改人:FanXujia
|
||
--修改内容:
|
||
--导出模板整合,由原来的十几个文件改为3个文件
|
||
----------------------------------------------------------------------------------------
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- -------------------------------------------将所有overview 数据整合在同一张表里--------------------------------------------------------------
|
||
-- -- 注意事项:
|
||
-- --rank1字段:Total行排名设为99,其他行如果数据源是null,则设为98。总之不能为null。
|
||
-- -- 每个数据源文件(file_name)判断是否Total行的方式不尽相同,具体参考代码。
|
||
-- --sales_quarter字段:数据源中有两种格式,24Q1以及2024Q1,因此需要统一成2024Q1这种格式。
|
||
-- -- 有些因为是YTD的值,源文件里sales_quarter是null,需将YTD字段中的时间拆出来作为sales_quarter字段的值
|
||
-- --最终表的source_name字段的内容是各个TA,RC字段是南区、北区等。而数据源文件中都叫source_name,每个源文件需按实际情况拆分成2列
|
||
-- --yyyymm字段:Q1是3月、Q2是6月、Q3是9月、Q4是12月。
|
||
insert overwrite table dws.dws_zk_retail_overview_data
|
||
(
|
||
rank1
|
||
,product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,corp
|
||
,corporation
|
||
,corp_type
|
||
,sales_quarter
|
||
,yyyymm
|
||
,ytd
|
||
,sales_amount
|
||
,sales_amount_ly
|
||
,sales_amount_total
|
||
,sales_amount_ly_total
|
||
,rx_type
|
||
,top1_brand_val
|
||
,top1_brand_gr
|
||
,top2_brand_val
|
||
,top2_brand_gr
|
||
,top1_incremental_brand
|
||
,top1_incremental_gr
|
||
,top2_incremental_brand
|
||
,top2_incremental_gr
|
||
,ytd_gr
|
||
,ytd_ms
|
||
,ytd_delta_ms
|
||
,dtp_name
|
||
,file_name
|
||
,source_name
|
||
,rc
|
||
,rx_otc
|
||
,top_incre
|
||
,etl_insert_dt
|
||
,etl_update_dt
|
||
)
|
||
with overview as
|
||
(
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,corp_desc as corp
|
||
-- ,corporation
|
||
-- ,corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-Rx-TOP集团' file_name
|
||
-- ,null source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_top_corp
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,product_desc
|
||
-- ,product_type
|
||
-- ,common_name
|
||
-- ,brand
|
||
-- ,corp
|
||
-- ,corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-Rx-TOP产品' file_name
|
||
-- ,null source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_top_product
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,product_desc
|
||
-- ,product_type
|
||
-- ,common_name
|
||
-- ,brand
|
||
-- ,corp
|
||
-- ,corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-Rx-TOP增量产品' file_name
|
||
-- ,null source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_top_incr_product
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,corp_desc corp
|
||
-- ,corporation
|
||
-- ,corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-Rx+OTC-TOP集团' file_name
|
||
-- ,null source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_rx_otc_corp
|
||
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,product_desc
|
||
-- ,product_type
|
||
-- ,common_name
|
||
-- ,brand
|
||
-- ,corp
|
||
-- ,corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-Rx+OTC-TOP产品' file_name
|
||
-- ,null source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_rx_otc_product
|
||
|
||
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,corp_desc as corp
|
||
-- ,corp_name
|
||
-- ,corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-分TA-TOP集团' file_name
|
||
-- ,source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_ta_top_corp
|
||
|
||
-- union all
|
||
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,product_desc
|
||
-- ,null as product_type
|
||
-- ,common_name
|
||
-- ,null as brand
|
||
-- ,corp
|
||
-- ,corp_name corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-分TA-TOP产品' file_name
|
||
-- ,source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_ta_top_product
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,product_desc
|
||
-- ,null as product_type
|
||
-- ,common_name
|
||
-- ,null as brand
|
||
-- ,corp
|
||
-- ,corp_name as corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'全国-分TA-TOP增量产品' file_name
|
||
-- ,source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_nataional_ta_incr_product
|
||
|
||
-- union all
|
||
-- select
|
||
-- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
-- when rank1 is null then '98'
|
||
-- else replace(rank1,' ','') end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,corp_desc as corp
|
||
-- ,corporation
|
||
-- ,corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,ytd_gr
|
||
-- ,ytd_ms
|
||
-- ,ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'分大区-Rx-TOP集团' file_name
|
||
-- ,null source_name
|
||
-- ,source_name rc
|
||
-- from dwd.dwd_gnd_ext_retail_area_top_corp
|
||
|
||
-- union all
|
||
-- select
|
||
-- case when upper(type_name) = 'RX' then '99'
|
||
-- else '98' end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,null as corp
|
||
-- ,null as corporation
|
||
-- ,type_name as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,null as ytd_gr
|
||
-- ,null as ytd_ms
|
||
-- ,null as ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'Rx市场' file_name
|
||
-- ,null as source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_rx_market ---这个没有ytd 三个字段添加
|
||
|
||
-- union all
|
||
-- select
|
||
-- case when upper(corporation) like 'TOTAL %' then '99'
|
||
-- else '98' end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,null as corp
|
||
-- ,corporation
|
||
-- ,null as corp_type
|
||
-- ,concat('20',trim(replace(quarter_flag,'YTD','' ))) as sales_quarter
|
||
-- ,quarter_flag as ytd
|
||
-- ,null as sales_amount
|
||
-- ,null as rx_type
|
||
-- ,replace(top1_brand_val,'-','') top1_brand_val
|
||
-- ,top1_brand_gr top1_brand_gr
|
||
-- ,replace(top2_brand_val,'-','') top2_brand_val
|
||
-- ,top2_brand_gr top2_brand_gr
|
||
-- ,replace(top1_incremental_brand,'-','') top1_incremental_brand
|
||
-- ,top1_incremental_gr
|
||
-- ,replace(top2_incremental_brand,'-','') top2_incremental_brand
|
||
-- ,top2_incremental_gr
|
||
-- ,null as ytd_gr
|
||
-- ,null as ytd_ms
|
||
-- ,null as ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'Rx-TOP集团' file_name
|
||
-- ,null as source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_rx_top_corp ---这个没有ytd 三个字段添加
|
||
-- union all
|
||
|
||
-- select
|
||
-- case when upper(corporation) like '% TTL' then '99'
|
||
-- else '98' end as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,null as corp
|
||
-- ,corporation
|
||
-- ,null as corp_type
|
||
-- ,concat('20',trim(replace(quarter_flag,'YTD','' ))) as sales_quarter
|
||
-- ,quarter_flag as ytd
|
||
-- ,NULL as sales_amount
|
||
-- ,rx_type
|
||
-- ,replace(top1_brand_val,'-','') as top1_brand_val
|
||
-- ,top1_brand_gr
|
||
-- ,replace(top2_brand_val,'-','') as top2_brand_val
|
||
-- , top2_brand_gr
|
||
-- ,replace(top1_incremental_brand,'-','') as top1_incremental_brand
|
||
-- , top1_incremental_gr
|
||
-- ,replace(top2_incremental_brand,'-','') as top2_incremental_brand
|
||
-- ,top2_incremental_gr
|
||
-- ,null as ytd_gr
|
||
-- ,null as ytd_ms
|
||
-- ,null as ytd_delta_ms
|
||
-- ,null as dtp_name
|
||
-- ,'分TA-TOP集团' file_name
|
||
-- ,trim(replace(rx_type,' TTL','' ) ) as source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_rx_ta_top_corp ---这个没有ytd 三个字段添加
|
||
-- union all
|
||
|
||
-- select
|
||
-- '99' as rank1
|
||
-- ,null as product_desc
|
||
-- ,null as product_type
|
||
-- ,null as common_name
|
||
-- ,null as brand
|
||
-- ,null as corp
|
||
-- ,null as corporation
|
||
-- ,null as corp_type
|
||
-- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
-- else sales_quarter
|
||
-- end as sales_quarter
|
||
-- ,null as ytd
|
||
-- ,sales_amount
|
||
-- ,null as rx_type
|
||
-- ,null as top1_brand_val
|
||
-- ,null as top1_brand_gr
|
||
-- ,null as top2_brand_val
|
||
-- ,null as top2_brand_gr
|
||
-- ,null as top1_incremental_brand
|
||
-- ,null as top1_incremental_gr
|
||
-- ,null as top2_incremental_brand
|
||
-- ,null as top2_incremental_gr
|
||
-- ,null as ytd_gr
|
||
-- ,null as ytd_ms
|
||
-- ,null as ytd_delta_ms
|
||
-- ,dtp_name
|
||
-- ,'DTP 整体市场' file_name
|
||
-- ,NULL as source_name
|
||
-- ,null rc
|
||
-- from dwd.dwd_gnd_ext_retail_dtp_overall_market ---这个没有ytd 三个字段添加 rx_type
|
||
|
||
|
||
-- union all
|
||
select
|
||
case when replace(upper(corp_name),'-','') = 'DTP TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else replace(rank1,' ','') end as rank1
|
||
,null as product_desc
|
||
,null as product_type
|
||
,null as common_name
|
||
,null as brand
|
||
,replace(corp_name,'-','') as corp
|
||
,null as corporation
|
||
,null as corp_type
|
||
,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
else sales_quarter
|
||
end as sales_quarter
|
||
,null as ytd
|
||
,sales_amount
|
||
,null as rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,null as dtp_name
|
||
,'DTP TOP10企业排名' file_name
|
||
,NULL as source_name
|
||
,null rc
|
||
,'Rx' as rx_otc
|
||
,'TOP' as top_incre
|
||
from dwd.dwd_gnd_ext_retail_dtp_top_copd ---这个没有ytd 三个字段添加
|
||
union all
|
||
select
|
||
case when replace(upper(brand_name),'-','') = 'DTP TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else replace(rank1,' ','') end as rank1
|
||
,null as product_desc
|
||
,null as product_type
|
||
,null as common_name
|
||
,brand_name as brand
|
||
,replace(corp_name,'-','') as corp
|
||
,null as corporation
|
||
,null as corp_type
|
||
,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
else sales_quarter
|
||
end as sales_quarter
|
||
,null as ytd
|
||
,sales_amount
|
||
,null as rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,null as dtp_name
|
||
,'DTP TOP10品牌排名' file_name
|
||
,NULL as source_name
|
||
,null rc
|
||
,'Rx' as rx_otc
|
||
,'TOP' as top_incre
|
||
from dwd.dwd_gnd_ext_retail_dtp_top_brand ---这个没有ytd 三个字段添加
|
||
union all
|
||
|
||
select
|
||
case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else replace(rank1,' ','') end as rank1
|
||
,null as product_desc
|
||
,null as product_type
|
||
,null as common_name
|
||
,null as brand
|
||
,corp_desc as corp
|
||
,corporation
|
||
,`type` as corp_type
|
||
,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
else sales_quarter
|
||
end as sales_quarter
|
||
,null as ytd
|
||
,sales_amount
|
||
,null as rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,null as dtp_name
|
||
,'全国-集团排名' file_name
|
||
,case when ta = 'GI' then concat(ta,'-',rx_otc)
|
||
when ta = 'NIAD-excl. GLP1' then 'DM'
|
||
else ta end as source_name
|
||
,null rc
|
||
,rx_otc
|
||
,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre
|
||
from dwd.dwd_gnd_retail_national_corp_rank
|
||
|
||
union all
|
||
select
|
||
case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else replace(rank1,' ','') end as rank1
|
||
,prod_desc as product_desc
|
||
,`type` as product_type
|
||
,cmps_desc as common_name
|
||
,brand
|
||
,corp_desc as corp
|
||
,corporation
|
||
,null as corp_type
|
||
,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
else sales_quarter
|
||
end as sales_quarter
|
||
,null as ytd
|
||
,sales_amount
|
||
,null as rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,null as dtp_name
|
||
,'全国-产品排名' file_name
|
||
,case when ta = 'GI' then concat(ta,'-',rx_otc)
|
||
when ta = 'NIAD-excl. GLP1' then 'DM'
|
||
else ta end as source_name
|
||
,null rc
|
||
,rx_otc
|
||
,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre
|
||
from dwd.dwd_gnd_retail_national_prd_rank
|
||
union all
|
||
select
|
||
case when upper(replace(rank1,' ','')) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else replace(rank1,' ','') end as rank1
|
||
,null as product_desc
|
||
,null as product_type
|
||
,null as common_name
|
||
,null as brand
|
||
,corp_desc as corp
|
||
,corporation
|
||
,`type` as corp_type
|
||
,case when length(sales_quarter) = 4 then concat('20',sales_quarter)
|
||
else sales_quarter
|
||
end as sales_quarter
|
||
,null as ytd
|
||
,sales_amount
|
||
,null as rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,null as dtp_name
|
||
,'大区-集团排名' file_name
|
||
,case when ta = 'GI' then concat(ta,'-',rx_otc)
|
||
when ta = 'NIAD-excl. GLP1' then 'DM'
|
||
else ta end as source_name
|
||
,region rc
|
||
,rx_otc
|
||
,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre
|
||
from dwd.dwd_gnd_retail_region_corp_rank
|
||
)
|
||
|
||
-- --计算Total值,按文件、季度、TA、rx_otc、top_incre进行合计
|
||
-- --因为数据中本身就包含了Total行,因此直接筛选了rank1 = '99'(即筛选Total行)进行合计
|
||
,overview_total as (
|
||
select file_name,
|
||
source_name,
|
||
rx_otc,
|
||
top_incre,
|
||
sales_quarter,
|
||
rc,
|
||
sum(sales_amount) sales_amount_total
|
||
from overview
|
||
where rank1 = '99'
|
||
group by file_name,sales_quarter,rx_otc,top_incre,source_name,rc
|
||
)
|
||
|
||
-- --取到文件中的最大时间,在获取ly值的时候,用于限定时间范围
|
||
,overview_maxyq as (
|
||
select max(sales_quarter) max_sales_quarter
|
||
from overview
|
||
where sales_quarter is not null
|
||
)
|
||
|
||
-- --在数据源的基础上,增加yyyymm字段、sales_amount_ly、sales_amount_total、sales_amount_ly_total字段
|
||
select case when max(rank1) < 10000 then max(rank1) else cast(max(rank1) as int) - 10000 end as rank1
|
||
,product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,corp
|
||
,corporation
|
||
,corp_type
|
||
,sales_quarter
|
||
,case when right(sales_quarter,1) = '1' then concat(left(sales_quarter,4),'03')
|
||
when right(sales_quarter,1) = '2' then concat(left(sales_quarter,4),'06')
|
||
when right(sales_quarter,1) = '3' then concat(left(sales_quarter,4),'09')
|
||
when right(sales_quarter,1) = '4' then concat(left(sales_quarter,4),'12')
|
||
end as yyyymm
|
||
,max(ytd) ytd
|
||
,sum(sales_amount) as sales_amount
|
||
,sum(sales_amount_ly) as sales_amount_ly
|
||
,sum(sales_amount_total) as sales_amount_total
|
||
,sum(sales_amount_ly_total) as sales_amount_ly_total
|
||
,rx_type
|
||
,max(top1_brand_val) top1_brand_val
|
||
,max(top1_brand_gr) top1_brand_gr
|
||
,max(top2_brand_val) top2_brand_val
|
||
,max(top2_brand_gr) top2_brand_gr
|
||
,max(top1_incremental_brand) top1_incremental_brand
|
||
,max(top1_incremental_gr) top1_incremental_gr
|
||
,max(top2_incremental_brand) top2_incremental_brand
|
||
,max(top2_incremental_gr) top2_incremental_gr
|
||
,max(ytd_gr) ytd_gr
|
||
,max(ytd_ms) ytd_ms
|
||
,max(ytd_delta_ms) ytd_delta_ms
|
||
,dtp_name
|
||
,file_name
|
||
,source_name
|
||
,rc
|
||
,rx_otc
|
||
,top_incre
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt
|
||
from
|
||
(
|
||
select
|
||
cast(rank1 as int) + 10000 rank1
|
||
,product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,corp
|
||
,corporation
|
||
,corp_type
|
||
,t1.sales_quarter
|
||
,ytd
|
||
,sales_amount
|
||
,0 as sales_amount_ly
|
||
,t2.sales_amount_total
|
||
,0 as sales_amount_ly_total
|
||
,rx_type
|
||
,top1_brand_val
|
||
,top1_brand_gr
|
||
,top2_brand_val
|
||
,top2_brand_gr
|
||
,top1_incremental_brand
|
||
,top1_incremental_gr
|
||
,top2_incremental_brand
|
||
,top2_incremental_gr
|
||
,ytd_gr
|
||
,ytd_ms
|
||
,ytd_delta_ms
|
||
,dtp_name
|
||
,t1.file_name
|
||
,t1.source_name
|
||
,t1.rc
|
||
,t1.rx_otc
|
||
,t1.top_incre
|
||
from overview t1
|
||
left join overview_total t2
|
||
on t1.file_name = t2.file_name
|
||
and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'')
|
||
and t1.rx_otc = t2.rx_otc
|
||
and t1.top_incre = t2.top_incre
|
||
and NVL(t1.source_name,'') = NVL(t2.source_name,'')
|
||
and NVL(t1.rc,'') = NVL(t2.rc,'')
|
||
union all
|
||
select
|
||
cast(rank1 as int) rank1
|
||
,product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,corp
|
||
,corporation
|
||
,corp_type
|
||
,concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) as sales_quarter
|
||
,null as ytd
|
||
,0 as sales_amount
|
||
,sales_amount as sales_amount_ly
|
||
,0 as sales_amount_total
|
||
,t2.sales_amount_total as sales_amount_ly_total
|
||
,rx_type
|
||
,null as top1_brand_val
|
||
,null as top1_brand_gr
|
||
,null as top2_brand_val
|
||
,null as top2_brand_gr
|
||
,null as top1_incremental_brand
|
||
,null as top1_incremental_gr
|
||
,null as top2_incremental_brand
|
||
,null as top2_incremental_gr
|
||
,null as ytd_gr
|
||
,null as ytd_ms
|
||
,null as ytd_delta_ms
|
||
,dtp_name
|
||
,t1.file_name
|
||
,t1.source_name
|
||
,t1.rc
|
||
,t1.rx_otc
|
||
,t1.top_incre
|
||
from overview t1
|
||
left join overview_total t2
|
||
on t1.file_name = t2.file_name
|
||
and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'')
|
||
and t1.rx_otc = t2.rx_otc
|
||
and t1.top_incre = t2.top_incre
|
||
and NVL(t1.source_name,'') = NVL(t2.source_name,'')
|
||
and NVL(t1.rc,'') = NVL(t2.rc,'')
|
||
left join overview_maxyq t3
|
||
on 1=1
|
||
where concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) <= t3.max_sales_quarter
|
||
) t
|
||
group by
|
||
product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,corp
|
||
,corporation
|
||
,corp_type
|
||
,sales_quarter
|
||
,rx_type
|
||
,dtp_name
|
||
,file_name
|
||
,source_name
|
||
,rc
|
||
,rx_otc
|
||
,top_incre
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- --------将free report overview 导出的合并文件写入dm
|
||
insert overwrite table dm.dm_zk_retail_overview_data(
|
||
rank1,
|
||
product_desc,
|
||
product_type,
|
||
common_name,
|
||
brand,
|
||
corp,
|
||
corporation,
|
||
corp_type,
|
||
sales_quarter,
|
||
yyyymm,
|
||
ytd,
|
||
sales_amount,
|
||
sales_amount_ly,
|
||
sales_amount_total,
|
||
sales_amount_ly_total,
|
||
rx_type,
|
||
top1_brand_val,
|
||
top1_brand_gr,
|
||
top2_brand_val,
|
||
top2_brand_gr,
|
||
top1_incremental_brand,
|
||
top1_incremental_gr,
|
||
top2_incremental_brand,
|
||
top2_incremental_gr,
|
||
ytd_gr,
|
||
ytd_ms,
|
||
ytd_delta_ms,
|
||
dtp_name,
|
||
file_name,
|
||
source_name,
|
||
rc,
|
||
rx_otc,
|
||
top_incre,
|
||
etl_insert_dt,
|
||
etl_update_dt
|
||
)
|
||
select
|
||
trim(rank1) rank1
|
||
,product_desc
|
||
,product_type
|
||
,common_name
|
||
,brand
|
||
,nvl(corp,'' ) corp
|
||
,corporation
|
||
,corp_type
|
||
,sales_quarter
|
||
,yyyymm
|
||
,case when ytd is null then 'N' ELSE 'Y' END ytd
|
||
,sales_amount
|
||
,sales_amount_ly
|
||
,sales_amount_total
|
||
,sales_amount_ly_total
|
||
,rx_type
|
||
,top1_brand_val
|
||
,cast(top1_brand_gr as double) top1_brand_gr
|
||
,top2_brand_val
|
||
,cast(top2_brand_gr as double) top2_brand_gr
|
||
,top1_incremental_brand
|
||
,cast(top1_incremental_gr as double) top1_incremental_gr
|
||
,top2_incremental_brand
|
||
,cast(top2_incremental_gr as double) top2_incremental_gr
|
||
,cast(ytd_gr as double ) ytd_gr
|
||
,cast(ytd_ms as double) ytd_ms
|
||
,cast(ytd_delta_ms as double) ytd_delta_ms
|
||
,dtp_name
|
||
,file_name
|
||
,trim(source_name) source_name
|
||
,rc
|
||
,rx_otc
|
||
,top_incre
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt
|
||
from dws.dws_zk_retail_overview_data
|
||
|
||
-- COMMAND ----------
|
||
|
||
------------------------------retail/EC原始维度,从b2c配置表直取-----------------------------------------
|
||
insert overwrite table dws.dws_zk_retail_product_info
|
||
select distinct
|
||
product_id
|
||
,iqvia_pack_code
|
||
,prescription_nature
|
||
,medicine_type
|
||
,zk_medicine_tier1
|
||
,zk_medicine_tier2
|
||
,zk_medicine_tier3
|
||
,zk_medicine_tier4
|
||
,common_name
|
||
,dosage_form
|
||
,user_type
|
||
,category_name
|
||
,product_name
|
||
,brand_name
|
||
,zk_manu_des
|
||
,zk_corp_des
|
||
,zk_pack_des
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt
|
||
from dwd.dwd_gnd_ext_retail_pack_property;
|
||
------------------------------retail/EC原始维度,从b2c直取 写入dm-----------------------------------------
|
||
insert overwrite table dm.dm_zk_retail_product_info
|
||
select distinct
|
||
product_id
|
||
,iqvia_pack_code
|
||
,prescription_nature
|
||
,medicine_type
|
||
,zk_medicine_tier1
|
||
,zk_medicine_tier2
|
||
,zk_medicine_tier3
|
||
,zk_medicine_tier4
|
||
,common_name
|
||
,dosage_form
|
||
,user_type
|
||
,category_name
|
||
,product_name
|
||
,brand_name
|
||
,zk_manu_des
|
||
,zk_corp_des
|
||
,zk_pack_des
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt
|
||
from dws.dws_zk_retail_product_info;
|
||
|
||
-- COMMAND ----------
|
||
|
||
------------------------------retail 自有部分需要导出数据,从品牌数据报表直取,无特殊加工-----------------------------------------
|
||
--注意事项:
|
||
----market 排除数据为:从pack 文件中通过比例拆分写入品牌数据的 品牌数据,包括多达一、天一宁等品牌,这些并非原始文件中的数据,故排除。
|
||
---- (具体拆分代码详见:1 dwd_inc_gnd_ext_retail_nataional
|
||
insert overwrite table dws.dws_zk_retail_brand
|
||
with max_yq as (
|
||
select TA,market,rc_name_en,province_city,ranked_by,max(yq) as yq
|
||
from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all
|
||
WHERE market NOT IN ('pack-CV-高血压-化学药-全国.xlsx','pack-CV-他汀类+血脂康-全国.xlsx')
|
||
group by TA,market,rc_name_en,province_city,ranked_by
|
||
)
|
||
|
||
select distinct
|
||
t1.TA,
|
||
t1.market,
|
||
t1.rc_name_en,
|
||
t1.province_city
|
||
,key_brand_ytd
|
||
,key_brand_rank_ytd
|
||
,top_brand_ytd
|
||
,top_brand_ms_ytd
|
||
,top_brand_inc_ms_ytd
|
||
,top_brand_gr_ytd
|
||
,key_brand_qtd
|
||
,key_brand_rank_qtd
|
||
,top_brand_qtd
|
||
,top_brand_ms_qtd
|
||
,top_brand_inc_ms_qtd
|
||
,top_brand_gr_qtd
|
||
,t1.ranked_by
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt
|
||
,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt
|
||
from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all t1
|
||
inner join max_yq t2
|
||
on t1.TA = t2.TA
|
||
and t1.market = t2.market
|
||
and t1.rc_name_en = t2.rc_name_en
|
||
and t1.province_city = t2.province_city
|
||
and t1.yq = t2.yq
|
||
and t1.ranked_by = t2.ranked_by
|
||
;
|
||
|
||
-- dm_zk_retail_brand
|
||
|
||
------------------------------retail 自有部分需要导出数据,写入dm-----------------------------------------
|
||
insert overwrite table dm.dm_zk_retail_brand
|
||
select distinct
|
||
TA,market,rc_name_en,province_city
|
||
,key_brand_ytd
|
||
,cast(key_brand_rank_ytd as double) key_brand_rank_ytd
|
||
,top_brand_ytd
|
||
,cast(top_brand_ms_ytd as double) top_brand_ms_ytd
|
||
,cast(top_brand_inc_ms_ytd as double) top_brand_inc_ms_ytd
|
||
,cast(top_brand_gr_ytd as double) top_brand_gr_ytd
|
||
,key_brand_qtd
|
||
,cast(key_brand_rank_qtd as double ) key_brand_rank_qtd
|
||
,top_brand_qtd
|
||
,cast(top_brand_ms_qtd as double ) top_brand_ms_qtd
|
||
,cast(top_brand_inc_ms_qtd as double ) top_brand_inc_ms_qtd
|
||
,cast(top_brand_gr_qtd as double ) top_brand_gr_qtd
|
||
,ranked_by
|
||
from dws.dws_zk_retail_brand ;
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- COMMAND ----------
|
||
|
||
----------------------------------------------------------------------------------------
|
||
--修改时间:20240821
|
||
--修改人:FanXujia
|
||
--修改内容:
|
||
--导出模板整合,由原来的十几个文件改为3个文件
|
||
--《全国-集团排名》:dwd.dwd_gnd_retail_national_corp_rank
|
||
--《全国-产品排名》:dwd.dwd_gnd_retail_national_prd_rank
|
||
--《大区-集团排名》:dwd.dwd_gnd_retail_region_corp_rank
|
||
----------------------------------------------------------------------------------------
|
||
insert overwrite table dws.dws_zk_retail_export
|
||
(
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
prod_desc,
|
||
cmps_desc,
|
||
brand,
|
||
region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
file_name,
|
||
etl_insert_dt,
|
||
etl_update_dt
|
||
)
|
||
--《全国-集团排名》
|
||
select distinct
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
case when upper(trim(rank1)) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else trim(rank1) end as rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
null as prod_desc,
|
||
null as cmps_desc,
|
||
null as brand,
|
||
null as region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
'全国-集团排名' as file_name,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt
|
||
from dwd.dwd_gnd_retail_national_corp_rank
|
||
union all
|
||
--《全国-产品排名》
|
||
select distinct
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
case when upper(trim(rank1)) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else trim(rank1) end as rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
prod_desc,
|
||
cmps_desc,
|
||
brand,
|
||
null as region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
'全国-产品排名' as file_name,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt
|
||
from dwd.dwd_gnd_retail_national_prd_rank
|
||
union all
|
||
--《大区-集团排名》
|
||
select distinct
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
case when upper(trim(rank1)) = 'TOTAL' then '99'
|
||
when rank1 is null then '98'
|
||
else trim(rank1) end as rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
null as prod_desc,
|
||
null as cmps_desc,
|
||
null as brand,
|
||
region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
'大区-集团排名' as file_name,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt,
|
||
from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt
|
||
from dwd.dwd_gnd_retail_region_corp_rank;
|
||
|
||
|
||
--写入dm表
|
||
insert overwrite table dm.dm_zk_retail_export
|
||
(
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
prod_desc,
|
||
cmps_desc,
|
||
brand,
|
||
region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
file_name,
|
||
etl_insert_dt,
|
||
etl_update_dt
|
||
)
|
||
select
|
||
ta,
|
||
rx_otc,
|
||
top_top_incre,
|
||
rank1,
|
||
corp_desc,
|
||
corporation,
|
||
type,
|
||
prod_desc,
|
||
cmps_desc,
|
||
brand,
|
||
region,
|
||
sales_quarter,
|
||
sales_amount,
|
||
file_name,
|
||
etl_insert_dt,
|
||
etl_update_dt
|
||
from dws.dws_zk_retail_export; |