From 31a612a902b70f971080481405e76a76fd96b4b4 Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Wed, 20 May 2026 10:11:13 +0000 Subject: [PATCH 1/7] =?UTF-8?q?county2026=E5=B9=B4=E5=88=87=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 修改geo和pack2market --- 09 dm_td_external_geo_type.sql | 1127 +++++------------ AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql | 11 - ...DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql | 20 +- county/04 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql | 2 +- county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql | 120 +- ...3 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql | 67 +- 6 files changed, 516 insertions(+), 831 deletions(-) delete mode 100644 AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql diff --git a/09 dm_td_external_geo_type.sql b/09 dm_td_external_geo_type.sql index 79c851f..d2bb4f2 100644 --- a/09 dm_td_external_geo_type.sql +++ b/09 dm_td_external_geo_type.sql @@ -177,7 +177,17 @@ t2.province_name_en as CITY ,t2.province_name as PROVINCE_C ,t2.province_code as PROVINCE_CODE ,t2.province_name as CITY_MAP -,t2.province_name AS PROVINCE_MAP + +-----------------------给省份添加“省” ,t2.province_name AS PROVINCE_MAP +,CASE + WHEN T2.PROVINCE_NAME IN ('上海', '北京', '天津', '重庆') THEN CONCAT (T2.PROVINCE_NAME, '市') + WHEN T2.PROVINCE_NAME IN ('内蒙古', '西藏') THEN CONCAT (T2.PROVINCE_NAME, '自治区') + WHEN T2.PROVINCE_NAME = '宁夏' THEN CONCAT (T2.PROVINCE_NAME, '回族自治区') + WHEN T2.PROVINCE_NAME = '广西' THEN CONCAT (T2.PROVINCE_NAME, '壮族自治区') + WHEN T2.PROVINCE_NAME = '新疆' THEN CONCAT (T2.PROVINCE_NAME, '维吾尔自治区') + ELSE CONCAT (T2.PROVINCE_NAME, '省') + END AS PROVINCE_MAP + ,t2.rc_name_en AS REGION_CENTER ,CASE WHEN t2.province_name IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 @@ -831,677 +841,282 @@ FROM -- COMMAND ---------- -- DBTITLE 1,CHPA --------------------------------------------------CHPA 城--------------------------------------------------------------- CREATE OR REPLACE TEMPORARY VIEW CHPA_geo_type_temp -AS +AS SELECT DISTINCT A.DATA_SOURCE, A.AUDIT_COD, - B.PACK_CODE, CASE - WHEN - A.PROVINCE_C IN ( - 'BBU_OtherProv', 'OBU_OtherProv', 'Others', 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' - ) + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) OR A.PROVINCE_C IS NULL - THEN - 'ROC' + THEN 'ROC' ELSE A.PROVINCE_C - END PROVINCE_C, - B.REGION_TYPE, + END AS PROVINCE_C, A.PROVINCE_MAP, - NVL( - A.CITY_C, - CASE - WHEN - A.PROVINCE_C IN ( - 'BBU_OtherProv', 'OBU_OtherProv', 'Others', 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL - THEN - 'ROC' - ELSE A.CITY_C - END - ) CITY_C, - A.AZ_CITY_TIER, - 3 RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN DM.DM_TF_EXT_UNIONALL_SALES B - ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.AUDIT_CODE -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - '全国' PROVINCE_C, - A.REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.DM_TF_EXT_UNIONALL_SALES A -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.DM_TF_EXT_UNIONALL_SALES A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b - on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - ) C - ON C.AUDIT_COD = a.AUDIT_CODE -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,county_mapping -CREATE OR REPLACE TEMPORARY VIEW county_mapping -AS -SELECT 'bbu_bu_county_obu_East5' as original_name,'BBU_BU_COUNTY' as display_name -union ALL -SELECT 'bbu_bu_county_obu_East5' as original_name,'OBU East5' as display_name -union ALL -SELECT 'bbu_bu_county_obu_nonEast5' as original_name,'BBU_BU_COUNTY' as display_name -union ALL -SELECT 'bbu_bu_county_obu_nonEast5' as original_name,'OBU NonEast5' as display_name -union ALL -SELECT 'bbu_county_obu_nonEast5' as original_name,'BBU County' as display_name -union ALL -SELECT 'bbu_county_obu_nonEast5' as original_name,'OBU NonEast5' as display_name + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_chpa_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- -- DBTITLE 1,COUNTY -------------------------------------------------COUNTY 省------------------------------------------------------------ CREATE OR REPLACE TEMPORARY VIEW COUNTY_geo_type_temp -AS -SELECT - DATA_SOURCE, - AUDIT_COD, - PACK_COD, - PROVINCE_C, - REGION_TYPE, - PROVINCE_MAP, - CITY_C, - AZ_CITY_TIER, - RN -FROM - ( - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - --,'OBU_BU_County','OBU County','OBU_BU_COUNTY','OBU COUNTY' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END PROVINCE_C, - NVL (B.REGION_TYPE, '') as REGION_TYPE, - A.PROVINCE_MAP, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'OTHER LOW TIERS', - 'Other Low Tiers' --,'OBU_BU_County','OBU County','OBU_BU_COUNTY','OBU COUNTY' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END CITY_C, - NULL AZ_CITY_TIER, - 3 RN - FROM - DM.dm_ims_td_county_geo A - INNER JOIN DM.dm_ext_county_tf_sales_region B ON A.REGION_COD = B.REGION_COD - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN - FROM - DM.dm_ext_county_tf_sales_region A - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - COALESCE(f1.display_name, A.REGION_TYPE, '') PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '' PROVINCE_MAP, - COALESCE(f1.display_name, A.REGION_TYPE, '') CITY_C, - NULL AZ_CITY_TIER, - 2 RN - FROM - DM.dm_ext_county_tf_sales_region A - left join county_mapping f1 on A.REGION_TYPE = f1.original_name - WHERE - A.REGION_TYPE IS NOT NULL - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - C.ProvinceGroup PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN - FROM - DM.dm_ext_county_tf_sales_region A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - AND upper(A.ProvinceGroup) NOT IN ( - 'OBU EAST5', - 'BBU County', - 'BBU_BU_COUNTY', - 'OBU NONEAST5' - ) - ) C ON C.AUDIT_COD = a.AUDIT_COD - ) T -WHERE - T.PROVINCE_C <> 'Other Low Tiers' +AS +with original_table( + SELECT DISTINCT + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP + FROM DM.dm_td_external_geo_temp A + WHERE A.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_COUNTY_sales B + WHERE B.audit_code = A.AUDIT_COD + ) +) +SELECT + DATA_SOURCE + ,AUDIT_COD + ,PROVINCE_C + ,PROVINCE_MAP + ,'全国' PROVINCE_GROUP +from original_table +UNION ALL +SELECT + DATA_SOURCE + ,AUDIT_COD + ,PROVINCE_C + ,PROVINCE_MAP + ,bbu_bu_county_flag AS PROVINCE_GROUP +from original_table t1 +INNER JOIN dm.dm_td_ext_county_geo_mapping_flag t2 +ON t1.province_c = t2.province -- COMMAND ---------- -- DBTITLE 1,RETAIL -------------------------------------------------RETAIL 省------------------------------------------------------------ ----,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN CREATE OR REPLACE TEMPORARY VIEW RETAIL_geo_type_temp -AS +AS SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code PACK_COD, - CASE - WHEN A.province_city IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.province_city IS NULL THEN 'ROC' - WHEN A.province_city = '福厦泉' THEN '福建' - ELSE A.province_city - END PROVINCE_C, - '' REGION_TYPE, - C.PROVINCE_MAP, - CASE - WHEN A.province_city IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.province_city IS NULL THEN 'ROC' - WHEN A.province_city = '福厦泉' THEN '福建' - ELSE A.province_city - END CITY_C, - NULL AZ_CITY_TIER, - 3 RN -FROM - DM.dm_zk_retail_sales A - LEFT JOIN DM.dm_zk_retail_geo C ON A.AUDIT_COD = C.geo_key -UNION ALL + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'Retail(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_RETAIL_sales B + WHERE B.audit_code = A.AUDIT_COD + ) + +-- COMMAND ---------- + +-- DBTITLE 1,DTP +CREATE OR REPLACE TEMPORARY VIEW DTP_geo_type_temp +AS SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code PACK_COD, - '全国' PROVINCE_C, - '' REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.dm_zk_retail_sales A -UNION ALL -SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code, - c.ProvinceGroup PROVINCE_C, - '' REGION_TYPE, - '' PROVINCE_MAP, - c.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.dm_zk_retail_sales A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'Retail(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_COD - --DTP -UNION all -select - 'DTP(Quarterly)' DATA_SOURCE, - AUDIT_COD, - PACK_COD, - C.province_city, - '' REGION_TYPE, - C.province_map, - C.province_city CITY_C, - NULL AZ_CITY_TIER, - 3 RN -from - ( - select - iqvia_pack_code PACK_COD, - case - when AUDIT_COD = 'CHT' then 'ROC' - else AUDIT_COD - end AUDIT_COD - from - dm.dm_zk_retail_dtp_sales a - group by - 1, - 2 - ) A - LEFT JOIN DM.dm_zk_retail_geo C ON A.AUDIT_COD = C.geo_key + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'DTP(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_retail_DTP_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- -- DBTITLE 1,THC CREATE OR REPLACE TEMPORARY VIEW THC_geo_type_temp -AS +AS SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - dm.DM_TF_EXT_UNIONALL_SALES A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.city = b.province_c - or a.province = b.province_c - ) - WHERE - B.CITY_TYPE = 'Province' - and b.DATA_SOURCE = 'THC(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_CODE -WHERE - A.DATA_SOURCE = 'THC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_CODE, - A.PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - A.CITY_C, - A.AZ_CITY_TIER, - 3 as RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN ( - --补充所有的geo维度,保证全国的数据和省份的数据都有对应的维度。 - select - PACK_CODE, - REGION_TYPE, - DATA_SOURCE, - AUDIT_CODE - from - dm.DM_TF_EXT_UNIONALL_SALES - WHERE - DATA_SOURCE = 'THC(Quarterly)' - union - select - PACK_COD, - '' REGION_TYPE, - 'THC(Quarterly)' DATA_SOURCE, - AUDIT_COD - from - dm.dm_tf_external_sales_thc - -- - ) B ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.audit_code -WHERE - A.DATA_SOURCE = 'THC(Quarterly)' + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'THC(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_THC_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- -- DBTITLE 1,AIA -------------------------------------------------AIA------------------------------------------------------------ CREATE OR REPLACE TEMPORARY VIEW AIA_geo_type_temp -AS -select distinct - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - '全国' as PROVINCE_C, - A.REGION_TYPE, - '全国' as PROVINCE_MAP, - '全国' as CITY_C, - NULL as AZ_CITY_TIER, - 1 as RN -from - dm.DM_TF_EXT_UNIONALL_SALES A -where - A.DATA_SOURCE = 'AIA(Monthly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - B.ProvinceGroup as PROVINCE_C, - A.REGION_TYPE, - '' as PROVINCE_MAP, - B.ProvinceGroup as CITY_C, - null as AZ_CITY_TIER, - 2 as RN -from - dm.DM_TF_EXT_UNIONALL_SALES A - inner join ( - select - t1.ProvinceGroup, - t2.AUDIT_COD - from - dwd.dwd_gnd_province_group_city t1 - inner join dm.dm_td_external_geo_temp t2 on t1.AUDIT_CD = t2.AUDIT_COD - or t1.AUDIT_CD = t2.PROVINCE_CODE - WHERE - t2.CITY_TYPE = 'City' - and t2.DATA_SOURCE = 'AIA(Monthly)' - ) B ON A.AUDIT_CODE = B.AUDIT_COD -WHERE - A.DATA_SOURCE = 'AIA(Monthly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_CODE, - case - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL then 'ROC' - else A.PROVINCE_C - END as PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - case - when A.CITY_C is not null then A.CITY_C - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL THEN 'ROC' - else A.PROVINCE_C - END as CITY_C, - A.AZ_CITY_TIER, - 3 as RN -from - dm.dm_td_external_geo_temp A - inner join dm.DM_TF_EXT_UNIONALL_SALES B on A.DATA_SOURCE = B.DATA_SOURCE - and A.AUDIT_COD = B.AUDIT_CODE -where - A.DATA_SOURCE = 'AIA(Monthly)' +AS +SELECT DISTINCT + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'AIA(Monthly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_AIA_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- -- DBTITLE 1,CHC --------------------------------------------------CHC城--------------------------------------------------------------- CREATE OR REPLACE TEMPORARY VIEW CHC_geo_type_temp -AS -SELECT DISTINCT +AS +WITH ORIGINAL ( + SELECT DISTINCT A.DATA_SOURCE, A.AUDIT_COD, - B.PACK_CODE, CASE WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' ELSE A.PROVINCE_C - END PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - NVL ( - A.CITY_C, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END - ) CITY_C, - A.AZ_CITY_TIER, - 3 RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN DM.DM_TF_EXT_UNIONALL_SALES B ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.AUDIT_CODE -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - '全国' PROVINCE_C, - A.REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.DM_TF_EXT_UNIONALL_SALES A -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.DM_TF_EXT_UNIONALL_SALES A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'CHC(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_CODE -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' + END AS PROVINCE_C, + A.PROVINCE_MAP + FROM DM.dm_td_external_geo_temp A + WHERE A.DATA_SOURCE = 'CHC(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_CHC_sales B + WHERE B.audit_code = A.AUDIT_COD + ) +) + +SELECT +DATA_SOURCE +,AUDIT_COD +,PROVINCE_C +,PROVINCE_MAP +,'全国' PROVINCE_GROUP +FROM original +UNION ALL +SELECT +DATA_SOURCE +,AUDIT_COD +,PROVINCE_C +,PROVINCE_MAP +,'全国' PROVINCE_GROUP +FROM original t1 +INNER JOIN dwd.dwd_gnd_province_group_city t2 +ON t1.audit_cod = t2.audit_cd AND t2.provincegroup = 'CHC13城市' -- COMMAND ---------- -- DBTITLE 1,EC ----------------------------------------------------EC 全国--------------------------------------------------- CREATE OR REPLACE TEMPORARY VIEW EC_geo_type_temp -AS -select distinct - a.DATA_SOURCE, - a.AUDIT_COD, - b.PACK_CODE, - a.PROVINCE_C, - b.REGION_TYPE, - a.PROVINCE_MAP, - a.CITY_C, - a.AZ_CITY_TIER, - 1 RN -from - dm.dm_td_external_geo_temp a - left join dm.DM_TF_EXT_UNIONALL_SALES b on a.audit_cod = b.AUDIT_CODE -where - a.DATA_SOURCE = 'EC(Monthly)' - and b.DATA_SOURCE = 'EC(Monthly)' +AS +SELECT DISTINCT + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'EC(Monthly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_EC_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- -- DBTITLE 1,XIE HE ------------------------------------------------XIEHE------------------- CREATE OR REPLACE TEMPORARY VIEW XH_geo_type_temp -AS -select distinct - A.DATA_SOURCE, - A.AUDIT_CODE, - A.PACK_CODE, - '全国' as PROVINCE_C, - A.REGION_TYPE, - '全国' as PROVINCE_MAP, - '全国' as CITY_C, - NULL as AZ_CITY_TIER, - 1 as RN -from - dm.DM_TF_EXT_UNIONALL_SALES A -where - A.DATA_SOURCE = 'XH Data(Quarterly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_CODE, - case - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL then 'ROC' - else A.PROVINCE_C - END as PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - case - when A.CITY_C is not null then A.CITY_C - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL THEN 'ROC' - else A.PROVINCE_C - END as CITY_C, - A.AZ_CITY_TIER, - 3 as RN -from - dm.dm_td_external_geo_temp A - inner join dm.DM_TF_EXT_UNIONALL_SALES B on A.DATA_SOURCE = B.DATA_SOURCE - and A.AUDIT_COD = B.AUDIT_CODE -where - A.DATA_SOURCE = 'XH Data(Quarterly)' +AS +SELECT DISTINCT + A.DATA_SOURCE, + A.AUDIT_COD, + CASE + WHEN A.PROVINCE_C IN ( + 'BBU_OtherProv', 'OBU_OtherProv', 'Others', + 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' + ) + OR A.PROVINCE_C IS NULL + THEN 'ROC' + ELSE A.PROVINCE_C + END AS PROVINCE_C, + A.PROVINCE_MAP, + '全国' PROVINCE_GROUP +FROM DM.dm_td_external_geo_temp A +WHERE A.DATA_SOURCE = 'XH Data(Quarterly)' + AND EXISTS ( + SELECT 1 + FROM dm.dm_tf_ext_XIEHE_sales B + WHERE B.audit_code = A.AUDIT_COD + ) -- COMMAND ---------- @@ -1517,42 +1132,47 @@ where create or replace temporary view dm_td_external_geo_type_temp as select -DATA_SOURCE,AUDIT_COD,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from CHPA_geo_type_temp union all select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from COUNTY_geo_type_temp union all select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from RETAIL_geo_type_temp union all select -DATA_SOURCE,AUDIT_CODE,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP +from +DTP_geo_type_temp +union all +select +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from THC_geo_type_temp union all select -DATA_SOURCE,AUDIT_CODE,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from AIA_geo_type_temp union all select -DATA_SOURCE,AUDIT_COD,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from CHC_geo_type_temp union all select -DATA_SOURCE,AUDIT_COD,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from EC_geo_type_temp union all select -DATA_SOURCE,AUDIT_CODE,PACK_CODE,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN +DATA_SOURCE,AUDIT_COD,PROVINCE_C,PROVINCE_MAP,PROVINCE_GROUP from XH_geo_type_temp @@ -1584,91 +1204,85 @@ where PROVINCE_CODE <> '' -- COMMAND ---------- --- DBTITLE 1,TEMP -create or replace temporary view TEMP -as +-- DBTITLE 1,geo_temp +create or replace temporary view GEO_TEMP +as +WITH inst AS ( SELECT - DISTINCT t1.DATA_SOURCE, - t1.AUDIT_COD, + inst_code, + inst_name, + province_name, + province_code, + city_name, + city_code, + county_name, + city_tier_desc, + county_tier_desc, + inst_sub_type, + org_level_desc AS ins_level, CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_C - END PROVINCE_C, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_MAP - END PROVINCE_MAP, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.CITY_C - END CITY_C, - CASE - WHEN t1.AUDIT_COD NOT IN ('CHT', 'ROC') THEN t1.AZ_CITY_TIER - END AZ_CITY_TIER, - t1.REGION_TYPE, - t1.AUDIT_COD as inst_code, - NVL(t2.inst_name,'') as inst_name, - NVL(t3.PROVINCE_CODE,'') as PROVINCE_CODE, - NVL(t4.AUDIT_COD,'') as CITY_CODE, - NVL(t2.county_name,'') as county_name, - NVL(t2.county_tier_desc,'') as county_tier, - -- NVL(t5.area_head_name,'') as pmt_region, - NVL(t5.AREA_NAME_EN,'') as pmt_region, - NVL(t2.inst_sub_type,'') as inst_sub_type, - NVL(t2.ins_level,'') as ins_level - FROM - dm_td_external_geo_type_temp t1 - left join (select distinct inst_code,inst_name,province_name,city_name,county_name,city_tier_desc,county_tier_desc,inst_sub_type,org_level_desc as ins_level, - case when city_name = '深圳市' then '深圳' else province_name end as pmt_key from dm.dm_td_institution) t2 - on t1.AUDIT_COD = t2.inst_code - left join dm.dm_td_external_geo_temp t3 - on t1.AUDIT_COD = t3.AUDIT_COD - and t1.DATA_SOURCE = t3.DATA_SOURCE - left join dm.dm_ims_td_geo t4 - on t1.CITY_C = t4.CITY_C - left join pmt t5 - -- on t2.pmt_key = t5.area_name - on t3.PROVINCE_CODE = t5.PROVINCE_CODE - where t1.DATA_SOURCE = 'AIA(Monthly)' - union all - SELECT - DISTINCT t1.DATA_SOURCE, - t1.AUDIT_COD, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_C - END PROVINCE_C, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_MAP - END PROVINCE_MAP, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.CITY_C - END CITY_C, - CASE - WHEN t1.AUDIT_COD NOT IN ('CHT', 'ROC') THEN t1.AZ_CITY_TIER - END AZ_CITY_TIER, - t1.REGION_TYPE, - '' as inst_code, - '' as inst_name, - NVL(t3.PROVINCE_CODE,'') as PROVINCE_CODE, - NVL(t4.AUDIT_COD,'') as CITY_CODE, - '' as county_name, - '' as county_tier, - NVL(t5.AREA_NAME_EN,'') as pmt_region, - '' as inst_sub_type, - '' as ins_level - FROM - dm_td_external_geo_type_temp t1 - left join dm.dm_td_external_geo_temp t3 - on t1.AUDIT_COD = t3.AUDIT_COD - and t1.DATA_SOURCE = t3.DATA_SOURCE - left join dm.dm_ims_td_geo t4 - on t1.CITY_C = t4.CITY_C - left join pmt t5 - on t1.PROVINCE_C = t5.province_name - where t1.DATA_SOURCE <> 'AIA(Monthly)' + WHEN city_name = '深圳市' THEN '深圳' + ELSE province_name + END AS pmt_key + FROM ( + SELECT + i.*, + ROW_NUMBER() OVER (PARTITION BY inst_code ORDER BY inst_code) AS rn + FROM dm.dm_td_institution i + ) + WHERE rn = 1 +) +SELECT + t1.DATA_SOURCE, + t1.AUDIT_COD, + NULL AS region_type, + t1.PROVINCE_C, + t1.CITY_C, + t1.AZ_CITY_TIER, + t1.PROVINCE_RN AS PROV_RN, + t1.CITY_RN, + t1.PROVINCE_MAP, + NVL(t2.inst_code, '') AS INST_CODE, + NVL(t2.inst_name, '') AS INST_NAME, + NVL(t2.province_code, '') AS PROVINCE_CODE, + NVL(t2.city_code, '') AS CITY_CODE, + NVL(t2.county_name, '') AS COUNTY_NAME, + NVL(t2.county_tier_desc, '') AS COUNTY_TIER, + NVL(pmt.AREA_NAME_EN, '') AS PMT_REGION, + NVL(t2.inst_sub_type, '') AS inst_sub_type, + NVL(t2.ins_level, '') AS ins_level +FROM dm.dm_td_external_geo_temp t1 +LEFT JOIN inst t2 + ON t1.AUDIT_COD = t2.inst_code +LEFT JOIN pmt + ON t2.province_code = pmt.PROVINCE_CODE +WHERE t1.DATA_SOURCE = 'AIA(Monthly)' + +union ALL + +SELECT + t1.DATA_SOURCE, + t1.AUDIT_COD, + NULL AS region_type, + t1.PROVINCE_C, + t1.CITY_C, + t1.AZ_CITY_TIER, + t1.PROVINCE_RN AS PROV_RN, + t1.CITY_RN, + t1.PROVINCE_MAP, + '' AS INST_CODE, + '' AS INST_NAME, + t1.PROVINCE_CODE AS PROVINCE_CODE, + t1.AUDIT_COD AS CITY_CODE, + '' AS COUNTY_NAME, + '' AS COUNTY_TIER, + NVL(pmt.AREA_NAME_EN, '') AS PMT_REGION, + '' AS inst_sub_type, + '' AS ins_level +FROM dm.dm_td_external_geo_temp t1 +LEFT JOIN pmt + ON t1.province_code = pmt.PROVINCE_CODE +WHERE t1.DATA_SOURCE <> 'AIA(Monthly)' -- COMMAND ---------- @@ -1679,7 +1293,7 @@ as A.PROVINCE_C, SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL FROM - TEMP A + geo_temp A INNER JOIN DM.DM_TF_EXT_UNIONALL_SALES B ON A.AUDIT_COD = B.AUDIT_CODE AND A.DATA_SOURCE = B.DATA_SOURCE AND A.REGION_TYPE = B.REGION_TYPE @@ -1729,7 +1343,7 @@ as A.CITY_C, SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL FROM - TEMP A + geo_temp A INNER JOIN DM.DM_TF_EXT_UNIONALL_SALES B ON A.AUDIT_COD = B.AUDIT_CODE AND A.DATA_SOURCE = B.DATA_SOURCE AND A.REGION_TYPE = B.REGION_TYPE @@ -1847,22 +1461,22 @@ SELECT A.inst_sub_type, A.ins_level FROM - TEMP A + geo_temp A LEFT JOIN Province_N PN ON A.PROVINCE_C = PN.PROVINCE_C LEFT JOIN city_N CN ON A.CITY_C = CN.CITY_C -WHERE - A.PROVINCE_C NOT IN ( - SELECT - DISTINCT provincegroup - FROM - DWD.dwd_gnd_province_group_city - UNION ALL - SELECT - '全国' - UNION ALL - SELECT - 'BBU_BU_COUNTY' - ) +-- WHERE +-- A.PROVINCE_C NOT IN ( +-- SELECT +-- DISTINCT provincegroup +-- FROM +-- DWD.dwd_gnd_province_group_city +-- UNION ALL +-- SELECT +-- '全国' +-- UNION ALL +-- SELECT +-- 'BBU_BU_COUNTY' +-- ) GROUP BY A.AUDIT_COD,A.REGION_TYPE,A.DATA_SOURCE,10,11,12,13,14,15,16,17,18 -- COMMAND ---------- @@ -1877,41 +1491,6 @@ WHERE -- COMMAND ---------- --- DBTITLE 1,TEMP -create or replace temporary view TEMP -as - SELECT - DISTINCT DATA_SOURCE, - AUDIT_COD, - PROVINCE_C, - PROVINCE_MAP, - CITY_C, - AZ_CITY_TIER, - RN, - REGION_TYPE, - CASE - WHEN PROVINCE_C <> 'Other Low Tiers' - AND ( - DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - OR ( - DATA_SOURCE <> 'IQVIA-COUNTY(Quarterly)' - AND PROVINCE_C NOT IN ( - 'BBU_BU_COUNTY', - 'OBU_BU_COUNTY', - 'OBU COUNTY', - 'BBU COUNTY' - ) - ) - ) THEN 1 - ELSE 0 - END GEO_FLAG - FROM - dm_td_external_geo_type_temp - WHERE - PROVINCE_C <> 'ROC' - --- COMMAND ---------- - -- MAGIC %md -- MAGIC ## RESULT @@ -1930,20 +1509,10 @@ AUDIT_COD, REGION_TYPE, PROVINCE_GROUP ) -SELECT - DISTINCT DATA_SOURCE, +select + DATA_SOURCE, AUDIT_COD, - REGION_TYPE, - A.PROVINCE_C PROVINCE_GROUP -FROM - TEMP A -WHERE - A.PROVINCE_C IN ( - SELECT - DISTINCT provincegroup - FROM - DWD.dwd_gnd_province_group_city - UNION ALL - SELECT - '全国' - ) + null as REGION_TYPE, + PROVINCE_GROUP +from +dm_td_external_geo_type_temp diff --git a/AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql b/AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql deleted file mode 100644 index e1cd656..0000000 --- a/AIA/11 DM_TD_EXT_AIA_TARGET_INST.sql +++ /dev/null @@ -1,11 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - - diff --git a/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql b/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql index 18623d9..d966440 100644 --- a/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql +++ b/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql @@ -280,7 +280,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market' AS MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -309,7 +309,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market' AS MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -338,7 +338,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -367,7 +367,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -396,7 +396,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -425,7 +425,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -454,7 +454,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -483,7 +483,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -512,7 +512,7 @@ UNION ALL SELECT PACK_CODE, 'ALL Market'MARKET, - 'Others' AS CLASS, + 'OTHERS' AS CLASS, 'OTHERS' AS KEY_COMPETITOR, 1 AS MARKET_RATIO, 200001 AS STARTTIME, @@ -538,4 +538,4 @@ GROUP BY -- COMMAND ---------- -update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING set class = 'Others' where lower(CLASS) = 'others' or CLASS IS null \ No newline at end of file +update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING set class = 'OTHERS' where lower(CLASS) = 'others' or CLASS IS null diff --git a/county/04 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql b/county/04 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql index b5b7236..2854d5d 100644 --- a/county/04 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql +++ b/county/04 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql @@ -75,7 +75,7 @@ -- COMMAND ---------- -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_PACK_PROPERTY +INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK_PROPERTY SELECT -- MARKET_PACK_KEY, PACK_COD AS PACK_CODE, diff --git a/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql b/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql index 79fe1a4..1f6baed 100644 --- a/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql +++ b/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql @@ -45,6 +45,28 @@ -- COMMAND ---------- +-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR ( +-- KEY_COMPETITOR STRING, +-- MARKET STRING, +-- PACK_CODE STRING) +-- USING delta +-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_keycompetitor'; +-- -- 上面是生产环境location,下面是测试环境location +-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_keycompetitor'; + +-- COMMAND ---------- + +-- CREATE or REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS ( +-- MARKET STRING, +-- PACK_CODE STRING, +-- CLASS STRING) +-- USING delta +-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_class'; +-- -- 上面是生产环境location,下面是测试环境location +-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_class'; + +-- COMMAND ---------- + -- 使用 EXCEPT(集合差操作)简化逻辑 INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET -- 包含规则 @@ -205,4 +227,100 @@ LEFT JOIN ( AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE) AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH) AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE) -WHERE T2.MARKET IS NOT NULL; \ No newline at end of file +WHERE T2.MARKET IS NOT NULL; + +-- COMMAND ---------- + +INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR +WITH kc AS ( + SELECT + keycompetitor, no, + 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 NFC3_CODE IS NULL THEN 0 ELSE 1 END + ) AS no1, + ATC1_Code, ATC2_Code, ATC3_Code, ATC4_Code, + NFC1_Code, NFC2_Code, NFC3_Code, + corporation_code, Manufacturer_Code, + Product_Code, Pack_Code, Strength, Molecule_Code, market + FROM dwd.dwd_gnd_ims_tblkeycompetitor +), +joined AS ( + SELECT + /*+ BROADCAST(kc) */ + COALESCE(kc.keycompetitor, 'OTHERS') AS Key_Competitor, -- ✅ UPDATE 逻辑内联 + t1.market, t1.PACK_CODE + /*bug 调试区 + , + kc.no, + kc.no1, + t1.PROD_COD, t1.CMPS_COD, t1.CMPS_DES, + t1.ATC1_COD, t1.ATC2_COD, t1.ATC3_COD, t1.ATC4_COD, + t1.APP1_COD, t1.APP2_COD, t1.APP3_COD, + t1.BIO_DESC, t1.GENE_ORIG_DESC, t1.ETH_OTC_DESC, + t1.NRDL_DESC, t1.NRDL_Entry_Date, t1.EDL_DESC, t1.TCM_DESC, + t1.PAED_DESC, t1.GQCE_DESC, t1.VBP_DESC, + t1.MANU_COD, t1.MANU_DES, t1.MNFL_COD, t1.MNFL_DES, + t1.CORP_COD, t1.CORP_DES, t1.BrandType, t1.bu, t1.Market_Ratio + */ + ,ROW_NUMBER() OVER ( + PARTITION BY t1.market, t1.PACK_CODE, t1.PROD_CODE + ORDER BY kc.no1 DESC, kc.no DESC + ) AS _rn + FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET t1 + LEFT JOIN kc + ON (kc.ATC1_Code IS NULL OR t1.ATC1_CODE = kc.ATC1_Code) + AND (kc.ATC2_Code IS NULL OR t1.ATC2_CODE = kc.ATC2_Code) + AND (kc.ATC3_Code IS NULL OR t1.ATC3_CODE = kc.ATC3_Code) + AND (kc.ATC4_Code IS NULL OR t1.ATC4_CODE = kc.ATC4_Code) + AND (kc.NFC1_Code IS NULL OR t1.APP1_CODE = kc.NFC1_Code) + AND (kc.NFC2_Code IS NULL OR t1.APP2_CODE = kc.NFC2_Code) + AND (kc.NFC3_Code IS NULL OR t1.APP3_CODE = kc.NFC3_Code) + AND (kc.corporation_code IS NULL OR t1.CORP_CODE = kc.corporation_code) + AND (kc.Manufacturer_Code IS NULL OR t1.MANU_CODE = kc.Manufacturer_Code) + AND (kc.Product_Code IS NULL OR t1.PROD_CODE = kc.Product_Code) + AND (kc.Pack_Code IS NULL OR t1.PACK_CODE = kc.Pack_Code) + AND (kc.Strength IS NULL OR t1.STGH_DESC = kc.Strength) + AND (kc.Molecule_Code IS NULL OR t1.CMPS_CODE = kc.Molecule_Code) + AND (kc.market IS NULL OR t1.market = kc.market) +) +SELECT distinct Key_Competitor,market,pack_code +FROM joined +WHERE _rn = 1; + +-- COMMAND ---------- + +INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS +SELECT + /*+ BROADCAST(T2) */ + DISTINCT + T1.MARKET, + T1.PACK_CODE, + COALESCE( T2.CLASS, 'OTHERS') AS CLASS +FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET T1 +LEFT JOIN DWD.DWD_GND_TBLCLASS T2 + ON (T2.MARKET IS NULL OR T1.MARKET = T2.MARKET) + AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE) + AND (T2.PRODUCT_CODE IS NULL OR T1.PROD_CODE = T2.PRODUCT_CODE) + AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE) + AND (T2.CORPORATION_CODE IS NULL OR T1.CORP_CODE = T2.CORPORATION_CODE) + AND (T2.MANUFACTURER_CODE IS NULL OR T1.MANU_CODE = T2.MANUFACTURER_CODE) + AND (T2.ATC1_CODE IS NULL OR T1.ATC1_CODE = T2.ATC1_CODE) + AND (T2.ATC2_CODE IS NULL OR T1.ATC2_CODE = T2.ATC2_CODE) + AND (T2.ATC3_CODE IS NULL OR T1.ATC3_CODE = T2.ATC3_CODE) + AND (T2.ATC4_CODE IS NULL OR T1.ATC4_CODE = T2.ATC4_CODE) + AND (T2.NFC1_CODE IS NULL OR T1.APP1_CODE = T2.NFC1_CODE) + AND (T2.NFC2_CODE IS NULL OR T1.APP2_CODE = T2.NFC2_CODE) + AND (T2.NFC3_CODE IS NULL OR T1.APP3_CODE = T2.NFC3_CODE) + AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH) diff --git a/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql b/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql index b5a5502..f89a26d 100644 --- a/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql +++ b/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql @@ -31,32 +31,41 @@ -- COMMAND ---------- INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING -SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T1.CLASS, - T1.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT - FROM -DM.DM_TD_EXT_COUNTY_PACK_PROPERTY T1 -LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE -LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE -WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file + SELECT DISTINCT + T1.PACK_CODE, + T1.MARKET, + T4.CLASS, + T5.KEY_COMPETITOR, + T2.MARKET_RATIO, + T2.STARTTIME, + T2.ENDTIME, + T3.VALUE_BRAND_RATIO, + T3.VALUE_BRAND_RATIO_START, + T3.VALUE_BRAND_RATIO_END, + T3.UNIT_BRAND_RATIO, + T3.UNIT_BRAND_START, + T3.UNIT_BRAND_END, + T3.COUNTINGUNIT_BRAND_RATIO, + T3.COUNTINGUNIT_BRAND_START, + T3.COUNTINGUNIT_BRAND_END, + T3.PDOT_BRAND_RATIO, + T3.PDOT_BRAND_START, + T3.PDOT_BRAND_END, + FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, + FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT + FROM + DM.DM_TD_EXT_COUNTY_PACK2MARKET T1 + LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_RATIO T2 + ON T1.MARKET = T2.MARKET + AND T1.PACK_CODE = T2.PACK_CODE + LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO T3 + ON T1.MARKET = T3.MARKET + AND T1.PACK_CODE = T3.PACK_CODE + LEFT JOIN DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS T4 + ON T1.PACK_CODE = T4.PACK_CODE + AND T1.MARKET = T4.MARKET + LEFT JOIN DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR T5 + ON T1.PACK_CODE = T5.PACK_CODE + AND T1.MARKET = T5.MARKET + WHERE + UPPER(T1.MARKET) NOT LIKE "%ALL%" -- 2.49.1 From b03b08af7bd9b8e4f38550ae765f8a770e8320e3 Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Thu, 21 May 2026 06:21:33 +0000 Subject: [PATCH 2/7] =?UTF-8?q?xiehe2026=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- XIEHE/03 dm_ext_xiehe_geo.sql | 6 +++--- XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql | 9 +++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/XIEHE/03 dm_ext_xiehe_geo.sql b/XIEHE/03 dm_ext_xiehe_geo.sql index 64aaaac..cc127d9 100644 --- a/XIEHE/03 dm_ext_xiehe_geo.sql +++ b/XIEHE/03 dm_ext_xiehe_geo.sql @@ -30,7 +30,7 @@ select ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT from geo_xiehe a left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C -where fact_province in ('黑吉辽','云贵川青','湖北','甘肃','其他地区') +where fact_province in ('黑吉辽','云贵青','湖北','其他地区') union all -- 非特殊区域 @@ -51,7 +51,7 @@ select ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT from geo_xiehe a left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C -where fact_province not in ('黑吉辽','云贵川青','湖北','甘肃','其他地区') +where fact_province not in ('黑吉辽','云贵青','湖北','其他地区') -- COMMAND ---------- @@ -73,4 +73,4 @@ select ,CITY_MAP ,PROVINCE_MAP ,REGION_CENTER -from dws.dws_ext_xiehe_geo \ No newline at end of file +from dws.dws_ext_xiehe_geo diff --git a/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql b/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql index 70288f0..67f8700 100644 --- a/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql +++ b/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql @@ -231,6 +231,15 @@ WHERE T2.MARKET IS NOT NULL; -- COMMAND ---------- +--删除需要隐藏的市场 +MERGE INTO DM.DM_TD_EXT_XIEHE_PACK2MARKET AS target +USING dwd.dwd_gnd_ims_hidden_market AS source +ON UPPER(target.market) = UPPER(source.hidden_market) +AND source.data_source = '科室市场' +WHEN MATCHED THEN DELETE; + +-- COMMAND ---------- + INSERT OVERWRITE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_KEYCOMPETITOR WITH kc AS ( SELECT -- 2.49.1 From f5811e941f8f721760cdd0b410027a6097458548 Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Thu, 21 May 2026 08:30:51 +0000 Subject: [PATCH 3/7] =?UTF-8?q?county=E4=BA=8B=E5=AE=9E=E8=A1=A8=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 去年数据需要聚合防止多行陪陪出问题 --- county/03 DM_TF_EXT_COUNTY_SALES.sql | 80 +++++++++++++--------------- 1 file changed, 37 insertions(+), 43 deletions(-) diff --git a/county/03 DM_TF_EXT_COUNTY_SALES.sql b/county/03 DM_TF_EXT_COUNTY_SALES.sql index ac6832a..4d4ca19 100644 --- a/county/03 DM_TF_EXT_COUNTY_SALES.sql +++ b/county/03 DM_TF_EXT_COUNTY_SALES.sql @@ -151,39 +151,6 @@ and province_name not in ('台湾','澳门','香港') -- COMMAND ---------- - -WITH original_sales AS ( - SELECT /*+ BROADCAST(T2,T3) */ - T1.YM AS YYYYMM, - T2.PROVINCE_CODE AS AUDIT_COD, - T3.IQVIA_PACK_CODE AS PACK_CODE, - T1.VALUE AS SALES_VALUE, - T1.TOTALUNIT AS SALES_UNIT, - T1.COUNTINGUNIT AS COUNTINGUNIT - FROM FACT_COUNTY_PREVIOUS AS T1 - LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME - LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD -) - -SELECT - cy.YYYYMM, - cy.AUDIT_COD, - cy.PACK_CODE, - cy.SALES_VALUE, - cy.SALES_UNIT, - cy.COUNTINGUNIT, - -- 去年同期:YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303) - ly.SALES_VALUE AS SALES_VALUE_LY, - ly.SALES_UNIT AS SALES_UNIT_LY, - ly.COUNTINGUNIT AS COUNTINGUNIT_LY -FROM original_sales AS cy -LEFT JOIN original_sales AS ly - ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年 - AND ly.AUDIT_COD = cy.AUDIT_COD - AND ly.PACK_CODE = cy.PACK_CODE - --- COMMAND ---------- - INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES ( YYYYMM, PACK_CODE, @@ -227,15 +194,16 @@ WITH original_sales AS ( T1.YM AS YYYYMM, T2.PROVINCE_CODE AS AUDIT_COD, T3.IQVIA_PACK_CODE AS PACK_COD, - T1.VALUE AS SALES_VALUE_CAL, - T1.TOTALUNIT AS SALES_UNIT_CAL, - T1.COUNTINGUNIT AS CONUTING_UNIT + SUM(T1.VALUE ) AS SALES_VALUE_CAL, + SUM(T1.TOTALUNIT ) AS SALES_UNIT_CAL, + SUM(T1.COUNTINGUNIT ) AS CONUTING_UNIT FROM FACT_COUNTY_PREVIOUS AS T1 LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD + GROUP BY T1.YM,T2.PROVINCE_CODE,T3.IQVIA_PACK_CODE ) -,formated_count_sales_table ( +,formated_count_sales_table_detail ( SELECT cy.YYYYMM, cy.AUDIT_COD, @@ -243,15 +211,41 @@ WITH original_sales AS ( cy.SALES_VALUE_CAL, cy.SALES_UNIT_CAL, cy.CONUTING_UNIT, - -- 去年同期:YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303) + 0 AS SALES_VALUE_CAL_LY, + 0 AS SALES_UNIT_CAL_LY, + 0 AS CONUTING_UNIT_LY + FROM original_sales AS cy + + union ALL + + SELECT + ly.YYYYMM+100 as YYYYMM, + ly.AUDIT_COD, + ly.PACK_COD, + 0 as SALES_VALUE_CAL, + 0 as SALES_UNIT_CAL, + 0 as CONUTING_UNIT, + -- 去年同期 ly.SALES_VALUE_CAL AS SALES_VALUE_CAL_LY, ly.SALES_UNIT_CAL AS SALES_UNIT_CAL_LY, ly.CONUTING_UNIT AS CONUTING_UNIT_LY -FROM original_sales AS cy -LEFT JOIN original_sales AS ly - ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年 - AND ly.AUDIT_COD = cy.AUDIT_COD - AND ly.PACK_COD = cy.PACK_COD + FROM original_sales AS ly + WHERE ly.yyyymm+100 <= (select max( yyyymm ) from original_sales ) +) + +,formated_count_sales_table ( + SELECT + YYYYMM, + AUDIT_COD, + PACK_COD, + SUM(SALES_VALUE_CAL) AS SALES_VALUE_CAL, + SUM(SALES_UNIT_CAL) AS SALES_UNIT_CAL, + SUM(CONUTING_UNIT) AS CONUTING_UNIT, + SUM(SALES_VALUE_CAL_LY) AS SALES_VALUE_CAL_LY, + SUM(SALES_UNIT_CAL_LY) AS SALES_UNIT_CAL_LY, + SUM(CONUTING_UNIT_LY) AS CONUTING_UNIT_LY + FROM formated_count_sales_table_detail + GROUP BY 1,2,3 ) -- ════════════════════════════════════════════ -- 2.49.1 From d254d6509b15fa9e7d65c59db131551bdda3d7aa Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Fri, 22 May 2026 07:57:16 +0000 Subject: [PATCH 4/7] =?UTF-8?q?BBU=20County=20market=20=E6=B6=88=E5=A4=B1?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BBU County Related Market All 不显示是因为 模糊排除all market的条件导致被去除了 --- county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql b/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql index f89a26d..5f6f72d 100644 --- a/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql +++ b/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql @@ -68,4 +68,4 @@ INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING ON T1.PACK_CODE = T5.PACK_CODE AND T1.MARKET = T5.MARKET WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" + UPPER(T1.MARKET) NOT LIKE "%ALL%MARKET" -- 2.49.1 From c6edee7f1308be7793f51cb7f8028232172e1f0a Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Fri, 22 May 2026 08:01:08 +0000 Subject: [PATCH 5/7] =?UTF-8?q?BBU=20County=20market=E6=B6=88=E5=A4=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BBU County Related Market All --- UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql b/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql index d966440..68c7b65 100644 --- a/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql +++ b/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql @@ -191,7 +191,7 @@ SELECT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT FROM DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' +WHERE UPPER(MARKET) NOT LIKE '%ALL%MARKET' UNION ALL SELECT -- 2.49.1 From 115e853ead43cc8b00cf973e28214954c157361b Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Fri, 22 May 2026 11:00:17 +0000 Subject: [PATCH 6/7] county BBU County Related Market All --- county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql b/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql index ffb3d31..375c590 100644 --- a/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql +++ b/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql @@ -27,4 +27,4 @@ SELECT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file +WHERE UPPER(MARKET) NOT LIKE '%ALL%MARKET' -- 2.49.1 From 5fc543b11cede8abbdaff70b5f94df71e201b7ff Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Mon, 25 May 2026 11:50:54 +0000 Subject: [PATCH 7/7] =?UTF-8?q?COUNTY=E6=8C=82=E6=9E=B6=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ORG/DM_TD_EXT_COUNTY_ORG.sql | 313 +++++++++++++++++++---------------- 1 file changed, 170 insertions(+), 143 deletions(-) diff --git a/ORG/DM_TD_EXT_COUNTY_ORG.sql b/ORG/DM_TD_EXT_COUNTY_ORG.sql index 345fbb6..1da6693 100644 --- a/ORG/DM_TD_EXT_COUNTY_ORG.sql +++ b/ORG/DM_TD_EXT_COUNTY_ORG.sql @@ -32,6 +32,15 @@ -- COMMAND ---------- +-- MAGIC %run ../../../Common/config + +-- COMMAND ---------- + +-- MAGIC %python +-- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') + +-- COMMAND ---------- + -- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 create or replace temporary view dm_td_org_temp as @@ -54,9 +63,8 @@ FROM DM.dm_td_org P2 -- COMMAND ---------- -----------------------------------------------------county------------------------------------------------------------------------------ ------------------------除了Eagle、CHC、Retail、EC的人都能看 -insert overwrite table DM.DM_TD_EXT_COUNTY_ORG +-- +insert into DM.DM_TD_EXT_RETAIL_ORG (REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, TEAM, MR_TRTY_CODE, @@ -70,149 +78,168 @@ DSM_NAME, MR_KCODE, MR_NAME ) -SELECT DISTINCT '' REGION_CODE,'' region_name_en,'' rc_code,'' rc_name_en,'' RegionCenter,A.AUDIT_CODE,B.MARKET,C.bu_category,C.bu_name_en,C.sub_bu_name,C.sub_bu_code sub_bu_code_auth,concat(c.bu_code,'IQVIA-COUNTY(Quarterly)') bu_code_auth,A.DATA_SOURCE,1 REGION_RATIO,'','', -'' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -FROM DM.DM_TF_EXT_UNIONALL_SALES A -INNER JOIN DM.dm_td_external_market_pack_mapping B ON A.PACK_CODE = B.PACK_COD -AND A.DATA_SOURCE = B.DATA_SOURCE -INNER JOIN -( - SELECT DISTINCT '' bu_code,'' sub_bu_code,'' sub_bu_name,'' bu_category,'' bu_name_en -----------目前权限控制到BU,因此需要BU有值。 - FROM dm_td_org_temp C - WHERE C.yyyymm = (select key_value from dm.dm_td_date_config where key_code='pfmc_cvh') - AND C.BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') -) C -WHERE A.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' +WITH +-- ① 市场与子BU映射 +market_ta AS ( + select distinct MARKET,bu as subbu from dwd.dwd_gnd_tblmarket_bymonth + -- WHERE UPPER(TA) <> 'ALL' +), --- COMMAND ---------- +-- ② 产品包与市场映射 +pack_2_market AS ( + SELECT DISTINCT + a.PACK_CODE, + a.market, + b.subbu + FROM + dm.dm_td_ext_COUNTY_market_pack_mapping a + LEFT JOIN market_ta b ON a.MARKET = b.market +), +-- FAMILY与market映射 +family_2_markt as (select distinct + t3.prd_family_cd, + -- t4.ims_pack_cod, + t5.market +from + cdw_dwd_dim_product_wide t3 + inner JOIN dwd.dwd_td_imscode_azcode t4 + ON t3.prd_brand_cd = t4.brandcode + inner join pack_2_market t5 + on t4.ims_pack_cod = t5.pack_code +where + t3.prd_family_cd is not null + and t4.ims_pack_cod is not null +), --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_CODE,AUDIT_CODE,DATA_SOURCE from dm.DM_TF_EXT_UNIONALL_SALES -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_COUNTY_ORG -) -,tmp_org as ( -select distinct a.AUDIT_CODE,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_CODE = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_CODE = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL +-- ③ 外部地理信息 +external_geo AS ( + SELECT DISTINCT + province_c, + audit_cod, + REGION_CENTER + FROM dm.dm_td_external_geo_temp + WHERE DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' +), + +-- ④ 当前考核月份 +YM_CVH AS ( + SELECT key_value + FROM dm.dm_td_date_config + WHERE key_code = 'pfmc_cvh' +), + +-- ⑤ 组织架构(取当前考核月份快照) +td_org AS ( + SELECT DISTINCT + REGION_CODE, + region_name, + rc_code, + rc_name, + bu_category, + bu_name_en, + sub_bu_name, + sub_bu_code, + bu_code, + RSM_Name, + rsd_name, + mr_trty_code, + rsm_trty_code + FROM dm_td_org_temp t1 + INNER JOIN YM_CVH t2 ON t1.yyyymm = t2.key_value +), + +-- ⑥ 辖区-指征明细(仅保留 OBU/RIN,排除双考) +territory AS ( + SELECT DISTINCT + trty_code, + inst_code, + family_code, + bu + FROM dm.dm_td_sd_territory_indication t1 + INNER JOIN YM_CVH t2 ON t1.yyyymm = t2.key_value + WHERE t1.bu IN ('BBU_County') -- 20260320 chenwu DTP数据源只保留 OBU 和 RIN + AND t1.key_hp <> 3 -- 20250904 chenwu 排除双考影响 +), + +-- ⑦ 辖区-省份-市场关联 +province_market AS ( + SELECT + t1.trty_code, + t2.province_name, + t3.market + FROM territory t1 + LEFT JOIN dwd.dwd_td_institution t2 ON t1.inst_code = t2.inst_code + INNER JOIN family_2_markt t3 ON t1.family_code = t3.prd_family_cd ) -insert into table dm.DM_TD_EXT_COUNTY_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_CODE, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' +-- ════════════════════════════════════════════ +-- 主查询 Part 1:正常地理覆盖行 +-- ════════════════════════════════════════════ +SELECT DISTINCT + t1.REGION_CODE, + t1.region_name, + t1.rc_code, + t1.rc_name AS rc_name_en, + t3.REGION_CENTER AS RegionCenter, + t3.AUDIT_COD, + t2.MARKET, + t1.bu_category, + t1.bu_name_en, + t1.sub_bu_name, + t1.sub_bu_code AS sub_bu_code_auth, + CONCAT(t1.bu_code, 'IQVIA-COUNTY(Quarterly)') AS bu_code_auth, + 'IQVIA-COUNTY(Quarterly)' AS DATA_SOURCE, + 1 AS REGION_RATIO, + t1.RSM_Name, + t1.rsd_name, + '' AS TEAM, + '' AS MR_TRTY_CODE, + '' AS NSD_KCODE, + '' AS NSD_NAME, + '' AS RSD_KCODE, + '' AS RC_Name, + '' AS RSM_KCODE, + '' AS DSM_KCODE, + '' AS DSM_NAME, + '' AS MR_KCODE, + '' AS MR_NAME +FROM td_org t1 +INNER JOIN province_market t2 ON t1.mr_trty_code = t2.trty_code +INNER JOIN external_geo t3 ON t2.province_name = t3.province_c +WHERE t2.market IS NOT NULL + AND t3.audit_cod IS NOT NULL --- COMMAND ---------- +UNION ALL --- DBTITLE 1,DM_TD_EXT_CHPA_ORG ------------------------------------------------------------ ---修改时间: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_EXT_COUNTY_ORG 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 +-- ════════════════════════════════════════════ +-- 主查询 Part 2:ROC 虚拟兜底行 +-- ════════════════════════════════════════════ +SELECT DISTINCT + 'ROC' AS REGION_CODE, + 'ROC' AS region_name, + 'ROC' AS rc_code, + 'ROC' AS rc_name_en, + 'Other Low Tiers' AS RegionCenter, + 'ROC' AS AUDIT_COD, + t2.MARKET, + 'All Channel' AS bu_category, + nvl(subbu,'BBU_County') AS bu_name_en, + nvl(subbu,'BBU_County') AS sub_bu_name, + nvl(subbu,'BBU_County') AS sub_bu_code_auth, + 'IQVIA-COUNTY(Quarterly)' AS bu_code_auth, + 'IQVIA-COUNTY(Quarterly)' AS DATA_SOURCE, + 1 AS REGION_RATIO, + 'Vacant' AS RSM_Name, + 'Vacant' AS RC_Name, + '' AS TEAM, + '' AS MR_TRTY_CODE, + '' AS NSD_KCODE, + '' AS NSD_NAME, + '' AS RSD_KCODE, + '' AS RSD_NAME, + '' AS RSM_KCODE, + '' AS DSM_KCODE, + '' AS DSM_NAME, + '' AS MR_KCODE, + '' AS MR_NAME +FROM pack_2_market t2 -- 2.49.1