Files
MarketAnalysis-ETL/ORG/DM_TD_EXT_THC_ORG.sql
zhuchenwu@chenwuzhu.cn 550df7d257 20260429chenwu
zhouxin & chenwu 修改
2026-04-29 15:57:22 +00:00

339 lines
9.3 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_THC_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_thc_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 ----------
------------------------------------------------------------------------------------------------------
--修改时间20241113
--修改人Fanxujia
--修改内容:
--THC增加省份数据因此增加架构数据。只需要Eagle的架构
------------------------------------------------------------------------------------------------------
----------------------------------------------------THC------------------------------------------------------------------------------
--------只有eagle的人能看THC
insert overwrite dm.DM_TD_EXT_THC_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 pack_market as (
select distinct pack_cod,market
from dm.dm_td_external_market_pack_mapping
where data_source = 'THC(Quarterly)'
)
,external_geo as (
select distinct province_c,audit_cod,REGION_CENTER
from dm.dm_td_external_geo_temp
where DATA_SOURCE = 'THC(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
from dm.dm_td_sd_territory_indication t1
inner join YM_CVH t2
on t1.yyyymm = t2.key_value
where bu = 'Eagle'
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
)
,national_sales as (
select distinct
PACK_COD,
AUDIT_COD
from DM.dm_tf_external_sales_thc
where DATA_SOURCE = 'THC(Quarterly)'
)
SELECT
DISTINCT t1.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, 'THC(Quarterly)') bu_code_auth,
'THC(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
'' as REGION_CODE,
'' as region_name_en,
'' as rc_code,
'' as rc_name_en,
'' as RegionCenter,
t1.AUDIT_COD,
t2.MARKET,
'' as bu_category,
'' as bu_name_en,
'' as sub_bu_name,
'' as sub_bu_code_auth,
'THC(Quarterly)' as bu_code_auth,
'THC(Quarterly)' as DATA_SOURCE,
1 as REGION_RATIO,
'' as RSM_Name,
'' 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 national_sales t1
INNER JOIN pack_market t2
ON t1.PACK_COD = t2.PACK_COD
-- COMMAND ----------
-- 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_THC_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
)
insert into table dm.DM_TD_EXT_THC_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 = 'THC(Quarterly)'
-- 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
)
MERGE into dm.DM_TD_EXT_THC_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