Files
MarketAnalysis-ETL/CHPA/03 dm_ims_td_org.sql
2026-04-27 11:04:09 +08:00

615 lines
13 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
-- 源表DM.dm_td_org,dm.dm_td_territory_indication,dm.dm_td_date_config,dm.dm_ims_tf_sales
-- 目标表dm.dm_ims_td_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 ----------
create or replace temporary view dm_td_org_tmp 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,
p2.rsm_kcode,
p2.rc_code,
p2.rc_name_en,
p2.region_code,
p2.region_name_en,
BU_CATEGORY,
yyyymm,
mr_trty_code,
mr_kcode,
dsm_trty_code,
rsm_trty_code,
dsm_kcode,
rsd_trty_code
FROM
DM.dm_td_org P2
-- COMMAND ----------
--dm_org --使用和performance cvh 的org架构
-- insert overwrite table tmp.tmp_ims_td_org
create or replace temporary view tmp_ims_td_org as
select distinct
rsm_trty_code,
rsm_kcode,
case
when rsm_name = 'Vacant' then concat (rsm_trty_code, '_V')
else rsm_name
end as rsm_name,
rsd_trty_code,
rsd_kcode,
case
when rsd_name = 'Vacant' then concat (rsd_trty_code, '_V')
else rsd_name
end as rsd_name,
nsd_trty_code,
nsd_kcode,
case
when nsd_name = 'Vacant' then concat (nsd_trty_code, '_V')
else nsd_name
end as nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
t2.city_name,
null as ims_pack_cod,
t3.market,
t2.province_code as ims_audit_cod,
1 as ims_city_ratio
from
dm_td_org_tmp t1
left join (
select distinct
t1.yyyymm,
t1.trty_code,
t2.city_name,
-- 20260210 Yusuo ADD
t2.province_code,
t4.ims_prod_cod,
t4.ims_pack_cod
from
dm.dm_td_territory_indication t1
left join dwd.dwd_td_institution t2 on t1.inst_code = t2.inst_code
left join cdw_dwd_dim_product_wide t3 on t3.prd_family_cd = t1.family_code
left join dwd.dwd_td_imscode_azcode t4 on t3.prd_brand_cd = t4.brandcode
where
t1.bu not in ('CUBE', 'KA')
) t2 on t2.trty_code = t1.mr_trty_code
and t2.yyyymm = t1.yyyymm
left join dws.dws_ims_td_market t3 on t2.ims_pack_cod = t3.pack_cod
--使用和performance cvh 的org架构
where
t1.yyyymm in (
select
key_value
from
dm.dm_td_date_config
where
key_code = 'pfmc_cvh'
)
-- COMMAND ----------
--将还没有做出来AZ产品关系的market挂给所有的对应BU
-- insert into tmp_ims_td_org
create or replace temporary view tmp_ims_td_org1 as
select distinct
'Vacant' as rsm_trty_code,
'Vacant' as rsm_kcode,
'Vacant' as rsm_name,
'Vacant' as rsd_trty_code,
'Vacant' as rsd_kcode,
'Vacant' as rsd_name,
'Vacant' as nsd_trty_code,
'Vacant' as nsd_kcode,
'Vacant' as nsd_name,
'Non AZ Region' as region_code,
'Non AZ Region' as region_name,
'Non AZ Region' as region_name_en,
'Non AZ Region' as rc_code,
'Non AZ Region' as rc_name,
'Non AZ Region' as rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
city_name,
null as ims_pack_cod,
t2.market,
ims_audit_cod,
ims_city_ratio
from
tmp_ims_td_org t1
left join (
select distinct
t2.market,
t2.bu
from
tmp_ims_td_org t1
right join dwd.dwd_td_ims_market_ta_order t2 on t1.market = t2.market
where
t1.market is null
and t2.market <> 'IMS ALL Market'
) t2 on t1.bu_name_en = t2.bu
where
t2.market is not null
-- COMMAND ----------
--将所有的ROC的市场数据补全同时根据市场找到对应BU
-- insert into tmp_ims_td_org
create or replace temporary view tmp_ims_td_org2 as
select distinct
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
t2.bu_code,
t2.bu_name,
t2.bu_name_en,
t2.bu_category,
t2.sub_bu_code,
t2.sub_bu_name,
t2.sub_bu_name_en,
t2.city_name,
null as ims_pack_cod,
t2.market,
t2.ims_audit_cod,
t2.ims_city_ratio
from
(
select
'Vacant' as rsm_trty_code,
'Vacant' as rsm_kcode,
'Vacant' as rsm_name,
'Vacant' as rsd_trty_code,
'Vacant' as rsd_kcode,
'Vacant' as rsd_name,
'Vacant' as nsd_trty_code,
'Vacant' as nsd_kcode,
'Vacant' as nsd_name,
'Other Low Tiers' as region_code,
'Other Low Tiers' as region_name,
'Other Low Tiers' as region_name_en,
'Other Low Tiers' as rc_code,
'Other Low Tiers' as rc_name,
'Other Low Tiers' as rc_name_en,
'Other Low Tiers' as city_name,
'ROC' as audit_cod
) t1
full join (
select distinct
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
market,
ims_city_ratio,
'Other Low Tiers' as city_name,
'ROC' as ims_audit_cod
from
tmp_ims_td_org1
where
bu_code is not null
--有销量的ROC数据
and concat (market, '_ROC') in (
select distinct
concat(market,'_ROC' ) market_audit_key from
dm.dm_tf_ext_unionall_market_sales
where DATA_SOURCE = 'IQVIA-CHPA(Monthly)' and
audit_cod = 'ROC'
)
) t2 on t1.audit_cod = t2.ims_audit_cod
-- COMMAND ----------
--将所有未能挂上Org的市场数据补全同时根据市场找到对应BU
-- insert into tmp_ims_td_org
create or replace temporary view tmp_ims_td_org3 as
select distinct
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
t2.bu_code,
t2.bu_name,
t2.bu_name_en,
t2.bu_category,
t2.sub_bu_code,
t2.sub_bu_name,
t2.sub_bu_name_en,
t2.city_name,
null as ims_pack_cod,
t2.market,
t2.ims_audit_cod,
t2.ims_city_ratio
from
(
select
'Vacant' as rsm_trty_code,
'Vacant' as rsm_kcode,
'Vacant' as rsm_name,
'Vacant' as rsd_trty_code,
'Vacant' as rsd_kcode,
'Vacant' as rsd_name,
'Vacant' as nsd_trty_code,
'Vacant' as nsd_kcode,
'Vacant' as nsd_name,
'Non AZ Region' as region_code,
'Non AZ Region' as region_name,
'Non AZ Region' as region_name_en,
'Non AZ Region' as rc_code,
'Non AZ Region' as rc_name,
'Non AZ Region' as rc_name_en
) t1
full join (
select distinct
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
-- 'ALL' as sub_bu_code,'ALL' as sub_bu_name,'ALL' as sub_bu_name_en,
t2.audit_cod as ims_audit_cod,
null as city_name,
t2.market,
ims_city_ratio
from
tmp_ims_td_org2 t1
inner join (
--筛选出挂不上Org的市场城市同时又有销量的
select distinct
t2.market,
t2.audit_cod,
t3.bu
from
tmp_ims_td_org2 t1
right join (
select distinct
audit_cod,
market
from
dm.dm_tf_ext_unionall_market_sales
where DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
) t2 on concat (t1.market, '_', t1.ims_audit_cod) = concat (t2.market, '_', t2.audit_cod)
left join dwd.dwd_td_ims_market_ta_order t3 on t2.market = t3.market
where
concat (t1.market, '_', t1.ims_audit_cod) is null
and t2.market <> 'IMS ALL Market'
) t2 on t1.bu_name_en = t2.bu
) t2
where
t2.bu_code is not null
-- COMMAND ----------
create or replace temporary view tmp_ims_td_org4 as
select
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
city_name,
ims_pack_cod,
market,
ims_audit_cod,
ims_city_ratio
from
tmp_ims_td_org
union all
select
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
city_name,
ims_pack_cod,
market,
ims_audit_cod,
ims_city_ratio
from
tmp_ims_td_org1
union all
select
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
city_name,
ims_pack_cod,
market,
ims_audit_cod,
ims_city_ratio
from
tmp_ims_td_org2
union all
select
rsm_trty_code,
rsm_kcode,
rsm_name,
rsd_trty_code,
rsd_kcode,
rsd_name,
nsd_trty_code,
nsd_kcode,
nsd_name,
region_code,
region_name,
region_name_en,
rc_code,
rc_name,
rc_name_en,
bu_code,
bu_name,
bu_name_en,
bu_category,
sub_bu_code,
sub_bu_name,
sub_bu_name_en,
city_name,
ims_pack_cod,
market,
ims_audit_cod,
ims_city_ratio
from
tmp_ims_td_org3
-- COMMAND ----------
insert overwrite table dm.dm_ims_td_org
select distinct
concat (t1.market, '_', t2.audit_cod) as ORG_KEY,
t1.rsm_trty_code,
t1.rsm_kcode,
t1.rsm_name,
t1.rsd_trty_code,
t1.rsd_kcode,
t1.rsd_name,
t1.nsd_trty_code,
t1.nsd_kcode,
t1.nsd_name,
t1.region_code,
t1.region_name,
t1.region_name_en,
t1.rc_code,
t1.rc_name,
t1.rc_name_en,
t1.bu_code,
t1.bu_name,
t1.bu_name_en,
t1.bu_category,
t1.sub_bu_code,
t1.sub_bu_name,
t1.sub_bu_name_en,
t1.sub_bu_code as sub_bu_code_auth, --前端权限配置需要的字段
t1.bu_code as bu_code_auth, --前端权限配置需要的字段
t2.audit_cod,
t2.audit_des,
t2.audit_des_c,
t2.Province,
t2.Province_C,
t2.RegionCenter,
t1.market,
concat (t1.market, '_', t2.audit_cod) as market_audit_key,
from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT,
from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT
from
tmp_ims_td_org4 t1
left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod
--where t1.market is not null and t1.ims_audit_cod is not null
/* 20260409 chenwu IMS ALL Market 不需要了
union all
select distinct
concat ('IMS ALL Market_', t2.audit_cod) as ORG_KEY,
t1.rsm_trty_code,
t1.rsm_kcode,
t1.rsm_name,
t1.rsd_trty_code,
t1.rsd_kcode,
t1.rsd_name,
t1.nsd_trty_code,
t1.nsd_kcode,
t1.nsd_name,
t1.region_code,
t1.region_name,
t1.region_name_en,
t1.rc_code,
t1.rc_name,
t1.rc_name_en,
t1.bu_code,
t1.bu_name,
t1.bu_name_en,
t1.bu_category,
t1.sub_bu_code,
t1.sub_bu_name,
t1.sub_bu_name_en,
'ALL' as sub_bu_code_auth,
'ALL' as bu_code_auth,
t2.audit_cod,
t2.audit_des,
t2.audit_des_c,
t2.Province,
t2.Province_C,
t2.RegionCenter,
'IMS ALL Market' as market,
concat ('IMS ALL Market_', t2.audit_cod) as market_audit_key,
from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT,
from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT
from
tmp_ims_td_org4 t1
left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod
where
t1.market is not null
and t1.ims_audit_cod is not null
*/