Files
MarketAnalysis-ETL/z 10 dm_td_external_market_pack_mapping_作废.sql
chenwu 832c7bcd69 new file: 01 dm_tf_external_sales.sql
new file:   02 dm_td_external_keycompatitor.sql
	new file:   03 dm_td_external_brand_market.sql
	new file:   04 dm_td_external_calendar.sql
	new file:   05 dm_td_external_exchangerate.sql
	new file:   07 dm_td_external_packinfo.sql
	new file:   08 dm_td_external_corp.sql
	new file:   09 dm_td_external_geo_type.sql
	new file:   11 DM_TD_EXTERNAL_MARKET_NEW.sql
	new file:   12 dm_td_external_org.sql
	new file:   13 external auth.sql
	new file:   14 dm_tf_external_retail_special_bkp.sql
	new file:   AIA/01 dm_aia_pack_property.sql
	new file:   AIA/02 dm_ext_aia_sales.sql
	new file:   AIA/02 dm_ext_aia_sales_bakup_20230327.sql
	new file:   AIA/03 dm_aia_flag.sql
	new file:   AIA/04 dm_aia_provided_flag.sql
	new file:   AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql
	new file:   AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql
	new file:   AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql
	new file:   AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql
	new file:   AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql
	new file:   AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql
	new file:   AIA/11 dm_aia_targethp_flag.sql
	new file:   "AIA/z_03 dm_aia_flag_\345\244\207\344\273\275\347\224\250.sql"
	new file:   CHC/01 dm_chc_pack_property.sql
	new file:   CHC/02 DM_TF_EXT_CHC_SALES.sql
	new file:   CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql
	new file:   CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql
	new file:   CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql
	new file:   CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql
	new file:   CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql
	new file:   CHPA/01 dwd_ims_atc_hierarchy.sql
	new file:   CHPA/01 dwd_ims_nfc_hierarchy.sql
	new file:   CHPA/01 dwd_ims_td_manufacturer_corp.sql
	new file:   CHPA/01 dwd_ims_td_pack_property.sql
	new file:   CHPA/01 dwd_update.sql
	new file:   CHPA/01_FB_BLOB_TO_DWD.sql
	new file:   CHPA/02 DWS_IMS_TD_GEO.sql
	new file:   CHPA/02 dws_ims_td_atc_cn.sql
	new file:   CHPA/02 dws_ims_td_corp_cn.sql
	new file:   CHPA/02 dws_ims_td_date.sql
	new file:   CHPA/02 dws_ims_td_manu_cn.sql
	new file:   CHPA/02 dws_ims_td_market.sql
	new file:   CHPA/02 dws_ims_td_market_ta.sql
	new file:   CHPA/02 dws_ims_td_nfc_cn.sql
	new file:   CHPA/02 dws_ims_td_prod_cn.sql
	new file:   CHPA/02 tmp_ims_td_prod_tmp.sql
	new file:   CHPA/02 tmp_ims_tf_fact_sales.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql
	new file:   CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql
	new file:   CHPA/03 DM_TF_EXT_CHPA_SALES.sql
	new file:   CHPA/03 dm_ims_td_calendar.sql
	new file:   CHPA/03 dm_ims_td_geo.sql
	new file:   CHPA/03 dm_ims_td_market_property.sql
	new file:   CHPA/03 dm_ims_td_org.sql
	new file:   CHPA/03 dm_ims_td_org_hvh.sql
	new file:   CHPA/03 dm_ims_td_pack_property.sql
	new file:   CHPA/03 dm_ims_tf_sales.sql
	new file:   CHPA/03 dm_td_chpa_market_definition.sql
	new file:   CHPA/03 dm_td_ims_city_mapping.sql
	new file:   EC/03 ec_load_data.sql
	new file:   EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql
	new file:   EC/05 DM_TF_EXT_EC_SALES.sql
	new file:   EC/06 DM_TD_EXT_EC_PACK2MARKET.sql
	new file:   EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql
	new file:   EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql
	new file:   EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql
	new file:   EC/1 (ec)blob_to_dwd.sql
	new file:   EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py
	new file:   Merged_Data/Merged_Data_Config_table_bkp.sql
	new file:   Merged_Data/Merged_Data_Config_table_bymonth.sql
	new file:   Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql
	new file:   Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql
	new file:   ORG/DM_TD_EXT_AIA_ORG.sql
	new file:   ORG/DM_TD_EXT_CHC_ORG.sql
	new file:   ORG/DM_TD_EXT_CHPA_ORG.sql
	new file:   ORG/DM_TD_EXT_COUNTY_ORG.sql
	new file:   ORG/DM_TD_EXT_EC_ORG.sql
	new file:   ORG/DM_TD_EXT_RETAIL_ORG.sql
	new file:   ORG/DM_TD_EXT_THC_ORG.sql
	new file:   ORG/DM_TD_EXT_XIEHE_ORG.sql
	new file:   OTHERS/01 dm_td_report_url.sql
	new file:   OTHERS/02 dws_ext_email_warning.sql
	new file:   OTHERS/external_triggered_email.py
	new file:   Retail/01 load_tmp_data.py
	new file:   Retail/02 split_brand_data.py
	new file:   Retail/03 split_pack_data.py
	new file:   Retail/04 map_to_dws_table.py
	new file:   Retail/05 load_dtp_temp_data.py
	new file:   Retail/06 split_dtp_brand_data.py
	new file:   Retail/07 split_dtp_pack_data.py
	new file:   Retail/08 map_to_dtp_dws_table.py
	new file:   Retail/09 dwd_inc_gnd_ext_retail_nataional.py
	new file:   Retail/10 map_to_retail_dm_table.py
	new file:   Retail/11 map_to_overview_dm_table.py
	new file:   Retail/12 dws_tf_external_retail_dtp_special.sql
	new file:   Retail/13 DM_TF_EXT_RETAIL_SALES.sql
	new file:   Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql
	new file:   Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql
	new file:   Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql
	new file:   Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql
	new file:   Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql
	new file:   Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql
	new file:   Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql
	new file:   Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql
	new file:   Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql
	new file:   Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql
	new file:   Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql
	new file:   "Retail/z1 dwd_inc_gnd_ext_retail_nataional_\344\275\234\345\272\237.py"
	new file:   "Retail/z2 retail_load_data_\344\275\234\345\272\237.sql"
	new file:   "Retail/z3 retail_overview_data_\344\275\234\345\272\237.sql"
	new file:   THC/01 dm_thc_pack_property.sql
	new file:   THC/02 dm_ext_thc_sales.sql
	new file:   THC/02 dm_ext_thc_sales_bakup_20260327.sql
	new file:   THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql
	new file:   THC/04 dm_tf_external_sales_thc.sql
	new file:   THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql
	new file:   THC/06 DM_TD_EXT_THC_PACK2MARKET.sql
	new file:   THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql
	new file:   THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql
	new file:   THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql
	new file:   UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql
	new file:   UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql
	new file:   UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql
	new file:   XIEHE/01 xiehe_blob_to_dwd.py
	new file:   XIEHE/02 dm_xiehe_pack_property.sql
	new file:   XIEHE/03 dm_ext_xiehe_geo.sql
	new file:   XIEHE/04 dm_ext_xiehe_sales.sql
	new file:   XIEHE/05 dm_td_xiehe_core_dept.sql
	new file:   XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql
	new file:   XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql
	new file:   XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql
	new file:   XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql
	new file:   XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql
	new file:   XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql
	new file:   XIEHE/bkp_01 xiehe_blob2dwd.py
	new file:   XIEHE/bkp_02 dm_ext_xiehe_sales.sql
	new file:   XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql
	new file:   county/01 tmp_ims_county_fact_sales_sum.sql
	new file:   county/02 tmp_imscounty_Result.sql
	new file:   county/03 dm_ims_td_county_geo.sql
	new file:   county/04 dws_ext_county_tf_sales.sql
	new file:   county/05 dm_ext_county_td_pack_property.sql
	new file:   county/06 dm_td_county_pack_region.sql
	new file:   county/07 dm_ext_county_tf_sales_region.sql
	new file:   county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql
	new file:   county/09 DM_TF_EXT_COUNTY_SALES.sql
	new file:   county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql
	new file:   county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql
	new file:   county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql
	new file:   county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql
	new file:   for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql
	new file:   for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql
	new file:   for_AIA_Dashboard/03 dm_td_aia_original_col.sql
	new file:   for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql
	new file:   for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql
	new file:   for_AIA_Dashboard/06 dm_td_aia_rank.sql
	new file:   for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql
	new file:   for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py
	new file:   for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql
	new file:   z 01 dm_tf_external_sales.sql
	new file:   "z 10 dm_td_external_market_pack_mapping_\344\275\234\345\272\237.sql"
	new file:   "z 11 dm_td_external_market_\344\275\234\345\272\237.sql"
	new file:   "\344\270\212\347\272\277\350\204\232\346\234\254.sql"
	new file:   "\346\225\260\346\215\256\351\252\214\350\257\201.sql"
