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

409 lines
11 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_RETAIL_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_retail_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
WHERE rc_name NOT LIKE '%B2C%'
-- COMMAND ----------
----------------------------------------------------Retail-----------------------------------------------------------------------
insert overwrite 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,
NSD_KCODE,
NSD_NAME,
RSD_KCODE,
RSD_NAME,
RSM_KCODE,
DSM_KCODE,
DSM_NAME,
MR_KCODE,
MR_NAME
)
with
market_ta (
select
MARKET,case when TA = 'ONCO' then 'OBU' else 'Retail' end as subbu
from dm.dm_td_external_market_ta
where DATA_SOURCE = 'Retail(Quarterly)'
group by 1,2
)
,pack_market as (
select distinct a.pack_cod,a.market,b.subbu
from dm.dm_td_external_market_pack_mapping a
left join market_ta b on a.MARKET = b.market
where data_source = 'Retail(Quarterly)'
)
,external_geo as (
select distinct province_c,audit_cod,REGION_CENTER
from dm.dm_td_external_geo_temp
where DATA_SOURCE = 'Retail(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
)
,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 bu in ('Retail') --20260320 chenwu Retail数据源的架构去掉OBU只保留Retail
and t1.key_hp<>3 --chenwu 20250904 排除双考影响
)
,province_market as (
select t1.trty_code,
t2.province_name,
t5.market
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
where t1.bu=t5.subbu
)
SELECT
DISTINCT t1.REGION_CODE REGION_CODE,
t1.region_name,
t1.rc_code,
t1.rc_name,
t3.REGION_CENTER RegionCenter,
t3.AUDIT_COD,
t2.MARKET,
t1.bu_category,
t1.bu_name_en,
t1.sub_bu_name,
t1.sub_bu_code sub_bu_code_auth,
concat(t1.bu_code, 'Retail(Quarterly)') bu_code_auth,
'Retail(Quarterly)' as DATA_SOURCE,
1 REGION_RATIO,
t1.RSM_Name,
t1.rsd_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 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
union all
SELECT DISTINCT
'ROC' as REGION_CODE,
'ROC' as region_name_en,
'ROC' as rc_code,
'ROC' as rc_name_en,
'Other Low Tiers' as RegionCenter,
'ROC' AUDIT_COD,
t2.MARKET,
'All Channel' as bu_category,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as bu_name_en,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_name,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_code_auth,
'Retail(Quarterly)' as bu_code_auth,
'Retail(Quarterly)' as DATA_SOURCE,
1 as REGION_RATIO,
'Vacant' as RSM_Name,
'Vacant' as rsd_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_market t2
--特殊处理部分
union all
SELECT
DISTINCT t1.REGION_CODE REGION_CODE,
t1.region_name,
t1.rc_code,
t1.rc_name,
t3.REGION_CENTER RegionCenter,
t3.AUDIT_COD,
"Atorvastatin Market" as MARKET,
t1.bu_category,
t1.bu_name_en,
t1.sub_bu_name,
t1.sub_bu_code sub_bu_code_auth,
concat(t1.bu_code, 'Retail(Quarterly)') bu_code_auth,
'Retail(Quarterly)' as DATA_SOURCE,
1 REGION_RATIO,
t1.RSM_Name,
t1.rsd_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 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
and t2.market = 'Rosuvastatin Market'
-- COMMAND ----------
-- DBTITLE 1,DTP
----------------------------------------------------Retail-----------------------------------------------------------------------
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,
NSD_KCODE,
NSD_NAME,
RSD_KCODE,
RSD_NAME,
RSM_KCODE,
DSM_KCODE,
DSM_NAME,
MR_KCODE,
MR_NAME
)
with
market_ta (
select
MARKET,case when TA = 'ONCO' then 'OBU' else 'Retail' end as subbu
from dm.dm_td_external_market_ta
where DATA_SOURCE = 'DTP(Quarterly)'
group by 1,2
)
,pack_market as (
select distinct a.pack_cod,a.market,b.subbu
from dm.dm_td_external_market_pack_mapping a
left join market_ta b on a.MARKET = b.market
where data_source = 'DTP(Quarterly)'
)
,external_geo as (
select distinct province_c,audit_cod,REGION_CENTER
from dm.dm_td_external_geo_temp
where DATA_SOURCE = 'DTP(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
)
,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 bu in ('OBU','RIN') --20260320 chenwu DTP数据源的架构只保留OBU和RIN
and t1.key_hp<>3 --chenwu 20250904 排除双考影响
)
,province_market as (
select t1.trty_code,
t2.province_name,
t5.market
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
where t1.bu=t5.subbu
)
SELECT
DISTINCT t1.REGION_CODE REGION_CODE,
t1.region_name,
t1.rc_code,
t1.rc_name,
t3.REGION_CENTER RegionCenter,
t3.AUDIT_COD,
t2.MARKET,
t1.bu_category,
t1.bu_name_en,
t1.sub_bu_name,
t1.sub_bu_code sub_bu_code_auth,
concat(t1.bu_code, 'DTP(Quarterly)') bu_code_auth,
'DTP(Quarterly)' as DATA_SOURCE,
1 REGION_RATIO,
t1.RSM_Name,
t1.rsd_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 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
union all
SELECT DISTINCT
'ROC' as REGION_CODE,
'ROC' as region_name_en,
'ROC' as rc_code,
'ROC' as rc_name_en,
'Other Low Tiers' as RegionCenter,
'ROC' AUDIT_COD,
t2.MARKET,
'All Channel' as bu_category,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as bu_name_en,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_name,
CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_code_auth,
'DTP(Quarterly)' as bu_code_auth,
'DTP(Quarterly)' as DATA_SOURCE,
1 as REGION_RATIO,
'Vacant' as RSM_Name,
'Vacant' as rsd_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_market t2