1440 lines
54 KiB
SQL
1440 lines
54 KiB
SQL
-- 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_COMPETITOR,class等信息
|
||
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_COMPETITOR,class等信息
|
||
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;
|