-- Databricks notebook source -- 有几张表发生了变化 -- tmp.tmp_ec_temp_market -- tmp.tmp_ec_temp_market_del -- dws.dws_zk_ec_pack_property -- dm.dm_zk_ec_market_ratio -- COMMAND ---------- insert overwrite table tmp.tmp_ec_temp_market select distinct b.iqvia_lineno , if( nvl(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',nvl(b.iqvia_pack_code,0)),12),nvl(b.iqvia_pack_code,0)) as iqvia_pack_code,-- right(concat('0000000',nvl(b.iqvia_pack_code,0)),7) right(concat('000000000',nvl(b.iqvia_prod_code,0)),9) as prod_cod ,-- right(concat('00000',nvl(b.iqvia_prod_code,0)),5) b.iqvia_notes , b.new_pack_flag , b.is_exists_chpa , right(concat('0000000',nvl(b.product_id,0)),7) as product_id, b.prescription_nature , b.medicine_type , b.zk_medicine_tier1 , b.zk_medicine_tier2 , b.zk_medicine_tier3 , b.zk_medicine_tier4 , b.common_name , b.dosage_form , b.user_type , b.category_name , b.product_name , b.brand_name , b.zk_manu_des , b.zk_corp_des , b.zk_pack_des , b.counting_unit_a , b.dosage_unit_a , b.unit_a , b.app1_cod , b.app1_des , b.app1_des_c , b.app2_cod , b.app2_des , b.app2_des_c , b.app3_cod , b.app3_des , b.app3_des_c , b.atc1_cod , b.atc1_des , b.atc1_des_c , b.atc2_cod , b.atc2_des , b.atc2_des_c , b.atc3_cod , b.atc3_des , b.atc3_des_c , b.atc4_cod , b.atc4_des , b.atc4_des_c , b.bio_desc , right(concat('000000',nvl(b.cmps_cod,0 )),6) cmps_cod, b.cmps_des , b.cmps_des_c , b.corp_cod , b.corp_des , b.corp_des_c , b.edl_desc , b.eth_otc_desc , b.gene_orig_desc , b.gqce_desc , b.manu_cod , b.manu_des , b.manu_des_c , b.mnfl_cod , b.mnfl_des , b.nrdl_desc , b.pack_des , b.stgh_des , b.pack_lch , b.paed_desc , b.prod_des , b.prod_des_c , b.tcm_desc , b.vbp_desc , b.unit , b.counting_unit , b.dosage_unit , nvl(mole.NRDL_Entry_Date,'') as NRDL_ENTRY_DATE, tblmkt.Market, tblmkt.bu, nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio, -- c.ta, if(b.corp_des_c in ('阿斯利康制药集团'),'Y','N') as is_az from dwd.dwd_gnd_ext_retail_pack_property as b left join dwd.dwd_ims_td_pack_additional_attribute mole on b.iqvia_pack_code = mole.Pack_Code left join ( select market,bu,atc1_code,atc2_code,atc3_code,atc4_code,nfc1_code,nfc2_code,nfc3_code,pack_code,pack_desc,strength,product_code,product_desc,molecule_code,molecule_desc,not_in_flag,extend_market,extend_market_ratio,corporation_code,corporation_desc,manufacturer_code,manufacturer_desc,zk_common_name,zk_product_id,zk_dosage_form from dwd.dwd_gnd_ec_retail_tblmarket_rule where extend_market is null and ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' ) ) tblmkt on COALESCE(b.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then COALESCE(b.ATC1_COD,'') else tblmkt.ATC1_Code end and COALESCE(b.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then COALESCE(b.ATC2_COD,'') else tblmkt.ATC2_Code end and COALESCE(b.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then COALESCE(b.ATC3_COD,'') else tblmkt.ATC3_Code end and COALESCE(b.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then COALESCE(b.ATC4_COD,'') else tblmkt.ATC4_Code end and COALESCE(b.APP1_COD,'') = case when tblmkt.NFC1_Code is null then COALESCE(b.APP1_COD,'') else tblmkt.NFC1_Code end and COALESCE(b.APP2_COD,'') = case when tblmkt.NFC2_Code is null then COALESCE(b.APP2_COD,'') else tblmkt.NFC2_Code end and COALESCE(b.app3_cod,'') = case when tblmkt.NFC3_Code is null then COALESCE(b.app3_cod,'') else tblmkt.NFC3_Code end and COALESCE(b.stgh_des,'') = case when tblmkt.Strength is null then COALESCE(b.stgh_des,'') else tblmkt.Strength end and COALESCE(b.corp_cod,'') = case when tblmkt.Corporation_Code is null then COALESCE(b.corp_cod,'') else tblmkt.Corporation_Code end and COALESCE(b.manu_cod,'') = case when tblmkt.Manufacturer_Code is null then COALESCE(b.manu_cod,'') else tblmkt.Manufacturer_Code end and right(concat('0000000',nvl(b.product_id,0)),7 ) = case when tblmkt.zk_product_id is null then right(concat('0000000',nvl(b.product_id,0) ),7 ) else right(concat('0000000',tblmkt.zk_product_id),7) end and right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) = case when tblmkt.Product_Code is null then right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) else right(concat('000000000', tblmkt.Product_Code),9) end -- and right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) = case when tblmkt.Product_Code is null then right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) else right(concat('00000', tblmkt.Product_Code),5) end and if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) = case when tblmkt.Pack_Code is null then if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]' ,right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) else if( tblmkt.Pack_Code REGEXP '^[0-9]', right(concat('000000000000',tblmkt.Pack_Code),12),tblmkt.Pack_Code) end -- and right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) = case when tblmkt.Pack_Code is null then right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) else right(concat('0000000',tblmkt.Pack_Code),7) end and right(concat('000000',COALESCE(b.CMPS_COD,0)),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',COALESCE(b.CMPS_COD,0)),6) else right(concat('000000',tblmkt.Molecule_Code),6) end -- left join dwd.dwd_gnd_ext_retail_dim_ta c -- on c.market = tblmkt.Market where tblmkt.market is not null ; insert overwrite table tmp.tmp_ec_temp_market_del select b.iqvia_lineno , if( nvl(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',nvl(b.iqvia_pack_code,0)),12),nvl(b.iqvia_pack_code,0)) as iqvia_pack_code,-- right(concat('0000000',nvl(b.iqvia_pack_code,0)),7) right(concat('000000000',nvl(b.iqvia_prod_code,0)),9) as prod_cod ,-- right(concat('00000',nvl(b.iqvia_prod_code,0)),5) b.iqvia_notes , b.new_pack_flag , b.is_exists_chpa , right(concat('0000000',nvl(b.product_id,0)),7) as product_id, b.prescription_nature , b.medicine_type , b.zk_medicine_tier1 , b.zk_medicine_tier2 , b.zk_medicine_tier3 , b.zk_medicine_tier4 , b.common_name , b.dosage_form , b.user_type , b.category_name , b.product_name , b.brand_name , b.zk_manu_des , b.zk_corp_des , b.zk_pack_des , b.counting_unit_a , b.dosage_unit_a , b.unit_a , b.app1_cod , b.app1_des , b.app1_des_c , b.app2_cod , b.app2_des , b.app2_des_c , b.app3_cod , b.app3_des , b.app3_des_c , b.atc1_cod , b.atc1_des , b.atc1_des_c , b.atc2_cod , b.atc2_des , b.atc2_des_c , b.atc3_cod , b.atc3_des , b.atc3_des_c , b.atc4_cod , b.atc4_des , b.atc4_des_c , b.bio_desc , right(concat('000000',nvl(b.cmps_cod,0 )),6) cmps_cod, b.cmps_des , b.cmps_des_c , b.corp_cod , b.corp_des , b.corp_des_c , b.edl_desc , b.eth_otc_desc , b.gene_orig_desc , b.gqce_desc , b.manu_cod , b.manu_des , b.manu_des_c , b.mnfl_cod , b.mnfl_des , b.nrdl_desc , b.pack_des , b.stgh_des , b.pack_lch , b.paed_desc , b.prod_des , b.prod_des_c , b.tcm_desc , b.vbp_desc , b.unit , b.counting_unit , b.dosage_unit , nvl(mole.NRDL_Entry_Date,'') as NRDL_ENTRY_DATE, tblmkt.Market, tblmkt.bu, nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio, -- c.ta, if(b.corp_des_c in ('阿斯利康制药集团'),'Y','N') as is_az from dwd.dwd_gnd_ext_retail_pack_property as b left join dwd.dwd_ims_td_pack_additional_attribute mole on b.iqvia_pack_code = mole.Pack_Code left join ( select market,bu,atc1_code,atc2_code,atc3_code,atc4_code,nfc1_code,nfc2_code,nfc3_code,pack_code,pack_desc,strength,product_code,product_desc,molecule_code,molecule_desc,not_in_flag,extend_market,extend_market_ratio,corporation_code,corporation_desc,manufacturer_code,manufacturer_desc,zk_common_name,zk_product_id,zk_dosage_form from dwd.dwd_gnd_ec_retail_tblmarket_rule where Extend_Market is null and NOT_IN_FLAG = '0' ) tblmkt on COALESCE(b.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then COALESCE(b.ATC1_COD,'') else tblmkt.ATC1_Code end and COALESCE(b.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then COALESCE(b.ATC2_COD,'') else tblmkt.ATC2_Code end and COALESCE(b.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then COALESCE(b.ATC3_COD,'') else tblmkt.ATC3_Code end and COALESCE(b.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then COALESCE(b.ATC4_COD,'') else tblmkt.ATC4_Code end and COALESCE(b.APP1_COD,'') = case when tblmkt.NFC1_Code is null then COALESCE(b.APP1_COD,'') else tblmkt.NFC1_Code end and COALESCE(b.APP2_COD,'') = case when tblmkt.NFC2_Code is null then COALESCE(b.APP2_COD,'') else tblmkt.NFC2_Code end and COALESCE(b.app3_cod,'') = case when tblmkt.NFC3_Code is null then COALESCE(b.app3_cod,'') else tblmkt.NFC3_Code end and COALESCE(b.stgh_des,'') = case when tblmkt.Strength is null then COALESCE(b.stgh_des,'') else tblmkt.Strength end and COALESCE(b.corp_cod,'') = case when tblmkt.Corporation_Code is null then COALESCE(b.corp_cod,'') else tblmkt.Corporation_Code end and COALESCE(b.manu_cod,'') = case when tblmkt.Manufacturer_Code is null then COALESCE(b.manu_cod,'') else tblmkt.Manufacturer_Code end and right(concat('0000000',nvl(b.product_id,0)),7 ) = case when tblmkt.zk_product_id is null then right(concat('0000000',nvl(b.product_id,0) ),7 ) else right(concat('0000000',tblmkt.zk_product_id),7) end and right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) = case when tblmkt.Product_Code is null then right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) else right(concat('000000000', tblmkt.Product_Code),9) end -- and right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) = case when tblmkt.Product_Code is null then right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) else right(concat('00000', tblmkt.Product_Code),5) end and if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) = case when tblmkt.Pack_Code is null then if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]' ,right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) else if( tblmkt.Pack_Code REGEXP '^[0-9]', right(concat('000000000000',tblmkt.Pack_Code),12),tblmkt.Pack_Code) end -- and right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) = case when tblmkt.Pack_Code is null then right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) else right(concat('0000000',tblmkt.Pack_Code),7) end and right(concat('000000',COALESCE(b.CMPS_COD,0)),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',COALESCE(b.CMPS_COD,0)),6) else right(concat('000000',tblmkt.Molecule_Code),6) end -- left join dwd.dwd_gnd_ext_retail_dim_ta c -- on c.market = tblmkt.Market where tblmkt.market is not null ; MERGE INTO tmp.tmp_ec_temp_market AS t1 USING tmp.tmp_ec_temp_market_del AS t2 on COALESCE(t1.ATC1_COD,'') = COALESCE(t2.ATC1_COD,'') and COALESCE(t1.ATC2_COD,'') = COALESCE(t2.ATC2_COD,'') and COALESCE(t1.ATC3_COD,'') = COALESCE(t2.ATC3_COD,'') and COALESCE(t1.ATC4_COD,'') = COALESCE(t2.ATC4_COD,'') and COALESCE(t1.APP1_COD,'') = COALESCE(t2.APP1_COD,'') and COALESCE(t1.APP2_COD,'') = COALESCE(t2.APP2_COD,'') and COALESCE(t1.APP3_COD,'') = COALESCE(t2.APP3_COD,'') and COALESCE(t1.CORP_COD,'') = COALESCE(t2.CORP_COD,'') and COALESCE(t1.MANU_COD,'') = COALESCE(t2.MANU_COD,'') and COALESCE(t1.PROD_COD,'') = COALESCE(t2.PROD_COD,'') and COALESCE(t1.iqvia_pack_code,'') = COALESCE(t2.iqvia_pack_code,'') and COALESCE(t1.STGH_DES,'') = COALESCE(t2.STGH_DES,'') and COALESCE(t1.CMPS_COD,'') = COALESCE(t2.CMPS_COD,'') and COALESCE(t1.market,'') = COALESCE(t2.market,'') WHEN MATCHED THEN DELETE ; -- COMMAND ---------- --处理 Extend_Market 有值得数据,用已有市场,定义新的市场,带上系数 insert into tmp.tmp_ec_temp_market select iqvia_lineno,iqvia_pack_code,prod_cod,iqvia_notes,new_pack_flag,is_exists_chpa,product_id,prescription_nature,medicine_type,zk_medicine_tier1,zk_medicine_tier2,zk_medicine_tier3,zk_medicine_tier4,common_name,dosage_form,user_type,category_name,product_name,brand_name,zk_manu_des,zk_corp_des,zk_pack_des,counting_unit_a,dosage_unit_a,unit_a,app1_cod,app1_des,app1_des_c,app2_cod,app2_des,app2_des_c,app3_cod,app3_des,app3_des_c,atc1_cod,atc1_des,atc1_des_c,atc2_cod,atc2_des,atc2_des_c,atc3_cod,atc3_des,atc3_des_c,atc4_cod,atc4_des,atc4_des_c,bio_desc,cmps_cod,cmps_des,cmps_des_c,corp_cod,corp_des,corp_des_c,edl_desc,eth_otc_desc,gene_orig_desc,gqce_desc,manu_cod,manu_des,manu_des_c,mnfl_cod,mnfl_des,nrdl_desc,pack_des,stgh_des,pack_lch,paed_desc,prod_des,prod_des_c,tcm_desc,vbp_desc,unit,counting_unit,dosage_unit,NRDL_ENTRY_DATE,t2.Market,t2.bu,nvl(t2.extend_market_ratio,1) as extend_market_ratio,is_az from tmp.tmp_ec_temp_market t1 left join (select Market,BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ec_retail_tblmarket_rule where Extend_Market is not null )t2 on t1.Market = t2.Extend_Market where t2.Market is not null -- COMMAND ---------- -----------事实表数据处理:获取counting_unit字段,给特殊字段补0,并对数据去重 insert overwrite table tmp.tmp_ec_source select a.time as yyyymm, right(concat('0000000',a.product_id),7) as pack_id, if( b.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',b.iqvia_pack_code),12),b.iqvia_pack_code) as iqvia_pack_code, --right(concat('0000000',b.iqvia_pack_code),7) a.platform, a.store_name, a.store_type, sum(a.sales_amount) as sales_value, sum(a.sales_qty) as sales_unit, cast(sum(a.sales_qty*(b.counting_unit/coalesce(unit,1 ))) as decimal(30,10)) as counting_unit from dwd.dwd_inc_gnd_ext_ec_nationnal_pack_union_all a left join ( select DISTINCT product_id,iqvia_pack_code,counting_unit,unit,prod_des_c from dwd.dwd_gnd_ext_retail_pack_property) b on right(concat('0000000',a.product_id),7) = right(concat('0000000',b.product_id),7) group by a.`time`,right(concat('0000000',a.product_id),7) ,if( b.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',b.iqvia_pack_code),12),b.iqvia_pack_code) ,a.platform,a.store_name ,a.store_type -- COMMAND ---------- insert overwrite table dws.dws_zk_ec_sales select t1.yyyymm,t1.pack_id,t1.iqvia_pack_code,t1.platform,t1.store_name,t1.store_type, sum(sales_value) as sales_value, sum(sales_unit) as sales_unit, sum(counting_unit) as counting_unit from tmp.tmp_ec_source t1 group by t1.yyyymm,t1.pack_id,t1.iqvia_pack_code,t1.platform,t1.store_name,t1.store_type -- COMMAND ---------- -------------------------处理top_ta_corp数据 insert overwrite table dws.dws_zk_ec_by_ta_top_corp select t1.yyyymm, t1.ta, t1.rank, t1.corp_des, t1.CORP_COD, t1.platform, t1.store_type, sum(t1.sales_value) sales_value from ( select a.ytd yyyymm, a.ta, a.rank, a.corp_des, b.CORP_COD, a.platform, a.store_type, replace(a.sales_value,',','') as sales_value from dwd.dwd_gnd_ec_ta_overview a left join (select distinct ZK_Corp_C ,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total) b on b.ZK_Corp_C = a.corp_des ) t1 group by 1,2,3,4,5,6,7 -- COMMAND ---------- -----加工倒减的by_corp_by_ta_by_total表数据,获取去年数据 insert overwrite table dws.dws_zk_ec_by_ta_top_corp select t1.yyyymm, t1.ta, t1.rank, t1.corp_des, t1.CORP_COD, t1.platform, t1.store_type, sum(t1.sales_value) sales_value from( select a.ytd yyyymm, a.ta, a.rank, a.corp_des, b.CORP_COD, a.platform, a.store_type, replace(a.sales_value,',','') as sales_value from dwd.dwd_gnd_ec_ta_overview a left join (select distinct ZK_Corp_C ,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total) b on b.ZK_Corp_C = a.corp_des )t1 group by 1,2,3,4,5,6,7 -- COMMAND ---------- ----倒减需要用到公司信息以及ta信息,加工配置表挂靠Corp、ta insert overwrite table tmp.tmp_zk_ec_pack_property_corp select distinct a.product_id,a.iqvia_pack_code,a.Market,ta.ta ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c from (select DISTINCT product_id,iqvia_pack_code,Market,corp_cod,corp_des,corp_des_c,manu_cod,manu_des,manu_des_c,prod_cod from tmp.tmp_ec_temp_market) a left join dwd.dwd_gnd_ext_retail_dim_ta ta on a.Market = ta.market left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b on right(concat('000000000',A.prod_cod ),9)= b.prod_cod left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c on a.iqvia_pack_code = c.pack_cod left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod Left join (select distinct manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod -- COMMAND ---------- -------------------------------------------------------ec倒减------------------------------------------------------- --注意事项: -- 只做了CV、CVRM、TA大数的倒减,其余TA没有做 --cv倒减:关联加工好的配置表,获取ta信息进行倒减 insert overwrite table tmp.tmp_dm_zk_ec_sales_cv_tmp with cv_data as ( select t1.yyyymm, t1.pack_id, t1.iqvia_pack_code, t1.platform, t1.store_type, t1.store_name, t1.sales_value, t1.sales_unit, t1.counting_unit, max(t2.ta) ta from dws.dws_zk_ec_sales t1 left join (select distinct iqvia_pack_code,ta from tmp.tmp_zk_ec_pack_property_corp) t2 on t1.iqvia_pack_code = t2.iqvia_pack_code where t2.ta = 'CV' group by 1,2,3,4,5,6,7,8,9 ),cv_corp_data as ( -----------------------cv下的az 数据 select A.yyyymm, A.pack_id, A.iqvia_pack_code, A.platform, A.store_type, A.store_name, B.corp_cod, A.sales_value, A.sales_unit, A.counting_unit, A.ta from cv_data A inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B on A.pack_id = B.product_id where B.corp_cod = 'A5Z' union all -----------------------cv下的az others数据 select cv_az.yyyymm, 'CV_AZ_OTHERS' as pack_id, 'CV_AZ_OTHERS' as iqvia_pack_code, cv_az.platform, cv_az.store_type, case when cv_az.store_type = '自营旗舰' then 'CV_AZ_OTHERS_SO' when cv_az.store_type = '第三方' then 'CV_AZ_OTHERS_POP' end store_name, cv_az.corp_cod, cv_az_total.sales_value - cv_az.sales_value as sales_value, 0,0, 'CV_AZ_OTHERS' as ta from ( select A.yyyymm, B.corp_cod, A.platform, case when A.store_type = '平台店' or A.store_type = '品牌店' then '自营旗舰' else A.store_type end store_type, sum(A.sales_value) sales_value from cv_data A inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B on A.pack_id = B.product_id where B.corp_cod = 'A5Z' group by 1,2,3,4 )cv_az left join( select yyyymm, CORP_COD, platform, case when store_type = '三方' then '第三方' else store_type end store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where ta = 'CV' and CORP_COD = 'A5Z' group by 1,2,3,4 )cv_az_total on cv_az.yyyymm = cv_az_total.yyyymm and cv_az.corp_cod = cv_az_total.CORP_COD and cv_az.platform = cv_az_total.platform and cv_az.store_type = cv_az_total.store_type union all ---------------cv下的非az数据 select A.yyyymm, A.pack_id, A.iqvia_pack_code, A.platform, A.store_type, A.store_name, B.corp_cod, A.sales_value, A.sales_unit, A.counting_unit, A.ta from cv_data A inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B on A.pack_id = B.product_id where nvl(corp_cod,'') <>'A5Z' ) -----------------------所有cv 数据 ,all_cv_data as ( select yyyymm, pack_id, iqvia_pack_code, platform, store_type, store_name, corp_cod, sales_value, sales_unit, counting_unit, 'CV' flag, ta from cv_corp_data union all -----------------------倒减出cv_others数据 select t1.yyyymm, 'CV_OTHERS' as pack_id, 'CV_OTHERS' as iqvia_pack_code, t1.platform, t1.store_type, case when t1.store_type = '自营旗舰' then 'CV_OTHERS_SO' when t1.store_type = '第三方' then 'CV_OTHERS_POP' end store_name, 'CV_OTHERS' as corp_cod, t2.sales_value - t1.sales_value as sales_value, 0,0, 'CV' as flag, 'CV_OTHERS' as ta from( -----------------------所有的cv数据 select yyyymm, platform, case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, sum(sales_value) sales_value from cv_corp_data group by 1,2,3 )t1 left join( -----------------------cv大数 select yyyymm, platform, case when store_type = '三方' then '第三方' else store_type end store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where ta = 'CV' and lower(rank) = 'total' group by 1,2,3 )t2 on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type ),non_cv_all_data as ( select t1.yyyymm, t1.pack_id, t1.iqvia_pack_code, t1.platform, t1.store_type, t1.store_name, t2.corp_cod, t1.sales_value, t1.sales_unit, t1.counting_unit, case when t2.ta in ('DM','RD') then 'CVRM' else '' end flag, max(t2.ta) ta from dws.dws_zk_ec_sales t1 left join (select distinct iqvia_pack_code,ta,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) t2 on t1.pack_id = t2.product_id where nvl(t2.TA,'') <> 'CV' group by 1,2,3,4,5,6,7,8,9,10,11 ) select * from all_cv_data union select * from non_cv_all_data -- select * from non_cv_all_data order by sales_value desc -- COMMAND ---------- --cvrm倒减:关联加工好的配置表,获取ta信息进行倒减 insert overwrite table tmp.tmp_dm_zk_ec_sales_cv_tmp2 with all_data as ( select yyyymm, pack_id, iqvia_pack_code, platform, store_type, store_name, corp_cod, sales_value, sales_unit, counting_unit, flag from tmp.tmp_dm_zk_ec_sales_cv_tmp union all select t1.yyyymm, 'CVRM_AZ_OTHERS' as pack_id, 'CVRM_AZ_OTHERS' as iqvia_pack_code, t1.platform, t1.store_type, case when t1.store_type = '自营旗舰' then 'CVRM_AZ_OTHERS_SO' when t1.store_type = '第三方' then 'CVRM_AZ_OTHERS_POP' end store_name, t1.corp_cod, t2.sales_value - t1.sales_value as sales_value, 0,0, 'CVRM' as flag from( select yyyymm, corp_cod, platform, case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, sum(sales_value) sales_value from tmp.tmp_dm_zk_ec_sales_cv_tmp where corp_cod = 'A5Z' and flag in ('CV','CVRM') group by 1,2,3,4 )t1 left join ( select yyyymm, CORP_COD, platform, case when store_type = '三方' then '第三方' else store_type end store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where CORP_COD = 'A5Z' and ta = 'CVRM' group by 1,2,3,4 )t2 on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type ) select yyyymm, pack_id, iqvia_pack_code, platform, store_type, store_name, corp_cod, sales_value, sales_unit, counting_unit, flag from all_data union all select t1.yyyymm, 'CVRM_OTHERS' as pack_id, 'CVRM_OTHERS' as iqvia_pack_code, t1.platform, t1.store_type, case when t1.store_type = '自营旗舰' then 'CVRM_OTHERS_SO' when t1.store_type = '第三方' then 'CVRM_OTHERS_POP' end store_name, 'CVRM_OTHERS' as corp_cod, t2.sales_value - t1.sales_value as sales_value, 0,0, 'CVRM' flag from ( select yyyymm, platform, case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, sum(sales_value) sales_value from all_data where flag in ('CV','CVRM') group by 1,2,3 )t1 left join( select yyyymm, platform, case when store_type = '三方' then '第三方' else store_type end store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where ta = 'CVRM' and lower(rank) = 'total' group by 1,2,3 )t2 on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type -- COMMAND ---------- --ta倒减并写入事实表:根据加工好的倒减底表中ta字段信息获取ta总数,进行倒减 insert overwrite table tmp.tmp_dm_zk_ec_sales with all_data as ( select distinct yyyymm, pack_id, iqvia_pack_code, platform, store_type, store_name, corp_cod, sales_value, sales_unit, counting_unit, flag from tmp.tmp_dm_zk_ec_sales_cv_tmp2 union all select t1.yyyymm, 'OTHERS_AZ_TA' as pack_id, 'OTHERS_AZ_TA' as iqvia_pack_code, t1.platform, t1.store_type, case when t1.store_type = '自营旗舰' then 'OTHERS_AZ_TA_SO' when t1.store_type = '第三方' then 'OTHERS_AZ_TA_POP' end store_name, t1.corp_cod, t2.sales_value - t1.sales_value as sales_value, 0,0, 'OTHERS_AZ_TA' as flag from( select yyyymm, corp_cod, platform, case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, sum(sales_value) sales_value from tmp.tmp_dm_zk_ec_sales_cv_tmp2 where corp_cod = 'A5Z' group by 1,2,3,4 )t1 left join ( select yyyymm, platform, store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where CORP_COD = 'A5Z' and ta = 'RX Total' group by 1,2,3 )t2 on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type ),result as ( select yyyymm, pack_id, iqvia_pack_code, platform, store_type, store_name, corp_cod, sales_value, sales_unit, counting_unit, flag from all_data union all select t1.yyyymm, 'OTHERS_TA' as pack_id, 'OTHERS_TA' as iqvia_pack_code, t1.platform, t1.store_type, case when t1.store_type = '自营旗舰' then 'OTHERS_TA_SO' when t1.store_type = '第三方' then 'OTHERS_TA_POP' end store_name, 'OTHERS_TA' as corp_cod, t2.sales_value - t1.sales_value as sales_value, 0,0, 'OTHERS_TA' as flag from( select yyyymm, platform, case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, sum(sales_value) sales_value from all_data group by 1,2,3 )t1 left join( select yyyymm, platform, store_type, sum(sales_value) sales_value from dws.dws_zk_ec_by_ta_top_corp where lower(rank) = 'total' and ta = 'RX Total' group by 1,2,3 )t2 on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type ) select distinct yyyymm, pack_id, iqvia_pack_code, corp_cod, 'ROC' as audit_cod, platform, case when store_type = '第三方' then 'POP' when store_type in ('平台店','品牌店','自营旗舰') then 'SO' end store_type, store_name, case when iqvia_pack_code like '%OTHERS%' then 0 else 1 end PACK_FLAG, case when iqvia_pack_code like '%OTHERS%' then 0 else 1 end PROD_FLAG, flag, 'EC(Monthly)' DATA_SOURCE, sum(sales_value) sales_value, sum(sales_unit) sales_unit, sum(counting_unit) counting_unit from result group by 1,2,3,4,5,6,7,8,9,10,11,12 -- COMMAND ---------- insert overwrite table dm.dm_zk_ec_sales select yyyymm, max(pack_id) as pack_id, iqvia_pack_code, corp_cod, audit_cod, platform, store_type, store_name, max(PACK_FLAG) as PACK_FLAG, max(PROD_FLAG) as PROD_FLAG, max(flag) as flag, DATA_SOURCE, sum(sales_value) as sales_value, sum(sales_value_ly) as sales_value_ly, sum(sales_unit) as sales_unit, sum(sales_unit_ly) as sales_unit_ly, sum(counting_unit) as counting_unit, sum(counting_unit_ly) as counting_unit_ly from ( select yyyymm, pack_id, iqvia_pack_code, corp_cod, audit_cod, platform, store_type, store_name, PACK_FLAG, PROD_FLAG, flag, DATA_SOURCE, sales_value, 0 as sales_value_ly, sales_unit, 0 as sales_unit_ly, counting_unit, 0 as counting_unit_ly from tmp.tmp_dm_zk_ec_sales union all select cast(yyyymm + 100 as int) as yyyymm, null as pack_id, iqvia_pack_code, corp_cod, audit_cod, platform, store_type, store_name, case when upper(iqvia_pack_code) like '%OTHERS%' then 0 else 1 end as PACK_FLAG, case when upper(iqvia_pack_code) like '%OTHERS%' then 0 else 1 end as PROD_FLAG, '' as flag, DATA_SOURCE, 0 as sales_value, sales_value as sales_value_ly, 0 as sales_unit, sales_unit as sales_unit_ly, 0 as counting_unit, counting_unit as counting_unit_ly from tmp.tmp_dm_zk_ec_sales where cast(yyyymm + 100 as int) <= (select max(yyyymm) from tmp.tmp_dm_zk_ec_sales) ) t group by yyyymm, iqvia_pack_code, corp_cod, audit_cod, platform, store_type, store_name, DATA_SOURCE -- COMMAND ---------- insert overwrite table dws.dws_zk_ec_pack_property select * ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_insert_dt ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_update_dt from tmp.tmp_ec_temp_market union all select '' iqvia_lineno ,iqvia_pack_code as iqvia_pack_code ,'' prod_cod ,'' iqvia_notes ,'' new_pack_flag ,'' is_exists_chpa ,iqvia_pack_code as product_id ,'' prescription_nature ,'' medicine_type ,'' zk_medicine_tier1 ,'' zk_medicine_tier2 ,'' zk_medicine_tier3 ,'' zk_medicine_tier4 ,'' common_name ,'' dosage_form ,'' user_type ,'' category_name ,'' product_name ,'' brand_name ,'' zk_manu_des ,'' zk_corp_des ,'' zk_pack_des ,'' counting_unit_a ,'' dosage_unit_a ,'' unit_a ,'' app1_cod ,'' app1_des ,'' app1_des_c ,'' app2_cod ,'' app2_des ,'' app2_des_c ,'' app3_cod ,'' app3_des ,'' app3_des_c ,'' atc1_cod ,'' atc1_des ,'' atc1_des_c ,'' atc2_cod ,'' atc2_des ,'' atc2_des_c ,'' atc3_cod ,'' atc3_des ,'' atc3_des_c ,'' atc4_cod ,'' atc4_des ,'' atc4_des_c ,'' bio_desc ,'' cmps_cod ,'' cmps_des ,'' cmps_des_c ,corp_cod as corp_cod ,'' corp_des ,'' corp_des_c ,'' edl_desc ,'' eth_otc_desc ,'' gene_orig_desc ,'' gqce_desc ,'' manu_cod ,'' manu_des ,'' manu_des_c ,'' mnfl_cod ,'' mnfl_des ,'' nrdl_desc ,'' pack_des ,'' stgh_des ,'' pack_lch ,'' paed_desc ,'Others' prod_des ,'Others' prod_des_c ,'' tcm_desc ,'' vbp_desc ,'' unit ,'' counting_unit ,'' dosage_unit ,'' NRDL_ENTRY_DATE ,'NON MARKET' Market ,'' bu ,1 extend_market_ratio ,case when iqvia_pack_code like '%AZ%' then 'Y' else 'N' end is_az ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_insert_dt ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_update_dt from (select distinct iqvia_pack_code,corp_cod from dm.dm_zk_ec_sales where iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_ec_temp_market)) -- COMMAND ---------- insert overwrite table tmp.tmp_dm_zk_ec_pack_property select a.iqvia_lineno ,a.iqvia_pack_code ,a.prod_cod ,a.iqvia_notes ,a.new_pack_flag ,a.is_exists_chpa ,a.product_id ,a.prescription_nature ,a.medicine_type ,a.zk_medicine_tier1 ,a.zk_medicine_tier2 ,a.zk_medicine_tier3 ,a.zk_medicine_tier4 ,a.common_name ,a.dosage_form ,a.user_type ,a.category_name ,a.product_name ,a.brand_name ,a.zk_manu_des ,a.zk_corp_des ,a.zk_pack_des ,a.counting_unit_a ,a.dosage_unit_a ,a.unit_a ,a.app1_cod ,a.app1_des ,a.app1_des_c ,a.app2_cod ,a.app2_des ,a.app2_des_c ,a.app3_cod ,a.app3_des ,a.app3_des_c ,a.atc1_cod ,a.atc1_des ,a.atc1_des_c ,a.atc2_cod ,a.atc2_des ,a.atc2_des_c ,a.atc3_cod ,a.atc3_des ,a.atc3_des_c ,a.atc4_cod ,a.atc4_des ,a.atc4_des_c ,a.bio_desc ,a.cmps_cod ,a.cmps_des ,a.cmps_des_c ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c ,a.edl_desc ,a.eth_otc_desc ,a.gene_orig_desc ,a.gqce_desc ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c ,a.mnfl_cod ,a.mnfl_des ,a.nrdl_desc ,a.pack_des ,a.stgh_des ,a.pack_lch ,a.paed_desc ,a.prod_des ,a.prod_des_c ,a.tcm_desc ,a.vbp_desc ,a.unit ,a.counting_unit ,a.dosage_unit ,a.NRDL_ENTRY_DATE ,a.Market ,a.bu ,a.extend_market_ratio ,a.is_az from dws.dws_zk_ec_pack_property a left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b on right(concat('000000000',A.prod_cod ),9)= b.prod_cod left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c on a.iqvia_pack_code = c.pack_cod left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod Left join (select distinct manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod -- COMMAND ---------- ------将事实表倒减之后的维度信息补充到维度表里 insert overwrite table dm.dm_zk_ec_pack_property select CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' ELSE a.market END ||'_'||a.iqvia_pack_code MARKET_PACK_KEY ,a.iqvia_lineno ,a.iqvia_pack_code ,a.prod_cod ,a.iqvia_notes ,a.new_pack_flag ,a.is_exists_chpa ,'' Family_Code ,'' Family_Name ,'' BrandType ,'' AZ_MAIN ,'' AZ_Related ,t5.KEY_COMPETITOR ,a.product_id ,a.prescription_nature ,a.medicine_type ,a.zk_medicine_tier1 ,a.zk_medicine_tier2 ,a.zk_medicine_tier3 ,a.zk_medicine_tier4 ,a.common_name ,a.dosage_form ,a.user_type ,a.category_name ,a.product_name ,a.brand_name ,a.zk_manu_des ,a.zk_corp_des ,a.zk_pack_des ,a.counting_unit_a ,a.dosage_unit_a ,a.unit_a ,a.app1_cod ,a.app1_des ,a.app1_des_c ,a.app2_cod ,a.app2_des ,a.app2_des_c ,a.app3_cod ,a.app3_des ,a.app3_des_c ,a.atc1_cod ,a.atc1_des ,a.atc1_des_c ,a.atc2_cod ,a.atc2_des ,a.atc2_des_c ,a.atc3_cod ,a.atc3_des ,a.atc3_des_c ,a.atc4_cod ,a.atc4_des ,a.atc4_des_c ,a.bio_desc ,a.cmps_cod ,a.cmps_des ,a.cmps_des_c ,CASE WHEN a.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' else a.CORP_COD END corp_cod ,CASE WHEN a.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' WHEN a.corp_des like '%GROUP%' THEN replace(a.corp_des,' GROUP','') else a.CORP_DES END corp_des ,CASE WHEN a.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' else a.CORP_DES_C END CORP_DES_C ,a.edl_desc ,a.eth_otc_desc ,a.gene_orig_desc ,a.gqce_desc ,a.manu_cod ,a.manu_des ,a.manu_des_c ,a.mnfl_cod ,a.mnfl_des ,a.nrdl_desc ,a.pack_des ,a.stgh_des ,a.pack_lch ,a.paed_desc ,a.prod_des ,a.prod_des_c ,a.tcm_desc ,a.vbp_desc ,a.unit ,a.counting_unit ,a.dosage_unit ,a.NRDL_ENTRY_DATE ,CASE WHEN a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' ELSE a.market END market ,a.bu ,a.extend_market_ratio ,a.is_az ,nvl(b.class, 'Others') class ,CASE WHEN a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM' WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV' ELSE c.ta END TA from tmp.tmp_dm_zk_ec_pack_property a left join dwd.dwd_gnd_ext_retail_dim_ta c on c.market = a.Market left join dwd.dwd_gnd_tblclass b on a.Market = case when b.market is null then a.Market else b.market end and nvl(a.iqvia_pack_code,'') = case when b.pack_code is null then nvl(a.iqvia_pack_code,'') else b.pack_code end and nvl(a.prod_cod,'') = case when b.product_code is null then nvl(a.prod_cod,'') else b.product_code end and nvl(a.cmps_cod,'') = case when b.molecule_code is null then nvl(a.cmps_cod,'') else right(concat('000000',b.molecule_code),6) end and nvl(a.corp_cod,'') = case when b.corporation_code is null then nvl(a.corp_cod,'') else b.corporation_code end and nvl(a.manu_cod,'') = case when b.manufacturer_code is null then nvl(a.manu_cod,'') else b.manufacturer_code end and nvl(a.app1_cod,'') = case when b.nfc1_code is null then nvl(a.app1_cod,'') else b.nfc1_code end and nvl(a.app2_cod,'') = case when b.nfc2_code is null then nvl(a.app2_cod,'') else b.nfc2_code end and nvl(a.app3_cod,'') = case when b.nfc3_code is null then nvl(a.app3_cod,'') else b.nfc3_code end and nvl(a.atc1_cod,'') = case when b.atc1_code is null then nvl(a.atc1_cod,'') else b.atc1_code end and nvl(a.atc2_cod,'') = case when b.atc2_code is null then nvl(a.atc2_cod,'') else b.atc2_code end and nvl(a.atc3_cod,'') = case when b.atc3_code is null then nvl(a.atc3_cod,'') else b.atc3_code end and nvl(a.atc4_cod,'') = case when b.atc4_code is null then nvl(a.atc4_cod,'') else b.atc4_code end and nvl(a.stgh_des,'') = case when b.strength is null then nvl(a.stgh_des,'') else b.strength end left join (select distinct MARKET,PACK_CODE as PACK_COD,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 on a.market = t5.MARKET and a.iqvia_pack_code = t5.PACK_COD -- COMMAND ---------- insert overwrite table dm.dm_zk_ec_market_property select distinct iqvia_pack_code,market,ta from dm.dm_zk_ec_pack_property -- COMMAND ---------- insert overwrite table dm.dm_zk_ec_market_ratio select distinct concat(a.Market,'_',a.iqvia_pack_code) as market_pack_key, a.iqvia_pack_code as pack_cod, a.prod_des, a.cmps_des, a.corp_cod, a.Market, a.extend_market_ratio as value_market_ratio, a.extend_market_ratio as unit_market_ratio, coalesce( case when c.ratio is null then a.extend_market_ratio*d.ratio else a.extend_market_ratio*c.ratio end,1) as countingunit_market_ratio from tmp.tmp_ec_temp_market a left join (--pack select market, cmps_cod, cmps_des, if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,--right(concat('0000000',pack_cod ),7) pack_des, level, type, cast(ratio as float) as ratio, cast(starttime as int) starttime, cast (endtime as int) endtime from dwd.dwd_gnd_ims_tblbrandratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' )c on a.Market = c.market and a.iqvia_pack_code = if( c.pack_cod REGEXP '^[0-9]',right(concat('000000000000',c.pack_cod),12),c.pack_cod)--right(concat('0000000',c.pack_cod),7) left join(--molecule select market, cmps_cod, cmps_des, if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,--right(concat('0000000',pack_cod ),7) pack_des, level, type, cast(ratio as float) as ratio, cast(starttime as int) starttime, cast (endtime as int) endtime from dwd.dwd_gnd_ims_tblbrandratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' )d on a.Market = d.market and a.cmps_cod = right(concat('000000',d.cmps_cod ),6) -- COMMAND ---------- create or replace table dm.dm_zk_ec_geo using delta as select 'ROC' as audit_cod, '全国' as city_c, 'national' as city_e, '全国' as province_c, 'national' as province_e; -- COMMAND ---------- ---------------------------------------将直取部分数据处理成KPI形式----------------------------------------- insert overwrite table tmp.tmp_zk_ec_sales_kpi_tmp select b.CORP_COD, '' as yyyymm, a.ytd , a.platform, case when a.store_type = '三方' then '第三方' else a.store_type end store_type , 'ROC' as geo_key, 'top_yoygr' as KPI_name, a.yoy_gr as Kpi_val, c.yoy_gr as Kpi_val_ly, '' as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, '' as ta from dwd.dwd_gnd_ec_b2c_top10_drives_brand a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp = b.ZK_Corp_C left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c on a.corp = c.corp and a.ytd = c.ytd + 100 and a.platform = c.platform and a.store_type = c.store_type -- where upper(a.rank) <> 'TTL MKT' union all select b.CORP_COD, '' as yyyymm, a.ytd , a.platform, case when a.store_type = '三方' then '第三方' else a.store_type end store_type , 'ROC' as geo_key, 'top1_brand_gr' as KPI_name, a.top1_brand_gr as Kpi_val, c.top1_brand_gr as Kpi_val_ly, '' as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, '' as ta from dwd.dwd_gnd_ec_b2c_top10_drives_brand a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp = b.ZK_Corp_C left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c on a.corp = c.corp and a.ytd = c.ytd + 100 and a.platform = c.platform and a.store_type = c.store_type -- where upper(a.rank) <> 'TTL MKT' union all select b.CORP_COD, '' as yyyymm, a.ytd , a.platform, case when a.store_type = '三方' then '第三方' else a.store_type end store_type, 'ROC' as geo_key, 'top1_brand_val' as KPI_name, '' as Kpi_val, '' as Kpi_val_ly, a.top1_brand_val as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, '' as ta from dwd.dwd_gnd_ec_b2c_top10_drives_brand a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp = b.ZK_Corp_C -- where upper(a.rank) <> 'TTL MKT' union all select b.CORP_COD, '' as yyyymm, a.ytd , a.platform, case when a.store_type = '三方' then '第三方' else a.store_type end store_type, 'ROC' as geo_key, 'incremental_brand' as KPI_name, '' as Kpi_val, '' as Kpi_val_ly, a.growth_driver_brand_val as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, '' as ta from dwd.dwd_gnd_ec_b2c_top10_drives_brand a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp = b.ZK_Corp_C -- where upper(a.rank) <> 'TTL MKT' union all select b.CORP_COD, '' as yyyymm, a.ytd , a.platform, case when a.store_type = '三方' then '第三方' else a.store_type end store_type, 'ROC' as geo_key, 'incremental_brand_gr' as KPI_name, a.growth_driver_brand_gr as Kpi_val, c.growth_driver_brand_gr as Kpi_val_ly, '' as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, '' as ta from dwd.dwd_gnd_ec_b2c_top10_drives_brand a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp = b.ZK_Corp_C left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c on a.corp = c.corp and a.ytd = c.ytd + 100 and a.platform = c.platform and a.store_type = c.store_type -- where upper(a.rank) <> 'TTL MKT' union all select b.CORP_COD, a.ytd yyyymm, '' as ytd, a.platform, a.store_type, 'ROC' as geo_key, 'top_corp_sales' as KPI_name, replace(a.sales_value,',','' ) as Kpi_val, replace(c.sales_value,',','' ) as Kpi_val_ly, '' as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when lower(a.rank) = 'total' then 'Y' else 'N' end total_flag, a.ta from dwd.dwd_gnd_ec_ta_overview a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp_des = b.ZK_Corp_C left join dwd.dwd_gnd_ec_ta_overview c on a.ytd = c.ytd + 100 and a.corp_des = c.corp_des and a.platform = c.platform and a.store_type = c.store_type and a.ta = c.ta -- where lower(a.rank) <> 'total' union all select distinct b.CORP_COD, '' yyyymm, a.ytd as ytd, a.platform, a.store_type, 'ROC' as geo_key, 'top_rank' as KPI_name, a.rank as Kpi_val, '' as Kpi_val_ly, '' as str_kpi_val, '' as str_kpi_val_ly, '' as str_kpi_vol, '' as str_kpi_vol_ly, case when lower(a.rank) = 'total' then 'Y' else 'N' end total_flag, a.ta from dwd.dwd_gnd_ec_ta_overview a left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b on a.corp_des = b.ZK_Corp_C -- where lower(a.rank) <> 'total' -- COMMAND ---------- insert overwrite table dm.dm_zk_ec_sales_kpi select case when total_flag = 'Y' then 'TTL MKT' else nvl(CORP_COD,'') end CORP_COD , if(yyyymm <> '', nvl(yyyymm,''),nvl(ytd,'')) yyyymm, if(ytd <> '', 'Y', 'N') ytd, nvl(platform,'') as platform, case when store_type = '自营旗舰' then 'SO' when store_type = '第三方' then 'POP' else nvl(store_type,'') end store_type, nvl(geo_key,'') as geo_key, nvl(KPI_name,'') as KPI_name, nvl(cast(Kpi_val as double),'') Kpi_val, nvl(cast(Kpi_val_ly as double),'') Kpi_val_ly, nvl(str_kpi_val,'') as str_kpi_val, nvl(str_kpi_val_ly,'') as str_kpi_val_ly, nvl(str_kpi_vol,'') as str_kpi_vol, nvl(str_kpi_vol_ly,'') as str_kpi_vol_ly, nvl(total_flag,'') as total_flag, case when ta = 'NIAD' then 'DM' when ta = 'RX Total' then '' else nvl(ta,'') end ta from tmp.tmp_zk_ec_sales_kpi_tmp -- COMMAND ---------- -- MAGIC %md -- MAGIC ## NIAD Date -- COMMAND ---------- -- 计算NIAD的时间是否比其他数据源先来数据 chenwu CREATE OR REPLACE TABLE tmp.tmp_dm_td_ext_ec_niad_month as WITH all_ec_data ( SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_hm_jd_2025before UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_hm_jd_2025after UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_hm_tm_2206after UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_hm_tm_2206before UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_gastritis_23after UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_gastritis_23before UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_re UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_dm_statins_xzk UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_dm_23before UNION ALL SELECT MAX(TIME) month, 'NIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_dm_23after UNION ALL SELECT MAX(TIME) month, 'NOTNIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_hm_tm_2403after UNION ALL SELECT MAX(TIME) month, 'NIAD' AS DATATYPE FROM dwd.dwd_gnd_ec_zkb2c_dm_26after ) SELECT MAX(t1.month) as NIAD_MONTH, max(t2.month) OTHERS_MONTH FROM all_ec_data t1 LEFT JOIN ( SELECT MAX(month) as month FROM all_ec_data WHERE datatype = 'NOTNIAD' ) t2 WHERE t1.datatype = 'NIAD' -- COMMAND ---------- select * from tmp.tmp_dm_td_ext_ec_niad_month