1107 lines
41 KiB
Python
1107 lines
41 KiB
Python
# 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################################################################ |