Files
MarketAnalysis-ETL/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql
2026-04-20 14:55:25 +08:00

461 lines
14 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Databricks notebook source
-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_ORG (
-- REGION_CODE STRING,
-- REGION_NAME_EN STRING,
-- RSM_NAME STRING,
-- RC_CODE STRING,
-- RC_NAME_EN STRING,
-- RC_NAME STRING,
-- REGIONCENTER STRING,
-- AUDIT_COD STRING,
-- MARKET STRING,
-- BU_CATEGORY STRING,
-- BU_NAME_EN STRING,
-- SUB_BU_NAME STRING,
-- SUB_BU_CODE_AUTH STRING,
-- BU_CODE_AUTH STRING,
-- DATA_SOURCE STRING,
-- REGION_RATIO FLOAT,
-- TEAM STRING,
-- MR_TRTY_CODE STRING,
-- NSD_KCODE STRING,
-- NSD_NAME STRING,
-- RSD_KCODE STRING,
-- RSD_NAME STRING,
-- RSM_KCODE STRING,
-- DSM_KCODE STRING,
-- DSM_NAME STRING,
-- MR_KCODE STRING,
-- MR_NAME STRING)
-- USING delta
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_org';
-- 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
SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name
,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code
,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report
,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code
,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name
,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en
,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name
,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en
,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode
,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name
,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code
,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode
,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code
,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code
,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode
FROM DM.dm_td_org P2
-- COMMAND ----------
---------------------------------------------------------------------------------------
--修改时间20241105
--修改人Fanxujia
--修改内容:
--for AIA Dashboard新增NSD、RSD、RSM、DSM、MR、TEAM等信息
--仅AIA渠道的数据增加值其他渠道都为空
---------------------------------------------------------------------------------------
---------------------------------------------------AIA------------------------------------------------------------------------------
--AIA参考CHPA
------所有BU能看AIA
--从销量表取到全部的机构、市场组合
with ALL_AUDIT_Market as (
select distinct NVL(t1.AUDIT_COD,'ROC') AUDIT_COD,
NVL(t2.market,'ALL Market') market
from dm.dm_ext_aia_sales t1
left join dm.dm_td_ext_aia_market_pack_mapping t2
on t1.pack_cod = t2.PACK_CODE
)
,pack_market as (
select distinct PACK_CODE AS PACK_COD,market
from dm.dm_td_ext_aia_market_pack_mapping
)
--获取城市与大区中心的mapping
,EXTERNAL_GEO as (
select distinct
concat(city_c, '') as city_c,
REGION_CENTER
from DM.DM_TD_EXTERNAL_GEO_TEMP
where DATA_SOURCE = 'AIA(Monthly)'
)
--CVH架构月
,CVH_YM as (
select key_value as yyyymm
from dm.dm_td_date_config
where key_code = 'pfmc_cvh'
)
--org表
,org as (
select distinct
t1.yyyymm,
t1.bu_category,
t1.bu_code,
t1.bu_name_en,
t1.sub_bu_code,
t1.sub_bu_name,
t1.REGION_CODE,
t1.region_name,
t1.rc_code,
t1.rc_name,
t1.district_name as team,
t1.mr_trty_code,
t1.nsd_kcode,
case when t1.nsd_name = 'Vacant' then t1.nsd_kcode else t1.nsd_name end as nsd_name,
t1.rsd_kcode,
case when t1.rsd_name = 'Vacant' then t1.rsd_kcode else t1.rsd_name end as rsd_name,
t1.rsm_kcode,
case when t1.rsm_name = 'Vacant' then t1.rsm_kcode else t1.rsm_name end as rsm_name,
t1.dsm_kcode,
case when t1.dsm_name = 'Vacant' then t1.dsm_kcode else t1.dsm_name end as dsm_name,
t1.mr_kcode,
case when t1.mr_name = 'Vacant' then t1.mr_kcode else t1.mr_name end as mr_name
from dm_td_org_temp t1
inner join CVH_YM t2
on t1.yyyymm = t2.yyyymm
)
--territory表
,territory as (
select distinct
t1.yyyymm,
t1.trty_code,
t1.inst_code,
t1.family_code
from dm.dm_td_sd_territory_indication t1
inner join CVH_YM t2
on t1.yyyymm = t2.yyyymm
where t1.bu not in ('CUBE','KA')
and ((t1.key_hp in (2) and t1.bu <> 'Retail' and t1.trty_code <>'Eagle') or t1.key_hp = 1)--chenwu 20250904 排除双考影响
)
--将内部的Family_code转为外部的pack_cod
,inst_pack_previous as (
select distinct
t1.yyyymm,
t1.trty_code,
t1.inst_code,
t2.city_name,
t5.market,
case when t2.area_code = 'SOUTH' then 'South'
when t2.area_code = 'WEST' then 'West'
when t2.area_code = 'CENTRAL' then 'Central'
when t2.area_code = 'NORTH' then 'North'
when t2.area_code = 'EAST' then 'East'
end as REGION_CENTER
from territory t1
left join dwd.dwd_td_institution t2
on t1.inst_code = t2.inst_code
left join cdw_dwd_dim_product_wide t3
on t1.family_code = t3.prd_family_cd
left join dwd.dwd_td_imscode_azcode t4
on t3.prd_brand_cd = t4.brandcode
left join pack_market t5
on t4.ims_pack_cod = t5.PACK_COD
)
/*
20251207 Chenwu 把可定的架构复制到立普妥上,直接替换市场 'Atorvastatin Market' = 'Rosuvastatin Market'
*/
,inst_pack as (
select
yyyymm,
trty_code,
inst_code,
city_name,
market,
REGION_CENTER
from inst_pack_previous
union all
select
yyyymm,
trty_code,
inst_code,
city_name,
'Atorvastatin Market' market,
REGION_CENTER
from inst_pack_previous
where market = 'Rosuvastatin Market'
)
---------------------------------------------------------------------------------------
--修改时间20250220
--修改人Zhu chenwu
--修改内容:
--原本存在部分Eagel的机构和市场没有挂上架构针对于没有挂上的部分用dws.dws_td_eg_cityterritory中的city 和family的关系对应到市场挂上架构。
----------------------------------------------m-----------------------------------------
,eagle_trty as
(---eagle的city 和 family 对应的 trtycode取数据时如果city和family对应的trtycode 有多个以p12p11,p11为准取第一个。
select SP_TRTY_CD,CITY_CD,FAMILY_CD from (
select *
,row_number() over (partition by CITY_CD,FAMILY_CD order by PROJECT_CD desc) as num
from (
select SP_TRTY_CD,CITY_CD,FAMILY_CD,PROJECT_CD from dws.dws_td_eg_cityterritory t1
inner join CVH_YM t2
on t1.YM = t2.yyyymm
where SP_TRTY_CD not in (select distinct trty_code from dm.dm_td_sd_territory_indication where bu = 'Eagle')
and PROJECT_CD in (select distinct project_code from DWS.dws_td_eg_project_instype WHERE ins_type='医院')
and cast(nvl(SALES_RATE,0) as decimal(20,6))<>'0.000000'
group by 1,2,3,4
)
) where num = 1
)
,family_mapping as (--family和brand的mapping
select prd_family_cd,prd_brand_cd from cdw_dwd_dim_product_wide
group by 1,2
)
,packcode_mapping as (--pack 和 brand的mapping
select brandcode,ims_pack_cod from dwd.dwd_td_imscode_azcode
group by 1,2
)
,geo_mapping as (--city的中文
select city_code,city_name from dm.dm_td_geography
group by 1,2
)
,eagle_mapping (--eagle表中city和family所对应的 岗位编码
select SP_TRTY_CD,city_name,market from (
select
t1.SP_TRTY_CD
-- ,t1.FAMILY_CD
-- ,t3.prd_brand_cd
,t4.ims_pack_cod
,t5.city_name
from eagle_trty t1
left join family_mapping t3
on t1.FAMILY_CD = t3.prd_family_cd --转换family 成 brand
left join packcode_mapping t4
on t3.prd_brand_cd = t4.brandcode
left join geo_mapping t5
on t1.CITY_CD = t5.city_code) A
inner join pack_market B on A.ims_pack_cod = B.PACK_COD
group by 1,2,3
)
,audit_geo as (--audit的城市信息
select AUDIT_COD,max(CITY_C) as city_c from DM.DM_TD_EXTERNAL_GEO
where DATA_SOURCE = 'AIA(Monthly)'
group by 1)
,eagle_trty_with_city as ( --eagle中 挂上 部分机构归不到eagle的按eagle的城市+品牌挂上
select
t0.AUDIT_COD,t0.market
,t10.city_c
,eagle_mapping.SP_TRTY_CD from ALL_AUDIT_Market t0
left join audit_geo t10 on t0.AUDIT_COD = t10.AUDIT_COD
left join eagle_mapping on eagle_mapping.city_name = t10.city_c and eagle_mapping.market = t0.market
where eagle_mapping.SP_TRTY_CD is not null
group by 1,2,3,4)
insert overwrite dm.DM_TD_EXT_AIA_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,
NSD_KCODE,
NSD_NAME,
RSD_KCODE,
RSD_NAME,
RSM_KCODE,
DSM_KCODE,
DSM_NAME,
MR_KCODE,
MR_NAME
)
SELECT distinct
COALESCE(t2.REGION_CODE,t6.REGION_CODE,'ROC') as REGION_CODE,
COALESCE(t2.region_name,t6.region_name,'ROC') as region_name_en,
COALESCE(t2.rc_code,t6.rc_code,'ROC') as rc_code,
COALESCE(t2.rc_name,t6.rc_name,'ROC') as rc_name_en,
COALESCE(t1.REGION_CENTER,t4.REGION_CENTER,t7.REGION_CENTER,'') as RegionCenter,
t0.AUDIT_COD,
t0.MARKET,
COALESCE(t2.bu_category,t6.bu_category,'') as bu_category,
COALESCE(t2.bu_name_en,t6.bu_name_en,'') as bu_name_en,
COALESCE(t2.sub_bu_name,t6.sub_bu_name,'') as sub_bu_name,
COALESCE(t2.sub_bu_code,t6.sub_bu_code,'') as sub_bu_code_auth,
concat(COALESCE(t2.bu_code,t6.bu_code,''),'AIA(Monthly)') as bu_code_auth,
'AIA(Monthly)' as DATA_SOURCE,
1 REGION_RATIO,
COALESCE(t2.rsm_name,t6.rsm_name,'Vacant') as rsm_name,
COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as RC_Name,
COALESCE(t2.team,t6.team,'ROC') as team,
COALESCE(t2.mr_trty_code,t6.mr_trty_code,'Vacant') as mr_trty_code,
COALESCE(t2.nsd_kcode,t6.nsd_kcode,'Vacant') as nsd_kcode,
COALESCE(t2.nsd_name,t6.nsd_name,'Vacant') as nsd_name,
COALESCE(t2.rsd_kcode,t6.rsd_kcode,'Vacant') as rsd_kcode,
COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as rsd_name,
COALESCE(t2.rsm_kcode,t6.rsm_kcode,'Vacant') as rsm_kcode,
COALESCE(t2.dsm_kcode,t6.dsm_kcode,'Vacant') as dsm_kcode,
COALESCE(t2.dsm_name,t6.dsm_name,'Vacant') as dsm_name,
COALESCE(t2.mr_kcode,t6.mr_kcode,'Vacant') as mr_kcode,
COALESCE(t2.mr_name,t6.mr_name,'Vacant') as mr_name
-- ,t5.SP_TRTY_CD
from ALL_AUDIT_Market t0
left join inst_pack t1
on t0.AUDIT_COD = t1.inst_code
and t0.market = t1.market
left join org t2
on t1.trty_code = t2.mr_trty_code
and t1.yyyymm = t2.yyyymm
left join EXTERNAL_GEO t4
on t1.city_name = t4.city_c
left join eagle_trty_with_city t5
on t0.AUDIT_COD = t5.AUDIT_COD
and t0.market = t5.market and t1.inst_code is null
left join org t6
on t5.SP_TRTY_CD = t6.mr_trty_code
left join EXTERNAL_GEO t7
on t5.city_c = t7.city_c
-- COMMAND ----------
-- DBTITLE 1,add
--修改时间20240808
--修改人FanXuJia
--修改背景:
--事实表与维度表来自于不同手工表目前存在一部分audit_cod在事实表有销量但是在维度表没有这个audit_cod导致销量缺失。
--因此需要从事实表补全这部分audit_cod
with sales as (
select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales
union
select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc
)
,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_AIA_ORG
)
,tmp_org as (
select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE
from sales a
left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE
left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET
where C.AUDIT_COD IS NULL
)
insert into table dm.DM_TD_EXT_AIA_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_COD,
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 = 'AIA(Monthly)'
-- COMMAND ----------
-- DBTITLE 1,hidden_market
-----------------------------------------------------------
--修改时间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_AIA_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