2026-04-27 15:48:38 +08:00

1440 lines
54 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Databricks notebook source
---------------------------------------------------------------------------
--修改时间20241126
--修改人Fanxujia
--修改内容:
--THC渠道分为14省的数据源以及全国的数据源两种分在了2个事实表里下面在维表在引用事实表时需要将两个事实表union在一起
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--修改时间20241129
--修改人Fanxujia
--修改内容:
--补充Retail直取中DTP的手工文件里的pack_cod
----------------------------------------------------------------------------
create or replace temporary view external_sales_union as
select distinct
PACK_COD,
DATA_SOURCE
from dm.dm_tf_external_sales
union all
select distinct
PACK_COD,
DATA_SOURCE
from dm.dm_tf_external_sales_thc
union all
select distinct
pack_code,
'Retail(Quarterly)' as DATA_SOURCE
from dm.dm_zk_retail_sales_kpi
where NVL(pack_code,'Others') <> 'Others'
and pack_code <> ''
-- COMMAND ----------
--------------------------------------------------------------------------------------------------------------------------------------------------
--修改时间20240812
--修改人FanXujia
--修改内容:
--在从DM_TD_EXTERNAL_KEYCOMPATITOR表里获取市场描述MARKET_DESC字段需要增加一个DATA_SOURCE的条件。
--修改原因:
--对于同一个市场,每个渠道的市场描述并不一样。
--------------------------------------------------------------------------------------------------------------------------------------------------
-- COMMAND ----------
/*
修改日期20250311
修改人chenwu
修改内容修改COUNTINGUNIT_MARKET_RATIO 取unit的值
*/
/*
修改日期20250513
修改人chenwu
修改内容修改RE Market 为 RE Market (Global)
*/
INSERT OVERWRITE dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS,
VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name
,new_code
,area
)
WITH MKT_PACK_RATIO AS (
-------------------------------------根据沟通,市场+产品对应的ratio是唯一的------------------------------------------
SELECT A.MARKET,A.PACK_COD,MAX(A.Value_Market_Ratio) Value_Market_Ratio,MAX(A.Unit_Market_Ratio) Unit_Market_Ratio,MAX(A.PDOT_Market_Ratio) CountingUnit_Market_Ratio,MAX(A.CountingUnit_Market_Ratio) PDOT_Market_Ratio --因为之前的报告在使用源表的数据,因此命名是反的。
FROM DWS.dws_ims_td_market_ratio A
WHERE A.YM = (SELECT MAX(YM) FROM DWS.dws_ims_td_market_ratio)
GROUP BY A.MARKET,A.PACK_COD
)
--------------------------------------------------------------------CHPA------------------------------------------------------------------
SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.TA,B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'DM Market' THEN 'DM'
WHEN B.MARKET = 'CV Market' THEN 'CV'
WHEN B.MARKET = 'RD Market' THEN 'RD'
WHEN B.MARKET = 'RE Market' THEN 'RE' --WHEN B.MARKET = 'RE Market' THEN 'RE'
WHEN B.MARKET IN ('GI Market','Retail_GI Market') THEN 'GI'
WHEN B.MARKET = 'ONC Market' THEN 'ONCO'
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
END AZ_RELATED
,B.CLASS,NVL(B.VALUE_MARKET_RATIO,1) VALUE_MARKET_RATIO,NVL(B.UNIT_MARKET_RATIO,1) UNIT_MARKET_RATIO,NVL(B.COUNTINGUNIT_MARKET_RATIO,1) COUNTINGUNIT_MARKET_RATIO,NVL(B.PDOT_MARKET_RATIO,1) PDOT_MARKET_RATIO,B.MARKET_DESC,
CASE
WHEN B.MARKET = 'DM Market' THEN 1
WHEN B.MARKET = 'CV Market' THEN 2
WHEN B.MARKET = 'RD Market' THEN 3
WHEN B.MARKET = 'RE Market' THEN 4
WHEN B.MARKET = 'GI Market' THEN 5
WHEN B.MARKET = 'ONC Market' THEN 6
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE
ELSE 99 END TA_RN
,'IQVIA-CHPA(Monthly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,MAX(C.TA) TA,MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,MAX(E.IS_AZ) IS_AZ,MAX(E.AZ_MAIN) AZ_MAIN,MAX(E.AZ_RELATED) AZ_RELATED,MAX(E.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO,max(g.MARKET_DESC) MARKET_DESC
FROM (SELECT PACK_COD,COUNT(*) RUM FROM DM.DM_TF_EXTERNAL_SALES
-- WHERE YYYYMM >= (SELECT CAST((LEFT(MAX(YYYYMM),4)-3)*100+1 AS INT) FROM DM.DM_TF_EXTERNAL_SALES)
-- AND DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
where DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
GROUP BY PACK_COD) A
LEFT JOIN DM.DM_IMS_TD_PACK_PROPERTY B
ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market'
LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C
ON B.MARKET = C.MARKET
LEFT JOIN DM.DM_IMS_TD_PACK_PROPERTY E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET AND B.PACK_COD = D.PACK_COD
LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'IQVIA-CHPA(MONTHLY)'
GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET) B
WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL
UNION ALL
--------------------------------------------------------------------Retail------------------------------------------------------------------
SELECT
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
CASE
when B.MARKET = 'Non AZ Retail Related Market'
and b.TA = 'CV' THEN 'CV Market'
else b.MARKET
end MARKET,
CASE
WHEN B.MARKET = 'RE Market' THEN 'RE'
when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE
WHEN B.MARKET = 'Soliris Related Market' THEN 'RARE'--20250701 chenwu 新增RARE
ELSE b.TA
END TA,
B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'RE Market' THEN 'RE'
when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE
WHEN B.MARKET = 'CVRM_OTHER Market' THEN 'CVRM'
WHEN B.MARKET = 'Soliris Related Market' THEN 'RARE'--20250701 chenwu 新增RARE
ELSE b.TA
END AZ_RELATED,
B.CLASS,
nvl(B.VALUE_MARKET_RATIO, 1),
nvl(B.UNIT_MARKET_RATIO, 1),
nvl(B.UNIT_MARKET_RATIO, 1) COUNTINGUNIT_MARKET_RATIO, --应该取unit的值作为count --,1 COUNTINGUNIT_MARKET_RATIO
nvl(B.PDOT_MARKET_RATIO, 1),
B.MARKET_DESC,
-- CASE WHEN b.TA='DM' THEN 1 WHEN b.TA ='CV' OR B.MARKET='CV Market' THEN 2 WHEN b.TA ='RD' THEN 3 WHEN b.MARKET ='RE Market' OR b.TA ='RE' or b.MARKET = 'Inhaled Extended Market by Brand' THEN 4 WHEN b.TA ='GI' THEN 5 WHEN b.TA ='ONCO' THEN 6
CASE
WHEN b.TA = 'DM' THEN 1
WHEN b.TA = 'CV' OR B.MARKET = 'CV Market' THEN 2
WHEN b.TA = 'RD' THEN 3
WHEN b.MARKET = 'RE Market' THEN 4
WHEN b.TA = 'GI' THEN 5
WHEN b.TA = 'ONCO' THEN 6
WHEN B.MARKET = 'CVRM_OTHER Market' THEN 0
WHEN B.MARKET = 'Soliris Related Market' THEN 8--20250701 chenwu 新增RARE
ELSE 99
END TA_RN,
'Retail(Quarterly)' DATA_SOURCE,
'' as dept_name,
'' as key_dept_name,
'' as new_code,
'' as area
FROM
(
SELECT
a.MARKET_PACK_KEY,
B.iqvia_pack_code PACK_COD,
a.PACK_DES,
a.PROD_DES,
a.PROD_DES_C,
a.MARKET,
MAX(a.TA) TA,
MAX(a.KEY_COMPETITOR) KEY_COMPETITOR,
MAX(a.CLASS) CLASS,
MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,
MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,
MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,
MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO,
max(g.MARKET_DESC) MARKET_DESC
FROM
DM.dm_zk_retail_pack_property a
LEFT JOIN DM.dm_zk_retail_market_property B ON A.iqvia_pack_code = B.iqvia_pack_code
and a.market = b.market
LEFT JOIN dm.dm_zk_retail_market_ratio D ON B.MARKET = D.MARKET
AND B.iqvia_pack_code = D.pack_cod
LEFT JOIN (
SELECT
MARKET,
DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
FROM
DM.DM_TD_EXTERNAL_KEYCOMPATITOR
GROUP BY
MARKET,
DATA_SOURCE
) G ON B.MARKET = G.MARKET
AND UPPER(G.DATA_SOURCE) = 'RETAIL(QUARTERLY)'
WHERE
A.iqvia_pack_code in (
select
distinct iqvia_pack_code
from
dm.dm_zk_retail_sales
)
GROUP BY
a.MARKET_PACK_KEY,
B.iqvia_pack_code,
a.PACK_DES,
a.PROD_DES,
a.PROD_DES_C,
a.MARKET
) b
--------------------------------------------------------DTP--------------------------------------------------------
UNION ALL
SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C
,MARKET
,CASE
WHEN B.TA IS NULL AND MARKET = 'ONC Market'
THEN 'ONCO'
ELSE B.TA END AS TA
,B.KEY_COMPETITOR
,CASE
WHEN B.TA IS NULL AND MARKET = 'ONC Market'
THEN 'ONCO'
ELSE B.TA END AS AZ_RELATED
,B.CLASS
,nvl(B.VALUE_MARKET_RATIO,1)
,nvl(B.UNIT_MARKET_RATIO,1)
,nvl(B.UNIT_MARKET_RATIO,1) COUNTINGUNIT_MARKET_RATIO --应该取unit的值作为count--,1 COUNTINGUNIT_MARKET_RATIO
,nvl(B.PDOT_MARKET_RATIO,1)
,B.MARKET_DESC,
CASE
WHEN B.TA IS NULL AND MARKET = 'ONC Market' THEN 6
WHEN B.TA IS NULL THEN 99
WHEN B.TA ='CVRM' THEN 0
WHEN B.TA ='DM' THEN 1
WHEN B.TA ='CV' THEN 2
WHEN B.TA ='RD' THEN 3
WHEN B.TA ='RE' THEN 4
WHEN B.TA ='GI' THEN 5
WHEN B.TA ='ONCO' THEN 6
WHEN B.TA ='NIAD' THEN 7
WHEN B.TA ='RARE' THEN 8
WHEN B.TA ='NP' THEN 9
ELSE 99 END TA_RN
,'DTP(Quarterly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT a.MARKET_PACK_KEY,a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C
,a.MARKET,max(t3.TA) AS TA,max(t3.TA_ORDER) AS TA_ORDER
,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR,MAX(a.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO,max(g.MARKET_DESC) MARKET_DESC
FROM DM.dm_zk_retail_dtp_pack_property a
LEFT JOIN dm.dm_zk_retail_market_ratio D ON a.MARKET = D.MARKET AND a.iqvia_pack_code = D.pack_cod
LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON a.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'RETAIL(QUARTERLY)'
LEFT JOIN (
select
MARKET,IF(TA = 'ONC' ,'ONCO',TA) AS TA,TA_ORDER
from dwd.dwd_td_ims_market_ta_order
group by 1,2,3) t3 ON a.MARKET = t3.market
WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_dtp_sales)
GROUP BY a.MARKET_PACK_KEY,A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,a.MARKET
) b
--------------------------------------------------------RETAIL all market--------------------------------------------------------
union all
SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C
,'Retail All Market' MARKET ,TA,b.KEY_COMPETITOR,null AZ_RELATED,null CLASS,
1 VALUE_MARKET_RATIO,1 UNIT_MARKET_RATIO,1 COUNTINGUNIT_MARKET_RATIO,1 PDOT_MARKET_RATIO,null MARKET_DESC,null TA_RN
,'Retail(Quarterly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,null TA,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR
FROM DM.dm_zk_retail_pack_property a
WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_sales)
GROUP BY A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C
union
select a.pack_code,nvl(b.pack_des,c.pack_des),nvl(b.PROD_DES,c.PROD_DES),nvl(b.PROD_DES_C,c.PROD_DES_C),null ta,MAX(b.KEY_COMPETITOR) KEY_COMPETITOR
from dm.dm_zk_retail_sales_kpi a
left join dm.dm_zk_retail_pack_property b on a.pack_code =b.iqvia_pack_code
left join (select distinct iqvia_pack_code,pack_des,PROD_DES,PROD_DES_C from dm.dm_zk_retail_pack_property ) c on a.pack_code =c.iqvia_pack_code
where a.pack_code <>''
--排除Others以及null
and NVL(a.pack_code,'Others') <> 'Others'
GROUP BY a.pack_code,nvl(b.pack_des,c.pack_des),nvl(b.PROD_DES,c.PROD_DES),nvl(b.PROD_DES_C,c.PROD_DES_C)
) b
--------------------------------------------------------DTP all market--------------------------------------------------------
union all
SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C
,'DTP ALL Market' MARKET ,TA,b.KEY_COMPETITOR,null AZ_RELATED,null CLASS,
1 VALUE_MARKET_RATIO,1 UNIT_MARKET_RATIO,1 COUNTINGUNIT_MARKET_RATIO,1 PDOT_MARKET_RATIO,null MARKET_DESC,null TA_RN
,'DTP(Quarterly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,null TA,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR
FROM DM.dm_zk_retail_dtp_pack_property a
WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_dtp_sales)
GROUP BY A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C
) B
-- COMMAND ----------
---------------------------------------------------------------------------------
--修改时间20240918
--修改人FanXuJia
--修改内容:
--计算market_ratio\pdot_ratio时之前使用的是现成的dws表但是这个dws表不是外部数据报告的更新频率也不是每天更新。会存在一定的更新时间差。
--因此改成使用dwd层表
-----------------------------------------------------------------------------------
INSERT into dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS,
VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name
,new_code
,area
)
WITH county_brand_ratio as (
SELECT distinct market,
CASE WHEN length(cmps_cod) < 6 THEN RIGHT(CONCAT('000000',cmps_cod),6) ELSE cmps_cod END AS cmps_cod,
cmps_des,
CASE WHEN length(pack_cod) < 12 and pack_cod REGEXP '^[0-9]' THEN RIGHT(CONCAT('000000000000',pack_cod),12) ELSE pack_cod END AS pack_cod,
pack_des,
level,
type,
ratio
from dwd.dwd_gnd_ims_tblBrandRatio
)
,MKT_PACK_RATIO_tmp as (
select t1.market,
t1.PACK_COD,
--优先取pack粒度的ratio
case when t2.ratio is not null then t1.Market_Ratio * t2.ratio
else t1.Market_Ratio * NVL(t3.ratio,1)
end as Value_Market_Ratio,
case when t4.ratio is not null then t1.Market_Ratio * t4.ratio
else t1.Market_Ratio * NVL(t5.ratio,1)
end as Unit_Market_Ratio,
t1.Market_Ratio as CountingUnit_Market_Ratio,
case when t6.ratio is not null then t1.Market_Ratio * t6.ratio
else t1.Market_Ratio * NVL(t7.ratio,1)
end as PDOT_Market_Ratio
from DWS.dws_ims_td_market t1
--value by Pack
left join (select * from county_brand_ratio where UPPER(TYPE) = 'VALUE' and UPPER(Level) = 'PACK') t2
on t1.MARKET = t2.market
and t1.PACK_COD = t2.pack_cod
--value by MOLECULE
LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'VALUE' and UPPER(Level) = 'MOLECULE') t3
on t1.MARKET = t3.market
and t1.CMPS_COD = t3.cmps_cod
--unit by Pack
left join (select * from county_brand_ratio where UPPER(TYPE) = 'UNIT' and UPPER(Level) = 'PACK') t4
on t1.MARKET = t4.market
and t1.PACK_COD = t4.pack_cod
--unit by MOLECULE
LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'UNIT' and UPPER(Level) = 'MOLECULE') t5
on t1.MARKET = t5.market
and t1.CMPS_COD = t5.cmps_cod
--PDOT by Pack
left join (select * from county_brand_ratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK') t6
on t1.MARKET = t6.market
and t1.PACK_COD = t6.pack_cod
--PDOT by MOLECULE
LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE') t7
on t1.MARKET = t7.market
and t1.CMPS_COD = t7.cmps_cod
)
,MKT_PACK_RATIO as (
select market,
PACK_COD,
max(Value_Market_Ratio) as Value_Market_Ratio,
max(Unit_Market_Ratio) as Unit_Market_Ratio,
max(CountingUnit_Market_Ratio) as CountingUnit_Market_Ratio,
max(PDOT_Market_Ratio) as PDOT_Market_Ratio
FROM MKT_PACK_RATIO_tmp
GROUP BY market,PACK_COD
)
SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.TA,B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'DM Market' THEN 'DM'
WHEN B.MARKET = 'CV Market' THEN 'CV'
WHEN B.MARKET = 'RD Market' THEN 'RD'
WHEN B.MARKET = 'RE Market' THEN 'RE'
WHEN B.MARKET = 'GI Market' THEN 'GI'
WHEN B.MARKET = 'ONC Market' THEN 'ONCO'
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
END AZ_RELATED
,B.CLASS,nvl(CAST(B.VALUE_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.UNIT_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.COUNTINGUNIT_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.PDOT_MARKET_RATIO AS decimal(20,16)),1),B.MARKET_DESC,
CASE
WHEN B.MARKET = 'DM Market' THEN 1
WHEN B.MARKET = 'CV Market' THEN 2
WHEN B.MARKET = 'RD Market' THEN 3
WHEN B.MARKET = 'RE Market' THEN 4
WHEN B.MARKET = 'GI Market' THEN 5
WHEN B.MARKET = 'ONC Market' THEN 6
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN B.MARKET = 'RARE Market' THEN 8--20250701 chenwu 新增RARE
ELSE 99 END TA_RN,'IQVIA-COUNTY(Quarterly)' DATA_SOURCE,'' as dept_name,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,MAX(C.TA) TA,MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,MAX(E.IS_AZ) IS_AZ,MAX(E.AZ_MAIN) AZ_MAIN,MAX(E.AZ_RELATED) AZ_RELATED,MAX(E.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO,MAX(G.MARKET_DESC) MARKET_DESC
FROM (SELECT PACK_COD,COUNT(*) RUM FROM DM.DM_TF_EXTERNAL_SALES
-- WHERE YYYYMM >= (SELECT CAST((LEFT(MAX(YYYYMM),4)-3)*100+1 AS INT) FROM DM.DM_TF_EXTERNAL_SALES)
-- AND DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)'
where DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)'
GROUP BY PACK_COD) A
LEFT JOIN dm.dm_ext_county_td_pack_property B
ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market'
LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C
ON B.MARKET = C.MARKET
LEFT JOIN DM.dm_ext_county_td_pack_property E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET AND B.PACK_COD = D.PACK_COD
LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'IQVIA-COUNTY(QUARTERLY)'
WHERE A.PACK_COD IS NOT NULL
GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET) B
WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL
-- COMMAND ----------
delete from dm.dm_td_external_market_pack_mapping_temp where DATA_SOURCE = 'THC(Quarterly)'
-- COMMAND ----------
-----------------------------------------------THC---------------------------------------------------------------------------------------------------------
with exchc_rawdata_temp as ( --主表数据
select
temp.yq,
pack_property.iqvia_pack_code as pack_cod
from (
select
CASE
WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03')
WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06')
WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09')
WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12')
ELSE yq
END AS yq,
pack_cod
from dwd.dwd_gnd_ext_thc_rawdata
) temp
LEFT JOIN dwd.dwd_gnd_ext_thc_pack_property pack_property
ON temp.pack_cod = pack_property.pack_cod
),
A as(
SELECT
PACK_COD,
COUNT(*) RUM
FROM exchc_rawdata_temp
-- WHERE yq >= (SELECT CAST((LEFT(MAX(yq),4)-3)*100+1 AS INT) FROM exchc_rawdata_temp)
GROUP BY PACK_COD
)
insert into table dm.dm_td_external_market_pack_mapping_temp
(
PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS,
VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name
,new_code
,area
)
SELECT
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
B.TA,
B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'DM Market' THEN 'DM'
WHEN B.MARKET = 'CV Market' THEN 'CV'
WHEN B.MARKET = 'RD Market' THEN 'RD'
WHEN B.MARKET = 'RE Market' THEN 'RE'
WHEN B.MARKET = 'GI Market' THEN 'GI'
WHEN B.MARKET = 'ONC Market' THEN 'ONCO'
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
END AZ_RELATED,
B.Class,
cast (B.VALUE_MARKET_RATIO as double),
cast (B.UNIT_MARKET_RATIO as double),
cast (B.COUNTINGUNIT_MARKET_RATIO as double),
cast (B.PDOT_MARKET_RATIO as double),
B.MARKET_DESC,
CASE
WHEN B.MARKET = 'DM Market' THEN 1
WHEN B.MARKET = 'CV Market' THEN 2
WHEN B.MARKET = 'RD Market' THEN 3
WHEN B.MARKET = 'RE Market' THEN 4
WHEN B.MARKET = 'GI Market' THEN 5
WHEN B.MARKET = 'ONC Market' THEN 6
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN B.MARKET = 'RARE Market' THEN 8--20250701 chenwu 新增RARE
ELSE 99
END TA_RN,
'THC(Quarterly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT
B.MARKET_PACK_KEY,
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
nvl(MAX(C.TA),'') as TA,
MAX(E.KEY_COMPETITOR) as KEY_COMPETITOR,
NULL IS_AZ,
NULL AZ_MAIN,
NULL AZ_Related,
nvl(MAX(E.CLASS),'') CLASS,
MAX(nvl(B.Market_Ratio,1)) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales
MAX(nvl(B.Market_Ratio,1) ) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT
MAX(nvl(B.Market_Ratio,1)) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU
MAX(nvl(B.Market_Ratio,1) * nvl(D.Ratio,1)) as PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT
max(g.MARKET_DESC) MARKET_DESC
FROM A
LEFT JOIN dm.dm_thc_pack_property B -- 以A表 pack_code 为准 获取需要的维度信息
ON B.PACK_COD = A.PACK_COD
LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -- THC没有TA字段关联CHC的相关表获取TA
ON B.MARKET = C.MARKET
LEFT JOIN dm.dm_thc_pack_property E -- MARKET_PACK_KEY 为唯一主键获取KEY_COMPETITORclass等信息
ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
LEFT JOIN( --转码 补0
select
MARKET,
b.iqvia_pack_code as pack_cod,
ratio
from dwd.dwd_gnd_ext_thc_brandratio a
inner join dwd.dwd_gnd_ext_thc_pack_property b
on (case when length(a.pack_cod) < 12 and a.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',a.pack_cod),12) else a.pack_cod end )
=(case when length(b.pack_cod) < 12 and b.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',b.pack_cod),12) else b.pack_cod end )
) D
ON B.MARKET = D.MARKET
AND B.PACK_COD = D.PACK_COD
LEFT JOIN ( --获取 MARKET_DESC 字段
SELECT
MARKET,DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR
GROUP BY MARKET,DATA_SOURCE
) G
ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'THC(QUARTERLY)'
GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET
) B
WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL
-- COMMAND ----------
-----------------------------------------------CHC----------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------------------
with exchc_rawdata_temp as ( --主表数据
select
temp.yq,
pack_property.iqvia_pack_code as pack_cod
from (
select
CASE
WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03')
WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06')
WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09')
WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12')
ELSE yq
END AS yq,
pack_cod
from dwd.dwd_gnd_chc_rawdata
) temp
LEFT JOIN dwd.dwd_gnd_ext_chc_pack_property pack_property
ON temp.pack_cod = pack_property.pack_cod
),
A as(
SELECT
PACK_COD,
COUNT(*) RUM
FROM exchc_rawdata_temp
-- WHERE yq >= (SELECT CAST((LEFT(MAX(yq),4)-3)*100+1 AS INT) FROM exchc_rawdata_temp)
GROUP BY PACK_COD
)
insert into table dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS,
VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name
,new_code
,area
)
SELECT
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
B.TA,
B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'DM Market' THEN 'DM'
WHEN B.MARKET = 'CV Market' THEN 'CV'
-- WHEN B.MARKET = 'RD Market' THEN 'RD' --RD隐藏
when B.MARKET = 'RE Market' THEN 'RE' --RE改为Respules Market
WHEN B.MARKET = 'GI Market' THEN 'GI'
WHEN B.MARKET = 'ONC Market' THEN 'ONCO'
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
END AZ_RELATED,
B.Class,
cast (B.VALUE_MARKET_RATIO as double),
cast (B.UNIT_MARKET_RATIO as double),
cast (B.COUNTINGUNIT_MARKET_RATIO as double),
cast (B.PDOT_MARKET_RATIO as double),
B.MARKET_DESC,
CASE
WHEN B.MARKET = 'DM Market' THEN 1
WHEN B.MARKET = 'CV Market' THEN 2
-- WHEN B.MARKET = 'RD Market' THEN 3
WHEN B.MARKET = 'RE Market' THEN 4
WHEN B.MARKET = 'GI Market' THEN 5
WHEN B.MARKET = 'ONC Market' THEN 6
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE
ELSE 99
END TA_RN,
'CHC(Quarterly)' DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
FROM (
SELECT
B.MARKET_PACK_KEY,
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
nvl(MAX(C.TA) ,'') TA,
-- null as TA,
MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,
--MAX(B.KEY_COMPETITOR) KEY_COMPETITOR,
--MAX(E.IS_AZ) IS_AZ,
--MAX(E.AZ_MAIN) AZ_MAIN,
--MAX(E.AZ_RELATED) AZ_RELATED,
NULL as IS_AZ,
NULL as AZ_MAIN,
NULL as AZ_Related,
nvl (MAX(E.CLASS) ,'' ) CLASS,
MAX(nvl(B.Market_Ratio,1)) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales
MAX(nvl(B.Market_Ratio,1)) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT
MAX(nvl(B.Market_Ratio,1)) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU
MAX(nvl(B.Market_Ratio,1) * nvl(D.Ratio,1)) PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT
max(G.MARKET_DESC) as MARKET_DESC
FROM A
LEFT JOIN dm.dm_chc_pack_property B -- 以A表 pack_code 为准 获取需要的维度信息
ON B.PACK_COD = A.PACK_COD
LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -- THC没有TA字段关联CHPA的相关表获取TA
ON B.MARKET = C.MARKET
LEFT JOIN dm.dm_chc_pack_property E --MARKET_PACK_KEY 为唯一主键获取KEY_COMPETITORclass等信息
ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
LEFT JOIN( -- 获取RATIO 其中chc_brandratio没有补0和转码的操作这里处理
select
MARKET,
b.iqvia_pack_code as pack_cod,
ratio
from dwd.dwd_gnd_ext_chc_brandratio a
inner join dwd.dwd_gnd_ext_chc_pack_property b
on (case when length(a.pack_cod) < 12 and a.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',a.pack_cod),12) else a.pack_cod end )
=(case when length(b.pack_cod) < 12 and b.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',b.pack_cod),12) else b.pack_cod end )
) D
ON B.MARKET = D.MARKET
AND B.PACK_COD = D.PACK_COD
LEFT JOIN ( --获取 MARKET_DESC 字段
SELECT
MARKET,DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR
GROUP BY MARKET,DATA_SOURCE
) G
ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'CHC(QUARTERLY)'
GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET
) B
WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL
and market!='RD Market'
-- COMMAND ----------
/*
修改人chenwu
修改时间20250319
修改内容: EC的数据源cu恒等于1
*/
-----------------------------------------------------------ec-----------------------------------------------------------
INSERT into dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS,
VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name
,new_code
,area
)
SELECT
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
CASE
WHEN B.MARKET = 'RE Market' THEN 'RE'
when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE
ELSE B.TA
END TA,
B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'RE Market' THEN 'RE'
WHEN B.TA = 'RE' THEN NULL
ELSE B.TA
END AZ_RELATED,
B.CLASS,
nvl(B.VALUE_MARKET_RATIO, 1),
nvl(B.UNIT_MARKET_RATIO, 1),
1,
--nvl(B.COUNTINGUNIT_MARKET_RATIO,1), --ec的数据源cu恒等于1
nvl(B.PDOT_MARKET_RATIO, 1),
B.MARKET_DESC,
CASE
WHEN b.TA = 'DM' THEN 1
WHEN b.TA = 'CV' THEN 2
WHEN b.TA = 'RE' THEN 4
WHEN b.TA = 'GI' THEN 5
WHEN B.TA = 'CVRM' THEN 0
ELSE 99
END TA_RN,
'EC(Monthly)' DATA_SOURCE,
'' as dept_name,
'' as key_dept_name,
'' as new_code,
'' as area
FROM
(
SELECT
a.MARKET_PACK_KEY,
B.iqvia_pack_code PACK_COD,
a.PACK_DES,
a.PROD_DES,
a.PROD_DES_C,
a.MARKET,
MAX(a.TA) TA,
MAX(a.KEY_COMPETITOR) KEY_COMPETITOR,
MAX(a.CLASS) CLASS,
MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,
MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,
MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,
MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO,
max(g.MARKET_DESC) MARKET_DESC
FROM
DM.dm_zk_ec_pack_property a
LEFT JOIN DM.dm_zk_ec_market_property B ON A.iqvia_pack_code = B.iqvia_pack_code
and a.market = b.market
LEFT JOIN dm.dm_zk_ec_market_ratio D ON B.MARKET = D.MARKET
AND B.iqvia_pack_code = D.PACK_COD
LEFT JOIN (
SELECT
MARKET,
DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
FROM
DM.DM_TD_EXTERNAL_KEYCOMPATITOR
GROUP BY
MARKET,
DATA_SOURCE
) G ON B.MARKET = G.MARKET
AND UPPER(G.DATA_SOURCE) = 'EC(MONTHLY)'
WHERE
A.iqvia_pack_code in (
select
distinct iqvia_pack_code
from
dm.dm_zk_ec_sales
)
GROUP BY
a.MARKET_PACK_KEY,
B.iqvia_pack_code,
a.PACK_DES,
a.PROD_DES,
a.PROD_DES_C,
a.MARKET
) b
-- COMMAND ----------
-----------------------------------------------AIA----------------------------------------------------------------------------------
WITH AIA_brand_ratio as (
SELECT distinct market,
CASE WHEN length(cmps_cod) < 6 THEN RIGHT(CONCAT('000000',cmps_cod),6) ELSE cmps_cod END AS cmps_cod,
cmps_des,
CASE WHEN length(pack_cod) < 12 and pack_cod REGEXP '^[0-9]' THEN RIGHT(CONCAT('000000000000',pack_cod),12) ELSE pack_cod END AS pack_cod,
pack_des,
level,
type,
ratio
from dwd.dwd_gnd_ims_tblBrandRatio
)
,AIA_RATIO as (
select t1.PACK_COD,
t1.MARKET,
case when t6.ratio is not null then t1.market_ratio * t6.ratio
else t1.market_ratio * NVL(t7.ratio,1)
end as VALUE_MARKET_RATIO,
case when t2.ratio is not null then t1.market_ratio * t2.ratio
else t1.market_ratio * NVL(t3.ratio,1)
end as UNIT_MARKET_RATIO,
t1.market_ratio as COUNTINGUNIT_MARKET_RATIO,
case when t4.ratio is not null then t1.market_ratio * t4.ratio
else t1.market_ratio * NVL(t5.ratio,1)
end as PDOT_MARKET_RATIO
from dm.dm_aia_pack_property t1
--unit by Pack
left join (select * from AIA_brand_ratio where upper(type) = 'UNIT' and upper(Level) = 'PACK') t2
on t1.PACK_COD = t2.pack_cod
and t1.MARKET = t2.market
--unit by MOLECULE
left join (select * from AIA_brand_ratio where upper(type) = 'UNIT' and upper(Level) = 'MOLECULE') t3
on t1.CMPS_COD = t3.cmps_cod
and t1.MARKET = t3.market
--PDOT by Pack
left join (select * from AIA_brand_ratio where upper(type) = 'COUNTINGUNIT' and upper(Level) = 'PACK') t4
on t1.PACK_COD = t4.pack_cod
and t1.MARKET = t4.market
--PDOT by MOLECULE
left join (select * from AIA_brand_ratio where upper(type) = 'COUNTINGUNIT' and upper(Level) = 'MOLECULE') t5
on t1.CMPS_COD = t5.cmps_cod
and t1.MARKET = t5.market
--VALUE by Pack
left join (select * from AIA_brand_ratio where upper(type) = 'VALUE' and upper(Level) = 'PACK') t6
on t1.PACK_COD = t6.pack_cod
and t1.MARKET = t6.market
--VALUE by MOLECULE
left join (select * from AIA_brand_ratio where upper(type) = 'VALUE' and upper(Level) = 'MOLECULE') t7
on t1.CMPS_COD = t7.cmps_cod
and t1.MARKET = t7.market
)
,MARKET_PACK_MAPPING_1 as (
select
B.MARKET_PACK_KEY,
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET as MARKET_AIA,
--AIA有一部分market有通过手工表AIA_IMS_Market_Mapping更新过名称
--使用旧的从CHPA里来的名称关联
B.MARKET_CHPA,
nvl(MAX(C.TA),'') as TA,
MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,
NULL as IS_AZ,
NULL as AZ_MAIN,
NULL as AZ_Related,
nvl(MAX(E.CLASS),'') as CLASS,
MAX(t1.VALUE_MARKET_RATIO) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales
MAX(t1.UNIT_MARKET_RATIO) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT
MAX(t1.COUNTINGUNIT_MARKET_RATIO) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU
MAX(t1.PDOT_MARKET_RATIO) as PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT
max(G.MARKET_DESC) as MARKET_DESC
from (
SELECT
PACK_COD,
COUNT(*) RUM
FROM DM.DM_TF_EXTERNAL_SALES
WHERE DATA_SOURCE = 'AIA(Monthly)'
GROUP BY PACK_COD
) A
left join dm.dm_aia_pack_property B
on A.PACK_COD = B.PACK_COD
left join DM.DM_IMS_TD_MARKET_PROPERTY C
--AIA有一部分market有通过手工表AIA_IMS_Market_Mapping更新过名称
--使用旧的从CHPA里来的名称关联
on B.MARKET_CHPA = C.MARKET
left join dm.dm_aia_pack_property E
on B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
left join AIA_RATIO t1
on B.PACK_COD = t1.PACK_COD
and B.MARKET = t1.MARKET
left join (
select MARKET,DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
from DM.DM_TD_EXTERNAL_KEYCOMPATITOR
group by market,DATA_SOURCE
) G
--竞品配置信息表里使用的AIA的市场名称因此使用AIA市场名关联
on B.MARKET = G.MARKET and upper(G.DATA_SOURCE) = 'AIA(Monthly)'
group by B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.MARKET_CHPA
)
insert into table dm.dm_td_external_market_pack_mapping_temp (
PACK_COD,
PACK_DES,
PROD_DES,
PROD_DES_C,
MARKET,
TA,
KEY_COMPETITOR,
AZ_RELATED,
CLASS,
VALUE_MARKET_RATIO,
UNIT_MARKET_RATIO,
COUNTINGUNIT_MARKET_RATIO,
PDOT_MARKET_RATIO,
MARKET_DESC,
TA_RN,
DATA_SOURCE,
dept_name,
key_dept_name,
new_code,
area
)
select
PACK_COD,
PACK_DES,
PROD_DES,
PROD_DES_C,
MARKET_AIA as MARKET,
TA,
KEY_COMPETITOR,
case when MARKET_CHPA = 'DM Market' THEN 'DM'
when MARKET_CHPA = 'CV Market' THEN 'CV'
when MARKET_CHPA = 'RD Market' THEN 'RD'
when MARKET_CHPA = 'RE Market' THEN 'RE'
when MARKET_CHPA = 'GI Market' THEN 'GI'
when MARKET_CHPA = 'ONC Market' THEN 'ONCO'
when MARKET_CHPA = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN MARKET_CHPA = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
end as AZ_RELATED,
Class,
cast(VALUE_MARKET_RATIO as double) as VALUE_MARKET_RATIO,
cast(UNIT_MARKET_RATIO as double) as UNIT_MARKET_RATIO,
cast(COUNTINGUNIT_MARKET_RATIO as double) as COUNTINGUNIT_MARKET_RATIO,
cast(PDOT_MARKET_RATIO as double) as PDOT_MARKET_RATIO,
MARKET_DESC,
case when MARKET_CHPA = 'DM Market' THEN 1
when MARKET_CHPA = 'CV Market' THEN 2
when MARKET_CHPA = 'RD Market' THEN 3
when MARKET_CHPA = 'RE Market' THEN 4
when MARKET_CHPA = 'GI Market' THEN 5
when MARKET_CHPA = 'ONC Market' THEN 6
when MARKET_CHPA = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN MARKET_CHPA = 'RARE Market' THEN 8--20250701 chenwu 新增RARE
else 99
end as TA_RN,
'AIA(Monthly)' as DATA_SOURCE
,'' as dept_name
,'' as key_dept_name
,'' as new_code
,'' as area
from MARKET_PACK_MAPPING_1
where PACK_COD IS NOT NULL
and MARKET_AIA IS NOT NULL
-- COMMAND ----------
INSERT into table dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,
PACK_DES,
PROD_DES,
PROD_DES_C,
MARKET,
TA,
KEY_COMPETITOR,
AZ_RELATED,
CLASS,
VALUE_MARKET_RATIO,
UNIT_MARKET_RATIO,
COUNTINGUNIT_MARKET_RATIO,
PDOT_MARKET_RATIO,
MARKET_DESC,
TA_RN,
DATA_SOURCE,
dept_name,
key_dept_name,
new_code,
area
)
WITH MKT_PACK_RATIO AS (
-------------------------------------根据沟通,市场+产品对应的ratio是唯一的------------------------------------------
SELECT
A.MARKET,
A.PACK_COD,
MAX(A.Value_Market_Ratio) Value_Market_Ratio,
MAX(A.Unit_Market_Ratio) Unit_Market_Ratio,
MAX(A.PDOT_Market_Ratio) CountingUnit_Market_Ratio,
MAX(A.CountingUnit_Market_Ratio) PDOT_Market_Ratio --因为之前的报告在使用源表的数据,因此命名是反的。
FROM
DWS.dws_ims_td_market_ratio A
WHERE
A.YM = (
SELECT
MAX(YM)
FROM
DWS.dws_ims_td_market_ratio
)
GROUP BY
A.MARKET,
A.PACK_COD
)
------------------------------------------------------------------xiehe------------------------------------------------------------------
SELECT
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
B.TA,
B.KEY_COMPETITOR,
CASE
WHEN B.MARKET = 'DM Market' THEN 'DM'
WHEN B.MARKET = 'CV Market' THEN 'CV'
WHEN B.MARKET = 'RD Market' THEN 'RD'
WHEN B.MARKET = 'RE Market' THEN 'RE'
WHEN B.MARKET IN ('GI Market', 'Retail_GI Market') THEN 'GI'
WHEN B.MARKET = 'ONC Market' THEN 'ONCO'
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD'
WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE
END AZ_RELATED,
B.CLASS,
NVL(B.VALUE_MARKET_RATIO, 1) VALUE_MARKET_RATIO,
NVL(B.UNIT_MARKET_RATIO, 1) UNIT_MARKET_RATIO,
NVL(B.COUNTINGUNIT_MARKET_RATIO, 1) COUNTINGUNIT_MARKET_RATIO,
NVL(B.PDOT_MARKET_RATIO, 1) PDOT_MARKET_RATIO,
B.MARKET_DESC,
CASE
WHEN B.MARKET = 'DM Market' THEN 1
WHEN B.MARKET = 'CV Market' THEN 2
WHEN B.MARKET = 'RD Market' THEN 3
WHEN B.MARKET = 'RE Market' THEN 4
WHEN B.MARKET = 'GI Market' THEN 5
WHEN B.MARKET = 'ONC Market' THEN 6
WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7
WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE
ELSE 99
END TA_RN,
'XH Data(Quarterly)' DATA_SOURCE,
B.dept_name,
B.key_dept_name,
B.new_code,
B.area
FROM
(
SELECT
B.MARKET_PACK_KEY,
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
NVL(H.dept_name,'') dept_name,
NVL(t1.CORE_DEPT,'Others') as key_dept_name,
NVL(H.new_code,'') new_code,
NVL(H.area,'') area,
MAX(C.TA) TA,
MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,
MAX(E.IS_AZ) IS_AZ,
MAX(E.AZ_MAIN) AZ_MAIN,
MAX(E.AZ_RELATED) AZ_RELATED,
MAX(E.CLASS) CLASS,
MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,
MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,
MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,
MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO,
max(g.MARKET_DESC) MARKET_DESC
FROM
(
SELECT
PACK_COD,
COUNT(*) RUM
FROM
DM.DM_TF_EXTERNAL_SALES
WHERE DATA_SOURCE = 'XH Data(Quarterly)'
GROUP BY
PACK_COD
) A
LEFT JOIN dm.dm_xiehe_pack_property B ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market'
LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C ON B.MARKET = C.MARKET
LEFT JOIN dm.dm_xiehe_pack_property E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY
LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET
AND B.PACK_COD = D.PACK_COD
LEFT JOIN (
SELECT
MARKET,DATA_SOURCE,
MAX(MARKETDESC) MARKET_DESC
FROM
DM.DM_TD_EXTERNAL_KEYCOMPATITOR
GROUP BY
MARKET,DATA_SOURCE
) G ON B.MARKET = G.MARKET and G.DATA_SOURCE = 'XH Data(Quarterly)'
left join (
SELECT distinct PACK_COD,dept_name,new_code,area
from dm.dm_td_external_packinfo_temp2
where DATA_SOURCE = 'XH Data(Quarterly)'
) H
on A.PACK_COD = H.PACK_COD
left join dm.dm_td_xiehe_core_dept t1
on B.MARKET = t1.MARKET
AND H.dept_name = t1.Dept_NAME
GROUP BY
B.MARKET_PACK_KEY,
B.PACK_COD,
B.PACK_DES,
B.PROD_DES,
B.PROD_DES_C,
B.MARKET,
H.dept_name,
H.new_code,
H.area,
t1.CORE_DEPT
) B
WHERE
B.PACK_COD IS NOT NULL
AND B.MARKET IS NOT NULL
-- COMMAND ----------
--修改时间20240808
--修改人FanXuJia
--修改背景:
--事实表与维度表来自于不同手工表目前存在一部分pack_cod在事实表有销量但是在维度表没有这个pack_cod导致销量缺失。
--因此需要从事实表补全这部分pack_cod
with tmp_market_pack as (
select distinct
t1.PACK_COD,
CASE WHEN t1.DATA_SOURCE = 'CHC(Quarterly)' then 'CHC ALL Market'
WHEN t1.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' then 'IMS ALL Market'
WHEN t1.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' then 'IMS ALL Market'
WHEN t1.DATA_SOURCE = 'Retail(Quarterly)' then 'Retail All Market'
WHEN t1.DATA_SOURCE = 'THC(Quarterly)' then 'THC ALL Market'
WHEN t1.DATA_SOURCE = 'EC(Monthly)' then 'EC ALL Market'
WHEN t1.DATA_SOURCE = 'AIA(Monthly)' then 'NON Market'
WHEN t1.DATA_SOURCE = 'XH Data(Quarterly)' then 'XIEHE ALL Market'
WHEN t1.DATA_SOURCE = 'DTP(Quarterly)' then 'DTP ALL Market'
end as market,
t1.DATA_SOURCE
from external_sales_union t1
left join dm.dm_td_external_market_pack_mapping_temp t2
on t1.PACK_COD = t2.PACK_COD
and t1.DATA_SOURCE = t2.DATA_SOURCE
where t2.PACK_COD is null
)
,tmp_packinfo as (
select
PACK_COD,
new_code,
area,
dept_name,
DATA_SOURCE,
max(PACK_DES) as PACK_DES,
max(PROD_DES) as PROD_DES,
max(PROD_DES_C) as PROD_DES_C
from dm.dm_td_external_packinfo_temp2
group by PACK_COD,DATA_SOURCE,dept_name,new_code,area
)
INSERT into table dm.dm_td_external_market_pack_mapping_temp(
PACK_COD,
PACK_DES,
PROD_DES,
PROD_DES_C,
MARKET,
TA,
KEY_COMPETITOR,
AZ_RELATED,
CLASS,
VALUE_MARKET_RATIO,
UNIT_MARKET_RATIO,
COUNTINGUNIT_MARKET_RATIO,
PDOT_MARKET_RATIO,
MARKET_DESC,
TA_RN,
DATA_SOURCE,
dept_name,
key_dept_name,
new_code,
area
)
select
t1.PACK_COD,
t2.PACK_DES,
t2.PROD_DES,
t2.PROD_DES_C,
t1.MARKET,
null as TA,
null as KEY_COMPETITOR,
null as AZ_RELATED,
null as CLASS,
1 as VALUE_MARKET_RATIO,
1 as UNIT_MARKET_RATIO,
1 as COUNTINGUNIT_MARKET_RATIO,
1 as PDOT_MARKET_RATIO,
null as MARKET_DESC,
null as TA_RN,
t1.DATA_SOURCE,
t2.dept_name,
NVL(t3.CORE_DEPT,'Others') as key_dept_name,
t2.new_code,
t2.area
from tmp_market_pack t1
left join tmp_packinfo t2
on t1.PACK_COD = t2.PACK_COD
and t1.DATA_SOURCE = t2.DATA_SOURCE
left join dm.dm_td_xiehe_core_dept t3
on t1.MARKET = t3.MARKET
AND t2.dept_name = t3.Dept_NAME
-- COMMAND ----------
-----------------------------------------------------------
--修改时间20241118
--修改人Fanxujia
--修改内容:
--使用手工文件排除掉每个渠道的不需要显示的市场不再Hardcoding
-----------------------------------------------------------
-- ----------------------------------------------------------------------------
-- --修改时间20240813
-- --修改人FanXujia
-- --修改内容CHC_AZ related TA ALL这个市场只在CHC中显示其他渠道排除这个市场Hard Coding
-- ----------------------------------------------------------------------------
-- delete from dm.dm_td_external_market_pack_mapping_temp
-- where upper(MARKET) = 'CHC_AZ RELATED TA ALL'
-- and data_source <> 'CHC(Quarterly)'
-- COMMAND ----------
-----------------------------------------------------------
--修改时间20241118
--修改人Fanxujia
--修改内容:
--使用手工文件排除掉每个渠道的不需要显示的市场
-----------------------------------------------------------
with hidden_market as (
select distinct
case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)'
when upper(data_source) = '科室市场' then 'XH Data(Quarterly)'
when upper(data_source) = 'EC' then 'EC(Monthly)'
when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)'
when upper(data_source) = 'CHC' then 'CHC(Quarterly)'
when upper(data_source) = 'AIA' then 'AIA(Monthly)'
when upper(data_source) = 'THC' then 'THC(Quarterly)'
when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)'
else data_source
end as data_source,
upper(hidden_market) as hidden_market
from dwd.dwd_gnd_ims_hidden_market
union all
select
'AIA(Monthly)' as data_source,
'AIA ALL Market'
)
MERGE into dm.dm_td_external_market_pack_mapping_temp as t1
USING hidden_market t2
on t1.data_source = t2.data_source
and upper(t1.MARKET) = upper(t2.hidden_market)
WHEN MATCHED THEN
DELETE
-- COMMAND ----------
--------------------------------------------------------------------------------
--修改时间20241025
--修改人Fanxujia
--修改内容:
--外部数据报告优化将PBI的逻辑搬到DBR
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--修改时间20241209
--修改人Fanxujia
--修改内容:
--新增Key Competitor CN从packinfo表里关联出中文名关联不到的保留英文名
--------------------------------------------------------------------------------
with mapping as (
select distinct PROD_DES,PROD_DES_C
from dm.dm_td_external_packinfo
)
,market_pack_mapping_1 as (
SELECT
PACK_COD,
max(PROD_DES) PROD_DES,
max(PROD_DES_C) PROD_DES_C,
MARKET,
----------------------------------------------------------------------------------
--修改时间20241217
--修改人Fanxujia
--修改内容:
--取不到Class时不再显示成中划线-改成Others
----------------------------------------------------------------------------------
CASE
-- WHEN NVL(max(CLASS), '') = '' OR max(CLASS) = 'Others' THEN '-'
WHEN NVL(max(CLASS), '') = '' THEN 'Others'
ELSE UPPER(max(CLASS))
END CLASS,
CAST(max(VALUE_MARKET_RATIO) AS DECIMAL(38, 20)) VALUE_MARKET_RATIO,
CAST(max(UNIT_MARKET_RATIO) AS DECIMAL(38, 20)) UNIT_MARKET_RATIO,
CAST(max(COUNTINGUNIT_MARKET_RATIO) AS DECIMAL(38, 20)) COUNTINGUNIT_MARKET_RATIO,
CAST(max(PDOT_MARKET_RATIO) AS DECIMAL(38, 20)) PDOT_MARKET_RATIO,
DATA_SOURCE,
case when max(KEY_COMPETITOR) is null or max(KEY_COMPETITOR) = '' then 'Others'
else max(KEY_COMPETITOR)
end as KEY_COMPETITOR,
NEW_CODE
FROM DM.dm_td_external_market_pack_mapping_temp
group by PACK_COD,NEW_CODE,DATA_SOURCE,MARKET
)
, mapping_match_key_competitor_with_mutil as (
select
t3.PACK_COD,
t3.PROD_DES,
t3.PROD_DES_C,
t3.MARKET,
t3.CLASS,
t3.VALUE_MARKET_RATIO,
t3.UNIT_MARKET_RATIO,
t3.COUNTINGUNIT_MARKET_RATIO,
t3.PDOT_MARKET_RATIO,
t3.DATA_SOURCE,
case WHEN t3.KEY_COMPETITOR ='Others' and (UPPER(t2.keycompetitor) is not null or UPPER(t2.keycompetitor) <>'')
THEN upper(t2.keycompetitor) ELSE t3.KEY_COMPETITOR
end as KEY_COMPETITOR,
t3.NEW_CODE
,t2.no1
from market_pack_mapping_1 t3
left join dm.dm_td_external_packinfo t1
on t1.PACK_COD = t3.PACK_COD and t1.DATA_SOURCE = t3.DATA_SOURCE
left JOIN (SELECT ROW_NUMBER() OVER(ORDER BY
CASE
WHEN ATC1_Code IS NOT NULL THEN 1
WHEN ATC2_Code IS NOT NULL THEN 2
WHEN ATC3_Code IS NOT NULL THEN 3
WHEN ATC4_Code IS NOT NULL THEN 4
WHEN Molecule_Code IS NOT NULL THEN 5
WHEN Product_Code IS NOT NULL THEN 6
WHEN Pack_Code IS NOT NULL THEN 7
ELSE 999 END,
CASE WHEN NFC1_CODE IS NULL THEN 0 ELSE 1 END,
CASE WHEN NFC2_CODE IS NULL THEN 0 ELSE 1 END,
CASE WHEN NFC2_CODE IS NULL THEN 0 ELSE 1 END,
CASE WHEN NFC3_CODE IS NULL THEN 0 ELSE 1 END
) AS no1,* FROM dwd.dwd_gnd_ims_tblkeycompetitor)t2
on
COALESCE(t1.ATC1_COD,'') = case when t2.ATC1_Code is null then COALESCE(t1.ATC1_COD,'') else t2.ATC1_Code end
and COALESCE(t1.ATC2_COD,'') = case when t2.ATC2_Code is null then COALESCE(t1.ATC2_COD,'') else t2.ATC2_Code end
and COALESCE(t1.ATC3_COD,'') = case when t2.ATC3_Code is null then COALESCE(t1.ATC3_COD,'') else t2.ATC3_Code end
and COALESCE(t1.ATC4_COD,'') = case when t2.ATC4_Code is null then COALESCE(t1.ATC4_COD,'') else t2.ATC4_Code end
and COALESCE(t1.APP1_COD,'') = case when t2.NFC1_Code is null then COALESCE(t1.APP1_COD,'') else t2.NFC1_Code end
and COALESCE(t1.APP2_COD,'') = case when t2.NFC2_Code is null then COALESCE(t1.APP2_COD,'') else t2.NFC2_Code end
and COALESCE(t1.APP3_COD,'') = case when t2.NFC3_Code is null then COALESCE(t1.APP3_COD,'') else t2.NFC3_Code end
and COALESCE(t1.CORP_COD,'') = case when t2.corporation_code is null then COALESCE(t1.CORP_COD,'') else t2.corporation_code end
and COALESCE(t1.MANU_COD,'') = case when t2.Manufacturer_Code is null then COALESCE(t1.MANU_COD,'') else t2.Manufacturer_Code end
and COALESCE(t1.PROD_COD,'') = case when t2.Product_Code is null then COALESCE(t1.PROD_COD,'') else t2.Product_Code end
and COALESCE(t1.PACK_COD,'') = case when t2.Pack_Code is null then COALESCE(t1.PACK_COD,'') else t2.Pack_Code end
and COALESCE(t1.STGH_DES,'') = case when t2.Strength is null then COALESCE(t1.STGH_DES,'') else t2.Strength end
and COALESCE(t1.CMPS_COD,'') = case when t2.Molecule_Code is null then COALESCE(t1.CMPS_COD,'') else t2.Molecule_Code end
and COALESCE(t3.market ,'') = case when t2.market is null then COALESCE(t3.market,'') else t2.market end
)
,mapping_match_key_competitor as (
select * from (select *, row_number() over (partition by PACK_COD,MARKET,DATA_SOURCE,NEW_CODE,CLASS order by no1 desc ) as new_order FROM mapping_match_key_competitor_with_mutil ) as new
WHERE new.new_order =1
)
insert overwrite table DM.dm_td_external_market_pack_mapping
(
PACK_COD,
PROD_DES,
PROD_DES_C,
MARKET,
CLASS,
VALUE_MARKET_RATIO,
UNIT_MARKET_RATIO,
COUNTINGUNIT_MARKET_RATIO,
PDOT_MARKET_RATIO,
DATA_SOURCE,
KEY_COMPETITOR,
KEY_COMPETITOR_CN,
NEW_CODE
)
SELECT
t1.PACK_COD,
t1.PROD_DES,
t1.PROD_DES_C,
t1.MARKET,
t1.CLASS,
t1.VALUE_MARKET_RATIO,
t1.UNIT_MARKET_RATIO,
t1.COUNTINGUNIT_MARKET_RATIO,
t1.PDOT_MARKET_RATIO,
t1.DATA_SOURCE,
t1.KEY_COMPETITOR,
COALESCE(t2.PROD_DES_C,t1.KEY_COMPETITOR) as KEY_COMPETITOR_CN,
t1.NEW_CODE
FROM mapping_match_key_competitor t1
left join mapping t2
on upper(t1.KEY_COMPETITOR) = upper(t2.PROD_DES)
-- COMMAND ----------
update dm.dm_td_external_market_pack_mapping
set KEY_COMPETITOR = 'OTHERS',KEY_COMPETITOR_CN ='OTHERS'
where upper(KEY_COMPETITOR) = 'OTHERS' or upper(KEY_COMPETITOR_CN) = 'OTHERS'
-- COMMAND ----------
create or replace temporary view dim_KEY_COMPETITOR
as
select upper(KEY_COMPETITOR) as KEY_COMPETITOR,max(KEY_COMPETITOR_CN) as KEY_COMPETITOR_CN
from dm.dm_td_external_market_pack_mapping
group by KEY_COMPETITOR
-- COMMAND ----------
MERGE INTO dm.dm_td_external_market_pack_mapping AS t1
USING dim_KEY_COMPETITOR AS t2
ON t1.KEY_COMPETITOR = t2.KEY_COMPETITOR
WHEN MATCHED THEN
UPDATE SET t1.KEY_COMPETITOR_CN = t2.KEY_COMPETITOR_CN;