# Databricks notebook source # MAGIC %sql # MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market ( # MAGIC -- -- product_id STRING, # MAGIC -- -- region_type STRING, # MAGIC -- -- higher_level_region STRING, # MAGIC -- market STRING, # MAGIC -- iqvia_pack_code STRING, # MAGIC -- iqvia_prod_code STRING, # MAGIC -- iqvia_notes STRING, # MAGIC -- new_pack_flag STRING, # MAGIC -- is_exists_chpa STRING, # MAGIC -- -- prescription_nature STRING, # MAGIC -- -- common_name STRING, # MAGIC -- -- dosage_form STRING, # MAGIC -- -- category_name STRING, # MAGIC -- -- product_name STRING, # MAGIC -- -- brand_name STRING, # MAGIC -- -- zk_corp_des STRING, # MAGIC -- -- zk_pack_des STRING, # MAGIC -- -- counting_unit_a STRING, # MAGIC -- app1_cod STRING, # MAGIC -- app1_des STRING, # MAGIC -- app1_des_c STRING, # MAGIC -- app2_cod STRING, # MAGIC -- app2_des STRING, # MAGIC -- app2_des_c STRING, # MAGIC -- app3_cod STRING, # MAGIC -- app3_des STRING, # MAGIC -- app3_des_c STRING, # MAGIC -- atc1_cod STRING, # MAGIC -- atc1_des STRING, # MAGIC -- atc1_des_c STRING, # MAGIC -- atc2_cod STRING, # MAGIC -- atc2_des STRING, # MAGIC -- atc2_des_c STRING, # MAGIC -- atc3_cod STRING, # MAGIC -- atc3_des STRING, # MAGIC -- atc3_des_c STRING, # MAGIC -- atc4_cod STRING, # MAGIC -- atc4_des STRING, # MAGIC -- atc4_des_c STRING, # MAGIC -- bio_desc STRING, # MAGIC -- cmps_cod STRING, # MAGIC -- cmps_des STRING, # MAGIC -- cmps_des_c STRING, # MAGIC -- corp_cod STRING, # MAGIC -- corp_des STRING, # MAGIC -- corp_des_c STRING, # MAGIC -- edl_desc STRING, # MAGIC -- eth_otc_desc STRING, # MAGIC -- gene_orig_desc STRING, # MAGIC -- gqce_desc STRING, # MAGIC -- manu_cod STRING, # MAGIC -- manu_des STRING, # MAGIC -- manu_des_c STRING, # MAGIC -- mnfl_cod STRING, # MAGIC -- mnfl_des STRING, # MAGIC -- nrdl_desc STRING, # MAGIC -- pack_des STRING, # MAGIC -- stgh_des STRING, # MAGIC -- pack_lch STRING, # MAGIC -- paed_desc STRING, # MAGIC -- prod_des STRING, # MAGIC -- prod_des_c STRING, # MAGIC -- tcm_desc STRING, # MAGIC -- vbp_desc STRING, # MAGIC -- unit STRING, # MAGIC -- counting_unit STRING, # MAGIC -- dosage_unit STRING, # MAGIC -- NRDL_ENTRY_DATE STRING, # MAGIC -- bu STRING, # MAGIC -- Market_Ratio STRING) # MAGIC -- USING delta # MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market' # MAGIC -- ; # COMMAND ---------- # MAGIC %sql # MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market_del ( # MAGIC -- -- product_id STRING, # MAGIC -- -- region_type STRING, # MAGIC -- -- higher_level_region STRING, # MAGIC -- market STRING, # MAGIC -- iqvia_pack_code STRING, # MAGIC -- iqvia_prod_code STRING, # MAGIC -- iqvia_notes STRING, # MAGIC -- new_pack_flag STRING, # MAGIC -- is_exists_chpa STRING, # MAGIC -- -- prescription_nature STRING, # MAGIC -- -- common_name STRING, # MAGIC -- -- dosage_form STRING, # MAGIC -- -- category_name STRING, # MAGIC -- -- product_name STRING, # MAGIC -- -- brand_name STRING, # MAGIC -- -- zk_corp_des STRING, # MAGIC -- -- zk_pack_des STRING, # MAGIC -- -- counting_unit_a STRING, # MAGIC -- app1_cod STRING, # MAGIC -- app1_des STRING, # MAGIC -- app1_des_c STRING, # MAGIC -- app2_cod STRING, # MAGIC -- app2_des STRING, # MAGIC -- app2_des_c STRING, # MAGIC -- app3_cod STRING, # MAGIC -- app3_des STRING, # MAGIC -- app3_des_c STRING, # MAGIC -- atc1_cod STRING, # MAGIC -- atc1_des STRING, # MAGIC -- atc1_des_c STRING, # MAGIC -- atc2_cod STRING, # MAGIC -- atc2_des STRING, # MAGIC -- atc2_des_c STRING, # MAGIC -- atc3_cod STRING, # MAGIC -- atc3_des STRING, # MAGIC -- atc3_des_c STRING, # MAGIC -- atc4_cod STRING, # MAGIC -- atc4_des STRING, # MAGIC -- atc4_des_c STRING, # MAGIC -- bio_desc STRING, # MAGIC -- cmps_cod STRING, # MAGIC -- cmps_des STRING, # MAGIC -- cmps_des_c STRING, # MAGIC -- corp_cod STRING, # MAGIC -- corp_des STRING, # MAGIC -- corp_des_c STRING, # MAGIC -- edl_desc STRING, # MAGIC -- eth_otc_desc STRING, # MAGIC -- gene_orig_desc STRING, # MAGIC -- gqce_desc STRING, # MAGIC -- manu_cod STRING, # MAGIC -- manu_des STRING, # MAGIC -- manu_des_c STRING, # MAGIC -- mnfl_cod STRING, # MAGIC -- mnfl_des STRING, # MAGIC -- nrdl_desc STRING, # MAGIC -- pack_des STRING, # MAGIC -- stgh_des STRING, # MAGIC -- pack_lch STRING, # MAGIC -- paed_desc STRING, # MAGIC -- prod_des STRING, # MAGIC -- prod_des_c STRING, # MAGIC -- tcm_desc STRING, # MAGIC -- vbp_desc STRING, # MAGIC -- unit STRING, # MAGIC -- counting_unit STRING, # MAGIC -- dosage_unit STRING, # MAGIC -- NRDL_ENTRY_DATE STRING, # MAGIC -- bu STRING, # MAGIC -- Market_Ratio STRING) # MAGIC -- USING delta # MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market_del' # MAGIC -- ; # COMMAND ---------- # MAGIC %sql # MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market_corp ( # MAGIC -- -- product_id STRING, # MAGIC -- -- region_type STRING, # MAGIC -- -- higher_level_region STRING, # MAGIC -- market STRING, # MAGIC -- iqvia_pack_code STRING, # MAGIC -- iqvia_prod_code STRING, # MAGIC -- iqvia_notes STRING, # MAGIC -- new_pack_flag STRING, # MAGIC -- is_exists_chpa STRING, # MAGIC -- -- prescription_nature STRING, # MAGIC -- -- common_name STRING, # MAGIC -- -- dosage_form STRING, # MAGIC -- -- category_name STRING, # MAGIC -- -- product_name STRING, # MAGIC -- -- brand_name STRING, # MAGIC -- -- zk_corp_des STRING, # MAGIC -- -- zk_pack_des STRING, # MAGIC -- -- counting_unit_a STRING, # MAGIC -- app1_cod STRING, # MAGIC -- app1_des STRING, # MAGIC -- app1_des_c STRING, # MAGIC -- app2_cod STRING, # MAGIC -- app2_des STRING, # MAGIC -- app2_des_c STRING, # MAGIC -- app3_cod STRING, # MAGIC -- app3_des STRING, # MAGIC -- app3_des_c STRING, # MAGIC -- atc1_cod STRING, # MAGIC -- atc1_des STRING, # MAGIC -- atc1_des_c STRING, # MAGIC -- atc2_cod STRING, # MAGIC -- atc2_des STRING, # MAGIC -- atc2_des_c STRING, # MAGIC -- atc3_cod STRING, # MAGIC -- atc3_des STRING, # MAGIC -- atc3_des_c STRING, # MAGIC -- atc4_cod STRING, # MAGIC -- atc4_des STRING, # MAGIC -- atc4_des_c STRING, # MAGIC -- bio_desc STRING, # MAGIC -- cmps_cod STRING, # MAGIC -- cmps_des STRING, # MAGIC -- cmps_des_c STRING, # MAGIC -- corp_cod STRING, # MAGIC -- corp_des STRING, # MAGIC -- corp_des_c STRING, # MAGIC -- edl_desc STRING, # MAGIC -- eth_otc_desc STRING, # MAGIC -- gene_orig_desc STRING, # MAGIC -- gqce_desc STRING, # MAGIC -- manu_cod STRING, # MAGIC -- manu_des STRING, # MAGIC -- manu_des_c STRING, # MAGIC -- mnfl_cod STRING, # MAGIC -- mnfl_des STRING, # MAGIC -- nrdl_desc STRING, # MAGIC -- pack_des STRING, # MAGIC -- stgh_des STRING, # MAGIC -- pack_lch STRING, # MAGIC -- paed_desc STRING, # MAGIC -- prod_des STRING, # MAGIC -- prod_des_c STRING, # MAGIC -- tcm_desc STRING, # MAGIC -- vbp_desc STRING, # MAGIC -- unit STRING, # MAGIC -- counting_unit STRING, # MAGIC -- dosage_unit STRING, # MAGIC -- NRDL_ENTRY_DATE STRING, # MAGIC -- bu STRING, # MAGIC -- Market_Ratio STRING) # MAGIC -- USING delta # MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market_corp' # MAGIC -- ; # COMMAND ---------- ### constant DATA_TYPE_MARKET = 'MARKET' DATA_TYPE_MOLECULE = 'MOLECULE' DATA_TYPE_BRAND = 'BRAND' DATA_TYPE_MULTI_MARKET = 'MULTI_MARKET' DATA_TYPE_MULTI_MOLECULE = 'MULTI_MOLECULE' DATA_TYPE_MULTI_BRAND = 'MULTI_BRAND' DATA_TYPE_DUPLICATE = 'DUPLICATE' DATA_TYPE_HEDGE_TA = 'HEDGE_TA' DATA_TYPE_HEDGE_MARKET = 'HEDGE_MARKET' DATA_TYPE_HEDGE_MOLECULE = 'HEDGE_MOLECULE' DATA_TYPE_HEDGE_BRAND = 'HEDGE_BRAND' DATA_FLAG_RAW = 0 ### final pack_flag = 0 DATA_FLAG_SUB = 1 ### final pack_flag = 1 DATA_FLAG_ADD = 2 ### final pack_flag = 1 DATA_FLAG_RATIO = 3 ### final pack_flag = 1 DATA_FLAG_AVG = 4 ### final pack_flag = 1 DATA_FLAG_HEDGE = 5 ### final pack_flag = 1 BRAND_FLAG_NATIVE = 1 ### final brand_flag = 1 BRAND_FLAG_CALCULATE = 2 ### final brand_flag = 2 BRAND_FLAG_NONE = 3 ### final brand_flag = 2 DATA_OTHER_TA = 'OTHER_TA' DATA_OTHER_MARKET = 'OTHER_MARKET' DATA_OTHER_MOLECULE = 'OTHER_MOLECULE' DATA_OTHER_BRAND = 'OTHER_BRAND' DATA_AREA_TYPE_ROC = 'ROC' DATA_LABEL_AREA_ALL = '全国' # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-1: dtp 维度表处理 # COMMAND ---------- ############################################################START############################################################## ### STEP-1: dtp 维度表处理 ### STEP-2: update the pack data extra column ### STEP-3: split regional data by brand ratio when there is no regional data and there is a brand ratio ### STEP-4: substract ROC data # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-1: dtp 维度表处理 # MAGIC -- 1.1 先处理 Extend_Market 和 NOT_IN_FLAG 都为空的数据,代表有明确定义得市场 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market # MAGIC select # MAGIC distinct # MAGIC -- t1.region_type # MAGIC -- ,t1.higher_level_region # MAGIC -- t1.product_id, # MAGIC t2.market # MAGIC ,case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) else trim(t1.iqvia_pack_code) end as iqvia_pack_code # MAGIC ,case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end as iqvia_prod_code # MAGIC ,t1.iqvia_notes # MAGIC ,t1.new_pack_flag # MAGIC ,t1.is_exists_chpa # MAGIC -- ,t1.prescription_nature # MAGIC -- ,t1.common_name # MAGIC -- ,t1.dosage_form # MAGIC -- ,t1.category_name # MAGIC -- ,t1.product_name # MAGIC -- ,t1.brand_name # MAGIC -- ,t1.zk_corp_des # MAGIC -- ,t1.zk_pack_des # MAGIC -- ,t1.counting_unit_a # MAGIC ,t1.app1_cod # MAGIC ,t1.app1_des # MAGIC ,t1.app1_des_c # MAGIC ,t1.app2_cod # MAGIC ,t1.app2_des # MAGIC ,t1.app2_des_c # MAGIC ,t1.app3_cod # MAGIC ,t1.app3_des # MAGIC ,t1.app3_des_c # MAGIC ,t1.atc1_cod # MAGIC ,t1.atc1_des # MAGIC ,t1.atc1_des_c # MAGIC ,t1.atc2_cod # MAGIC ,t1.atc2_des # MAGIC ,t1.atc2_des_c # MAGIC ,t1.atc3_cod # MAGIC ,t1.atc3_des # MAGIC ,t1.atc3_des_c # MAGIC ,t1.atc4_cod # MAGIC ,t1.atc4_des # MAGIC ,t1.atc4_des_c # MAGIC ,t1.bio_desc # MAGIC , right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod # MAGIC ,t1.cmps_des # MAGIC ,t1.cmps_des_c # MAGIC ,t1.corp_cod # MAGIC ,t1.corp_des # MAGIC ,t1.corp_des_c # MAGIC ,t1.edl_desc # MAGIC ,t1.eth_otc_desc # MAGIC ,t1.gene_orig_desc # MAGIC ,t1.gqce_desc # MAGIC ,t1.manu_cod # MAGIC ,t1.manu_des # MAGIC ,t1.manu_des_c # MAGIC ,t1.mnfl_cod # MAGIC ,t1.mnfl_des # MAGIC ,t1.nrdl_desc # MAGIC ,t1.pack_des # MAGIC ,t1.stgh_des # MAGIC ,t1.pack_lch # MAGIC ,t1.paed_desc # MAGIC ,t1.prod_des # MAGIC ,t1.prod_des_c # MAGIC ,t1.tcm_desc # MAGIC ,t1.vbp_desc # MAGIC ,t1.unit # MAGIC ,t1.counting_unit # MAGIC ,t1.dosage_unit # MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE # MAGIC ,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio # MAGIC from dwd.dwd_gnd_ext_dtp_pack_property t1 # MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC ON # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC = # 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 (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )) t2 # MAGIC -- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) # MAGIC on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end # MAGIC and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end # MAGIC and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end # MAGIC and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end # MAGIC and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end # MAGIC and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end # MAGIC and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end # MAGIC and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end # MAGIC and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_prod_code # MAGIC and # MAGIC case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end # MAGIC = # MAGIC case when t2.Product_Code is null # MAGIC then case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end # MAGIC else case when length(t2.Product_Code) < 9 then right(concat('000000000',t2.Product_Code),9) else t2.Product_Code end # MAGIC end # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC and # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC = # MAGIC case when t2.Pack_Code is null # MAGIC then # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC else # MAGIC case when length(trim(t2.Pack_Code)) < 12 and trim(t2.Pack_Code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t2.Pack_Code)),12) # MAGIC else trim(t2.Pack_Code) # MAGIC end # MAGIC end # MAGIC ---------------------------------------------------------------------------------- # MAGIC and nvl(t1.STGH_DES,'') = case when t2.Strength is null then nvl(t1.STGH_DES,'') else t2.Strength end # MAGIC and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end # MAGIC where t2.market is not null # MAGIC ; # MAGIC # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-1: dtp 维度表处理 # MAGIC -- 1.2 反选规则 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market_del # MAGIC select # MAGIC distinct # MAGIC -- t1.region_type # MAGIC -- ,t1.higher_level_region # MAGIC -- t1.product_id, # MAGIC t2.market # MAGIC ,case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) else trim(t1.iqvia_pack_code) end as iqvia_pack_code # MAGIC ,case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end as iqvia_prod_code # MAGIC ,t1.iqvia_notes # MAGIC ,t1.new_pack_flag # MAGIC ,t1.is_exists_chpa # MAGIC -- ,t1.prescription_nature # MAGIC -- ,t1.common_name # MAGIC -- ,t1.dosage_form # MAGIC -- ,t1.category_name # MAGIC -- ,t1.product_name # MAGIC -- ,t1.brand_name # MAGIC -- ,t1.zk_corp_des # MAGIC -- ,t1.zk_pack_des # MAGIC -- ,t1.counting_unit_a # MAGIC ,t1.app1_cod # MAGIC ,t1.app1_des # MAGIC ,t1.app1_des_c # MAGIC ,t1.app2_cod # MAGIC ,t1.app2_des # MAGIC ,t1.app2_des_c # MAGIC ,t1.app3_cod # MAGIC ,t1.app3_des # MAGIC ,t1.app3_des_c # MAGIC ,t1.atc1_cod # MAGIC ,t1.atc1_des # MAGIC ,t1.atc1_des_c # MAGIC ,t1.atc2_cod # MAGIC ,t1.atc2_des # MAGIC ,t1.atc2_des_c # MAGIC ,t1.atc3_cod # MAGIC ,t1.atc3_des # MAGIC ,t1.atc3_des_c # MAGIC ,t1.atc4_cod # MAGIC ,t1.atc4_des # MAGIC ,t1.atc4_des_c # MAGIC ,t1.bio_desc # MAGIC , right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod # MAGIC ,t1.cmps_des # MAGIC ,t1.cmps_des_c # MAGIC ,t1.corp_cod # MAGIC ,t1.corp_des # MAGIC ,t1.corp_des_c # MAGIC ,t1.edl_desc # MAGIC ,t1.eth_otc_desc # MAGIC ,t1.gene_orig_desc # MAGIC ,t1.gqce_desc # MAGIC ,t1.manu_cod # MAGIC ,t1.manu_des # MAGIC ,t1.manu_des_c # MAGIC ,t1.mnfl_cod # MAGIC ,t1.mnfl_des # MAGIC ,t1.nrdl_desc # MAGIC ,t1.pack_des # MAGIC ,t1.stgh_des # MAGIC ,t1.pack_lch # MAGIC ,t1.paed_desc # MAGIC ,t1.prod_des # MAGIC ,t1.prod_des_c # MAGIC ,t1.tcm_desc # MAGIC ,t1.vbp_desc # MAGIC ,t1.unit # MAGIC ,t1.counting_unit # MAGIC ,t1.dosage_unit # MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE # MAGIC ,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio # MAGIC from dwd.dwd_gnd_ext_dtp_pack_property t1 # MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC ON # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC = # 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 (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND NOT_IN_FLAG = '0' ) t2 # MAGIC -- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) # MAGIC on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end # MAGIC and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end # MAGIC and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end # MAGIC and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end # MAGIC and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end # MAGIC and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end # MAGIC and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end # MAGIC and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end # MAGIC and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_prod_code # MAGIC and # MAGIC case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end # MAGIC = # MAGIC case when t2.Product_Code is null # MAGIC then case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end # MAGIC else case when length(t2.Product_Code) < 9 then right(concat('000000000',t2.Product_Code),9) else t2.Product_Code end # MAGIC end # MAGIC ---------------------------------------------------------------------------------- # MAGIC -- format iqvia_pack_code # MAGIC and # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC = # MAGIC case when t2.Pack_Code is null # MAGIC then # MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) # MAGIC else trim(t1.iqvia_pack_code) # MAGIC end # MAGIC else # MAGIC case when length(trim(t2.Pack_Code)) < 12 and trim(t2.Pack_Code) REGEXP '^[0-9]' # MAGIC then right(concat('000000000000',trim(t2.Pack_Code)),12) # MAGIC else trim(t2.Pack_Code) # MAGIC end # MAGIC end # MAGIC ---------------------------------------------------------------------------------- # MAGIC and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end # MAGIC and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end # MAGIC where t2.market is not null # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-1: dtp 维度表处理 # MAGIC -- 1.3 !!!注意此段是反选的规则,故执行的是从已经定义好的TempMKT中删除数据 # MAGIC -------需要看TempMKT的字段结构,没有值的字段,在Value里面放个空值 # MAGIC ------------------------------------------------------------------------------------- # MAGIC MERGE INTO tmp.tmp_zk_retail_dtp_market AS t1 # MAGIC USING tmp.tmp_zk_retail_dtp_market_del AS t2 # MAGIC on t1.ATC1_COD = t2.ATC1_COD # MAGIC and t1.ATC2_COD = t2.ATC2_COD # MAGIC and t1.ATC3_COD = t2.ATC3_COD # MAGIC and t1.ATC4_COD = t2.ATC4_COD # MAGIC and t1.APP1_COD = t2.APP1_COD # MAGIC and t1.APP2_COD = t2.APP2_COD # MAGIC and t1.APP3_COD = t2.APP3_COD # MAGIC and t1.CORP_COD = t2.CORP_COD # MAGIC and t1.MANU_COD = t2.MANU_COD # MAGIC and t1.iqvia_prod_code = t2.iqvia_prod_code # MAGIC and t1.iqvia_pack_code = t2.iqvia_pack_code # MAGIC and t1.STGH_DES = t2.STGH_DES # MAGIC and t1.CMPS_COD = t2.CMPS_COD # MAGIC and t1.market = t2.market # MAGIC WHEN MATCHED THEN DELETE # MAGIC ; # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-1: dtp 维度表处理 # MAGIC -- 1.4 将产品对应的公司重新归属 # MAGIC ------------------------------------------------------------------------------------- # MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market_corp # MAGIC select # MAGIC -- A.region_type # MAGIC -- ,A.higher_level_region # MAGIC -- A.product_id, # MAGIC A.market # MAGIC ,A.iqvia_pack_code # MAGIC ,A.iqvia_prod_code # MAGIC ,A.iqvia_notes # MAGIC ,A.new_pack_flag # MAGIC ,A.is_exists_chpa # MAGIC -- ,A.prescription_nature # MAGIC -- ,A.common_name # MAGIC -- ,A.dosage_form # MAGIC -- ,A.category_name # MAGIC -- ,A.product_name # MAGIC -- ,A.brand_name # MAGIC -- ,A.zk_corp_des # MAGIC -- ,A.zk_pack_des # MAGIC -- ,A.counting_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.bu # MAGIC ,A.Market_Ratio # MAGIC from tmp.tmp_zk_retail_dtp_market a # MAGIC left join ( # MAGIC select # MAGIC DISTINCT # 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 --right(concat('00000',prod_cod ),5) prod_cod, # 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 null # MAGIC ) b on a.iqvia_prod_code = b.prod_cod # MAGIC left join ( # MAGIC select # MAGIC DISTINCT # 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 (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_dtp_pack_property) d # MAGIC on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod # MAGIC Left join (select distinct right(concat('000000',manu_cod ),6) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_dtp_pack_property) e # MAGIC On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-2: update the pack data extra column # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: update the pack data extra column # MAGIC -- 2.1 update pack_code, molecule_code, molecule_desc, product_code, product_desc, level_market # MAGIC ------------------------------------------------------------------------------------- # MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a # MAGIC using( # MAGIC select # MAGIC distinct # MAGIC iqvia_pack_code, # MAGIC -- common_name, # MAGIC -- dosage_form, # MAGIC -- category_name, # MAGIC -- product_name, # MAGIC -- brand_name, # MAGIC -- zk_pack_des, # MAGIC cmps_des, # MAGIC cmps_des_c, # MAGIC prod_des, # MAGIC prod_des_c, # MAGIC collect_list(market) as markets # MAGIC from tmp.tmp_zk_retail_dtp_market_corp # MAGIC group by 1,2,3,4,5 # MAGIC ) as b # MAGIC on a.iqvia_pack_code = b.iqvia_pack_code # MAGIC -- on a.common_name = b.common_name # MAGIC -- and a.dosage_form = b.dosage_form # MAGIC -- and a.category_name = b.category_name # MAGIC -- and nvl(a.product_name, '') = nvl(b.product_name, '') # MAGIC -- and a.brand_name = b.brand_name # MAGIC -- and a.pack_des = b.zk_pack_des # MAGIC when matched then # MAGIC update set # MAGIC a.pack_code = b.iqvia_pack_code, # MAGIC a.molecule_code = b.cmps_des, # MAGIC a.molecule_desc = b.cmps_des_c, # MAGIC a.product_code = b.prod_des, # MAGIC a.product_desc = b.prod_des_c, # MAGIC --------------------* hard_code *----------------------- # MAGIC -- 手动修正market映射市场 # MAGIC -- EGFR TKI Market -> EGFR TKI # MAGIC -- Anti-HER2 mBC Market -> Anti-HER2 mBC # MAGIC a.level_market = # MAGIC case # MAGIC when array_contains(markets, 'EGFR TKI Market') then 'EGFR TKI' # MAGIC when array_contains(markets, 'Anti-HER2 mBC Market') then 'Anti-HER2 mBC' # MAGIC else CONCAT_WS(',',markets) # MAGIC end # MAGIC --------------------* hard_code *----------------------- # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: update the pack data extra column # MAGIC -- 2.2 generate tmp.tmp_retail_dtp_pack_mapping # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with tmp_pack_mapping as ( # MAGIC select # MAGIC distinct # MAGIC a.level_ta, # MAGIC a.level_market, # MAGIC a.pack_code, # MAGIC a.molecule_code, # MAGIC a.molecule_desc, # MAGIC a.product_code, # MAGIC a.product_desc, # MAGIC b.corp_cod, # MAGIC CONCAT_WS(',',collect_set(b.market)) as market_desc # MAGIC from tmp.tmp_retail_dtp_pack_rawdata a # MAGIC inner join tmp.tmp_zk_retail_dtp_market_corp b # MAGIC on a.pack_code = b.iqvia_pack_code # MAGIC and a.molecule_code = b.cmps_des # MAGIC and a.product_desc = b.prod_des_c # MAGIC group by 1,2,3,4,5,6,7,8 # MAGIC ), tmp_level as ( # MAGIC select # MAGIC distinct # MAGIC ta, # MAGIC market, # MAGIC molecule, # MAGIC brand # MAGIC from tmp.tmp_retail_dtp_level_brand # MAGIC ), tmp_molecule_brand as ( # MAGIC -----------------------ta matched & market matched & molecule matched & brand matched -------------- # MAGIC select # MAGIC a.*,b.*,1 as brand_flag # MAGIC from tmp_pack_mapping a # MAGIC inner join tmp_level b # MAGIC on a.level_ta = b.ta # MAGIC and a.level_market = b.market # MAGIC and a.molecule_desc = b.molecule # MAGIC and a.product_desc = b.brand # MAGIC ), tmp_other_brand as ( # MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE & brand matched----------------- # MAGIC select # MAGIC a.*,b.*,1 as brand_flag # MAGIC from tmp_pack_mapping a # MAGIC inner join tmp_level b # MAGIC on a.level_ta = b.ta # MAGIC and a.level_market = b.market # MAGIC and b.molecule = 'OTHER_MOLECULE' # MAGIC and a.product_desc = b.brand # MAGIC where a.pack_code not in ( # MAGIC select distinct pack_code from tmp_molecule_brand # MAGIC ) # MAGIC ), tmp_molecule_other as( # MAGIC -----------------------ta matched & market matched & molecule matched & OTHER_BRAND---------------- # MAGIC select # MAGIC a.*,b.*,2 as brand_flag # MAGIC from tmp_pack_mapping a # MAGIC inner join tmp_level b # MAGIC on a.level_ta = b.ta # MAGIC and a.level_market = b.market # MAGIC and a.molecule_desc = b.molecule # MAGIC and b.brand = 'OTHER_BRAND' # MAGIC where a.pack_code not in ( # MAGIC select distinct pack_code from tmp_molecule_brand # MAGIC union all # MAGIC select distinct pack_code from tmp_other_brand # MAGIC ) # MAGIC ), tmp_other_other as ( # MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE& OTHER_BRAND--------------------- # MAGIC select # MAGIC a.*,b.*,2 as brand_flag # MAGIC from tmp_pack_mapping a # MAGIC inner join tmp_level b # MAGIC on a.level_ta = b.ta # MAGIC and a.level_market = b.market # MAGIC and b.molecule = 'OTHER_MOLECULE' # MAGIC and b.brand = 'OTHER_BRAND' # MAGIC where a.pack_code not in ( # MAGIC select distinct pack_code from tmp_molecule_brand # MAGIC union all # MAGIC select distinct pack_code from tmp_other_brand # MAGIC union all # MAGIC select distinct pack_code from tmp_molecule_other # MAGIC ) # MAGIC ), tmp_brand_mapping as ( # MAGIC select * from tmp_molecule_brand # MAGIC union all # MAGIC select * from tmp_other_brand # MAGIC union all # MAGIC select * from tmp_molecule_other # MAGIC union all # MAGIC select * from tmp_other_other # MAGIC ) # MAGIC # MAGIC insert overwrite table tmp.tmp_retail_dtp_pack_mapping # MAGIC # MAGIC select # MAGIC level_ta, # MAGIC level_market, # MAGIC molecule as level_molecule, # MAGIC brand as level_brand, # MAGIC pack_code, # MAGIC molecule_code, # MAGIC molecule_desc, # MAGIC product_code, # MAGIC product_desc, # MAGIC corp_cod, # MAGIC market_desc, # MAGIC brand_flag # MAGIC from tmp_brand_mapping # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: update the pack data extra column # MAGIC -- 2.3 update level_molecule, level_brand ,brand_flag # MAGIC ------------------------------------------------------------------------------------- # MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a # MAGIC using( # MAGIC select # MAGIC distinct pack_code,level_molecule,level_brand,brand_flag # MAGIC from tmp.tmp_retail_dtp_pack_mapping # MAGIC ) as b # MAGIC on a.pack_code = b.pack_code # MAGIC when matched then # MAGIC update set # MAGIC a.level_molecule = b.level_molecule, # MAGIC a.level_brand = b.level_brand, # MAGIC a.brand_flag = b.brand_flag # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-2: update the pack data extra column # MAGIC -- 2.4 update the pack data brand flag to '1' which pack has regional data # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_has_regional_data as ( # MAGIC select # MAGIC distinct # MAGIC time, # MAGIC pack_code # MAGIC from tmp.tmp_retail_dtp_pack_rawdata # MAGIC where region <> '全国' # MAGIC and data_flag = 0 # MAGIC ) # MAGIC # MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a # MAGIC using( # MAGIC select * from tmp_has_regional_data # MAGIC ) as b # MAGIC on a.time = b.time # MAGIC and a.pack_code = b.pack_code # MAGIC when matched then # MAGIC update set # MAGIC a.brand_flag = 1 # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-3: split regional data by brand ratio # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-3: split regional data by brand ratio when there is no regional data and there is a brand ratio # MAGIC -- only split the pack data with brand ratio and without regional pack data # MAGIC ------------------------------------------------------------------------------------- # MAGIC with tmp_has_regional_data as ( # MAGIC select # MAGIC distinct # MAGIC time as yyyymm, # MAGIC pack_code # MAGIC from tmp.tmp_retail_dtp_pack_rawdata # MAGIC where region <> '全国' # MAGIC ), tmp_has_brand_ratio as ( # MAGIC select # MAGIC distinct # MAGIC b.pack_code # MAGIC from tmp.tmp_retail_dtp_level_brand a # MAGIC inner join tmp.tmp_retail_dtp_pack_mapping b # MAGIC on a.ta = b.level_ta # MAGIC and a.market = b.level_market # MAGIC and a.molecule = b.level_molecule # MAGIC and a.brand = b.level_brand # MAGIC ), tmp_pack_rawdata as ( # MAGIC select * # MAGIC from tmp.tmp_retail_dtp_pack_rawdata a # MAGIC where not exists( # MAGIC select b.yyyymm,b.pack_code from tmp_has_regional_data b # MAGIC where a.time = b.yyyymm # MAGIC and a.pack_code = b.pack_code # MAGIC ) and exists( # MAGIC select c.pack_code from tmp_has_brand_ratio c # MAGIC where a.pack_code = c.pack_code # MAGIC ) # MAGIC ) # MAGIC ----------------------------- append split regional data ---------------------------- # MAGIC insert into table tmp.tmp_retail_dtp_pack_rawdata # MAGIC # MAGIC select # MAGIC -- c.region_type, # MAGIC c.iqvia_pack_code, # MAGIC c.year, # MAGIC c.time, # MAGIC -- c.higher_level_region, # MAGIC a.province_city as region, # MAGIC -- c.prescription_nature, # MAGIC -- c.medicine_attribute, # MAGIC -- c.dosage_form, # MAGIC -- c.object, # MAGIC -- c.zk_classify1, # MAGIC -- c.zk_classify2, # MAGIC -- c.zk_classify3, # MAGIC c.target_points, # MAGIC -- c.common_name, # MAGIC -- c.brand_name, # MAGIC -- c.product_name, # MAGIC -- c.category_name, # MAGIC -- c.pack_des, # MAGIC c.counting_unit, # MAGIC -- c.factory, # MAGIC -- c.corp_des, # MAGIC c.average_price, # MAGIC round(c.sales_amount * a.ratio_val ,10) as sales_amount, # MAGIC round(c.sales_volume * a.ratio_vol ,10) as sales_volume, # MAGIC c.counting_units_obversion, # MAGIC c.pack_code, # MAGIC c.molecule_code, # MAGIC c.molecule_desc, # MAGIC c.product_code, # MAGIC c.product_desc, # MAGIC c.level_ta, # MAGIC c.level_market, # MAGIC c.level_molecule, # MAGIC c.level_brand, # MAGIC a.ratio_val, # MAGIC a.ratio_vol, # MAGIC 3 as data_flag, # MAGIC b.brand_flag # MAGIC from tmp.tmp_retail_dtp_level_brand a # MAGIC inner join tmp.tmp_retail_dtp_pack_mapping b # MAGIC on a.ta = b.level_ta # MAGIC and a.market = b.level_market # MAGIC and a.molecule = b.level_molecule # MAGIC and a.brand = b.level_brand # MAGIC inner join tmp_pack_rawdata c # MAGIC on c.pack_code = b.pack_code # MAGIC and c.time = a.yyyymm # MAGIC where a.province_city <> '全国' # MAGIC # COMMAND ---------- # MAGIC %md # MAGIC ## STEP-4: substract ROC data # COMMAND ---------- # MAGIC %sql # MAGIC ------------------------------------------------------------------------------------- # MAGIC -- STEP-4: substract ROC data # MAGIC -- if there is regional pack data or splited regional pack data, ROC = '全国' - 'sum regional data' # MAGIC -- if there is not regional pack data, ROC = '全国' # MAGIC ------------------------------------------------------------------------------------- # MAGIC # MAGIC with tmp_area_group as ( # MAGIC select # MAGIC pack_code, # MAGIC time, # MAGIC sum(sales_amount) as sales_amount, # MAGIC sum(sales_volume) as sales_volume # MAGIC from tmp.tmp_retail_dtp_pack_rawdata # MAGIC where region <> '全国' # MAGIC group by pack_code,time # MAGIC ), tmp_has_regional_data as ( # MAGIC select # MAGIC distinct # MAGIC time, # MAGIC pack_code # MAGIC from tmp.tmp_retail_dtp_pack_rawdata # MAGIC where region <> '全国' # MAGIC and data_flag = 0 # MAGIC ) # MAGIC # MAGIC ----------------------------- append ROC data ------------------------------------------ # MAGIC insert into table tmp.tmp_retail_dtp_pack_rawdata # MAGIC # MAGIC select # MAGIC a.iqvia_pack_code, # MAGIC -- a.region_type, # MAGIC a.year, # MAGIC a.time, # MAGIC -- a.higher_level_region, # MAGIC 'ROC' as region, # MAGIC -- a.prescription_nature, # MAGIC -- a.medicine_attribute, # MAGIC -- a.dosage_form, # MAGIC -- a.object, # MAGIC -- a.zk_classify1, # MAGIC -- a.zk_classify2, # MAGIC -- a.zk_classify3, # MAGIC a.target_points, # MAGIC -- a.common_name, # MAGIC -- a.brand_name, # MAGIC -- a.product_name, # MAGIC -- a.category_name, # MAGIC -- a.pack_des, # MAGIC a.counting_unit, # MAGIC -- a.factory, # MAGIC -- a.corp_des, # MAGIC a.average_price, # MAGIC a.sales_amount - ifnull(b.sales_amount,0) as sales_amount, # MAGIC a.sales_volume - ifnull(b.sales_volume,0) as sales_volume, # MAGIC a.counting_units_obversion, # MAGIC a.pack_code, # MAGIC a.molecule_code, # MAGIC a.molecule_desc, # MAGIC a.product_code, # MAGIC a.product_desc, # MAGIC a.level_ta, # MAGIC a.level_market, # MAGIC a.level_molecule, # MAGIC a.level_brand, # MAGIC a.ratio_val, # MAGIC a.ratio_vol, # MAGIC ------------------------------------------------------------------------------- # MAGIC -- 有省份pack的数(包括无品牌数据的数)计算出来的ROC所对应的pack_flag,也需要是1-原始值,不能是2-拆分的值 # MAGIC -- 所以这里针对这类有省份数据的ROC数据,data_flag赋值为0-原始值,其他的仍为1-倒减值 # MAGIC case when c.pack_code is not null then 0 else 1 end as data_flag, # MAGIC ------------------------------------------------------------------------------- # MAGIC a.brand_flag # MAGIC from tmp.tmp_retail_dtp_pack_rawdata a # MAGIC inner join tmp_area_group b # MAGIC on a.pack_code = b.pack_code # MAGIC and a.time = b.time # MAGIC left join tmp_has_regional_data c # MAGIC on a.time = c.time # MAGIC and a.pack_code = c.pack_code # MAGIC where a.region = '全国' # COMMAND ---------- ############################################################END################################################################