# Databricks notebook source ############################################################START############################################################## ### STEP-1: map to dm.dm_zk_retail_geo ### STEP-2: map to dm.dm_ext_rc_ratio ### STEP-3: map to dm.dm_zk_retail_sales ### STEP-4: map to dm.dm_zk_retail_pack_property ### STEP-5: map to dm.dm_zk_retail_market_property ### STEP-6: map to dm.dm_zk_retail_dtp_pack_property ### STEP-7: map to dm.dm_zk_retail_dtp_sales ### STEP-8: map to dm.dm_zk_retail_sales_kpi ### STEP-9: map to dm.dm_zk_retail_market_ratio # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-1: map to dm.dm_zk_retail_geo # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-1: map to dm.dm_zk_retail_geo # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with all_province_city as ( # MAGIC select distinct province_city from tmp.tmp_retail_brand_rawdata # MAGIC union # MAGIC select distinct zk_regin from tmp.tmp_retail_pack_rawdata # MAGIC union # MAGIC select distinct province_city from dwd.dwd_gnd_ext_dtp_zk_brand # MAGIC union # MAGIC select distinct region from dwd.dwd_gnd_ext_retail_dtp_datasource # MAGIC ), tmp as ( # MAGIC ----------------按照retail 逻辑划分福厦泉、全国,并从chpa的geo中提取其他维度信息--------------------- # MAGIC select distinct # MAGIC case when t1.province_city = '全国' then 'CHT' # MAGIC when t1.province_city = '福厦泉' then 'FXQ' # MAGIC else # MAGIC nvl(t2.geo_key, t3.geo_key) # MAGIC end geo_key, # MAGIC t4.AZ_City_tier # MAGIC ,t4.city_tier, # MAGIC province_city, # MAGIC t3.city_name, # MAGIC t3.city_code, # MAGIC t3.city_name_en, # MAGIC case when t1.province_city = '福厦泉' then '福建' # MAGIC when t1.province_city = '全国' then '全国' # MAGIC else # MAGIC nvl(t3.province_name,t2.province_name) # MAGIC end province_name, # MAGIC case when t1.province_city = '福厦泉' then 'FJ' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.province_code,t2.province_code) # MAGIC end province_code, # MAGIC case when t1.province_city = '福厦泉' then 'Fujian' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.province_name_en,t2.province_name_en) # MAGIC end province_name_en, # MAGIC case when t1.province_city = '福厦泉' then 'SOUTH' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.area_code,t2.area_code) # MAGIC end area_code, # MAGIC case when t1.province_city = '福厦泉' then '南部地区' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.area_name,t2.area_name) # MAGIC end area_name, # MAGIC case when t1.province_city = '福厦泉' then 'South China' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.area_name_en,t2.area_name_en) # MAGIC end area_name_en, # MAGIC case when t1.province_city = '福厦泉' then 'SOUTH' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.rc_code,t2.rc_code) # MAGIC end rc_code, # MAGIC case when t1.province_city = '福厦泉' then '南部地区' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.rc_name,t2.rc_name) # MAGIC end rc_name, # MAGIC case when t1.province_city = '福厦泉' then 'South China' # MAGIC when t1.province_city = '全国' then 'National' # MAGIC else # MAGIC nvl(t3.rc_name_en,t2.rc_name_en) # MAGIC end rc_name_en # MAGIC from all_province_city t1 # MAGIC left join dm.dm_td_geography t2 # MAGIC on t1.province_city = t2.province_name and t2.geo_key = t2.province_code # MAGIC left join dm.dm_td_geography t3 # MAGIC on t1.province_city = replace(t3.city_name,'市','') and t3.geo_key = t3.city_code # MAGIC left join dws.dws_ims_td_geo t4 # MAGIC on t1.province_city = replace(t4.AUDIT_DES_C,'市','') # MAGIC where t1.province_city <> 'ROC' # MAGIC ) # MAGIC # MAGIC -------------------省份、自治区等处理----------------------- # MAGIC insert overwrite table dm.dm_zk_retail_geo # MAGIC SELECT # MAGIC geo_key # MAGIC ,city_name_en # MAGIC ,replace(city_name,'市') city_c # MAGIC ,case when city_code is not null then 'City' else 'Province' END city_type # MAGIC ,city_tier # MAGIC ,AZ_City_tier # MAGIC ,province_name_en # MAGIC ,province_name # MAGIC ,province_code # MAGIC ,city_name city_map # MAGIC ,case when province_code in ('TJ','CQ','BJ','SH') then concat(province_name,'市') # MAGIC when province_code in ('SC','YN','LN','SA','GZ','HN','HL','SX','ZJ','JS','SD','JL','FJ','GD','HU','AH','GS','HE','JX','HB') then concat(province_name,'省') # MAGIC when province_code ='GX' THEN concat(province_name,'壮族自治区') # MAGIC when province_code ='IM' THEN concat(province_name,'自治区') # MAGIC ELSE province_name # MAGIC end province_map # MAGIC ,city_code # MAGIC ,province_city # MAGIC ,area_code # MAGIC ,area_name # MAGIC ,area_name_en # MAGIC ,rc_code # MAGIC ,rc_name # MAGIC ,rc_name_en # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from tmp # MAGIC # MAGIC UNION ALL # MAGIC # MAGIC SELECT # MAGIC 'ROC' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'City' # MAGIC , 1 # MAGIC , 1 # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC , null # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,'Other Low Tiers' # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-2: map to dm.dm_ext_rc_ratio # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: map to dm.dm_ext_rc_ratio # MAGIC -- 2.1 rc 拆分逻辑处理 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dws.dws_ext_rc_ratio # MAGIC select # MAGIC a.sub_bu # MAGIC ,a.mkt # MAGIC ,a.region_code # MAGIC ,nvl(b.PROVINCE_CODE,c.PROVINCE_CODE ) PROVINCE_CODE # MAGIC ,nvl(b.AUDIT_COD,c.PROVINCE_CODE) city_code # MAGIC ,a.ratio # MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt # MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt # MAGIC from dwd.dwd_gnd_ext_rc_ratio a # MAGIC left join dm.dm_ims_td_geo b on a.city = b.CITY_C # MAGIC left join ( # MAGIC select province_code,province_name # MAGIC from dm.dm_td_geography group by province_name,province_code # MAGIC ) c on a.city = c.province_name # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: map to dm.dm_ext_rc_ratio # MAGIC -- 2.2 rc 拆分逻辑处理 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dm.dm_ext_rc_ratio # MAGIC select # MAGIC sub_bu # MAGIC ,mkt # MAGIC ,region_code # MAGIC ,PROVINCE_CODE # MAGIC ,city_code # MAGIC ,ratio # MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt # MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt # MAGIC from dws.dws_ext_rc_ratio # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-3: map to dm.dm_zk_retail_sales # COMMAND ---------- # MAGIC %md # MAGIC ### 3.1 将数据写入最终表的临时表 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.2 write pack data from tmp.tmp_retail_final_sales to tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_source as ( # MAGIC select # MAGIC distinct # MAGIC yyyymm, # MAGIC iqvia_pack_code, # MAGIC province_city, # MAGIC collect_list(distinct market) as source # MAGIC from tmp.tmp_retail_final_sales # MAGIC group by yyyymm,iqvia_pack_code,province_city # MAGIC ), tmp_pack as ( # MAGIC select # MAGIC yyyymm, # MAGIC iqvia_pack_code, # MAGIC province_city, # MAGIC market, # MAGIC pack_flag, # MAGIC brand_flag, # MAGIC sum(sales_unit) as sales_unit, # MAGIC sum(sales_unit_ly) as sales_unit_ly, # MAGIC sum(sales_value) as sales_value, # MAGIC sum(sales_value_ly) as sales_value_ly, # MAGIC sum(counting_unit) as counting_unit, # MAGIC sum(counting_unit_ly) as counting_unit_ly # MAGIC from tmp.tmp_retail_final_sales # MAGIC group by yyyymm,iqvia_pack_code,province_city,market,pack_flag,brand_flag # MAGIC ) # MAGIC # MAGIC insert overwrite table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC select # MAGIC a.yyyymm, # MAGIC a.iqvia_pack_code, # MAGIC CASE WHEN a.province_city ='ROC' then 'ROC' ELSE b.geo_key END as AUDIT_COD, # MAGIC a.province_city, # MAGIC c.corp_cod, # MAGIC a.sales_unit, # MAGIC a.sales_unit_ly, # MAGIC a.sales_value, # MAGIC a.sales_value_ly, # MAGIC a.counting_unit, # MAGIC a.counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC d.source, # MAGIC a.pack_flag, # MAGIC a.brand_flag, # MAGIC case # MAGIC when a.market in ('他汀类+血脂康','高血压用药','Brilinta Market') then 'CV' # MAGIC when a.market in ('NIAD','RD Market') then 'CVRM' # MAGIC ELSE '' # MAGIC END as FLAG # MAGIC from tmp_pack a # MAGIC left join dm.dm_zk_retail_geo b # MAGIC on a.province_city = b.province_city # MAGIC left join tmp.tmp_zk_retail_pack_property_corp c # MAGIC on a.iqvia_pack_code = c.iqvia_pack_code # MAGIC left join tmp_source d # MAGIC on a.yyyymm = d.yyyymm # MAGIC and a.iqvia_pack_code = d.iqvia_pack_code # MAGIC and a.province_city = d.province_city # COMMAND ---------- # MAGIC %md # MAGIC ### 3.2 计算OTHERS数据 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 3.3 calculate OTHERS DATA # MAGIC -- 3.3.1 将数据处理到dws # MAGIC -- 3.3.1.1 维度信息计算 # MAGIC -- STEP1: nataional_top_corp # MAGIC ------------------------------------------------------------------------------------- # MAGIC --直接写入旧的文件对应的表,这样后面的代码都不用改动。 # MAGIC --新文件《全国-集团排名》筛选:TA=Retail Total,Rx/OTC= Rx,Top/Top Incre. = Top Sales,对应了旧文件:《全国-Rx-TOP集团》 # MAGIC insert overwrite table dwd.dwd_gnd_ext_retail_nataional_top_corp # MAGIC ( # MAGIC rank1, # MAGIC corp_desc, # MAGIC corporation, # MAGIC corp_type, # MAGIC sales_quarter, # MAGIC sales_amount, # MAGIC ytd_gr, # MAGIC ytd_ms, # MAGIC ytd_delta_ms, # MAGIC builtinarchivedate, # MAGIC source_file_path, # MAGIC source_file_name, # MAGIC etl_insert_dt # MAGIC ) # MAGIC select # MAGIC trim(rank1) as rank1, # MAGIC corp_desc, # MAGIC corporation, # MAGIC `type` as corp_type, # MAGIC sales_quarter, # MAGIC sales_amount, # MAGIC null as ytd_gr, # MAGIC null as ytd_ms, # MAGIC null as ytd_delta_ms, # MAGIC builtinarchivedate, # MAGIC source_file_path, # MAGIC source_file_name, # MAGIC etl_insert_dt # MAGIC from dwd.dwd_gnd_retail_national_corp_rank # MAGIC where upper(ta) = 'RETAIL TOTAL' # MAGIC and upper(rx_otc) = 'RX' # MAGIC and upper(top_top_incre) = 'TOP SALES' # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 3.3 calculate OTHERS DATA # MAGIC -- 3.3.1 将数据处理到dws # MAGIC -- 3.3.1.1 维度信息计算 # MAGIC -- STEP2: nataional_ta_top_corp # MAGIC ------------------------------------------------------------------------------------- # MAGIC --直接写入旧的文件对应的表,这样后面的代码都不用改动。 # MAGIC --新文件《全国-集团排名》筛选:TA <> Retail Total,Top/Top Incre. = Top Sales,对应了旧文件:《全国-分TA-TOP集团》 # MAGIC insert overwrite table dwd.dwd_gnd_ext_retail_nataional_ta_top_corp # MAGIC ( # MAGIC rank1, # MAGIC corp_desc, # MAGIC corp_name, # MAGIC corp_type, # MAGIC source_name, # MAGIC sales_quarter, # MAGIC sales_amount, # MAGIC ytd_gr, # MAGIC ytd_ms, # MAGIC ytd_delta_ms, # MAGIC builtinarchivedate, # MAGIC source_file_path, # MAGIC source_file_name, # MAGIC etl_insert_dt # MAGIC ) # MAGIC select # MAGIC trim(rank1) as rank1, # MAGIC corp_desc, # MAGIC corporation as corp_name, # MAGIC `type` as corp_type, # MAGIC case when ta = 'GI' then concat(ta,'-',rx_otc) # MAGIC when ta = 'NIAD-excl. GLP1' then 'DM' # MAGIC else ta end as source_name, # MAGIC sales_quarter, # MAGIC sales_amount, # MAGIC null as ytd_gr, # MAGIC null as ytd_ms, # MAGIC null as ytd_delta_ms, # MAGIC builtinarchivedate, # MAGIC source_file_path, # MAGIC source_file_name, # MAGIC etl_insert_dt # MAGIC from dwd.dwd_gnd_retail_national_corp_rank # MAGIC where upper(ta) <> 'RETAIL TOTAL' # MAGIC and upper(top_top_incre) = 'TOP SALES' # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 3.3 calculate OTHERS DATA # MAGIC -- 3.3.1 将数据处理到dws # MAGIC -- 3.3.1.2 将 top_corp 的数据处理到dws # MAGIC ------------------------------------------------------------------------------------- # MAGIC --------------------获取 全国total 本同期数据------------------------ # MAGIC insert overwrite table dws.dws_zk_retail_top_corp # MAGIC SELECT # MAGIC yyyymm, # MAGIC rank1, # MAGIC corp_desc, # MAGIC corporation, # MAGIC -- source_name, # MAGIC sum(sales_amount) as sales_amount, # MAGIC sum(sales_amount_ly) as sales_amount_ly # MAGIC FROM # MAGIC ( # MAGIC SELECT # MAGIC nvl(rank1,'' ) as rank1 , # MAGIC corp_desc, # MAGIC corporation, # MAGIC corp_type, # MAGIC -- source_name, # MAGIC CAST(sales_quarter AS int ) as yyyymm, # MAGIC sales_amount * 1000000 AS sales_amount, # MAGIC 0 AS sales_amount_ly # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp # MAGIC UNION ALL # MAGIC SELECT # MAGIC nvl(rank1,'' ) rank1, # MAGIC corp_desc, # MAGIC corporation, # MAGIC corp_type, # MAGIC -- source_name, # MAGIC CAST(sales_quarter + 100 AS int ) as yyyymm, # MAGIC 0 AS sales_amount, # MAGIC sales_amount * 1000000 AS sales_amount_ly # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp # MAGIC WHERE CAST(sales_quarter + 100 AS int ) # MAGIC <=(SELECT # MAGIC max(CAST(sales_quarter AS int )) # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp ) ) # MAGIC GROUP BY # MAGIC yyyymm, # MAGIC rank1, # MAGIC corp_desc, # MAGIC corporation # MAGIC -- source_name # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.3 calculate OTHERS DATA # MAGIC -- 3.3.1 将数据处理到dws # MAGIC -- 3.3.1.3 将 ta_top_corp 的数据处理到dws # MAGIC ------------------------------------------------------------------------------------- # MAGIC --------------------获取 ta total 本同期数据,用于后续取 total 及 az 值 # MAGIC insert overwrite table dws.dws_zk_retail_ta_top_corp # MAGIC SELECT # MAGIC source_name, # MAGIC rank1, # MAGIC corp_desc, # MAGIC CORP_COD, # MAGIC yyyymm, # MAGIC sum(sales_amount) sales_amount, # MAGIC sum(sales_amount_ly) sales_amount_ly # MAGIC FROM # MAGIC ( # MAGIC SELECT # MAGIC a.rank1, # MAGIC source_name, # MAGIC A.corp_desc, # MAGIC B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code # MAGIC CAST(sales_quarter AS int ) yyyymm , # MAGIC sales_amount * 1000000 AS sales_amount, # MAGIC 0 AS sales_amount_ly # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a # MAGIC LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b # MAGIC ON a.corp_desc = b.ZK_Corp_C # MAGIC UNION ALL # MAGIC SELECT # MAGIC a.rank1, # MAGIC source_name, # MAGIC A.corp_desc, # MAGIC B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code # MAGIC CAST(sales_quarter + 100 AS int ) yyyymm , # MAGIC 0 AS sales_amount, # MAGIC sales_amount * 1000000 AS sales_amount_ly # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a # MAGIC LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b # MAGIC ON a.corp_desc = b.ZK_Corp_C # MAGIC WHERE # MAGIC CAST(sales_quarter + 100 AS int ) # MAGIC <=( SELECT max(CAST(sales_quarter AS int )) # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp ) # MAGIC ) # MAGIC GROUP BY # MAGIC 1,2,3,4,5 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.3.2 calculate TA OTHERS # MAGIC -- 3.3.2.1 calculate CV_AZ_OTHERS # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_az_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_ta_top_corp # MAGIC where source_name='CV' # MAGIC AND CORP_COD ='A5Z' # MAGIC ), tmp_az_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC a.corp_cod, # MAGIC sum(a.sales_value) as sales_value , # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC where nvl(a.corp_cod,'') ='A5Z' # MAGIC and FLAG = 'CV' # MAGIC group by a.YYYYMM,a.corp_cod # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'CV_AZ_OTHERS' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC a.corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC -- 25年没有TA大数,此类数据直接赋值0 # MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'CV' as FLAG # MAGIC from tmp_az_pack_total a # MAGIC left join tmp_az_total b # MAGIC on a.YYYYMM = b.yyyymm # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.3.2 calculate TA OTHERS # MAGIC -- 3.3.2.2 calculate CV_OTHERS # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_ta_top_corp # MAGIC where source_name='CV' # MAGIC AND rank1 = 'Total' # MAGIC ), tmp_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC sum(a.sales_value) as sales_value, # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC where FLAG = 'CV' # MAGIC group by a.YYYYMM # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'CV_OTHERS' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC 'CV_OTHERS' as corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC -- 25年没有TA大数,此类数据直接赋值0 # MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'CV' as FLAG # MAGIC from tmp_pack_total a # MAGIC left join tmp_total b # MAGIC on a.YYYYMM = b.yyyymm # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.3.2 calculate TA OTHERS # MAGIC -- 3.3.2.3 calculate CVRM_AZ_OTHERS (TODO) # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_az_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_ta_top_corp # MAGIC where source_name='CVRM' # MAGIC AND CORP_COD ='A5Z' # MAGIC ), tmp_az_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC a.corp_cod, # MAGIC sum(a.sales_value) as sales_value , # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC where nvl(a.corp_cod,'') ='A5Z' # MAGIC and FLAG = 'CVRM' # MAGIC group by a.YYYYMM,a.corp_cod # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'CVRM_AZ_OTHERS' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC a.corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC -- 25年没有TA大数,此类数据直接赋值0 # MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'CVRM' as FLAG # MAGIC from tmp_az_pack_total a # MAGIC left join tmp_az_total b # MAGIC on a.YYYYMM = b.yyyymm # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 5.3.2 calculate TA OTHERS # MAGIC -- 5.3.2.4 calculate CVRM_OTHERS (TODO) # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_ta_top_corp # MAGIC where source_name='CVRM' # MAGIC AND rank1 = 'Total' # MAGIC ), tmp_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC sum(a.sales_value) as sales_value, # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC where FLAG = 'CVRM' # MAGIC group by a.YYYYMM # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'CVRM_OTHERS' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC 'CV_OTHERS' as corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC -- 25年没有TA大数,此类数据直接赋值0 # MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC -------------------------* hard_code * ------------------------- # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'CVRM' as FLAG # MAGIC from tmp_pack_total a # MAGIC left join tmp_total b # MAGIC on a.YYYYMM = b.yyyymm # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 5.3.3 calculate OTHERS # MAGIC -- 5.3.3.1 calculate OTHERS_AZ_TA # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_az_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_top_corp # MAGIC where corp_desc = '阿斯利康' # MAGIC ), tmp_az_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC a.corp_cod, # MAGIC sum(a.sales_value) as sales_value , # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC where nvl(a.corp_cod,'') ='A5Z' # MAGIC group by a.YYYYMM,a.corp_cod # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'OTHERS_AZ_TA' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC a.corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'TA_AZ' as FLAG # MAGIC from tmp_az_pack_total a # MAGIC left join tmp_az_total b # MAGIC on a.YYYYMM = b.yyyymm # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_sales # MAGIC -- 5.3.3 calculate OTHERS # MAGIC -- 5.3.3.2 calculate OTHERS_TA # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_total as ( # MAGIC select # MAGIC yyyymm, # MAGIC sales_amount, # MAGIC sales_amount_ly # MAGIC from dws.dws_zk_retail_top_corp # MAGIC where rank1 = 'Total' # MAGIC ), tmp_pack_total as ( # MAGIC select # MAGIC a.YYYYMM, # MAGIC sum(a.sales_value) as sales_value, # MAGIC sum(a.sales_value_ly) as sales_value_ly # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a # MAGIC group by a.YYYYMM # MAGIC ) # MAGIC # MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final # MAGIC # MAGIC select # MAGIC a.YYYYMM, # MAGIC 'OTHERS_TA' as iqvia_pack_code, # MAGIC 'ROC' as AUDIT_COD, # MAGIC 'ROC' as province_city, # MAGIC 'OTHERS_TA' as corp_cod, # MAGIC 0 as sales_unit, # MAGIC 0 as sales_unit_ly, # MAGIC case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, # MAGIC case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, # MAGIC 0 as counting_unit, # MAGIC 0 as counting_unit_ly, # MAGIC 'Retail(Quarterly)' as DATA_SOURCE, # MAGIC null as source, # MAGIC 0 as pack_flag, # MAGIC 0 as brand_flag, # MAGIC 'OTHERS_TA' as FLAG # MAGIC from tmp_pack_total a # MAGIC left join tmp_total b # MAGIC on a.YYYYMM = b.yyyymm # COMMAND ---------- # MAGIC %md # MAGIC ### 3.3 映射到DM最终表 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.4 write into final table: dm.dm_zk_retail_sales # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dm.dm_zk_retail_sales # MAGIC # MAGIC select # MAGIC yyyymm, # MAGIC iqvia_pack_code, # MAGIC AUDIT_COD, # MAGIC province_city, # MAGIC corp_cod, # MAGIC sales_unit, # MAGIC sales_unit_ly, # MAGIC sales_value, # MAGIC sales_value_ly, # MAGIC counting_unit, # MAGIC counting_unit_ly, # MAGIC DATA_SOURCE, # MAGIC source, # MAGIC pack_flag, # MAGIC brand_flag, # MAGIC FLAG, # MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, # MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final # COMMAND ---------- # MAGIC %md # MAGIC ### 3.4 补充新增的OTHERS数据到配置表中 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: map to dm.dm_zk_retail_sales # MAGIC -- 3.5 将倒减的OTHERS数据补充到配置表中 # MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 # MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert overwrite table dws.dws_zk_retail_pack_property # MAGIC ( # MAGIC iqvia_lineno, # MAGIC iqvia_pack_code, # MAGIC PROD_COD, # MAGIC iqvia_notes, # MAGIC new_pack_flag, # MAGIC is_exists_chpa, # MAGIC product_id, # MAGIC prescription_nature, # MAGIC medicine_type, # MAGIC zk_medicine_tier1, # MAGIC zk_medicine_tier2, # MAGIC zk_medicine_tier3, # MAGIC zk_medicine_tier4, # MAGIC common_name, # MAGIC dosage_form, # MAGIC user_type, # MAGIC category_name, # MAGIC product_name, # MAGIC brand_name, # MAGIC zk_manu_des, # MAGIC zk_corp_des, # MAGIC zk_pack_des, # MAGIC counting_unit_a, # MAGIC dosage_unit_a, # MAGIC unit_a, # MAGIC app1_cod, # MAGIC app1_des, # MAGIC app1_des_c, # MAGIC app2_cod, # MAGIC app2_des, # MAGIC app2_des_c, # MAGIC app3_cod, # MAGIC app3_des, # MAGIC app3_des_c, # MAGIC atc1_cod, # MAGIC atc1_des, # MAGIC atc1_des_c, # MAGIC atc2_cod, # MAGIC atc2_des, # MAGIC atc2_des_c, # MAGIC atc3_cod, # MAGIC atc3_des, # MAGIC atc3_des_c, # MAGIC atc4_cod, # MAGIC atc4_des, # MAGIC atc4_des_c, # MAGIC bio_desc, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC corp_cod, # MAGIC corp_des, # MAGIC corp_des_c, # MAGIC edl_desc, # MAGIC eth_otc_desc, # MAGIC gene_orig_desc, # MAGIC gqce_desc, # MAGIC manu_cod, # MAGIC manu_des, # MAGIC manu_des_c, # MAGIC mnfl_cod, # MAGIC mnfl_des, # MAGIC nrdl_desc, # MAGIC pack_des, # MAGIC stgh_des, # MAGIC pack_lch, # MAGIC paed_desc, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC tcm_desc, # MAGIC vbp_desc, # MAGIC unit, # MAGIC counting_unit, # MAGIC dosage_unit, # MAGIC NRDL_ENTRY_DATE, # MAGIC market, # MAGIC bu, # MAGIC extend_market_ratio, # MAGIC is_az, # MAGIC etl_insert_dt, # MAGIC etl_update_dt # MAGIC ) # MAGIC select # MAGIC iqvia_lineno, # MAGIC iqvia_pack_code, # MAGIC PROD_COD, # MAGIC iqvia_notes, # MAGIC new_pack_flag, # MAGIC is_exists_chpa, # MAGIC product_id, # MAGIC prescription_nature, # MAGIC medicine_type, # MAGIC zk_medicine_tier1, # MAGIC zk_medicine_tier2, # MAGIC zk_medicine_tier3, # MAGIC zk_medicine_tier4, # MAGIC common_name, # MAGIC dosage_form, # MAGIC user_type, # MAGIC category_name, # MAGIC product_name, # MAGIC brand_name, # MAGIC zk_manu_des, # MAGIC zk_corp_des, # MAGIC zk_pack_des, # MAGIC counting_unit_a, # MAGIC dosage_unit_a, # MAGIC unit_a, # MAGIC app1_cod, # MAGIC app1_des, # MAGIC app1_des_c, # MAGIC app2_cod, # MAGIC app2_des, # MAGIC app2_des_c, # MAGIC app3_cod, # MAGIC app3_des, # MAGIC app3_des_c, # MAGIC atc1_cod, # MAGIC atc1_des, # MAGIC atc1_des_c, # MAGIC atc2_cod, # MAGIC atc2_des, # MAGIC atc2_des_c, # MAGIC atc3_cod, # MAGIC atc3_des, # MAGIC atc3_des_c, # MAGIC atc4_cod, # MAGIC atc4_des, # MAGIC atc4_des_c, # MAGIC bio_desc, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC corp_cod, # MAGIC corp_des, # MAGIC corp_des_c, # MAGIC edl_desc, # MAGIC eth_otc_desc, # MAGIC gene_orig_desc, # MAGIC gqce_desc, # MAGIC manu_cod, # MAGIC manu_des, # MAGIC manu_des_c, # MAGIC mnfl_cod, # MAGIC mnfl_des, # MAGIC nrdl_desc, # MAGIC pack_des, # MAGIC stgh_des, # MAGIC pack_lch, # MAGIC paed_desc, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC tcm_desc, # MAGIC vbp_desc, # MAGIC unit, # MAGIC counting_unit, # MAGIC dosage_unit, # MAGIC NRDL_ENTRY_DATE, # MAGIC market, # MAGIC bu, # MAGIC extend_market_ratio, # MAGIC is_az, # MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from tmp.tmp_zk_retail_pack_property # MAGIC union all # MAGIC ------事实表中倒减出来的pack 需要补充到配置表中 # MAGIC select # MAGIC '' iqvia_lineno # MAGIC ,iqvia_pack_code # MAGIC ,'' prod_cod # MAGIC ,'' iqvia_notes # MAGIC ,'' new_pack_flag # MAGIC ,'' Is_exists_chpa # MAGIC ,iqvia_pack_code product_id # MAGIC ,'' prescription_nature # MAGIC ,'' medicine_type # MAGIC ,'' zk_medicine_tier1 # MAGIC ,'' zk_medicine_tier2 # MAGIC ,'' zk_medicine_tier3 # MAGIC ,'' zk_medicine_tier4 # MAGIC ,'' common_name # MAGIC ,'' dosage_form # MAGIC ,'' user_type # MAGIC ,'' category_name # MAGIC ,'' product_name # MAGIC ,'' brand_name # MAGIC ,'' zk_manu_des # MAGIC ,'' zk_corp_des # MAGIC ,'' zk_pack_des # MAGIC ,'' counting_unit_a # MAGIC ,'' dosage_unit_a # MAGIC ,'' unit_a # MAGIC ,'' app1_cod # MAGIC ,'' app1_des # MAGIC ,'' app1_des_c # MAGIC ,'' app2_cod # MAGIC ,'' app2_des # MAGIC ,'' app2_des_c # MAGIC ,'' app3_cod # MAGIC ,'' app3_des # MAGIC ,'' app3_des_c # MAGIC ,'' atc1_cod # MAGIC ,'' atc1_des # MAGIC ,'' atc1_des_c # MAGIC ,'' atc2_cod # MAGIC ,'' atc2_des # MAGIC ,'' atc2_des_c # MAGIC ,'' atc3_cod # MAGIC # MAGIC ,'' atc3_des # MAGIC ,'' atc3_des_c # MAGIC ,'' atc4_cod # MAGIC ,'' atc4_des # MAGIC ,'' atc4_des_c # MAGIC ,'' bio_desc # MAGIC ,'' cmps_cod # MAGIC ,'' cmps_des # MAGIC ,'' cmps_des_c # MAGIC ,corp_cod corp_cod # MAGIC ,'' corp_des # MAGIC ,'' corp_des_c # MAGIC ,'' edl_desc # MAGIC ,'' eth_otc_desc # MAGIC ,'' gene_orig_desc # MAGIC ,'' gqce_desc # MAGIC ,'' manu_cod # MAGIC ,'' manu_des # MAGIC ,'' manu_des_c # MAGIC ,'' mnfl_cod # MAGIC ,'' mnfl_des # MAGIC ,'' nrdl_desc # MAGIC ,'' pack_des # MAGIC ,'' stgh_des # MAGIC ,'' pack_lch # MAGIC ,'' paed_desc # MAGIC ,'Others' prod_des # MAGIC ,'Others' prod_des_c # MAGIC ,'' tcm_desc # MAGIC ,'' vbp_desc # MAGIC ,'' unit # MAGIC ,'' counting_unit # MAGIC ,'' dosage_unit # MAGIC ,'' NRDL_ENTRY_DATE # MAGIC ,'Non AZ Retail Related Market' market # MAGIC ,'' bu # MAGIC ,1 extend_market_ratio # MAGIC ,CASE WHEN iqvia_pack_code LIKE '%AZ%' THEN 'Y' ELSE 'N' END is_az # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from ( # MAGIC select distinct iqvia_pack_code,corp_cod # MAGIC from DM.dm_zk_retail_sales # MAGIC where iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_zk_retail_pack_property) # MAGIC ) # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-4: map to dm.dm_zk_retail_pack_property # COMMAND ---------- # MAGIC %md # MAGIC ### 4.1 对公司归属从新划分 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property # MAGIC -- 4.1 对公司归属从新划分 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table tmp.tmp_dm_zk_retail_pack_property # MAGIC ( # MAGIC iqvia_lineno, # MAGIC iqvia_pack_code, # MAGIC PROD_COD, # MAGIC iqvia_notes, # MAGIC new_pack_flag, # MAGIC is_exists_chpa, # MAGIC product_id, # MAGIC prescription_nature, # MAGIC medicine_type, # MAGIC zk_medicine_tier1, # MAGIC zk_medicine_tier2, # MAGIC zk_medicine_tier3, # MAGIC zk_medicine_tier4, # MAGIC common_name, # MAGIC dosage_form, # MAGIC user_type, # MAGIC category_name, # MAGIC product_name, # MAGIC brand_name, # MAGIC zk_manu_des, # MAGIC zk_corp_des, # MAGIC zk_pack_des, # MAGIC counting_unit_a, # MAGIC dosage_unit_a, # MAGIC unit_a, # MAGIC app1_cod, # MAGIC app1_des, # MAGIC app1_des_c, # MAGIC app2_cod, # MAGIC app2_des, # MAGIC app2_des_c, # MAGIC app3_cod, # MAGIC app3_des, # MAGIC app3_des_c, # MAGIC atc1_cod, # MAGIC atc1_des, # MAGIC atc1_des_c, # MAGIC atc2_cod, # MAGIC atc2_des, # MAGIC atc2_des_c, # MAGIC atc3_cod, # MAGIC atc3_des, # MAGIC atc3_des_c, # MAGIC atc4_cod, # MAGIC atc4_des, # MAGIC atc4_des_c, # MAGIC bio_desc, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC corp_cod, # MAGIC corp_des, # MAGIC corp_des_c, # MAGIC edl_desc, # MAGIC eth_otc_desc, # MAGIC gene_orig_desc, # MAGIC gqce_desc, # MAGIC manu_cod, # MAGIC manu_des, # MAGIC manu_des_c, # MAGIC mnfl_cod, # MAGIC mnfl_des, # MAGIC nrdl_desc, # MAGIC pack_des, # MAGIC stgh_des, # MAGIC pack_lch, # MAGIC paed_desc, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC tcm_desc, # MAGIC vbp_desc, # MAGIC unit, # MAGIC counting_unit, # MAGIC dosage_unit, # MAGIC NRDL_ENTRY_DATE, # MAGIC MARKET, # MAGIC bu, # MAGIC extend_market_ratio, # MAGIC is_az # MAGIC ) # MAGIC select distinct # MAGIC a.iqvia_lineno # MAGIC ,a.iqvia_pack_code # MAGIC ,a.PROD_COD # MAGIC ,a.iqvia_notes # MAGIC ,a.new_pack_flag # MAGIC ,a.is_exists_chpa # MAGIC ,a.product_id # MAGIC ,a.prescription_nature # MAGIC ,a.medicine_type # MAGIC ,a.zk_medicine_tier1 # MAGIC ,a.zk_medicine_tier2 # MAGIC ,a.zk_medicine_tier3 # MAGIC ,a.zk_medicine_tier4 # MAGIC ,a.common_name # MAGIC ,a.dosage_form # MAGIC ,a.user_type # MAGIC ,a.category_name # MAGIC ,a.product_name # MAGIC ,a.brand_name # MAGIC ,a.zk_manu_des # MAGIC ,a.zk_corp_des # MAGIC ,a.zk_pack_des # MAGIC ,a.counting_unit_a # MAGIC ,a.dosage_unit_a # MAGIC ,a.unit_a # MAGIC ,a.app1_cod # MAGIC ,a.app1_des # MAGIC ,a.app1_des_c # MAGIC ,a.app2_cod # MAGIC ,a.app2_des # MAGIC ,a.app2_des_c # MAGIC ,a.app3_cod # MAGIC ,a.app3_des # MAGIC ,a.app3_des_c # MAGIC ,a.atc1_cod # MAGIC ,a.atc1_des # MAGIC ,a.atc1_des_c # MAGIC ,a.atc2_cod # MAGIC ,a.atc2_des # MAGIC ,a.atc2_des_c # MAGIC ,a.atc3_cod # MAGIC ,a.atc3_des # MAGIC ,a.atc3_des_c # MAGIC ,a.atc4_cod # MAGIC ,a.atc4_des # MAGIC ,a.atc4_des_c # MAGIC ,a.bio_desc # MAGIC ,a.cmps_cod # MAGIC ,a.cmps_des # MAGIC ,a.cmps_des_c # MAGIC ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod # MAGIC ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des # MAGIC ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c # MAGIC ,a.edl_desc # MAGIC ,a.eth_otc_desc # MAGIC ,a.gene_orig_desc # MAGIC ,a.gqce_desc # MAGIC ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod # MAGIC ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des # MAGIC ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c # MAGIC ,a.mnfl_cod # MAGIC ,a.mnfl_des # MAGIC ,a.nrdl_desc # MAGIC ,a.pack_des # MAGIC ,a.stgh_des # MAGIC ,a.pack_lch # MAGIC ,a.paed_desc # MAGIC ,a.prod_des # MAGIC ,a.prod_des_c # MAGIC ,a.tcm_desc # MAGIC ,a.vbp_desc # MAGIC ,a.unit # MAGIC ,a.counting_unit # MAGIC ,a.dosage_unit # MAGIC ,a.NRDL_ENTRY_DATE # MAGIC ,A.MARKET # MAGIC ,a.bu # MAGIC ,a.extend_market_ratio # MAGIC ,a.is_az # MAGIC from dws.dws_zk_retail_pack_property a # MAGIC left join ( # MAGIC select # MAGIC ---------------------------------------------- # MAGIC -- format prod_cod # MAGIC case when length(prod_cod) < 9 then right(concat('000000000',prod_cod),9) else prod_cod end as prod_cod, # MAGIC ---------------------------------------------- # MAGIC corp_cod,corp_des, # MAGIC right(concat('000000',manu_cod ),6) manu_cod, # MAGIC manu_des # MAGIC from dwd.dwd_gnd_tbl_corp_change # MAGIC where pack_cod is null # MAGIC ) b on a.prod_cod = b.prod_cod # MAGIC left join ( # MAGIC select # MAGIC ---------------------------------------------- # MAGIC -- format pack_cod # MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' then right(concat('000000000000',trim(pack_cod)),12) else trim(pack_cod) end as pack_cod, # MAGIC ---------------------------------------------- # MAGIC corp_cod, # MAGIC corp_des, # MAGIC right(concat('000000',manu_cod ),6) manu_cod, # MAGIC manu_des # MAGIC from dwd.dwd_gnd_tbl_corp_change # MAGIC where pack_cod is not null # MAGIC ) c on a.iqvia_pack_code = c.pack_cod # MAGIC left join ( # MAGIC select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property # MAGIC ) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod # MAGIC Left join ( # MAGIC select # MAGIC distinct # MAGIC right(concat('000000',manu_cod ),6) manu_cod, # MAGIC manu_des, # MAGIC manu_des_c # MAGIC from dwd.dwd_gnd_ext_retail_pack_property # MAGIC ) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod # COMMAND ---------- # MAGIC %md # MAGIC ### 4.2 获取pack market的对应关系 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property # MAGIC -- 4.2 获取pack market的对应关系 # MAGIC -- 4.2.1 从底表获取market 与ta 对应关系 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dws.dws_ext_retail_td_ta # MAGIC select # MAGIC market, # MAGIC ta, # MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, # MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from dwd.dwd_gnd_ext_retail_dim_ta; # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property # MAGIC -- 4.2 获取pack market的对应关系 # MAGIC -- 4.2.2 获取pack market的对应关系, 映射到dm # MAGIC ------------------------------------------------------------------------------------- # MAGIC INSERT OVERWRITE table dm.dm_zk_retail_pack_property # MAGIC SELECT # MAGIC MARKET_PACK_KEY # MAGIC ,iqvia_pack_code iqvia_pack_code # MAGIC ,MAX(pack_des) pack_des # MAGIC ,MAX(stgh_des) stgh_des # MAGIC ,MAX(pack_lch) pack_lch # MAGIC ,MAX(Family_Code) Family_Code # MAGIC ,MAX(Family_Name) Family_Name # MAGIC ,MAX(iqvia_prod_code) iqvia_prod_code # MAGIC ,MAX(prod_des) prod_des # MAGIC ,MAX(prod_des_c) prod_des_c # MAGIC ,MAX(cmps_cod) cmps_cod # MAGIC ,MAX(CMPS_DES) CMPS_DES # MAGIC ,MAX(cmps_des_c) cmps_des_c # MAGIC ,MAX(atc1_cod) atc1_cod # MAGIC ,MAX(atc2_cod) atc2_cod # MAGIC ,MAX(atc3_cod) atc3_cod # MAGIC ,MAX(atc4_cod) atc4_cod # MAGIC ,MAX(APP1_COD) APP1_COD # MAGIC ,MAX(APP2_COD) APP2_COD # MAGIC ,MAX(APP3_COD) APP3_COD # MAGIC ,MAX(BIO_DESC) BIO_DESC # MAGIC ,MAX(gene_orig_desc) gene_orig_desc # MAGIC ,MAX(ETH_OTC_DESC) ETH_OTC_DESC # MAGIC ,MAX(nrdl_desc) nrdl_desc # MAGIC ,MAX(NRDL_ENTRY_DATE) NRDL_ENTRY_DATE # MAGIC ,MAX(edl_desc) edl_desc # MAGIC ,MAX(TCM_DESC) TCM_DESC # MAGIC ,MAX(PAED_DESC) PAED_DESC # MAGIC ,MAX(GQCE_DESC) GQCE_DESC # MAGIC ,MAX(VBP_DESC) VBP_DESC # MAGIC ,MAX(MANU_COD) MANU_COD # MAGIC ,MAX(MANU_DES) MANU_DES # MAGIC ,MAX(MANU_DES_C) MANU_DES_C # MAGIC ,MAX(MNFL_COD) MNFL_COD # MAGIC ,MAX(MNFL_DES) MNFL_DES # MAGIC ,MAX(corp_cod) corp_cod # MAGIC ,MAX(corp_des) corp_des # MAGIC ,MAX(CORP_DES_C) CORP_DES_C # MAGIC ,MAX(BrandType) BrandType # MAGIC ,MAX(market) market # MAGIC ,MAX(KEY_COMPETITOR) KEY_COMPETITOR # MAGIC ,MAX(is_az) is_az # MAGIC ,MAX(AZ_MAIN) AZ_MAIN # MAGIC ,MAX(AZ_Related) AZ_Related # MAGIC ,MAX(atc1_des) atc1_des # MAGIC ,MAX(atc1_des_c) atc1_des_c # MAGIC ,MAX(atc2_des) atc2_des # MAGIC ,MAX(atc2_des_c) atc2_des_c # MAGIC ,MAX(atc3_des) atc3_des # MAGIC ,MAX(atc3_des_c) atc3_des_c # MAGIC ,MAX(atc4_des) atc4_des # MAGIC ,MAX(atc4_des_c) atc4_des_c # MAGIC ,MAX(app1_des) app1_des # MAGIC ,MAX(app1_des_c) app1_des_c # MAGIC ,MAX(app2_des) app2_des # MAGIC ,MAX(app2_des_c) app2_des_c # MAGIC ,MAX(app3_des) app3_des # MAGIC ,MAX(app3_des_c) app3_des_c # MAGIC ,MAX(class) class # MAGIC ,MAX(TA) TA # MAGIC FROM ( # MAGIC select # MAGIC distinct # MAGIC CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' # MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' # MAGIC WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' # MAGIC ELSE a.market # MAGIC END ||'_'||a.iqvia_pack_code MARKET_PACK_KEY # MAGIC ,a.iqvia_pack_code # MAGIC ,c.pack_des # MAGIC ,c.stgh_des # MAGIC ,c.pack_lch # MAGIC ,'' Family_Code # MAGIC ,'' Family_Name # MAGIC ,c.iqvia_prod_code # MAGIC ,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des end prod_des # MAGIC ,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des_c end prod_des_c # MAGIC ,c.cmps_cod # MAGIC ,c.CMPS_DES # MAGIC ,c.cmps_des_c # MAGIC ,c.atc1_cod # MAGIC ,c.atc2_cod # MAGIC ,c.atc3_cod # MAGIC ,c.atc4_cod # MAGIC ,c.APP1_COD # MAGIC ,c.APP2_COD # MAGIC ,c.APP3_COD # MAGIC ,c.BIO_DESC # MAGIC ,c.gene_orig_desc # MAGIC ,c.ETH_OTC_DESC # MAGIC ,c.nrdl_desc # MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE # MAGIC ,c.edl_desc # MAGIC ,c.TCM_DESC # MAGIC ,c.PAED_DESC # MAGIC ,c.GQCE_DESC # MAGIC ,c.VBP_DESC # MAGIC ,a.MANU_COD # MAGIC ,a.MANU_DES # MAGIC ,a.MANU_DES_C # MAGIC ,c.MNFL_COD # MAGIC ,c.MNFL_DES # MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' else a.CORP_COD END as corp_cod # MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' else case when a.CORP_DES like '% GROUP%' THEN replace(a.CORP_DES ,' GROUP','' ) ELSE a.CORP_DES END END as corp_des # MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' else a.CORP_DES_C END CORP_DES_C # MAGIC ,'' BrandType # MAGIC ,CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' # MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' # MAGIC WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' # MAGIC ELSE a.market # MAGIC END market # MAGIC ,t5.KEY_COMPETITOR # MAGIC ,IF(a.corp_des_c in('阿斯利康制药集团') or A.iqvia_pack_code LIKE '%AZ%' ,'Y','N') is_az # MAGIC ,'' AZ_MAIN # MAGIC ,'' AZ_Related # MAGIC ,c.atc1_des # MAGIC ,c.atc1_des_c # MAGIC ,c.atc2_des # MAGIC ,c.atc2_des_c # MAGIC ,c.atc3_des # MAGIC ,c.atc3_des_c # MAGIC ,c.atc4_des # MAGIC ,c.atc4_des_c # MAGIC ,c.app1_des # MAGIC ,c.app1_des_c # MAGIC ,c.app2_des # MAGIC ,c.app2_des_c # MAGIC ,c.app3_des # MAGIC ,c.app3_des_c # MAGIC ,nvl(t3.class,'Others') class # MAGIC ,case when a.market ='Antacid anti GI swelling agent+PPI Oral' then 'GI' # MAGIC when a.MARKET ='RD Market' then 'RD' # MAGIC ELSE # MAGIC CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM' # MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV' # MAGIC ELSE t2.ta END # MAGIC END TA # MAGIC from tmp.tmp_dm_zk_retail_pack_property a # MAGIC left join dwd.dwd_gnd_ext_retail_pack_property c on a.product_id = c.product_id # MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE # MAGIC -------------------------------------------------------------------- # MAGIC -- format pack_code from dwd_ims_td_pack_additional_attribute # MAGIC ON a.iqvia_pack_code = # MAGIC case when length(trim(MOLE.Pack_Code)) < 12 and trim(MOLE.Pack_Code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(MOLE.Pack_Code)),12) # MAGIC else trim(MOLE.Pack_Code) # MAGIC end # MAGIC -------------------------------------------------------------------- # MAGIC left join dws.dws_ext_retail_td_ta t2 on a.market = t2.market # MAGIC left join dwd.dwd_gnd_tblclass t3 on a.MARKET = case when t3.market is null then a.market else t3.market end # MAGIC ----------------------------------------------------------------------------- # MAGIC -- format pack_code from dwd_gnd_tblclass # MAGIC and nvl(a.iqvia_pack_code,'') = # MAGIC case when t3.pack_code is null # MAGIC then nvl(a.iqvia_pack_code,'') # MAGIC else # MAGIC case when length(trim(t3.pack_code)) < 12 and trim(t3.pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t3.pack_code)),12) # MAGIC else trim(t3.pack_code) # MAGIC end # MAGIC end # MAGIC ----------------------------------------------------------------------------- # MAGIC -- format product_code from dwd_gnd_tblclass # MAGIC and nvl(a.PROD_COD,'') = # MAGIC case when t3.product_code is null # MAGIC then nvl(a.PROD_COD,'') # MAGIC else case when length(t3.product_code) < 9 then right(concat('000000000',t3.product_code),9) else t3.product_code end # MAGIC end # MAGIC ----------------------------------------------------------------------------- # MAGIC and nvl(a.cmps_cod,'') = case when t3.molecule_code is null then nvl(a.cmps_cod ,'') else right(concat('000000', t3.molecule_code ),6 ) end # MAGIC and nvl(a.corp_cod,'') = case when t3.Corporation_code is null then nvl(a.corp_cod ,'') else t3.Corporation_code end # MAGIC and nvl(a.manu_cod,'')=case when t3.Manufacturer_Code is null then nvl(a.manu_cod,'') else t3.Manufacturer_Code end # MAGIC and nvl(c.atc1_cod,'') = case when t3.ATC1_Code is null then nvl(c.atc1_cod ,'') else t3.ATC1_Code end # MAGIC and nvl(c.ATC2_COD,'') = case when t3.ATC2_Code is null then nvl(c.ATC2_COD ,'') else t3.ATC2_Code end # MAGIC and nvl(c.ATC3_COD,'') = case when t3.ATC3_Code is null then nvl(c.ATC3_COD ,'') else t3.ATC3_Code end # MAGIC and nvl(c.ATC4_COD,'') = case when t3.ATC4_Code is null then nvl(c.ATC4_COD ,'') else t3.ATC4_Code end # MAGIC and nvl(c.app1_cod,'') = case when t3.NFC1_Code is null then nvl(c.app1_cod ,'') else t3.NFC1_Code end # MAGIC and nvl(c.APP2_COD,'') = case when t3.NFC2_Code is null then nvl(c.APP2_COD ,'') else t3.NFC2_Code end # MAGIC and nvl(c.APP3_COD,'') = case when t3.NFC3_Code is null then nvl(c.APP3_COD ,'') else t3.NFC3_Code end # MAGIC and nvl(c.stgh_des,'') = case when t3.Strength is null then nvl(c.stgh_des ,'') else t3.Strength end # MAGIC left join (select distinct MARKET,PACK_CODE as pack_cod,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 # MAGIC on a.market = t5.MARKET # MAGIC and a.iqvia_pack_code = t5.PACK_COD # MAGIC ) # MAGIC group by MARKET_PACK_KEY ,iqvia_pack_code # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-5: map to dm.dm_zk_retail_market_property # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-5: map to dm.dm_zk_retail_market_property # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dm.dm_zk_retail_market_property # MAGIC select # MAGIC distinct # MAGIC iqvia_pack_code, # MAGIC market, # MAGIC ta # MAGIC from dm.dm_zk_retail_pack_property # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-6: map to dm.dm_zk_retail_dtp_pack_property # COMMAND ---------- # DBTITLE 1,overwrite dws.dws_zk_retail_dtp_market # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-6: map to dm.dm_zk_retail_dtp_pack_property # MAGIC -- 6.1 dtp 部分生成dws # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dws.dws_zk_retail_dtp_market # MAGIC ( # MAGIC region_type, # MAGIC higher_level_region, # MAGIC market, # MAGIC iqvia_pack_code, # MAGIC iqvia_prod_code, # MAGIC iqvia_notes, # MAGIC new_pack_flag, # MAGIC is_exists_chpa, # MAGIC prescription_nature, # MAGIC common_name, # MAGIC dosage_form, # MAGIC category_name, # MAGIC product_name, # MAGIC brand_name, # MAGIC zk_corp_des, # MAGIC zk_pack_des, # MAGIC counting_unit_a, # MAGIC app1_cod, # MAGIC app1_des, # MAGIC app1_des_c, # MAGIC app2_cod, # MAGIC app2_des, # MAGIC app2_des_c, # MAGIC app3_cod, # MAGIC app3_des, # MAGIC app3_des_c, # MAGIC atc1_cod, # MAGIC atc1_des, # MAGIC atc1_des_c, # MAGIC atc2_cod, # MAGIC atc2_des, # MAGIC atc2_des_c, # MAGIC atc3_cod, # MAGIC atc3_des, # MAGIC atc3_des_c, # MAGIC atc4_cod, # MAGIC atc4_des, # MAGIC atc4_des_c, # MAGIC bio_desc, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC corp_cod, # MAGIC corp_des, # MAGIC corp_des_c, # MAGIC edl_desc, # MAGIC eth_otc_desc, # MAGIC gene_orig_desc, # MAGIC gqce_desc, # MAGIC manu_cod, # MAGIC manu_des, # MAGIC manu_des_c, # MAGIC mnfl_cod, # MAGIC mnfl_des, # MAGIC nrdl_desc, # MAGIC pack_des, # MAGIC stgh_des, # MAGIC pack_lch, # MAGIC paed_desc, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC tcm_desc, # MAGIC vbp_desc, # MAGIC unit, # MAGIC counting_unit, # MAGIC dosage_unit, # MAGIC NRDL_ENTRY_DATE, # MAGIC bu, # MAGIC Market_Ratio # MAGIC ) # MAGIC select # MAGIC distinct # MAGIC NULL AS region_type, # MAGIC NULL AS higher_level_region, # MAGIC market, # MAGIC iqvia_pack_code, # MAGIC iqvia_prod_code, # MAGIC iqvia_notes, # MAGIC new_pack_flag, # MAGIC is_exists_chpa, # MAGIC NULL AS prescription_nature, # MAGIC NULL AS common_name, # MAGIC NULL AS dosage_form, # MAGIC NULL AS category_name, # MAGIC NULL AS product_name, # MAGIC NULL AS brand_name, # MAGIC NULL AS zk_corp_des, # MAGIC NULL AS zk_pack_des, # MAGIC NULL AS counting_unit_a, # MAGIC app1_cod, # MAGIC app1_des, # MAGIC app1_des_c, # MAGIC app2_cod, # MAGIC app2_des, # MAGIC app2_des_c, # MAGIC app3_cod, # MAGIC app3_des, # MAGIC app3_des_c, # MAGIC atc1_cod, # MAGIC atc1_des, # MAGIC atc1_des_c, # MAGIC atc2_cod, # MAGIC atc2_des, # MAGIC atc2_des_c, # MAGIC atc3_cod, # MAGIC atc3_des, # MAGIC atc3_des_c, # MAGIC atc4_cod, # MAGIC atc4_des, # MAGIC atc4_des_c, # MAGIC bio_desc, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC corp_cod, # MAGIC corp_des, # MAGIC corp_des_c, # MAGIC edl_desc, # MAGIC eth_otc_desc, # MAGIC gene_orig_desc, # MAGIC gqce_desc, # MAGIC manu_cod, # MAGIC manu_des, # MAGIC manu_des_c, # MAGIC mnfl_cod, # MAGIC mnfl_des, # MAGIC nrdl_desc, # MAGIC pack_des, # MAGIC stgh_des, # MAGIC pack_lch, # MAGIC paed_desc, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC tcm_desc, # MAGIC vbp_desc, # MAGIC unit, # MAGIC counting_unit, # MAGIC dosage_unit, # MAGIC NRDL_ENTRY_DATE, # MAGIC bu, # MAGIC Market_Ratio # MAGIC from tmp.tmp_zk_retail_dtp_market_corp t1 # MAGIC union # MAGIC select # MAGIC distinct # MAGIC '' region_type # MAGIC ,'' higher_level_region # MAGIC ,'DTP_OTHER Market' market # MAGIC ,iqvia_pack_code # MAGIC ,'' iqvia_prod_code # MAGIC ,'' iqvia_notes # MAGIC ,'' new_pack_flag # MAGIC ,'' is_exists_chpa # MAGIC ,'' prescription_nature # MAGIC ,'' common_name # MAGIC ,'' dosage_form # MAGIC ,'' category_name # MAGIC ,'' product_name # MAGIC ,'' brand_name # MAGIC ,'' zk_corp_des # MAGIC ,'' zk_pack_des # MAGIC ,'' counting_unit_a # MAGIC ,'' app1_cod # MAGIC ,'' app1_des # MAGIC ,'' app1_des_c # MAGIC ,'' app2_cod # MAGIC ,'' app2_des # MAGIC ,'' app2_des_c # MAGIC ,'' app3_cod # MAGIC ,'' app3_des # MAGIC ,'' app3_des_c # MAGIC ,'' atc1_cod # MAGIC ,'' atc1_des # MAGIC ,'' atc1_des_c # MAGIC ,'' atc2_cod # MAGIC ,'' atc2_des # MAGIC ,'' atc2_des_c # MAGIC ,'' atc3_cod # MAGIC ,'' atc3_des # MAGIC ,'' atc3_des_c # MAGIC ,'' atc4_cod # MAGIC ,'' atc4_des # MAGIC ,'' atc4_des_c # MAGIC ,'' bio_desc # MAGIC ,'' cmps_cod # MAGIC ,'' cmps_des # MAGIC ,'' cmps_des_c # MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' ELSE '' END corp_cod # MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' ELSE '' END corp_des # MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' ELSE '' END corp_des_c # MAGIC ,'' edl_desc # MAGIC ,'' eth_otc_desc # MAGIC ,'' gene_orig_desc # MAGIC ,'' gqce_desc # MAGIC ,'' manu_cod # MAGIC ,'' manu_des # MAGIC ,'' manu_des_c # MAGIC ,'' mnfl_cod # MAGIC ,'' mnfl_des # MAGIC ,'' nrdl_desc # MAGIC ,'' pack_des # MAGIC ,'' stgh_des # MAGIC ,'' pack_lch # MAGIC ,'' paed_desc # MAGIC ,'' prod_des # MAGIC ,'' prod_des_c # MAGIC ,'' tcm_desc # MAGIC ,'' vbp_desc # MAGIC ,'' unit # MAGIC ,'' counting_unit # MAGIC ,'' dosage_unit # MAGIC ,null NRDL_ENTRY_DATE # MAGIC ,null # MAGIC ,'1' Market_Ratio # MAGIC from tmp.tmp_retail_dtp_final_sales t1 # MAGIC where iqvia_pack_code LIKE '%OTHERS' # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-6: map to dm.dm_zk_retail_dtp_pack_property # MAGIC -- 6.2 dtp 部分生成 dm # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_tblclass as ( # MAGIC select # MAGIC ------------------------------------------------------------------- # MAGIC -- format pack_code & product_code # MAGIC case when length(trim(pack_code)) < 12 and trim(pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(pack_code)),12) # MAGIC else trim(pack_code) # MAGIC end as new_pack_code, # MAGIC case when length(product_code) < 9 then right(concat('000000000',product_code),9) else product_code end as new_product_code, # MAGIC ------------------------------------------------------------------- # MAGIC * # MAGIC from dwd.dwd_gnd_tblclass # MAGIC ) # MAGIC # MAGIC ------------获取对应class 及其他维度------- # MAGIC insert overwrite table dm.dm_zk_retail_dtp_pack_property # MAGIC select distinct # MAGIC A.market ||'_'|| A.iqvia_pack_code MARKET_PACK_KEY # MAGIC ,A.iqvia_pack_code # MAGIC ,A.pack_des # MAGIC ,A.stgh_des # MAGIC ,A.pack_lch # MAGIC ,'' Family_cod # MAGIC ,'' Family_Name # MAGIC ,A.iqvia_prod_code PROD_COD # MAGIC ,A.prod_des # MAGIC ,A.prod_des_c # MAGIC ,A.cmps_cod # MAGIC ,A.cmps_des # MAGIC ,A.cmps_des_c # MAGIC ,A.atc1_cod # MAGIC ,A.atc2_cod # MAGIC ,A.atc3_cod # MAGIC ,A.atc4_cod # MAGIC ,A.app1_cod # MAGIC ,A.app2_cod # MAGIC ,A.app3_cod # MAGIC ,A.BIO_DESC # MAGIC ,A.gene_orig_desc # MAGIC ,A.eth_otc_desc # MAGIC ,A.nrdl_desc # MAGIC ,A.NRDL_ENTRY_DATE # MAGIC ,A.edl_desc # MAGIC ,A.TCM_DESC # MAGIC ,A.PAED_DESC # MAGIC ,A.GQCE_DESC # MAGIC ,A.VBP_DESC # MAGIC ,A.MANU_COD # MAGIC ,A.MANU_DES # MAGIC ,A.MANU_DES_C # MAGIC ,A.MNFL_COD # MAGIC ,A.MNFL_DES # MAGIC ,A.CORP_COD # MAGIC ,CASE WHEN A.corp_des LIKE '% GROUP%' THEN replace(A.corp_des,' GROUP','' ) ELSE A.corp_des END corp_des # MAGIC ,CORP_DES_C # MAGIC ,'' BrandType # MAGIC ,A.MARKET # MAGIC ,t5.KEY_COMPETITOR # MAGIC ,CASE WHEN CORP_COD ='A5Z' THEN 'Y' ELSE 'N' END IS_AZ # MAGIC ,'' AZ_MAIN # MAGIC ,case when dmt.TA is null then 'Others MKT' else 'AZ Related MKT' end as AZ_Related # MAGIC ,atc1_des # MAGIC ,atc1_des_c # MAGIC ,atc2_des # MAGIC ,atc2_des_c # MAGIC ,atc3_des # MAGIC ,atc3_des_c # MAGIC ,atc4_des # MAGIC ,atc4_des_c # MAGIC ,app1_des # MAGIC ,app1_des_c # MAGIC ,app2_des # MAGIC ,app2_des_c # MAGIC ,app3_des # MAGIC ,app3_des_c # MAGIC ,ifnull(t3.class,'Others') as Class # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt # MAGIC from dws.dws_zk_retail_dtp_market A # MAGIC left join dwd.dwd_gnd_ims_tblmarket_ta_map dmt on dmt.Market = A.Market # MAGIC left join tmp_tblclass t3 # MAGIC on A.market = ifnull(t3.market , A.market ) # MAGIC -------------------------------------------------------------- # MAGIC -- format # MAGIC and A.iqvia_pack_code = ifnull(t3.new_pack_code, A.iqvia_pack_code) # MAGIC and A.iqvia_prod_code = ifnull(t3.new_product_code, A.iqvia_prod_code) # MAGIC -------------------------------------------------------------- # MAGIC and A.cmps_cod = ifnull(right(concat('000000',t3.molecule_code ), 6) , A.cmps_cod) # MAGIC and A.corp_cod = ifnull(t3.Corporation_code , A.corp_cod) # MAGIC and A.manu_cod = ifnull(t3.Manufacturer_Code , A.manu_cod) # MAGIC and A.ATC1_COD = ifnull(t3.ATC1_Code , A.ATC1_COD) # MAGIC and A.ATC2_COD = ifnull(t3.ATC2_Code , A.ATC2_COD) # MAGIC and A.ATC3_COD = ifnull(t3.ATC3_Code , A.ATC3_COD) # MAGIC and A.ATC4_COD = ifnull(t3.ATC4_Code , A.ATC4_COD) # MAGIC and A.APP1_COD = ifnull(t3.NFC1_Code , A.APP1_COD) # MAGIC and A.APP2_COD = ifnull(t3.NFC2_Code , A.APP2_COD) # MAGIC and A.APP3_COD = ifnull(t3.NFC3_Code , A.APP3_COD) # MAGIC and ifnull(A.STGH_DES, '') = ifnull(t3.Strength, ifnull(A.STGH_DES, '')) # MAGIC left join (select distinct MARKET,PACK_CODE as PACK_COD,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 # MAGIC on A.market = t5.MARKET # MAGIC and A.iqvia_pack_code = t5.PACK_COD # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-7: map to dm.dm_zk_retail_dtp_sales # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-7: map to dm.dm_zk_retail_dtp_sales # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table dm.dm_zk_retail_dtp_sales # MAGIC select # MAGIC a.year, # MAGIC a.yq, # MAGIC a.yyyymm, # MAGIC a.iqvia_pack_code, # MAGIC nvl(b.geo_key, a.geo_key) as AUDIT_COD, # MAGIC a.sales_value, # MAGIC a.sales_unit, # MAGIC a.counting_unit, # MAGIC a.sales_value_ly, # MAGIC a.sales_unit_ly, # MAGIC a.counting_unit_ly, # MAGIC ------------------------------------------------------------- # MAGIC -- dtp相关的数据的pack_flag 除计算的OTHERS外(0),其余(1,2) 均为1 # MAGIC case when a.pack_flag = 0 then 0 else 1 end as pack_flag, # MAGIC ------------------------------------------------------------- # MAGIC a.brand_flag # MAGIC from tmp.tmp_retail_dtp_final_sales a # MAGIC left join dm.dm_zk_retail_geo b # MAGIC on a.geo_key = b.province_city # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-8: map to dm.dm_zk_retail_sales_kpi # COMMAND ---------- # MAGIC %md # MAGIC ### PART-1:品牌数据报告(13个) # MAGIC - share # MAGIC - key_brand_ytd # MAGIC - key_brand_rank_ytd # MAGIC - top_brand_ytd # MAGIC - top_brand_ms_ytd # MAGIC - top_brand_gr_ytd # MAGIC - top_brand_inc_ms_ytd # MAGIC - key_brand_qtd # MAGIC - key_brand_rank_qtd # MAGIC - top_brand_qtd # MAGIC - top_brand_ms_qtd # MAGIC - top_brand_inc_ms_qtd # MAGIC - top_brand_gr_qtd # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.1 kpi: share # MAGIC ------------------------------------------------------------------------------------- # MAGIC with exploded_data as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC ifnull(common_name,'' ) as common_name, # MAGIC level, # MAGIC split(level_ta,',') array_ta, # MAGIC split(level_market,',') array_market, # MAGIC split(level_molecule,',') array_molecule, # MAGIC split(level_brand,',') array_brand # MAGIC from dwd.dwd_gnd_retail_split_automatic # MAGIC where level like '%MULTI_BRAND%' # MAGIC ), tmp_config as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC common_name, # MAGIC level, # MAGIC array_ta[idx] as level_ta, # MAGIC array_market[idx] as level_market, # MAGIC array_molecule[idx] as level_molecule, # MAGIC array_brand[idx] as level_brand # MAGIC from exploded_data # MAGIC lateral view posexplode(array_ta) AS idx, split_ta # MAGIC # MAGIC union all # MAGIC # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC common_name, # MAGIC level, # MAGIC level_ta, # MAGIC level_market, # MAGIC level_molecule, # MAGIC level_brand # MAGIC from dwd.dwd_gnd_retail_split_automatic # MAGIC where level = 'BRAND' # MAGIC ),max_pack_mapping as ( # MAGIC select # MAGIC level_ta, # MAGIC level_market, # MAGIC level_molecule, # MAGIC level_brand, # MAGIC molecule_desc, # MAGIC product_desc, # MAGIC corp_cod, # MAGIC max(pack_code) as pack_code # MAGIC from tmp.tmp_retail_pack_mapping # MAGIC group by level_ta,level_market,level_molecule,level_brand,molecule_desc,product_desc,corp_cod # MAGIC ), tmp_brand_kpi as ( # MAGIC select # MAGIC distinct # MAGIC c.pack_code, # MAGIC c.corp_cod, # MAGIC a.YYYYMM, # MAGIC null as ytd, # MAGIC d.geo_key, # MAGIC a.val_share as kpi_val, # MAGIC a.vol_share as kpi_vol, # MAGIC a.ta, # MAGIC a.key_brand_ytd, # MAGIC a.key_brand_rank_ytd, # MAGIC a.top_brand_ytd, # MAGIC a.top_brand_ms_ytd, # MAGIC a.top_brand_inc_ms_ytd, # MAGIC a.top_brand_gr_ytd, # MAGIC a.key_brand_qtd, # MAGIC a.key_brand_rank_qtd, # MAGIC a.top_brand_qtd, # MAGIC a.top_brand_ms_qtd, # MAGIC a.top_brand_inc_ms_qtd, # MAGIC a.top_brand_gr_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC inner join tmp_config b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.zk_brand_category = b.brand # MAGIC and a.zk_common_name = b.common_name # MAGIC inner join max_pack_mapping c # MAGIC on c.level_ta = b.level_ta # MAGIC and c.level_market = b.level_market # MAGIC and c.level_molecule = b.level_molecule # MAGIC and c.level_brand = b.level_brand # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC ), tmp_brand_kpi_ly as ( # MAGIC select # MAGIC pack_code, # MAGIC corp_cod, # MAGIC cast(YYYYMM + 100 as int ) as YYYYMM, # MAGIC ytd, # MAGIC geo_key, # MAGIC kpi_val as kpi_val_ly, # MAGIC kpi_vol as kpi_vol_ly, # MAGIC ta # MAGIC from tmp_brand_kpi # MAGIC ) # MAGIC # MAGIC insert overwrite table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC a.pack_code, # MAGIC a.corp_cod, # MAGIC a.yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'share' as KPI_name, # MAGIC a.kpi_val, # MAGIC b.kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC a.kpi_vol, # MAGIC b.kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_brand_kpi a # MAGIC left join tmp_brand_kpi_ly b # MAGIC on a.pack_code = b.pack_code # MAGIC and a.YYYYMM = b.YYYYMM # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.2 kpi: key_brand_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_brand_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.key_brand_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_brand_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.key_brand_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_brand_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC key_brand_ytd # MAGIC from tmp_brand_ytd_value # MAGIC ), tmp_brand_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC key_brand_ytd # MAGIC from tmp_brand_ytd_volume # MAGIC ), tmp_brand_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.key_brand_ytd, # MAGIC b.key_brand_ytd as key_brand_ytd_ly # MAGIC from tmp_brand_ytd_value a # MAGIC inner join tmp_brand_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_brand_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.key_brand_ytd, # MAGIC b.key_brand_ytd as key_brand_ytd_ly # MAGIC from tmp_brand_ytd_volume a # MAGIC inner join tmp_brand_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'key_brand_ytd' as KPI_name, # MAGIC null as kpi_val, # MAGIC null as kpi_val_ly, # MAGIC a.key_brand_ytd as str_kpi_val, # MAGIC a.key_brand_ytd_ly as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC b.key_brand_ytd as str_kpi_vol, # MAGIC b.key_brand_ytd_ly as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_brand_ytd_value_all a # MAGIC inner join tmp_brand_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.3 kpi: key_brand_rank_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.key_brand_rank_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.key_brand_rank_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC key_brand_rank_ytd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC key_brand_rank_ytd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.key_brand_rank_ytd, # MAGIC b.key_brand_rank_ytd as key_brand_rank_ytd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.key_brand_rank_ytd, # MAGIC b.key_brand_rank_ytd as key_brand_rank_ytd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'key_brand_rank_ytd' as KPI_name, # MAGIC a.key_brand_rank_ytd as kpi_val, # MAGIC a.key_brand_rank_ytd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.key_brand_rank_ytd as kpi_vol, # MAGIC b.key_brand_rank_ytd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.4 kpi: top_brand_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_ytd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_ytd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_ytd, # MAGIC b.top_brand_ytd as top_brand_ytd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_ytd, # MAGIC b.top_brand_ytd as top_brand_ytd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_ytd' as KPI_name, # MAGIC null as kpi_val, # MAGIC null as kpi_val_ly, # MAGIC a.top_brand_ytd as str_kpi_val, # MAGIC a.top_brand_ytd_ly as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC b.top_brand_ytd as str_kpi_vol, # MAGIC b.top_brand_ytd_ly as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.5 kpi: top_brand_ms_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_ms_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_ms_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_ms_ytd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_ms_ytd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_ms_ytd, # MAGIC b.top_brand_ms_ytd as top_brand_ms_ytd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_ms_ytd, # MAGIC b.top_brand_ms_ytd as top_brand_ms_ytd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_ms_ytd' as KPI_name, # MAGIC a.top_brand_ms_ytd as kpi_val, # MAGIC a.top_brand_ms_ytd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_ms_ytd as kpi_vol, # MAGIC b.top_brand_ms_ytd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.6 kpi: top_brand_gr_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_gr_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_gr_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_gr_ytd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_gr_ytd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_gr_ytd, # MAGIC b.top_brand_gr_ytd as top_brand_gr_ytd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_gr_ytd, # MAGIC b.top_brand_gr_ytd as top_brand_gr_ytd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_gr_ytd' as KPI_name, # MAGIC a.top_brand_gr_ytd as kpi_val, # MAGIC a.top_brand_gr_ytd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_gr_ytd as kpi_vol, # MAGIC b.top_brand_gr_ytd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.7 kpi: top_brand_inc_ms_ytd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_inc_ms_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC d.geo_key, # MAGIC a.top_brand_inc_ms_ytd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_inc_ms_ytd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, # MAGIC geo_key, # MAGIC top_brand_inc_ms_ytd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_inc_ms_ytd, # MAGIC b.top_brand_inc_ms_ytd as top_brand_inc_ms_ytd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC a.top_brand_inc_ms_ytd, # MAGIC b.top_brand_inc_ms_ytd as top_brand_inc_ms_ytd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC null as yyyymm, # MAGIC a.ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_inc_ms_ytd' as KPI_name, # MAGIC a.top_brand_inc_ms_ytd as kpi_val, # MAGIC a.top_brand_inc_ms_ytd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_inc_ms_ytd as kpi_vol, # MAGIC b.top_brand_inc_ms_ytd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.ytd = b.ytd # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.8 kpi: key_brand_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.key_brand_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.key_brand_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC key_brand_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC key_brand_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.key_brand_qtd, # MAGIC b.key_brand_qtd as key_brand_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.key_brand_qtd, # MAGIC b.key_brand_qtd as key_brand_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'key_brand_qtd' as KPI_name, # MAGIC null as kpi_val, # MAGIC null as kpi_val_ly, # MAGIC a.key_brand_qtd as str_kpi_val, # MAGIC a.key_brand_qtd_ly as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC b.key_brand_qtd as str_kpi_vol, # MAGIC b.key_brand_qtd_ly as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.9 kpi: key_brand_rank_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.key_brand_rank_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.key_brand_rank_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC key_brand_rank_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC key_brand_rank_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.key_brand_rank_qtd, # MAGIC b.key_brand_rank_qtd as key_brand_rank_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.key_brand_rank_qtd, # MAGIC b.key_brand_rank_qtd as key_brand_rank_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'key_brand_rank_qtd' as KPI_name, # MAGIC a.key_brand_rank_qtd as kpi_val, # MAGIC a.key_brand_rank_qtd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.key_brand_rank_qtd as kpi_vol, # MAGIC b.key_brand_rank_qtd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.10 kpi: top_brand_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_qtd, # MAGIC b.top_brand_qtd as top_brand_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_qtd, # MAGIC b.top_brand_qtd as top_brand_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_qtd' as KPI_name, # MAGIC null as kpi_val, # MAGIC null as kpi_val_ly, # MAGIC a.top_brand_qtd as str_kpi_val, # MAGIC a.top_brand_qtd_ly as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC b.top_brand_qtd as str_kpi_vol, # MAGIC b.top_brand_qtd_ly as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.11 kpi: top_brand_ms_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_ms_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_ms_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_ms_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_ms_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_ms_qtd, # MAGIC b.top_brand_ms_qtd as top_brand_ms_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_ms_qtd, # MAGIC b.top_brand_ms_qtd as top_brand_ms_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_ms_qtd' as KPI_name, # MAGIC a.top_brand_ms_qtd as kpi_val, # MAGIC a.top_brand_ms_qtd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_ms_qtd as kpi_vol, # MAGIC b.top_brand_ms_qtd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.12 kpi: top_brand_inc_ms_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_inc_ms_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_inc_ms_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_inc_ms_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_inc_ms_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_inc_ms_qtd, # MAGIC b.top_brand_inc_ms_qtd as top_brand_inc_ms_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_inc_ms_qtd, # MAGIC b.top_brand_inc_ms_qtd as top_brand_inc_ms_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_inc_ms_qtd' as KPI_name, # MAGIC a.top_brand_inc_ms_qtd as kpi_val, # MAGIC a.top_brand_inc_ms_qtd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_inc_ms_qtd as kpi_vol, # MAGIC b.top_brand_inc_ms_qtd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.13 kpi: top_brand_gr_qtd # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_kpi_ytd_value as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_gr_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'value' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_volume as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC d.geo_key, # MAGIC a.top_brand_gr_qtd # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC where a.ranked_by = 'volume' # MAGIC and a.ytd is not null # MAGIC ), tmp_kpi_ytd_value_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_gr_qtd # MAGIC from tmp_kpi_ytd_value # MAGIC ), tmp_kpi_ytd_volume_ly as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC cast(yyyymm + 100 as int ) as yyyymm, # MAGIC geo_key, # MAGIC top_brand_gr_qtd # MAGIC from tmp_kpi_ytd_volume # MAGIC ), tmp_kpi_ytd_value_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_gr_qtd, # MAGIC b.top_brand_gr_qtd as top_brand_gr_qtd_ly # MAGIC from tmp_kpi_ytd_value a # MAGIC inner join tmp_kpi_ytd_value_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ), tmp_kpi_ytd_volume_all as ( # MAGIC select # MAGIC a.ta, # MAGIC a.market, # MAGIC a.yyyymm, # MAGIC a.geo_key, # MAGIC a.top_brand_gr_qtd, # MAGIC b.top_brand_gr_qtd as top_brand_gr_qtd_ly # MAGIC from tmp_kpi_ytd_volume a # MAGIC inner join tmp_kpi_ytd_volume_ly b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select # MAGIC distinct # MAGIC '' as pack_code, # MAGIC '' as corp_cod, # MAGIC a.yyyymm, # MAGIC null as ytd, # MAGIC a.geo_key, # MAGIC 'top_brand_gr_qtd' as KPI_name, # MAGIC a.top_brand_gr_qtd as kpi_val, # MAGIC a.top_brand_gr_qtd_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC b.top_brand_gr_qtd as kpi_vol, # MAGIC b.top_brand_gr_qtd_ly as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC a.ta # MAGIC from tmp_kpi_ytd_value_all a # MAGIC inner join tmp_kpi_ytd_volume_all b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.yyyymm = b.yyyymm # MAGIC and a.geo_key = b.geo_key # COMMAND ---------- # MAGIC %md # MAGIC ### PART-2:TOP数据(8个) # MAGIC - top1_brand_val # MAGIC - top1_brand_gr # MAGIC - top2_brand_val # MAGIC - top2_brand_gr # MAGIC - top1_incremental_brand # MAGIC - top1_incremental_gr # MAGIC - top2_incremental_brand # MAGIC - top2_incremental_gr # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 将RX市场数据合并并处理数据格式获取code # MAGIC -- -------关联 corp code # MAGIC -- -------是否total 数据打标 # MAGIC -- -------格式处理 # MAGIC -- -------dm 使用 niad 数据 # MAGIC -- -------全国数据 地理编码 为 roc # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table tmp.tmp_zk_retail_rx_ta_and_top_corp # MAGIC select # MAGIC distinct # MAGIC case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type # MAGIC ,case when replace(a.rx_type,' TTL','') ='NIAD' THEN 'DM' # MAGIC when replace(a.rx_type,' TTL','') ='GI-Rx+OTC' then 'GI' # MAGIC ELSE replace(a.rx_type,' TTL','') END ta # MAGIC ,nvl(b.CORP_COD ,CORP_COD) CORP_COD # MAGIC ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG # MAGIC ,a.quarter_flag YTD # MAGIC ,'ROC' GEO_KEY # MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val # MAGIC ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr # MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val # MAGIC ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr # MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand # MAGIC ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr # MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand # MAGIC ,coalesce(cast(a.top2_incremental_gr as double ),0 ) top2_incremental_gr # MAGIC from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a # MAGIC left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b # MAGIC on a.corporation = b.ZK_Corp_C # MAGIC WHERE rx_type <>'DM' # MAGIC UNION ALL # MAGIC select # MAGIC distinct # MAGIC case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type # MAGIC ,replace(a.rx_type,' TTL','') ta # MAGIC ,nvl(b.CORP_COD ,CORP_COD) CORP_COD # MAGIC ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG # MAGIC ,a.quarter_flag YTD # MAGIC ,'ROC' GEO_KEY # MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val # MAGIC ,coalesce(cast(a.top1_brand_gr as double ) ,0 ) top1_brand_gr # MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val # MAGIC ,coalesce(cast(a.top2_brand_gr as double ) ,0 ) top2_brand_gr # MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand # MAGIC ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr # MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand # MAGIC ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr # MAGIC from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a # MAGIC left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b # MAGIC on a.corporation = b.ZK_Corp_C # MAGIC WHERE rx_type ='NIAD' # MAGIC union all # MAGIC select distinct # MAGIC 'top_corp' data_type # MAGIC ,NULL ta # MAGIC ,nvl(b.CORP_COD,a.corporation) CORP_COD # MAGIC ,'Y' TOTAL_FLAG # MAGIC ,a.quarter_flag # MAGIC ,'ROC' GEO_KEY # MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val # MAGIC ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr # MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val # MAGIC ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr # MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand # MAGIC ,coalesce(cast(a.top1_incremental_gr as double ) ,0 ) top1_incremental_gr # MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand # MAGIC ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr # MAGIC from dwd.dwd_gnd_ext_retail_rx_top_corp a # MAGIC left join (select ZK_Corp,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp ) b # MAGIC on a.corporation = b.ZK_Corp # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.14 top1_brand_val # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top1_brand_val' kpi_name # MAGIC ,null kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,top1_brand_val str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # MAGIC # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.15 top1_brand_gr # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top1_brand_gr' kpi_name # MAGIC ,top1_brand_gr kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.16 top2_brand_val # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top2_brand_val' kpi_name # MAGIC ,null kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,top2_brand_val str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.17 top2_brand_gr # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top2_brand_gr' kpi_name # MAGIC ,top2_brand_gr kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.18 top1_incremental_brand # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top1_incremental_brand' kpi_name # MAGIC ,null kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,top1_incremental_brand str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.19 top1_incremental_gr # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top1_incremental_gr' kpi_name # MAGIC ,top1_incremental_gr kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.20 top2_incremental_brand # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top2_incremental_brand' kpi_name # MAGIC ,null kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,top2_incremental_brand str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.21 top2_incremental_gr # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC SELECT distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,NULL YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,'top2_incremental_gr' kpi_name # MAGIC ,top2_incremental_gr kpi_val # MAGIC ,NULL kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp # COMMAND ---------- # MAGIC %md # MAGIC ### PART-3:增量数据(1个) # MAGIC - corp_type_sales_amount # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.22 处理增量数据 corp_type_sales_amount # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select distinct # MAGIC '' pack_code # MAGIC ,bq.type_name corp_cod # MAGIC ,cast(bq.sales_quarter as int) yyyymm # MAGIC ,null ytd # MAGIC ,'ROC' geo_key # MAGIC ,'corp_type_sales_amount' kpi_name # MAGIC ,bq.sales_amount * 1000000 kpi_val # MAGIC ,tq.sales_amount * 1000000 kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null tr_kpi_vol_ly # MAGIC ,'Y' TOTAL_FLAG # MAGIC ,null ta # MAGIC from dwd.dwd_gnd_ext_retail_rx_market bq # MAGIC left join dwd.dwd_gnd_ext_retail_rx_market tq # MAGIC on bq.type_name=tq.type_name # MAGIC and cast(bq.sales_quarter as int) = cast(tq.sales_quarter + 100 as int) # COMMAND ---------- # MAGIC %md # MAGIC ### PART-4:top corp及rank(2个) # MAGIC - top_corp_sales_amount # MAGIC - top_corp_rank # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.23&24 top_corp_sales_amount & top_corp_rank # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with top_corp_total as ( # MAGIC ----------------------处理top_corp 大数-------------------- # MAGIC ---------关联 corp code 特殊:dwd_inc_gnd_retail_b2c_label_total 这个表 az 公司有两个code ,需要取A5Z 那个 # MAGIC ---------是否total 数据打标 # MAGIC ---------格式处理 # MAGIC ---------dm 使用 niad 数据 # MAGIC ---------全国数据 地理编码 为 roc # MAGIC select # MAGIC a.corp_desc, # MAGIC 'top_corp' data_type # MAGIC ,b.CORP_COD # MAGIC ,'Y' TOTAL_FLAG # MAGIC ,a.sales_quarter # MAGIC ,cast(a.sales_quarter as int) yyyymm # MAGIC ,'ROC' geo_key # MAGIC ,a.sales_amount*1000000 sales_amount # MAGIC ,c.sales_amount*1000000 sales_amount_ly # MAGIC ,a.rank1 # MAGIC ,null ta # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp a # MAGIC left join ( # MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD # MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C # MAGIC ) b on a.corp_desc= b.ZK_Corp_C # MAGIC left join dwd.dwd_gnd_ext_retail_nataional_top_corp c # MAGIC on a.corp_desc= c.corp_desc # MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) # MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 # MAGIC where a.rank1 is not null # MAGIC # MAGIC unioN all # MAGIC # MAGIC select # MAGIC a.corp_desc, # MAGIC 'top_ta_corp' data_type # MAGIC ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code # MAGIC ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG # MAGIC ,a.sales_quarter # MAGIC ,cast(a.sales_quarter as int) yyyymm # MAGIC ,'ROC' geo_key # MAGIC ,a.sales_amount*1000000 sales_amount # MAGIC ,c.sales_amount*1000000 sales_amount_ly # MAGIC ,a.rank1 # MAGIC ,CASE WHEN trim(a.source_name) ='GI-Rx+OTC' THEN 'GI' ELSE trim(a.source_name) END ta # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a # MAGIC left join ( # MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD # MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C # MAGIC ) b on a.corp_desc= b.ZK_Corp_C # MAGIC left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c # MAGIC on a.corp_desc= c.corp_desc # MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) # MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 # MAGIC and a.source_name =c.source_name # MAGIC WHERE trim(a.source_name) <>'DM' # MAGIC # MAGIC UNION ALL # MAGIC # MAGIC select # MAGIC CASE WHEN a.corp_desc='NIAD' THEN 'DM' ELSE a.corp_desc END corp_desc, # MAGIC 'top_ta_corp' data_type # MAGIC ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code # MAGIC ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG # MAGIC ,a.sales_quarter # MAGIC ,cast(a.sales_quarter as int) yyyymm # MAGIC ,'ROC' geo_key # MAGIC ,a.sales_amount*1000000 sales_amount # MAGIC ,c.sales_amount*1000000 sales_amount_ly # MAGIC ,a.rank1 # MAGIC ,'DM' ta # MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a # MAGIC left join ( # MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD # MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C # MAGIC ) b on a.corp_desc= b.ZK_Corp_C # MAGIC left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c # MAGIC on a.corp_desc= c.corp_desc # MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) # MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 # MAGIC and a.source_name =c.source_name # MAGIC WHERE trim(a.source_name) ='NIAD' # MAGIC ) # MAGIC # MAGIC -- 处理top corp 及 rank 数据 # MAGIC insert into table dws.dws_zk_retail_sales_kpi # MAGIC # MAGIC select DISTINCT # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,yyyymm # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'top_corp_sales_amount' kpi_name # MAGIC ,sales_amount kpi_val # MAGIC ,sales_amount_ly kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from top_corp_total # MAGIC union all # MAGIC select distinct # MAGIC '' pack_code # MAGIC ,corp_cod # MAGIC ,yyyymm # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'top_corp_rank' kpi_name # MAGIC ,rank1 kpi_val # MAGIC ,null kpi_val_ly # MAGIC ,NULL str_kpi_val # MAGIC ,NULL str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,ta # MAGIC from top_corp_total # MAGIC where lower(rank1) <> 'Total' # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ### PART-5:DTP指标(2个) # MAGIC - top_corp_rank # MAGIC - top_corp_sales_amount # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.25&26 top_corp_rank & top_corp_sales_amount # MAGIC -- 将dtp 数据转换成 kpi 格式--- # MAGIC -- 品牌数据 初始 # MAGIC -- 关联公司code # MAGIC -- 处理pack code # MAGIC -- 处理格式 # MAGIC -- total flag 打标 # MAGIC -- dtp 所有数据的ta 均为 ONCO # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with tmp as ( # MAGIC -------------获取dtp top brand的本同期数据-------------------------- # MAGIC select # MAGIC cast(top_corp.sales_quarter as int ) yyyymm # MAGIC ,top_corp.sales_quarter # MAGIC ,replace(top_corp.rank1,'-','') rank1 # MAGIC ,replace(top_corp.corp_name,'-','') crp_name # MAGIC ,top_corp.brand_name # MAGIC ,case when top_corp.brand_name ='Others' then 'Others' else zk.IQVIA_PROD_CODE end iqvia_prod_code # MAGIC ,case when top_corp.brand_name ='Others' then 'Others' else brand.iqvia_pack_code end iqvia_pack_code # MAGIC ,zk.CORP_COD # MAGIC -- ,top_corp.source_name # MAGIC ,top_corp.sales_amount*1000000 sales_amount # MAGIC ,tq.sales_amount*1000000 sales_amount_ly # MAGIC ,'Y' TOTAL_FLAG # MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_brand top_corp # MAGIC left join dwd.dwd_gnd_ext_retail_dtp_top_brand tq # MAGIC on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) # MAGIC and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) # MAGIC and tq.rank1 =top_corp.rank1 and nvl(top_corp.brand_name,'' ) =nvl(tq.brand_name,'' ) # MAGIC left join ( # MAGIC select # MAGIC distinct # MAGIC ZK_Prod_C, # MAGIC ----------------------------------------------------- # MAGIC -- format IQVIA_PROD_CODE # MAGIC case when length(IQVIA_PROD_CODE) < 9 then right(concat('000000000',IQVIA_PROD_CODE),9) else IQVIA_PROD_CODE end as IQVIA_PROD_CODE, # MAGIC ----------------------------------------------------- # MAGIC ZK_Corp_C, # MAGIC CORP_COD # MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total # MAGIC )zk on top_corp.brand_name = zk.ZK_Prod_C AND replace(top_corp.corp_name,'-','')=zk.ZK_Corp_C # MAGIC left join ( # MAGIC select PROD_COD IQVIA_PROD_CODE,max(PACK_COD) iqvia_pack_code,CORP_COD # MAGIC from dm.dm_ims_td_pack_property group by PROD_COD,CORP_COD # MAGIC ) brand on zk.IQVIA_PROD_CODE = brand.iqvia_prod_code AND replace(zk.CORP_COD,'-','')=brand.corp_cod # MAGIC # MAGIC UNION all # MAGIC # MAGIC -------获取 dtp top corp的本同期数据------------ # MAGIC select # MAGIC cast(top_corp.sales_quarter as int ) yyyymm # MAGIC ,top_corp.sales_quarter # MAGIC ,replace(top_corp.rank1,'-','') rank1 # MAGIC ,replace(top_corp.corp_name,'-','') corp_name # MAGIC ,'' brand_name # MAGIC ,''iqvia_prod_code # MAGIC ,'' iqvia_pack_code # MAGIC ,case when replace(top_corp.corp_name,'-','') ='Others' then '' else pack.corp_cod end corp_cod # MAGIC -- ,top_corp.source_name # MAGIC ,top_corp.sales_amount*1000000 sales_amount # MAGIC ,tq.sales_amount*1000000 sales_amount_ly # MAGIC --,case when replace(top_corp.rank1,'-','') ='' then 'Y' ELSE 'N' END TOTAL_FLAG # MAGIC ,'Y' TOTAL_FLAG # MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_copd top_corp # MAGIC left join dwd.dwd_gnd_ext_retail_dtp_top_copd tq # MAGIC on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) # MAGIC and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) # MAGIC and tq.rank1 =top_corp.rank1 # MAGIC -- left join (select zk_corp_des,max(corp_cod) corp_cod from dwd.dwd_inc_gnd_retail_b2c_label_total group by zk_corp_des) pack # MAGIC left join ( # MAGIC select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total # MAGIC ) pack on replace(top_corp.corp_name,'-','') = pack.ZK_Corp_C # MAGIC ) # MAGIC # MAGIC insert overwrite table dws.dws_zk_retail_dtp_sales_kpi # MAGIC # MAGIC select distinct # MAGIC iqvia_prod_code pack_code # MAGIC ,corp_cod # MAGIC ,'ONCO' ta # MAGIC ,yyyymm # MAGIC ,null ytd # MAGIC ,'ROC' geo_key # MAGIC ,'top_corp_rank' kpi_name # MAGIC ,cast(rank1 as double) kpi_val # MAGIC ,null kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC -- ,null ta # MAGIC from tmp where rank1 !='' # MAGIC # MAGIC union all # MAGIC # MAGIC select distinct # MAGIC iqvia_prod_code pack_code # MAGIC ,corp_cod # MAGIC ,'ONCO' ta # MAGIC ,yyyymm # MAGIC ,null ytd # MAGIC ,'ROC' geo_key # MAGIC ,'top_corp_sales_amount' kpi_name # MAGIC ,sales_amount kpi_val # MAGIC ,sales_amount_ly kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC -- ,null ta # MAGIC from tmp # COMMAND ---------- # MAGIC %md # MAGIC ### PART-6:自有部分数据(9个) # MAGIC retail 自有部分数据处理成kpi 形式 # MAGIC - pack_price_fz # MAGIC - pack_price_fm # MAGIC - pack_price_by_counting_unit_fm # MAGIC - weighted_spread_rate # MAGIC - digital_spread_rate # MAGIC - pack_price # MAGIC - pack_price_by_counting_unit # MAGIC - num_dist_rate # MAGIC - weig_dist_rate # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.27 pack_price_fz # MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分子 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert overwrite table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select # MAGIC a.iqvia_pack_code pack_code # MAGIC ,a.corp_cod # MAGIC ,YYYYMM # MAGIC ,null td # MAGIC ,a.AUDIT_COD geo_key # MAGIC ,'pack_price_fz' KPI_name # MAGIC ,sum(sales_value) kpi_val # MAGIC ,sum(sales_value_ly) kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END ta # MAGIC ,a.brand_flag # MAGIC ,a.pack_flag # MAGIC from dm.dm_zk_retail_sales a # MAGIC GROUP BY # MAGIC a.iqvia_pack_code, # MAGIC a.corp_cod, # MAGIC YYYYMM , # MAGIC a.AUDIT_COD, # MAGIC case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END, # MAGIC a.brand_flag, # MAGIC a.pack_flag # MAGIC having ta is not null and sum(sales_value) > 0 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.28 pack_price_fm # MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分母 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select # MAGIC a.iqvia_pack_code pack_code # MAGIC ,a.corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,a.AUDIT_COD geo_key # MAGIC ,'pack_price_fm' KPI_name # MAGIC ,sum(a.sales_unit) kpi_val # MAGIC ,sum(a.sales_unit_ly) kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END ta # MAGIC ,a.brand_flag # MAGIC ,a.pack_flag # MAGIC from dm.dm_zk_retail_sales a # MAGIC GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD # MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END # MAGIC ,a.brand_flag # MAGIC ,a.pack_flag # MAGIC having ta is not null and sum(sales_unit)>0 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.29 pack_price_by_counting_unit_fm # MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 by counting unit 的 price 分母 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select # MAGIC a.iqvia_pack_code pack_code # MAGIC ,a.corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,a.AUDIT_COD geo_key # MAGIC ,'pack_price_by_counting_unit_fm' KPI_name # MAGIC ,sum(a.counting_unit) kpi_val # MAGIC ,sum(a.counting_unit_ly) kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END ta # MAGIC ,a.brand_flag # MAGIC ,a.pack_flag # MAGIC from dm.dm_zk_retail_sales a # MAGIC GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD # MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' # MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' # MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' # MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' # MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' # MAGIC END # MAGIC ,a.brand_flag # MAGIC ,a.pack_flag # MAGIC having ta is not null and sum(counting_unit)>0 # COMMAND ---------- # MAGIC %sql # MAGIC # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 将pack表的 price 数据进行处理 # MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分子 # MAGIC -- 关联 corp code # MAGIC -- 获取geo_key 后续的audit key # MAGIC -- 获取ta 值 # MAGIC -- 获取pack 文件中计算price 的所有指标 及加权铺货率、数字铺货率 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with pack_rawdata as ( # MAGIC select * from tmp.tmp_retail_pack_rawdata where data_flag = 0 # MAGIC ), tmp_pack_property as ( # MAGIC ---------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC select # MAGIC distinct # MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(iqvia_pack_code)),12) # MAGIC else trim(iqvia_pack_code) # MAGIC end as iqvia_pack_code, # MAGIC ---------------------------------------------------------------- # MAGIC product_id # MAGIC from dwd.dwd_gnd_ext_retail_pack_property # MAGIC ),a as ( # MAGIC select # MAGIC df.brand_flag,df.zk_product_id,YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region # MAGIC ,sum(sales_value) sales_value # MAGIC ,sum(sales_unit) sales_unit # MAGIC ,sum(weighted_spread_rate) weighted_spread_rate # MAGIC ,sum(digital_spread_rate) digital_spread_rate # MAGIC ,sum(sales_value_ly) sales_value_ly # MAGIC ,sum(sales_unit_ly) sales_unit_ly # MAGIC ,sum(weighted_spread_rate_ly) weighted_spread_rate_ly # MAGIC ,sum(digital_spread_rate_ly) digital_spread_rate_ly # MAGIC from ( # MAGIC select # MAGIC month as YYYYMM, # MAGIC product_id as zk_product_id, # MAGIC zk_regin as zk_region # MAGIC ,sales_value,sales_unit,weighted_spread_rate,digital_spread_rate # MAGIC ,0 sales_value_ly # MAGIC ,0 sales_unit_ly # MAGIC ,0 weighted_spread_rate_ly # MAGIC ,0 digital_spread_rate_ly # MAGIC ,brand_flag # MAGIC from pack_rawdata # MAGIC # MAGIC union all # MAGIC # MAGIC select # MAGIC cast( month + 100 as int ) as yyyymm, # MAGIC product_id as zk_product_id, # MAGIC zk_regin as zk_region # MAGIC ,0 sales_value # MAGIC ,0 sales_unit # MAGIC ,0 weighted_spread_rate # MAGIC ,0 digital_spread_rate # MAGIC ,sales_value sales_value_ly # MAGIC ,sales_unit sales_unit_ly # MAGIC ,weighted_spread_rate weighted_spread_rate_ly # MAGIC ,digital_spread_rate digital_spread_rate_ly # MAGIC ,brand_flag # MAGIC from pack_rawdata # MAGIC where month + 100 <= (select max(month) FROM pack_rawdata) # MAGIC ) df # MAGIC left join tmp_pack_property pack on pack.product_id = df.zk_product_id # MAGIC left join tmp.tmp_zk_retail_pack_property_corp corp # MAGIC on pack.iqvia_pack_code = corp.iqvia_pack_code # MAGIC group by YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region,df.brand_flag,df.zk_product_id # MAGIC ) # MAGIC # MAGIC insert overwrite table tmp.tmp_zk_retail_price # MAGIC select # MAGIC distinct # MAGIC YYYYMM, # MAGIC zk_product_id, # MAGIC d.ta, # MAGIC c.geo_key, # MAGIC a.iqvia_pack_code, # MAGIC b.iqvia_prod_code, # MAGIC b.prod_des_c, # MAGIC corp_cod, # MAGIC zk_region, # MAGIC sales_value, # MAGIC sales_value_ly, # MAGIC sales_unit, # MAGIC sales_unit_ly, # MAGIC weighted_spread_rate, # MAGIC weighted_spread_rate_ly, # MAGIC digital_spread_rate, # MAGIC digital_spread_rate_ly # MAGIC from a # MAGIC left join ( # MAGIC select distinct iqvia_pack_code ,prod_des_c,prod_des,iqvia_prod_code # MAGIC from dm.dm_zk_retail_pack_property # MAGIC ) b on a.iqvia_pack_code=b.iqvia_pack_code # MAGIC left join ( # MAGIC select distinct geo_key,province_city from dm.dm_zk_retail_geo # MAGIC ) c on a.zk_region = c.province_city # MAGIC left join ( # MAGIC select distinct iqvia_pack_code,ta from dm.dm_zk_retail_market_property # MAGIC ) d on a.iqvia_pack_code=d.iqvia_pack_code # MAGIC where a.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_sales) # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.30 weighted_spread_rate # MAGIC -- 在 retail pack 粒度的文件中获取加权铺货率 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select distinct # MAGIC iqvia_pack_code pack_code # MAGIC ,corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'weighted_spread_rate' KPI_name # MAGIC ,weighted_spread_rate kpi_val # MAGIC ,weighted_spread_rate_ly kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,ta ta # MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag # MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag # MAGIC from tmp.tmp_zk_retail_price a # MAGIC left join ( # MAGIC SELECT DISTINCT b.prod_des_c # MAGIC FROM tmp.tmp_retail_pack_rawdata A # MAGIC LEFT JOIN ( # MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c # MAGIC FROM dm.dm_zk_retail_pack_property # MAGIC ) b on a.pack_code = b.iqvia_pack_code # MAGIC where a.brand_flag = 1 # MAGIC ) prod on a.prod_des_c = prod.prod_des_c # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.31 digital_spread_rate # MAGIC -- 在 retail pack 粒度的文件中获取数字铺货率 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select distinct # MAGIC iqvia_pack_code # MAGIC ,corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'digital_spread_rate' KPI_name # MAGIC ,digital_spread_rate kpi_val # MAGIC ,digital_spread_rate_ly kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,ta ta # MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag # MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag # MAGIC from tmp.tmp_zk_retail_price a # MAGIC left join ( # MAGIC SELECT DISTINCT b.prod_des_c # MAGIC FROM tmp.tmp_retail_pack_rawdata A # MAGIC LEFT JOIN ( # MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c # MAGIC FROM dm.dm_zk_retail_pack_property # MAGIC ) b on a.pack_code = b.iqvia_pack_code # MAGIC where a.brand_flag = 1 # MAGIC ) prod on a.prod_des_c=prod.prod_des_c # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.32 pack_price # MAGIC -- 在 retail pack 粒度的文件中获取计算pack 粒度的price # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select distinct # MAGIC iqvia_pack_code # MAGIC ,corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'pack_price' KPI_name # MAGIC ,round(sum(sales_value)/sum(sales_unit),3) kpi_val # MAGIC ,round(sum(sales_value_ly)/sum(sales_unit_ly),3) kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,ta ta # MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag # MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag # MAGIC from tmp.tmp_zk_retail_price a # MAGIC left join ( # MAGIC SELECT DISTINCT b.prod_des_c # MAGIC FROM tmp.tmp_retail_pack_rawdata A # MAGIC LEFT JOIN ( # MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c # MAGIC FROM dm.dm_zk_retail_pack_property # MAGIC ) b on a.pack_code = b.iqvia_pack_code # MAGIC where a.brand_flag = 1 # MAGIC ) prod on a.prod_des_c=prod.prod_des_c # MAGIC group by # MAGIC corp_cod, # MAGIC YYYYMM, # MAGIC geo_key, # MAGIC ta, # MAGIC iqvia_pack_code, # MAGIC case when prod.prod_des_c is null THEN 2 else 1 END, # MAGIC case when geo_key ='CHT' THEN 2 else 1 END # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.33 pack_price_by_counting_unit # MAGIC -- 在 retail pack 粒度的文件中获取计算pack 粒度的price by counting unit # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_pack_property as ( # MAGIC ---------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC select # MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(iqvia_pack_code)),12) # MAGIC else trim(iqvia_pack_code) # MAGIC end as iqvia_pack_code, # MAGIC ---------------------------------------------------------------- # MAGIC product_id, # MAGIC counting_unit, # MAGIC unit # MAGIC from dwd.dwd_gnd_ext_retail_pack_property # MAGIC ) # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC select distinct # MAGIC a.iqvia_pack_code # MAGIC ,a.corp_cod # MAGIC ,YYYYMM # MAGIC ,null ytd # MAGIC ,geo_key # MAGIC ,'pack_price_by_counting_unit' KPI_name # MAGIC ,round(sum(sales_value)/sum(sales_unit*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val # MAGIC ,round(sum(sales_value_ly)/sum(sales_unit_ly*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val_ly # MAGIC ,null str_kpi_val # MAGIC ,null str_kpi_val_ly # MAGIC ,null kpi_vol # MAGIC ,null kpi_vol_ly # MAGIC ,null str_kpi_vol # MAGIC ,null str_kpi_vol_ly # MAGIC ,'N' TOTAL_FLAG # MAGIC ,ta ta # MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag # MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag # MAGIC from tmp.tmp_zk_retail_price a # MAGIC left join tmp_pack_property b on a.zk_product_id =b.product_id # MAGIC left join ( # MAGIC SELECT DISTINCT b.prod_des_c # MAGIC FROM tmp.tmp_retail_pack_rawdata A # MAGIC LEFT JOIN ( # MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c # MAGIC FROM dm.dm_zk_retail_pack_property # MAGIC ) b on a.pack_code = b.iqvia_pack_code # MAGIC where a.brand_flag = 1 # MAGIC ) prod on a.prod_des_c=prod.prod_des_c # MAGIC group by # MAGIC a.corp_cod, # MAGIC YYYYMM,geo_key, # MAGIC ta, # MAGIC a.iqvia_pack_code, # MAGIC case when prod.prod_des_c is null THEN 2 else 1 END, # MAGIC case when geo_key ='CHT' THEN 2 else 1 END # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- 8.34&35 num_dist_rate & weig_dist_rate # MAGIC -- 在 retail brand 品牌文件中获取数字铺货率 并对re 特殊处理,re相关品牌优先取inhaled market 对应 pack # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert into table dws.dws_zk_retail_sales_own_kpi # MAGIC # MAGIC with exploded_data as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC ifnull(common_name,'' ) as common_name, # MAGIC level, # MAGIC split(level_ta,',') array_ta, # MAGIC split(level_market,',') array_market, # MAGIC split(level_molecule,',') array_molecule, # MAGIC split(level_brand,',') array_brand # MAGIC from dwd.dwd_gnd_retail_split_automatic # MAGIC where level like '%MULTI_BRAND%' # MAGIC ), tmp_config as ( # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC common_name, # MAGIC level, # MAGIC array_ta[idx] as level_ta, # MAGIC array_market[idx] as level_market, # MAGIC array_molecule[idx] as level_molecule, # MAGIC array_brand[idx] as level_brand # MAGIC from exploded_data # MAGIC lateral view posexplode(array_ta) AS idx, split_ta # MAGIC # MAGIC union all # MAGIC # MAGIC select # MAGIC ta, # MAGIC market, # MAGIC brand, # MAGIC common_name, # MAGIC level, # MAGIC level_ta, # MAGIC level_market, # MAGIC level_molecule, # MAGIC level_brand # MAGIC from dwd.dwd_gnd_retail_split_automatic # MAGIC where level = 'BRAND' # MAGIC ),max_pack_mapping as ( # MAGIC select # MAGIC level_ta, # MAGIC level_market, # MAGIC level_molecule, # MAGIC level_brand, # MAGIC molecule_desc, # MAGIC product_desc, # MAGIC corp_cod, # MAGIC max(pack_code) as pack_code # MAGIC from tmp.tmp_retail_pack_mapping # MAGIC group by level_ta,level_market,level_molecule,level_brand,molecule_desc,product_desc,corp_cod # MAGIC ), tmp_brand_kpi_now as ( # MAGIC select # MAGIC distinct # MAGIC a.ta, # MAGIC nvl(f.iqvia_pack_code,c.pack_code) as pack_code, # MAGIC c.corp_cod, # MAGIC c.product_desc, # MAGIC a.YYYYMM, # MAGIC d.geo_key, # MAGIC a.num_dist_rate, # MAGIC a.weig_dist_rate # MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a # MAGIC inner join tmp_config b # MAGIC on a.ta = b.ta # MAGIC and a.market = b.market # MAGIC and a.zk_brand_category = b.brand # MAGIC and a.zk_common_name = b.common_name # MAGIC inner join max_pack_mapping c # MAGIC on c.level_ta = b.level_ta # MAGIC and c.level_market = b.level_market # MAGIC and c.level_molecule = b.level_molecule # MAGIC and c.level_brand = b.level_brand # MAGIC left join dm.dm_zk_retail_geo d # MAGIC on a.province_city = d.province_city # MAGIC left join ( # MAGIC select distinct iqvia_pack_code ,prod_des_c # MAGIC from dm.dm_zk_retail_pack_property # MAGIC ) e on c.pack_code = e.iqvia_pack_code # MAGIC left join ( # MAGIC select prod_des_c,max(iqvia_pack_code) iqvia_pack_code # MAGIC from dm.dm_zk_retail_pack_property # MAGIC where market='Inhaled Extended Market' # MAGIC group by prod_des_c # MAGIC ) f on e.prod_des_c =f.prod_des_c # MAGIC ), tmp_brand_kpi_ly as ( # MAGIC select # MAGIC pack_code, # MAGIC corp_cod, # MAGIC cast(YYYYMM + 100 as int ) as YYYYMM, # MAGIC geo_key, # MAGIC num_dist_rate, # MAGIC weig_dist_rate # MAGIC from tmp_brand_kpi_now # MAGIC ), tmp_brand_kpi as ( # MAGIC select # MAGIC a.*, # MAGIC b.num_dist_rate as num_dist_rate_ly, # MAGIC b.weig_dist_rate as weig_dist_rate_ly # MAGIC from tmp_brand_kpi_now a # MAGIC left join tmp_brand_kpi_ly b # MAGIC on a.pack_code = b.pack_code # MAGIC and a.corp_cod = b.corp_cod # MAGIC and a.YYYYMM = b.YYYYMM # MAGIC and a.geo_key = b.geo_key # MAGIC ) # MAGIC # MAGIC select # MAGIC pack_code, # MAGIC corp_cod, # MAGIC yyyymm, # MAGIC null as ytd, # MAGIC geo_key, # MAGIC 'num_dist_rate' as KPI_name, # MAGIC num_dist_rate as kpi_val, # MAGIC num_dist_rate_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC ta, # MAGIC case when product_desc is null THEN 2 else 1 END as brand_flag, # MAGIC case when geo_key ='CHT' THEN 2 else 1 END as pack_flag # MAGIC from tmp_brand_kpi # MAGIC # MAGIC union all # MAGIC # MAGIC select # MAGIC pack_code, # MAGIC corp_cod, # MAGIC yyyymm, # MAGIC null as ytd, # MAGIC geo_key, # MAGIC 'weig_dist_rate' as KPI_name, # MAGIC weig_dist_rate as kpi_val, # MAGIC weig_dist_rate_ly as kpi_val_ly, # MAGIC null as str_kpi_val, # MAGIC null as str_kpi_val_ly, # MAGIC null as kpi_vol, # MAGIC null as kpi_vol_ly, # MAGIC null as str_kpi_vol, # MAGIC null as str_kpi_vol_ly, # MAGIC 'N' as TOTAL_FLAG, # MAGIC ta, # MAGIC case when product_desc is null THEN 2 else 1 END as brand_flag, # MAGIC case when geo_key ='CHT' THEN 2 else 1 END as pack_flag # MAGIC from tmp_brand_kpi # MAGIC # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ### PART-7:映射到dm表 # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi # MAGIC -- PART-7: 映射到dm表 # MAGIC -- 将所有渠道kpi 数据汇总到dm # MAGIC -- KPI 表汇总 # MAGIC -- ytd 为是否ytd flag # MAGIC -- geo 将cht(全国) 改成 ROC # MAGIC -- DTP_FLAG: O-非dtp ,1-dtp数据 # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC insert overwrite table dm.dm_zk_retail_sales_kpi # MAGIC ( pack_code # MAGIC ,corp_cod # MAGIC ,ta # MAGIC ,YYYYMM # MAGIC ,ytd # MAGIC ,geo_key # MAGIC ,KPI_name # MAGIC ,kpi_val # MAGIC ,kpi_val_ly # MAGIC ,str_kpi_val # MAGIC ,str_kpi_val_ly # MAGIC ,kpi_vol # MAGIC ,kpi_vol_ly # MAGIC ,str_kpi_vol # MAGIC ,str_kpi_vol_ly # MAGIC ,TOTAL_FLAG # MAGIC ,data_source # MAGIC ,dtp_flag # MAGIC ,brand_flag # MAGIC ,pack_flag # MAGIC ) # MAGIC --------retail 渠道 kpi # MAGIC select # MAGIC nvl(pack_code,'') pack_code # MAGIC ,nvl(corp_cod,'') corp_cod # MAGIC ,nvl(ta,'') ta # MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7 AND substr(ytd,6,1)<>'Q',concat('20',substr(ytd,4,2))*100 + right(ytd,2) ,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ) as int )) YYYYMM # MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD # MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key # MAGIC ,nvl(kpi_name,'') as kpi_name # MAGIC ,nvl(cast(kpi_val as double),0) kpi_val # MAGIC ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly # MAGIC ,nvl(str_kpi_val,'') # MAGIC ,nvl(str_kpi_val_ly,'') # MAGIC ,nvl(cast(kpi_vol as double),0) kpi_vol # MAGIC ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly # MAGIC ,nvl(str_kpi_vol,'') # MAGIC ,nvl(str_kpi_vol_ly,'') # MAGIC ,nvl(TOTAL_FLAG,'') # MAGIC ,'Retail(Quarterly)' data_source # MAGIC ,'0' dtp_flag # MAGIC , 0 # MAGIC , 0 # MAGIC from dws.dws_zk_retail_sales_kpi # MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') # MAGIC # MAGIC union all # MAGIC ---------------dtp 的kpi # MAGIC select # MAGIC nvl(pack_code,'') pack_code # MAGIC ,nvl(corp_cod,'') corp_cod # MAGIC ,nvl(ta,'') ta # MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM # MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD # MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END # MAGIC ,nvl(kpi_name,'') # MAGIC ,nvl(kpi_val,0) # MAGIC ,nvl(kpi_val_ly,0) # MAGIC ,nvl(str_kpi_val,'') # MAGIC ,nvl(str_kpi_val_ly,'') # MAGIC ,nvl(kpi_vol,0) # MAGIC ,nvl(kpi_vol_ly,0) # MAGIC ,nvl(str_kpi_vol,'') # MAGIC ,nvl(str_kpi_vol_ly,'') # MAGIC ,nvl(TOTAL_FLAG,'') # MAGIC ,'Retail(Quarterly)' data_source # MAGIC ,'1' dtp_flag # MAGIC ,0 # MAGIC ,0 # MAGIC from dws.dws_zk_retail_dtp_sales_kpi # MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') # MAGIC # MAGIC union all # MAGIC # MAGIC --拼接retail 自有部分kpi # MAGIC select # MAGIC nvl(pack_code,'') pack_code # MAGIC ,nvl(corp_cod,'') corp_cod # MAGIC ,nvl(ta,'') ta # MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM # MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD # MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key # MAGIC ,nvl(kpi_name,'') # MAGIC ,nvl(cast(kpi_val as double),0) kpi_val # MAGIC ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly # MAGIC ,nvl(str_kpi_val,'') # MAGIC ,nvl(str_kpi_val_ly,'') # MAGIC ,nvl(cast(kpi_vol as double),0) kpi_vol # MAGIC ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly # MAGIC ,nvl(str_kpi_vol,'') # MAGIC ,nvl(str_kpi_vol_ly,'') # MAGIC ,nvl(TOTAL_FLAG,'') # MAGIC ,'Retail(Quarterly)' data_source # MAGIC ,'0' dtp_flag # MAGIC ,nvl(brand_flag,0) # MAGIC ,nvl(pack_flag,0) # MAGIC from dws.dws_zk_retail_sales_own_kpi # MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-9: map to dm.dm_zk_retail_market_ratio # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-9: map to dm.dm_zk_retail_market_ratio # MAGIC ------------------------------------------------------------------------------------- # MAGIC /* # MAGIC 修改人:chenwu # MAGIC 修改时间:20250319 # MAGIC 修改内容: # MAGIC */ # MAGIC ------------------------生产retail 的ratio 表,该表系数用于计算pdot-------- # MAGIC insert overwrite table dm.dm_zk_retail_market_ratio # MAGIC ( # MAGIC market_pack_key, # MAGIC pack_cod, # MAGIC prod_des, # MAGIC cmps_des, # MAGIC corp_cod, # MAGIC market, # MAGIC value_market_ratio, # MAGIC unit_market_ratio, # MAGIC countingunit_market_ratio, # MAGIC etl_insert_dt, # MAGIC etl_update_dt # MAGIC ) # MAGIC select distinct # MAGIC a.market || a.iqvia_pack_code as market_pack_key # MAGIC ,a.iqvia_pack_code as pack_cod # MAGIC ,a.prod_des as prod_des # MAGIC ,a.cmps_des as cmps_des # MAGIC ,a.corp_cod as corp_cod # MAGIC ,a.market as market # MAGIC ,a.extend_market_ratio as value_market_ratio # MAGIC ,a.extend_market_ratio as unit_market_ratio # MAGIC ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.extend_market_ratio ,1 ) # MAGIC else t4.ratio*coalesce(a.extend_market_ratio ,1 ) # MAGIC end ,a.extend_market_ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt # MAGIC from tmp.tmp_dm_zk_retail_pack_property a # MAGIC left join (--COUNTINGUNIT # MAGIC select distinct # MAGIC market, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC ---------------------------------------------------------------------------- # MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio # MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(pack_cod)),12) # MAGIC else trim(pack_cod) # MAGIC end as pack_cod, # MAGIC ---------------------------------------------------------------------------- # MAGIC pack_des, # MAGIC level, # MAGIC type, # MAGIC cast(ratio as float) as ratio, # MAGIC cast(starttime as int) starttime, # MAGIC cast (endtime as int) endtime # MAGIC from dwd.dwd_gnd_ims_tblbrandratio # MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' # MAGIC )t4 on a.market=t4.market # MAGIC and a.iqvia_pack_code = t4.PACK_COD # MAGIC left join (--COUNTINGUNIT # MAGIC select distinct # MAGIC market, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC ---------------------------------------------------------------------------- # MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio # MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(pack_cod)),12) # MAGIC else trim(pack_cod) # MAGIC end as pack_cod, # MAGIC ---------------------------------------------------------------------------- # MAGIC pack_des, # MAGIC level, # MAGIC type, # MAGIC cast(ratio as float) as ratio, # MAGIC cast(starttime as int) starttime, # MAGIC cast (endtime as int) endtime # MAGIC from dwd.dwd_gnd_ims_tblbrandratio # MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' # MAGIC ) t5 on a.market=t5.market # MAGIC and right(concat('000000',a.CMPS_COD ),6 )= right(concat('000000',t5.CMPS_COD ),6 ) # MAGIC union all # MAGIC select distinct # MAGIC a.market || a.iqvia_pack_code as market_pack_key # MAGIC ,a.iqvia_pack_code as pack_cod # MAGIC ,a.prod_des as prod_des # MAGIC ,a.cmps_des as cmps_des # MAGIC ,a.corp_cod as corp_cod # MAGIC ,a.market as market # MAGIC ,a.Market_Ratio as value_market_ratio # MAGIC ,a.Market_Ratio as unit_market_ratio # MAGIC ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.Market_Ratio ,1 ) # MAGIC else t4.ratio*coalesce(a.Market_Ratio ,1 ) # MAGIC end ,a.Market_Ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt # MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt # MAGIC from dws.dws_zk_retail_dtp_market a # MAGIC left join (--COUNTINGUNIT # MAGIC select distinct # MAGIC market, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC ---------------------------------------------------------------------------- # MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio # MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(pack_cod)),12) # MAGIC else trim(pack_cod) # MAGIC end as pack_cod, # MAGIC ---------------------------------------------------------------------------- # MAGIC pack_des, # MAGIC level, # MAGIC type, # MAGIC cast(ratio as float) as ratio, # MAGIC cast(starttime as int) starttime, # MAGIC cast (endtime as int) endtime # MAGIC from dwd.dwd_gnd_ims_tblbrandratio # MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' # MAGIC )t4 on a.market=t4.market # MAGIC and a.iqvia_pack_code = t4.PACK_COD # MAGIC left join (--COUNTINGUNIT # MAGIC select distinct # MAGIC market, # MAGIC cmps_cod, # MAGIC cmps_des, # MAGIC ---------------------------------------------------------------------------- # MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio # MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(pack_cod)),12) # MAGIC else trim(pack_cod) # MAGIC end as pack_cod, # MAGIC ---------------------------------------------------------------------------- # MAGIC pack_des, # MAGIC level, # MAGIC type, # MAGIC cast(ratio as float) as ratio, # MAGIC cast(starttime as int) starttime, # MAGIC cast (endtime as int) endtime # MAGIC from dwd.dwd_gnd_ims_tblbrandratio # MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' # MAGIC ) t5 on a.market=t5.market # MAGIC and right(concat('000000',a.CMPS_COD ),6 ) = right(concat('000000',t5.CMPS_COD ),6 ) # MAGIC # COMMAND ---------- ############################################################END################################################################