From 5fc543b11cede8abbdaff70b5f94df71e201b7ff Mon Sep 17 00:00:00 2001 From: "zhuchenwu@chenwuzhu.cn" Date: Mon, 25 May 2026 11:50:54 +0000 Subject: [PATCH] =?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