1200 lines
47 KiB
Python
1200 lines
47 KiB
Python
# Databricks notebook source
|
||
### 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 = 1
|
||
DATA_FLAG_SUB = 1 ### final pack_flag = 2
|
||
DATA_FLAG_ADD = 2 ### final pack_flag = 2
|
||
DATA_FLAG_RATIO = 3 ### final pack_flag = 2
|
||
DATA_FLAG_AVG = 4 ### final pack_flag = 2
|
||
DATA_FLAG_HEDGE = 5 ### final pack_flag = 2
|
||
BRAND_FLAG_NATIVE = 1 ### final brand_flag = 1
|
||
BRAND_FLAG_CALCULATE = 2 ### final brand_flag = 2
|
||
BRAND_FLAG_NONE = 3 ### final brand_flag = 2
|
||
BRAND_FLAG_PACK = 4 ### final brand_flag = 1
|
||
|
||
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 ----------
|
||
|
||
############################################################START##############################################################
|
||
### STEP-1: generate product_id&level relationship mapping table
|
||
### STEP-2: split regional data by brand ratio when there is no regional data and there is a brand ratio
|
||
### STEP-3: substract ROC data
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %md
|
||
# MAGIC ## STEP-1: generate product_id&level relationship mapping table
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.1 generate mapping table
|
||
# MAGIC -- use two dwd table:
|
||
# MAGIC -- use dwd.dwd_gnd_ext_retail_pack_property to find the relationship with product_id & brand
|
||
# MAGIC -- use dwd.dwd_inc_gnd_retail_b2c_label_total to find the brand with suffix label ,such as 胶囊、颗粒 (可威-胶囊/可威-颗粒)
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC
|
||
# MAGIC with tmp_pack_property as (
|
||
# MAGIC ---------------------------------------------------------------
|
||
# MAGIC -- 以数字开头的iqvia_pack_code调整为12位(以字母开头的不变),不足位数补0
|
||
# MAGIC -- iqvia_prod_code调整为9位,不足位数补0
|
||
# MAGIC select
|
||
# MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(iqvia_pack_code)),12) else trim(iqvia_pack_code) end as iqvia_pack_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 product_id,
|
||
# MAGIC cmps_des,
|
||
# MAGIC cmps_des_c,
|
||
# MAGIC prod_des,
|
||
# MAGIC prod_des_c,
|
||
# MAGIC corp_cod,
|
||
# MAGIC app1_cod,
|
||
# MAGIC app2_cod,
|
||
# MAGIC app3_cod
|
||
# MAGIC from dwd.dwd_gnd_ext_retail_pack_property
|
||
# MAGIC ), tmp_b2c_label_total as (
|
||
# MAGIC select
|
||
# 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 ZK_Prod_C,
|
||
# MAGIC APP1_COD,
|
||
# MAGIC APP2_COD,
|
||
# MAGIC APP3_COD
|
||
# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total
|
||
# MAGIC ---------------------------------------------------------------
|
||
# MAGIC ), tmp_suffix_brand as (
|
||
# MAGIC select distinct split(brand,'-')[0]
|
||
# MAGIC from dwd.dwd_gnd_retail_split_automatic
|
||
# MAGIC where brand like '%-%'
|
||
# MAGIC ), tmp_mapping as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC a.product_id as product_id,
|
||
# MAGIC a.iqvia_pack_code as pack_code,
|
||
# MAGIC a.cmps_des as molecule_code,
|
||
# MAGIC a.cmps_des_c as molecule_name,
|
||
# MAGIC ifnull(a.prod_des, concat(a.cmps_des,'_OTHER_PROD')) as product_code,
|
||
# MAGIC ifnull(a.prod_des_c, concat(a.cmps_des_c,'_OTHER_PROD')) as product_name,
|
||
# MAGIC a.corp_cod
|
||
# MAGIC from tmp_pack_property a
|
||
# MAGIC where a.prod_des_c not in (select * from tmp_suffix_brand)
|
||
# MAGIC or a.prod_des_c is null
|
||
# MAGIC
|
||
# MAGIC union all
|
||
# MAGIC
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC a.product_id as product_id,
|
||
# MAGIC a.iqvia_pack_code as pack_code,
|
||
# MAGIC a.cmps_des as molecule_code,
|
||
# MAGIC a.cmps_des_c as molecule_name,
|
||
# MAGIC a.prod_des as product_code,
|
||
# MAGIC ifnull(b.ZK_Prod_C, a.prod_des_c) as product_name,
|
||
# MAGIC a.corp_cod
|
||
# MAGIC from tmp_pack_property a
|
||
# MAGIC left join tmp_b2c_label_total b
|
||
# MAGIC on a.iqvia_prod_code = b.IQVIA_PROD_CODE
|
||
# MAGIC and a.app1_cod = b.APP1_COD
|
||
# MAGIC and a.app2_cod = b.APP2_COD
|
||
# MAGIC and a.app3_cod = b.APP3_COD
|
||
# MAGIC where a.prod_des_c in (select * from tmp_suffix_brand)
|
||
# MAGIC ), tmp_pack as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC product_id,
|
||
# MAGIC zk_product_id,
|
||
# MAGIC level_ta,
|
||
# MAGIC level_market
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata
|
||
# MAGIC ), tmp_pack_mapping as(
|
||
# MAGIC select
|
||
# MAGIC p.level_ta,
|
||
# MAGIC p.level_market,
|
||
# MAGIC p.product_id,
|
||
# MAGIC p.zk_product_id,
|
||
# MAGIC m.pack_code,
|
||
# MAGIC m.molecule_code,
|
||
# MAGIC m.molecule_name,
|
||
# MAGIC m.product_code,
|
||
# MAGIC m.product_name,
|
||
# MAGIC m.corp_cod
|
||
# MAGIC from tmp_pack p
|
||
# MAGIC inner join tmp_mapping m
|
||
# MAGIC on p.product_id = m.product_id
|
||
# MAGIC ), tmp_level as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC ta,
|
||
# MAGIC market,
|
||
# MAGIC molecule,
|
||
# MAGIC brand
|
||
# MAGIC from tmp.tmp_retail_level_brand
|
||
# MAGIC order by ta,market,molecule,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_name = b.molecule or b.molecule <> 'OTHER_MOLECULE') -- 新增自定义非OTHER_MOLECULE
|
||
# MAGIC and a.product_name = 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_name = b.brand
|
||
# MAGIC where a.product_id not in (
|
||
# MAGIC select distinct product_id 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_name = b.molecule
|
||
# MAGIC and b.brand = 'OTHER_BRAND'
|
||
# MAGIC where a.product_id not in (
|
||
# MAGIC select distinct product_id from tmp_molecule_brand
|
||
# MAGIC union all
|
||
# MAGIC select distinct product_id 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.product_id not in (
|
||
# MAGIC select distinct product_id from tmp_molecule_brand
|
||
# MAGIC union all
|
||
# MAGIC select distinct product_id from tmp_other_brand
|
||
# MAGIC union all
|
||
# MAGIC select distinct product_id 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 ------------------------- generate product_id&level relationship mapping table------------------------
|
||
# MAGIC insert overwrite table tmp.tmp_retail_pack_mapping
|
||
# MAGIC
|
||
# MAGIC select
|
||
# MAGIC product_id,
|
||
# MAGIC zk_product_id,
|
||
# MAGIC level_ta,
|
||
# MAGIC level_market,
|
||
# MAGIC molecule as level_molecule,
|
||
# MAGIC brand as level_brand,
|
||
# MAGIC pack_code,
|
||
# MAGIC molecule_code,
|
||
# MAGIC molecule_name,
|
||
# MAGIC product_code,
|
||
# MAGIC product_name,
|
||
# MAGIC brand_flag,
|
||
# MAGIC corp_cod
|
||
# MAGIC from tmp_brand_mapping
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.1 generate mapping table
|
||
# MAGIC -- 1.1.2 update special case 'GI-慢性胃炎、胃溃疡-其他拉唑类'
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC UPDATE tmp.tmp_retail_pack_mapping
|
||
# MAGIC SET level_molecule = '其他拉唑类'
|
||
# MAGIC where level_ta = 'GI'
|
||
# MAGIC and level_market = '慢性胃炎、胃溃疡'
|
||
# MAGIC and level_molecule = 'OTHER_MOLECULE'
|
||
# MAGIC and level_brand = 'OTHER_BRAND'
|
||
# MAGIC and molecule_desc like '%拉唑%'
|
||
# MAGIC --and product_id in (
|
||
# MAGIC -- select product_id
|
||
# MAGIC -- from dwd.dwd_gnd_ext_retail_pack_property
|
||
# MAGIC -- where cmps_cod IN ('001658','002782','008617','001051','001853','008467')
|
||
# MAGIC --)
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.1 generate mapping table
|
||
# MAGIC -- 1.1.3 获取market信息,产品重新归属
|
||
# MAGIC -- 1.1.3.1 B2C标签表整合关联tblmarket 表,获取market 信息, 更新tmp.tmp_zk_retail_pack_property
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC insert overwrite table tmp.tmp_zk_retail_pack_property
|
||
# MAGIC with tmp_pack_property as (
|
||
# MAGIC select
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_code & prod_code
|
||
# 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 new_iqvia_pack_code,
|
||
# MAGIC case when length(iqvia_prod_code) < 9 then right(concat('000000000',iqvia_prod_code),9) else iqvia_prod_code end as new_iqvia_prod_code,
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC *
|
||
# MAGIC from dwd.dwd_gnd_ext_retail_pack_property
|
||
# MAGIC ), tmp_pack_additional_attribute as (
|
||
# MAGIC select
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_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 -------------------------------------------------------------------
|
||
# MAGIC *
|
||
# MAGIC from dwd.dwd_ims_td_pack_additional_attribute
|
||
# MAGIC ), tmp_tblmarket as (
|
||
# MAGIC select
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_code & prod_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_prod_code,
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC *
|
||
# MAGIC from dwd.dwd_gnd_ext_retail_tblmarket
|
||
# MAGIC ), tmp1 as (
|
||
# MAGIC
|
||
# MAGIC select distinct
|
||
# MAGIC prod.iqvia_lineno
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_code & prod_code
|
||
# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code
|
||
# MAGIC ,prod.new_iqvia_prod_code as PROD_COD
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC ,prod.iqvia_notes
|
||
# MAGIC ,prod.new_pack_flag
|
||
# MAGIC ,prod.is_exists_chpa
|
||
# MAGIC ,prod.product_id
|
||
# MAGIC ,prod.prescription_nature
|
||
# MAGIC ,prod.medicine_type
|
||
# MAGIC ,prod.zk_medicine_tier1
|
||
# MAGIC ,prod.zk_medicine_tier2
|
||
# MAGIC ,prod.zk_medicine_tier3
|
||
# MAGIC ,prod.zk_medicine_tier4
|
||
# MAGIC ,prod.common_name
|
||
# MAGIC ,prod.dosage_form
|
||
# MAGIC ,prod.user_type
|
||
# MAGIC ,prod.category_name
|
||
# MAGIC ,prod.product_name
|
||
# MAGIC ,prod.brand_name
|
||
# MAGIC ,prod.zk_manu_des
|
||
# MAGIC ,prod.zk_corp_des
|
||
# MAGIC ,prod.zk_pack_des
|
||
# MAGIC ,prod.counting_unit_a
|
||
# MAGIC ,prod.dosage_unit_a
|
||
# MAGIC ,prod.unit_a
|
||
# MAGIC ,prod.app1_cod
|
||
# MAGIC ,prod.app1_des
|
||
# MAGIC ,prod.app1_des_c
|
||
# MAGIC ,prod.app2_cod
|
||
# MAGIC ,prod.app2_des
|
||
# MAGIC ,prod.app2_des_c
|
||
# MAGIC ,prod.app3_cod
|
||
# MAGIC ,prod.app3_des
|
||
# MAGIC ,prod.app3_des_c
|
||
# MAGIC ,prod.atc1_cod
|
||
# MAGIC ,prod.atc1_des
|
||
# MAGIC ,prod.atc1_des_c
|
||
# MAGIC ,prod.atc2_cod
|
||
# MAGIC ,prod.atc2_des
|
||
# MAGIC ,prod.atc2_des_c
|
||
# MAGIC ,prod.atc3_cod
|
||
# MAGIC ,prod.atc3_des
|
||
# MAGIC ,prod.atc3_des_c
|
||
# MAGIC ,prod.atc4_cod
|
||
# MAGIC ,prod.atc4_des
|
||
# MAGIC ,prod.atc4_des_c
|
||
# MAGIC ,prod.bio_desc
|
||
# MAGIC ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod
|
||
# MAGIC ,prod.cmps_des
|
||
# MAGIC ,prod.cmps_des_c
|
||
# MAGIC ,prod.corp_cod
|
||
# MAGIC ,prod.corp_des
|
||
# MAGIC ,prod.corp_des_c
|
||
# MAGIC ,prod.edl_desc
|
||
# MAGIC ,prod.eth_otc_desc
|
||
# MAGIC ,prod.gene_orig_desc
|
||
# MAGIC ,prod.gqce_desc
|
||
# MAGIC ,prod.manu_cod
|
||
# MAGIC ,prod.manu_des
|
||
# MAGIC ,prod.manu_des_c
|
||
# MAGIC ,prod.mnfl_cod
|
||
# MAGIC ,prod.mnfl_des
|
||
# MAGIC ,prod.nrdl_desc
|
||
# MAGIC ,prod.pack_des
|
||
# MAGIC ,prod.stgh_des
|
||
# MAGIC ,prod.pack_lch
|
||
# MAGIC ,prod.paed_desc
|
||
# MAGIC ,prod.prod_des
|
||
# MAGIC ,prod.prod_des_c
|
||
# MAGIC ,prod.tcm_desc
|
||
# MAGIC ,prod.vbp_desc
|
||
# MAGIC ,prod.unit
|
||
# MAGIC ,prod.counting_unit
|
||
# MAGIC ,prod.dosage_unit
|
||
# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE
|
||
# MAGIC ,tblmkt.market
|
||
# MAGIC ,tblmkt.bu
|
||
# MAGIC ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio
|
||
# MAGIC from tmp_pack_property prod
|
||
# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC left join (
|
||
# MAGIC select market
|
||
# MAGIC ,bu
|
||
# MAGIC ,atc1_code
|
||
# MAGIC ,atc2_code
|
||
# MAGIC ,atc3_code
|
||
# MAGIC ,atc4_code
|
||
# MAGIC ,nfc1_code
|
||
# MAGIC ,nfc2_code
|
||
# MAGIC ,nfc3_code
|
||
# MAGIC ,Molecule_Code
|
||
# MAGIC ,zk_common_name
|
||
# MAGIC ,extend_market_ratio
|
||
# MAGIC ,zk_product_id
|
||
# MAGIC ,zk_dosage_form
|
||
# MAGIC -------------------------------------
|
||
# MAGIC ,new_pack_code as pack_code
|
||
# MAGIC ,new_prod_code as Product_Code
|
||
# MAGIC -------------------------------------
|
||
# MAGIC ,not_in_flag
|
||
# MAGIC ,extend_market
|
||
# MAGIC from tmp_tblmarket
|
||
# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end))
|
||
# MAGIC where 1=1
|
||
# MAGIC and Extend_Market IS NULL
|
||
# MAGIC AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )
|
||
# MAGIC ) tblmkt
|
||
# MAGIC on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end
|
||
# MAGIC and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end
|
||
# MAGIC and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end
|
||
# MAGIC and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end
|
||
# MAGIC and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end
|
||
# MAGIC and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end
|
||
# MAGIC and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end
|
||
# MAGIC --------------------------------------------------------------------------------------
|
||
# MAGIC and nvl(prod.new_iqvia_prod_code, 0) = case when tblmkt.Product_Code is null then nvl(prod.new_iqvia_prod_code,0 ) else tblmkt.Product_Code end
|
||
# MAGIC and nvl(prod.new_iqvia_pack_code, 0) = case when tblmkt.Pack_Code is null then nvl(prod.new_iqvia_pack_code,0 ) else tblmkt.Pack_Code end
|
||
# MAGIC --------------------------------------------------------------------------------------
|
||
# MAGIC and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end
|
||
# MAGIC where tblmkt.market is not null
|
||
# MAGIC )
|
||
# MAGIC , tmp2 as (
|
||
# MAGIC select distinct
|
||
# MAGIC prod.iqvia_lineno
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_code & prod_code
|
||
# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code
|
||
# MAGIC ,prod.new_iqvia_prod_code as PROD_COD
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC ,prod.iqvia_notes
|
||
# MAGIC ,prod.new_pack_flag
|
||
# MAGIC ,prod.is_exists_chpa
|
||
# MAGIC ,prod.product_id
|
||
# MAGIC ,prod.prescription_nature
|
||
# MAGIC ,prod.medicine_type
|
||
# MAGIC ,prod.zk_medicine_tier1
|
||
# MAGIC ,prod.zk_medicine_tier2
|
||
# MAGIC ,prod.zk_medicine_tier3
|
||
# MAGIC ,prod.zk_medicine_tier4
|
||
# MAGIC ,prod.common_name
|
||
# MAGIC ,prod.dosage_form
|
||
# MAGIC ,prod.user_type
|
||
# MAGIC ,prod.category_name
|
||
# MAGIC ,prod.product_name
|
||
# MAGIC ,prod.brand_name
|
||
# MAGIC ,prod.zk_manu_des
|
||
# MAGIC ,prod.zk_corp_des
|
||
# MAGIC ,prod.zk_pack_des
|
||
# MAGIC ,prod.counting_unit_a
|
||
# MAGIC ,prod.dosage_unit_a
|
||
# MAGIC ,prod.unit_a
|
||
# MAGIC ,prod.app1_cod
|
||
# MAGIC ,prod.app1_des
|
||
# MAGIC ,prod.app1_des_c
|
||
# MAGIC ,prod.app2_cod
|
||
# MAGIC ,prod.app2_des
|
||
# MAGIC ,prod.app2_des_c
|
||
# MAGIC ,prod.app3_cod
|
||
# MAGIC ,prod.app3_des
|
||
# MAGIC ,prod.app3_des_c
|
||
# MAGIC ,prod.atc1_cod
|
||
# MAGIC ,prod.atc1_des
|
||
# MAGIC ,prod.atc1_des_c
|
||
# MAGIC ,prod.atc2_cod
|
||
# MAGIC ,prod.atc2_des
|
||
# MAGIC ,prod.atc2_des_c
|
||
# MAGIC ,prod.atc3_cod
|
||
# MAGIC ,prod.atc3_des
|
||
# MAGIC ,prod.atc3_des_c
|
||
# MAGIC ,prod.atc4_cod
|
||
# MAGIC ,prod.atc4_des
|
||
# MAGIC ,prod.atc4_des_c
|
||
# MAGIC ,prod.bio_desc
|
||
# MAGIC ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod
|
||
# MAGIC ,prod.cmps_des
|
||
# MAGIC ,prod.cmps_des_c
|
||
# MAGIC ,prod.corp_cod
|
||
# MAGIC ,prod.corp_des
|
||
# MAGIC ,prod.corp_des_c
|
||
# MAGIC ,prod.edl_desc
|
||
# MAGIC ,prod.eth_otc_desc
|
||
# MAGIC ,prod.gene_orig_desc
|
||
# MAGIC ,prod.gqce_desc
|
||
# MAGIC ,prod.manu_cod
|
||
# MAGIC ,prod.manu_des
|
||
# MAGIC ,prod.manu_des_c
|
||
# MAGIC ,prod.mnfl_cod
|
||
# MAGIC ,prod.mnfl_des
|
||
# MAGIC ,prod.nrdl_desc
|
||
# MAGIC ,prod.pack_des
|
||
# MAGIC ,prod.stgh_des
|
||
# MAGIC ,prod.pack_lch
|
||
# MAGIC ,prod.paed_desc
|
||
# MAGIC ,prod.prod_des
|
||
# MAGIC ,prod.prod_des_c
|
||
# MAGIC ,prod.tcm_desc
|
||
# MAGIC ,prod.vbp_desc
|
||
# MAGIC ,prod.unit
|
||
# MAGIC ,prod.counting_unit
|
||
# MAGIC ,prod.dosage_unit
|
||
# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE
|
||
# MAGIC ,tblmkt.market
|
||
# MAGIC ,tblmkt.bu
|
||
# MAGIC ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio
|
||
# MAGIC ,1 as f_flag
|
||
# MAGIC from tmp_pack_property prod
|
||
# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC left join (
|
||
# MAGIC select market
|
||
# MAGIC ,bu
|
||
# MAGIC ,atc1_code
|
||
# MAGIC ,atc2_code
|
||
# MAGIC ,atc3_code
|
||
# MAGIC ,atc4_code
|
||
# MAGIC ,nfc1_code
|
||
# MAGIC ,nfc2_code
|
||
# MAGIC ,nfc3_code
|
||
# MAGIC ,Molecule_Code
|
||
# MAGIC ,zk_common_name
|
||
# MAGIC ,extend_market_ratio
|
||
# MAGIC ,zk_product_id
|
||
# MAGIC ,zk_dosage_form
|
||
# MAGIC -------------------------------------
|
||
# MAGIC ,new_pack_code as pack_code
|
||
# MAGIC ,new_prod_code as Product_Code
|
||
# MAGIC -------------------------------------
|
||
# MAGIC ,not_in_flag
|
||
# MAGIC ,extend_market
|
||
# MAGIC from tmp_tblmarket
|
||
# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end))
|
||
# MAGIC where 1=1
|
||
# MAGIC and Extend_Market IS NULL and NOT_IN_FLAG ='0'
|
||
# MAGIC
|
||
# MAGIC )tblmkt
|
||
# MAGIC on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end
|
||
# MAGIC and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end
|
||
# MAGIC and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end
|
||
# MAGIC and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end
|
||
# MAGIC and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end
|
||
# MAGIC and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end
|
||
# MAGIC and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end
|
||
# MAGIC --------------------------------------------------------------------------------------
|
||
# MAGIC and nvl(prod.new_iqvia_prod_code, 0) = case when tblmkt.Product_Code is null then nvl(prod.new_iqvia_prod_code,0 ) else tblmkt.Product_Code end
|
||
# MAGIC and nvl(prod.new_iqvia_pack_code, 0) = case when tblmkt.Pack_Code is null then nvl(prod.new_iqvia_pack_code,0 ) else tblmkt.Pack_Code end
|
||
# MAGIC --------------------------------------------------------------------------------------
|
||
# MAGIC and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end
|
||
# MAGIC where tblmkt.market is not null
|
||
# MAGIC
|
||
# MAGIC )
|
||
# MAGIC , tmp3 as (
|
||
# MAGIC select distinct
|
||
# MAGIC tmp1.iqvia_lineno
|
||
# MAGIC ,tmp1.iqvia_pack_code
|
||
# MAGIC ,tmp1.PROD_COD
|
||
# MAGIC ,tmp1.iqvia_notes
|
||
# MAGIC ,tmp1.new_pack_flag
|
||
# MAGIC ,tmp1.is_exists_chpa
|
||
# MAGIC ,tmp1.product_id
|
||
# MAGIC ,tmp1.prescription_nature
|
||
# MAGIC ,tmp1.medicine_type
|
||
# MAGIC ,tmp1.zk_medicine_tier1
|
||
# MAGIC ,tmp1.zk_medicine_tier2
|
||
# MAGIC ,tmp1.zk_medicine_tier3
|
||
# MAGIC ,tmp1.zk_medicine_tier4
|
||
# MAGIC ,tmp1.common_name
|
||
# MAGIC ,tmp1.dosage_form
|
||
# MAGIC ,tmp1.user_type
|
||
# MAGIC ,tmp1.category_name
|
||
# MAGIC ,tmp1.product_name
|
||
# MAGIC ,tmp1.brand_name
|
||
# MAGIC ,tmp1.zk_manu_des
|
||
# MAGIC ,tmp1.zk_corp_des
|
||
# MAGIC ,tmp1.zk_pack_des
|
||
# MAGIC ,tmp1.counting_unit_a
|
||
# MAGIC ,tmp1.dosage_unit_a
|
||
# MAGIC ,tmp1.unit_a
|
||
# MAGIC ,tmp1.app1_cod
|
||
# MAGIC ,tmp1.app1_des
|
||
# MAGIC ,tmp1.app1_des_c
|
||
# MAGIC ,tmp1.app2_cod
|
||
# MAGIC ,tmp1.app2_des
|
||
# MAGIC ,tmp1.app2_des_c
|
||
# MAGIC ,tmp1.app3_cod
|
||
# MAGIC ,tmp1.app3_des
|
||
# MAGIC ,tmp1.app3_des_c
|
||
# MAGIC ,tmp1.atc1_cod
|
||
# MAGIC ,tmp1.atc1_des
|
||
# MAGIC ,tmp1.atc1_des_c
|
||
# MAGIC ,tmp1.atc2_cod
|
||
# MAGIC ,tmp1.atc2_des
|
||
# MAGIC ,tmp1.atc2_des_c
|
||
# MAGIC ,tmp1.atc3_cod
|
||
# MAGIC ,tmp1.atc3_des
|
||
# MAGIC ,tmp1.atc3_des_c
|
||
# MAGIC ,tmp1.atc4_cod
|
||
# MAGIC ,tmp1.atc4_des
|
||
# MAGIC ,tmp1.atc4_des_c
|
||
# MAGIC ,tmp1.bio_desc
|
||
# MAGIC ,tmp1.cmps_cod
|
||
# MAGIC ,tmp1.cmps_des
|
||
# MAGIC ,tmp1.cmps_des_c
|
||
# MAGIC ,tmp1.corp_cod
|
||
# MAGIC ,tmp1.corp_des
|
||
# MAGIC ,tmp1.corp_des_c
|
||
# MAGIC ,tmp1.edl_desc
|
||
# MAGIC ,tmp1.eth_otc_desc
|
||
# MAGIC ,tmp1.gene_orig_desc
|
||
# MAGIC ,tmp1.gqce_desc
|
||
# MAGIC ,tmp1.manu_cod
|
||
# MAGIC ,tmp1.manu_des
|
||
# MAGIC ,tmp1.manu_des_c
|
||
# MAGIC ,tmp1.mnfl_cod
|
||
# MAGIC ,tmp1.mnfl_des
|
||
# MAGIC ,tmp1.nrdl_desc
|
||
# MAGIC ,tmp1.pack_des
|
||
# MAGIC ,tmp1.stgh_des
|
||
# MAGIC ,tmp1.pack_lch
|
||
# MAGIC ,tmp1.paed_desc
|
||
# MAGIC ,tmp1.prod_des
|
||
# MAGIC ,tmp1.prod_des_c
|
||
# MAGIC ,tmp1.tcm_desc
|
||
# MAGIC ,tmp1.vbp_desc
|
||
# MAGIC ,tmp1.unit
|
||
# MAGIC ,tmp1.counting_unit
|
||
# MAGIC ,tmp1.dosage_unit
|
||
# MAGIC ,tmp1.NRDL_ENTRY_DATE
|
||
# MAGIC ,tmp1.market
|
||
# MAGIC ,nvl(t2.bu,tmp1.bu) as bu
|
||
# MAGIC ,tmp1.extend_market_ratio
|
||
# MAGIC ,IF(tmp1.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az
|
||
# MAGIC from tmp1 left join tmp2
|
||
# MAGIC on nvl(tmp1.ATC1_COD,'') = nvl(tmp2.ATC1_COD,'')
|
||
# MAGIC and nvl(tmp1.ATC2_COD,'') = nvl(tmp2.ATC2_COD,'')
|
||
# MAGIC and nvl(tmp1.ATC3_COD,'') = nvl(tmp2.ATC3_COD,'')
|
||
# MAGIC and nvl(tmp1.ATC4_COD,'') = nvl(tmp2.ATC4_COD,'')
|
||
# MAGIC and nvl(tmp1.APP1_COD,'') = nvl(tmp2.APP1_COD,'')
|
||
# MAGIC and nvl(tmp1.APP2_COD,'') = nvl(tmp2.APP2_COD,'')
|
||
# MAGIC and nvl(tmp1.APP3_COD,'') = nvl(tmp2.APP3_COD,'')
|
||
# MAGIC and nvl(tmp1.PROD_COD,'') = nvl(tmp2.PROD_COD,'')
|
||
# MAGIC and nvl(tmp1.iqvia_pack_code,'') = nvl(tmp2.iqvia_pack_code,'')
|
||
# MAGIC and nvl(tmp1.common_name ,'') = nvl(tmp2.common_name ,'')
|
||
# MAGIC and nvl(tmp1.product_id,'') = nvl(tmp2.product_id,'')
|
||
# MAGIC and nvl(tmp1.dosage_form ,'') = nvl(tmp2.dosage_form ,'')
|
||
# MAGIC and nvl(tmp1.CMPS_COD,'') = nvl(tmp2.CMPS_COD,'')
|
||
# MAGIC and nvl(tmp1.market ,'') = nvl(tmp2.market ,'')
|
||
# MAGIC left join (select Market, BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ext_retail_tblmarket
|
||
# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') and Extend_Market IS NOT NULL
|
||
# MAGIC -- )or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end)
|
||
# MAGIC where Extend_Market IS NOT NULL
|
||
# MAGIC ) t2 on tmp1.Market=t2.Extend_Market
|
||
# MAGIC where NVL(tmp2.f_flag,0) !=1
|
||
# MAGIC
|
||
# MAGIC )
|
||
# MAGIC
|
||
# MAGIC -- 合并所有市场数据
|
||
# MAGIC select
|
||
# MAGIC *
|
||
# MAGIC from tmp3
|
||
# MAGIC --没有匹配上的给默认市场:Non AZ Retail Related Market
|
||
# MAGIC union all
|
||
# MAGIC select
|
||
# MAGIC prod.iqvia_lineno
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC -- format pack_code & prod_code
|
||
# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code
|
||
# MAGIC ,prod.new_iqvia_prod_code as PROD_COD
|
||
# MAGIC -------------------------------------------------------------------
|
||
# MAGIC ,prod.iqvia_notes
|
||
# MAGIC ,prod.new_pack_flag
|
||
# MAGIC ,prod.is_exists_chpa
|
||
# MAGIC ,prod.product_id
|
||
# MAGIC ,prod.prescription_nature
|
||
# MAGIC ,prod.medicine_type
|
||
# MAGIC ,prod.zk_medicine_tier1
|
||
# MAGIC ,prod.zk_medicine_tier2
|
||
# MAGIC ,prod.zk_medicine_tier3
|
||
# MAGIC ,prod.zk_medicine_tier4
|
||
# MAGIC ,prod.common_name
|
||
# MAGIC ,prod.dosage_form
|
||
# MAGIC ,prod.user_type
|
||
# MAGIC ,prod.category_name
|
||
# MAGIC ,prod.product_name
|
||
# MAGIC ,prod.brand_name
|
||
# MAGIC ,prod.zk_manu_des
|
||
# MAGIC ,prod.zk_corp_des
|
||
# MAGIC ,prod.zk_pack_des
|
||
# MAGIC ,prod.counting_unit_a
|
||
# MAGIC ,prod.dosage_unit_a
|
||
# MAGIC ,prod.unit_a
|
||
# MAGIC ,prod.app1_cod
|
||
# MAGIC ,prod.app1_des
|
||
# MAGIC ,prod.app1_des_c
|
||
# MAGIC ,prod.app2_cod
|
||
# MAGIC ,prod.app2_des
|
||
# MAGIC ,prod.app2_des_c
|
||
# MAGIC ,prod.app3_cod
|
||
# MAGIC ,prod.app3_des
|
||
# MAGIC ,prod.app3_des_c
|
||
# MAGIC ,prod.atc1_cod
|
||
# MAGIC ,prod.atc1_des
|
||
# MAGIC ,prod.atc1_des_c
|
||
# MAGIC ,prod.atc2_cod
|
||
# MAGIC ,prod.atc2_des
|
||
# MAGIC ,prod.atc2_des_c
|
||
# MAGIC ,prod.atc3_cod
|
||
# MAGIC ,prod.atc3_des
|
||
# MAGIC ,prod.atc3_des_c
|
||
# MAGIC ,prod.atc4_cod
|
||
# MAGIC ,prod.atc4_des
|
||
# MAGIC ,prod.atc4_des_c
|
||
# MAGIC ,prod.bio_desc
|
||
# MAGIC ,right(concat('00000',nvl(prod.cmps_cod,0 )),6) cmps_cod
|
||
# MAGIC ,prod.cmps_des
|
||
# MAGIC ,prod.cmps_des_c
|
||
# MAGIC ,prod.corp_cod
|
||
# MAGIC ,prod.corp_des
|
||
# MAGIC ,prod.corp_des_c
|
||
# MAGIC ,prod.edl_desc
|
||
# MAGIC ,prod.eth_otc_desc
|
||
# MAGIC ,prod.gene_orig_desc
|
||
# MAGIC ,prod.gqce_desc
|
||
# MAGIC ,prod.manu_cod
|
||
# MAGIC ,prod.manu_des
|
||
# MAGIC ,prod.manu_des_c
|
||
# MAGIC ,prod.mnfl_cod
|
||
# MAGIC ,prod.mnfl_des
|
||
# MAGIC ,prod.nrdl_desc
|
||
# MAGIC ,prod.pack_des
|
||
# MAGIC ,prod.stgh_des
|
||
# MAGIC ,prod.pack_lch
|
||
# MAGIC ,prod.paed_desc
|
||
# MAGIC ,prod.prod_des
|
||
# MAGIC ,prod.prod_des_c
|
||
# MAGIC ,prod.tcm_desc
|
||
# MAGIC ,prod.vbp_desc
|
||
# MAGIC ,prod.unit
|
||
# MAGIC ,prod.counting_unit
|
||
# MAGIC ,prod.dosage_unit
|
||
# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE
|
||
# MAGIC ,'Non AZ Retail Related Market' as market
|
||
# MAGIC ,tmp3.bu
|
||
# MAGIC ,nvl(tmp3.extend_market_ratio,1) as extend_market_ratio
|
||
# MAGIC ,IF(PROD.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az
|
||
# MAGIC from tmp_pack_property prod
|
||
# MAGIC left join tmp3 on prod.product_id = tmp3.product_id
|
||
# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code
|
||
# MAGIC ----------------------------------------------------------------------------------
|
||
# MAGIC where tmp3.product_id is null
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.1 generate mapping table
|
||
# MAGIC -- 1.1.3 获取market信息,产品重新归属
|
||
# MAGIC -- 1.1.3.2 对配置表的pack 对应公司、分子式 根据 dwd_gnd_tbl_corp_change 表进行产品重新归属
|
||
# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的
|
||
# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC insert overwrite table tmp.tmp_zk_retail_pack_property_corp
|
||
# MAGIC select distinct a.iqvia_pack_code
|
||
# 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 ,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 from (
|
||
# MAGIC select
|
||
# MAGIC DISTINCT
|
||
# MAGIC iqvia_pack_code,
|
||
# MAGIC corp_cod,
|
||
# MAGIC corp_des,
|
||
# MAGIC corp_des_c,
|
||
# MAGIC right(concat('000000',manu_cod),6 ) manu_cod,
|
||
# MAGIC manu_des,
|
||
# MAGIC manu_des_c,
|
||
# MAGIC prod_cod
|
||
# MAGIC from tmp.tmp_zk_retail_pack_property
|
||
# MAGIC ) 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,
|
||
# MAGIC corp_des,
|
||
# MAGIC right(concat('000000',manu_cod),6 ) manu_cod,
|
||
# MAGIC manu_des
|
||
# MAGIC from dwd.dwd_gnd_tbl_corp_change 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
|
||
# MAGIC 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 distinct right(concat('000000',manu_cod),6 ) manu_cod,manu_des,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 %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.1 generate mapping table
|
||
# MAGIC -- 1.1.4 update special case 'CV-其他美托洛尔'
|
||
# MAGIC -- “酒石酸美托洛尔”和“琥珀酸美托洛尔”以及部分others分子式标准名都为“美托洛尔”
|
||
# MAGIC -- 这里需要根据市场把“酒石酸美托洛尔”以及这部分others区分出来,不能应用“琥珀酸美托洛尔”即level_molecule为“美托洛尔”的拆分比例
|
||
# MAGIC -- 区分方式为取market为非“Metoprolol Succinate Market”即非“酒石酸美托洛尔市场”的pack_code
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC UPDATE tmp.tmp_retail_pack_mapping
|
||
# MAGIC SET
|
||
# MAGIC level_molecule = '其他美托洛尔',
|
||
# MAGIC brand_flag = 3
|
||
# MAGIC where level_ta = 'CV'
|
||
# MAGIC and level_market = '高血压用药'
|
||
# MAGIC and level_molecule = '美托洛尔'
|
||
# MAGIC and pack_code not in (
|
||
# MAGIC select distinct iqvia_pack_code
|
||
# MAGIC from tmp.tmp_zk_retail_pack_property
|
||
# MAGIC where market = 'Metoprolol Succinate Market'
|
||
# MAGIC )
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.2 update the pack data extra column in tmp.tmp_retail_pack_rawdata when pack data has mapping
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC
|
||
# MAGIC merge into tmp.tmp_retail_pack_rawdata a
|
||
# MAGIC using(
|
||
# MAGIC select * from tmp.tmp_retail_pack_mapping
|
||
# MAGIC ) as b
|
||
# MAGIC on a.product_id = b.product_id
|
||
# MAGIC and a.level_ta = b.level_ta
|
||
# MAGIC and a.level_market = b.level_market
|
||
# MAGIC when matched then
|
||
# MAGIC update set
|
||
# MAGIC a.pack_code = b.pack_code,
|
||
# MAGIC a.molecule_code = b.molecule_code,
|
||
# MAGIC a.molecule_desc = b.molecule_desc,
|
||
# MAGIC a.product_code = b.product_code,
|
||
# MAGIC a.product_desc = b.product_desc,
|
||
# 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-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.3 update the pack data extra column in tmp.tmp_retail_pack_rawdata when pack data without mapping
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC
|
||
# MAGIC with tmp_pack_property as (
|
||
# MAGIC ---------------------------------------------------------------
|
||
# MAGIC -- 以数字开头的iqvia_pack_code调整为12位(以字母开头的不变),不足位数补0
|
||
# MAGIC -- iqvia_prod_code调整为9位,不足位数补0
|
||
# MAGIC select
|
||
# MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(iqvia_pack_code)),12) else trim(iqvia_pack_code) end as iqvia_pack_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 product_id,
|
||
# MAGIC cmps_des,
|
||
# MAGIC cmps_des_c,
|
||
# MAGIC prod_des,
|
||
# MAGIC prod_des_c,
|
||
# MAGIC corp_cod,
|
||
# MAGIC app1_cod,
|
||
# MAGIC app2_cod,
|
||
# MAGIC app3_cod
|
||
# MAGIC from dwd.dwd_gnd_ext_retail_pack_property
|
||
# MAGIC ), tmp_b2c_label_total as (
|
||
# MAGIC select
|
||
# 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 ZK_Prod_C,
|
||
# MAGIC APP1_COD,
|
||
# MAGIC APP2_COD,
|
||
# MAGIC APP3_COD
|
||
# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total
|
||
# MAGIC ---------------------------------------------------------------
|
||
# MAGIC ), tmp_suffix_brand as (
|
||
# MAGIC select distinct split(brand,'-')[0]
|
||
# MAGIC from dwd.dwd_gnd_retail_split_automatic
|
||
# MAGIC where brand like '%-%'
|
||
# MAGIC ), tmp_mapping as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC a.product_id as product_id,
|
||
# MAGIC a.iqvia_pack_code as pack_code,
|
||
# MAGIC a.cmps_des as molecule_code,
|
||
# MAGIC a.cmps_des_c as molecule_name,
|
||
# MAGIC ifnull(a.prod_des, concat(a.cmps_des,'_OTHER_PROD')) as product_code,
|
||
# MAGIC ifnull(a.prod_des_c, concat(a.cmps_des_c,'_OTHER_PROD')) as product_name
|
||
# MAGIC from tmp_pack_property a
|
||
# MAGIC where a.prod_des_c not in (select * from tmp_suffix_brand)
|
||
# MAGIC or a.prod_des_c is null
|
||
# MAGIC
|
||
# MAGIC union all
|
||
# MAGIC
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC a.product_id as product_id,
|
||
# MAGIC a.iqvia_pack_code as pack_code,
|
||
# MAGIC a.cmps_des as molecule_code,
|
||
# MAGIC a.cmps_des_c as molecule_name,
|
||
# MAGIC a.prod_des as product_code,
|
||
# MAGIC ifnull(b.ZK_Prod_C, a.prod_des_c) as product_name
|
||
# MAGIC from tmp_pack_property a
|
||
# MAGIC left join tmp_b2c_label_total b
|
||
# MAGIC on a.iqvia_prod_code = b.IQVIA_PROD_CODE
|
||
# MAGIC and a.app1_cod = b.APP1_COD
|
||
# MAGIC and a.app2_cod = b.APP2_COD
|
||
# MAGIC and a.app3_cod = b.APP3_COD
|
||
# MAGIC where a.prod_des_c in (select * from tmp_suffix_brand)
|
||
# MAGIC )
|
||
# MAGIC
|
||
# MAGIC merge into tmp.tmp_retail_pack_rawdata a
|
||
# MAGIC using(
|
||
# MAGIC select * from tmp_mapping
|
||
# MAGIC ) as b
|
||
# MAGIC on a.product_id = b.product_id
|
||
# MAGIC and a.pack_code is null
|
||
# MAGIC when matched then
|
||
# MAGIC update set
|
||
# MAGIC a.pack_code = b.pack_code,
|
||
# MAGIC a.molecule_code = b.molecule_code,
|
||
# MAGIC a.molecule_desc = b.molecule_name,
|
||
# MAGIC a.product_code = b.product_code,
|
||
# MAGIC a.product_desc = b.product_name,
|
||
# MAGIC a.brand_flag = 3
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.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 quarter,
|
||
# MAGIC product_id,
|
||
# MAGIC pack_code
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata
|
||
# MAGIC where zk_regin <> '全国'
|
||
# MAGIC )
|
||
# MAGIC
|
||
# MAGIC merge into tmp.tmp_retail_pack_rawdata a
|
||
# MAGIC using(
|
||
# MAGIC select * from tmp_has_regional_data
|
||
# MAGIC ) as b
|
||
# MAGIC on a.quarter = b.quarter
|
||
# MAGIC and a.product_id = b.product_id
|
||
# MAGIC and a.pack_code = b.pack_code
|
||
# MAGIC when matched then
|
||
# MAGIC update set
|
||
# MAGIC a.brand_flag = 1
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-1: generate product_id&level relationship mapping table
|
||
# MAGIC -- 1.5 delete non GI data
|
||
# MAGIC -- “TA=GI”的数据,只取market为'Antacid anti GI swelling agent+PPI Oral'的数
|
||
# MAGIC -- 非“TA=GI“的数据,无限制
|
||
# MAGIC -- 此处筛选并移除TA为GI,但并未在此市场出现的数据
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC delete from tmp.tmp_retail_pack_rawdata a
|
||
# MAGIC where a.level_ta = 'GI'
|
||
# MAGIC and a.pack_code not in (
|
||
# MAGIC select distinct iqvia_pack_code
|
||
# MAGIC from tmp.tmp_zk_retail_pack_property
|
||
# MAGIC where market = 'Antacid anti GI swelling agent+PPI Oral'
|
||
# MAGIC )
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %md
|
||
# MAGIC ## STEP-2: split regional data by brand ratio
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-2: 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
|
||
# MAGIC with tmp_has_regional_data as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC quarter,
|
||
# MAGIC product_id
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata
|
||
# MAGIC where zk_regin <> '全国'
|
||
# MAGIC ), tmp_has_brand_ratio as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC b.product_id
|
||
# MAGIC from tmp.tmp_retail_level_brand a
|
||
# MAGIC inner join tmp.tmp_retail_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_pack_rawdata a
|
||
# MAGIC where not exists(
|
||
# MAGIC select b.quarter,b.product_id from tmp_has_regional_data b
|
||
# MAGIC where a.quarter = b.quarter
|
||
# MAGIC and a.product_id = b.product_id
|
||
# MAGIC ) and exists(
|
||
# MAGIC select c.product_id from tmp_has_brand_ratio c
|
||
# MAGIC where a.product_id = c.product_id
|
||
# MAGIC )
|
||
# MAGIC )
|
||
# MAGIC ----------------------------- append split regional data ----------------------------
|
||
# MAGIC insert into table tmp.tmp_retail_pack_rawdata
|
||
# MAGIC
|
||
# MAGIC select
|
||
# MAGIC c.product_id,
|
||
# MAGIC c.zk_product_id,
|
||
# MAGIC a.province_city,
|
||
# MAGIC c.zk_rx_otc,
|
||
# MAGIC c.zk_medicine_type,
|
||
# MAGIC c.zk_medicine_tier1,
|
||
# MAGIC c.zk_medicine_tier2,
|
||
# MAGIC c.zk_medicine_tier3,
|
||
# MAGIC c.zk_medicine_tier4,
|
||
# MAGIC c.zk_common_name,
|
||
# MAGIC c.zk_dosage_form,
|
||
# MAGIC c.zk_user_type,
|
||
# MAGIC c.zk_category_name,
|
||
# MAGIC c.zk_product_name,
|
||
# MAGIC c.zk_brand_name,
|
||
# MAGIC c.zk_manu_des,
|
||
# MAGIC c.zk_corp_des,
|
||
# MAGIC c.zk_pack_des,
|
||
# MAGIC c.month,
|
||
# MAGIC c.quarter,
|
||
# MAGIC c.price,
|
||
# MAGIC round(c.sales_unit * a.ratio_vol ,10) as sales_unit,
|
||
# MAGIC round(c.sales_value * a.ratio_val ,10) as sales_value,
|
||
# MAGIC c.digital_spread_rate,
|
||
# MAGIC c.weighted_spread_rate,
|
||
# MAGIC c.counting_unit,
|
||
# 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_level_brand a
|
||
# MAGIC inner join tmp.tmp_retail_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.product_id = b.product_id
|
||
# MAGIC and c.quarter = a.quarter
|
||
# MAGIC where a.province_city <> '全国'
|
||
# MAGIC
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %md
|
||
# MAGIC ## STEP-3: substract ROC data
|
||
|
||
# COMMAND ----------
|
||
|
||
# MAGIC %sql
|
||
# MAGIC -------------------------------------------------------------------------------------
|
||
# MAGIC -- STEP-3: 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 product_id,
|
||
# MAGIC quarter,
|
||
# MAGIC month,
|
||
# MAGIC sum(sales_unit) as sales_unit,
|
||
# MAGIC sum(sales_value) as sales_value
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata
|
||
# MAGIC where zk_regin <> '全国'
|
||
# MAGIC group by product_id,quarter,month
|
||
# MAGIC ), tmp_has_regional_data as (
|
||
# MAGIC select
|
||
# MAGIC distinct
|
||
# MAGIC quarter,
|
||
# MAGIC product_id
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata
|
||
# MAGIC where zk_regin <> '全国'
|
||
# MAGIC and data_flag = 0
|
||
# MAGIC )
|
||
# MAGIC
|
||
# MAGIC ----------------------------- append ROC data ------------------------------------------
|
||
# MAGIC insert into table tmp.tmp_retail_pack_rawdata
|
||
# MAGIC
|
||
# MAGIC select
|
||
# MAGIC a.product_id,
|
||
# MAGIC a.zk_product_id,
|
||
# MAGIC 'ROC',
|
||
# MAGIC a.zk_rx_otc,
|
||
# MAGIC a.zk_medicine_type,
|
||
# MAGIC a.zk_medicine_tier1,
|
||
# MAGIC a.zk_medicine_tier2,
|
||
# MAGIC a.zk_medicine_tier3,
|
||
# MAGIC a.zk_medicine_tier4,
|
||
# MAGIC a.zk_common_name,
|
||
# MAGIC a.zk_dosage_form,
|
||
# MAGIC a.zk_user_type,
|
||
# MAGIC a.zk_category_name,
|
||
# MAGIC a.zk_product_name,
|
||
# MAGIC a.zk_brand_name,
|
||
# MAGIC a.zk_manu_des,
|
||
# MAGIC a.zk_corp_des,
|
||
# MAGIC a.zk_pack_des,
|
||
# MAGIC a.month,
|
||
# MAGIC a.quarter,
|
||
# MAGIC a.price,
|
||
# MAGIC a.sales_unit - ifnull(b.sales_unit,0) as sales_unit,
|
||
# MAGIC a.sales_value - ifnull(b.sales_value,0) as sales_value,
|
||
# MAGIC a.digital_spread_rate,
|
||
# MAGIC a.weighted_spread_rate,
|
||
# MAGIC a.counting_unit,
|
||
# 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.product_id is not null then 0 else 1 end as data_flag,
|
||
# MAGIC -------------------------------------------------------------------------------
|
||
# MAGIC a.brand_flag
|
||
# MAGIC from tmp.tmp_retail_pack_rawdata a
|
||
# MAGIC inner join tmp_area_group b
|
||
# MAGIC on a.product_id = b.product_id
|
||
# MAGIC and a.quarter = b.quarter
|
||
# MAGIC and nvl(a.month,'') = nvl(b.month,'')
|
||
# MAGIC left join tmp_has_regional_data c
|
||
# MAGIC on a.quarter = c.quarter
|
||
# MAGIC and a.product_id = c.product_id
|
||
# MAGIC where a.zk_regin = '全国'
|
||
|
||
# COMMAND ----------
|
||
|
||
############################################################END############################################################## |