From 31a612a902b70f971080481405e76a76fd96b4b4 Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Wed, 20 May 2026 10:11:13 +0000 Subject: [PATCH] =?UTF-8?q?county2026=E5=B9=B4=E5=88=87=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=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%"