county以及xiehe修改合并 #2

Merged
chenwu merged 7 commits from county_2026 into master 2026-05-26 14:36:03 +08:00
11 changed files with 737 additions and 1022 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,11 +0,0 @@
-- Databricks notebook source
-- 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 ----------

View File

@@ -32,6 +32,15 @@
-- COMMAND ---------- -- 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。 -- 20260130 由于DM.dm_td_org数据需要转换新增这个CELL。
create or replace temporary view dm_td_org_temp create or replace temporary view dm_td_org_temp
as as
@@ -54,9 +63,8 @@ FROM DM.dm_td_org P2
-- COMMAND ---------- -- COMMAND ----------
----------------------------------------------------county------------------------------------------------------------------------------ --
-----------------------除了Eagle、CHC、Retail、EC的人都能看 insert into DM.DM_TD_EXT_RETAIL_ORG
insert overwrite table DM.DM_TD_EXT_COUNTY_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, (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, TEAM,
MR_TRTY_CODE, MR_TRTY_CODE,
@@ -70,149 +78,168 @@ DSM_NAME,
MR_KCODE, MR_KCODE,
MR_NAME 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,'','', WITH
'' as TEAM, -- ① 市场与子BU映射
'' as MR_TRTY_CODE, market_ta AS (
'' as NSD_KCODE, select distinct MARKET,bu as subbu from dwd.dwd_gnd_tblmarket_bymonth
'' as NSD_NAME, -- WHERE UPPER(TA) <> 'ALL'
'' 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 -----------BUBU有值
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)'
-- 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 external_geo AS (
--FanXuJia SELECT DISTINCT
-- province_c,
--audit_cod在事实表有销量audit_cod audit_cod,
--audit_cod REGION_CENTER
with sales as ( FROM dm.dm_td_external_geo_temp
select distinct PACK_CODE,AUDIT_CODE,DATA_SOURCE from dm.DM_TF_EXT_UNIONALL_SALES WHERE DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)'
) ),
,market_pack as (
select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -- ④ 当前考核月份
) YM_CVH AS (
,org as ( SELECT key_value
select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_COUNTY_ORG FROM dm.dm_td_date_config
) WHERE key_code = 'pfmc_cvh'
,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 td_org AS (
left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_CODE = c.AUDIT_COD and b.MARKET = c.MARKET SELECT DISTINCT
where C.AUDIT_COD IS NULL 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 -- ════════════════════════════════════════════
( -- 主查询 Part 1正常地理覆盖行
REGION_CODE, -- ════════════════════════════════════════════
region_name_en, SELECT DISTINCT
RSM_Name, t1.REGION_CODE,
rc_code, t1.region_name,
rc_name_en, t1.rc_code,
RC_Name, t1.rc_name AS rc_name_en,
RegionCenter, t3.REGION_CENTER AS RegionCenter,
AUDIT_COD, t3.AUDIT_COD,
MARKET, t2.MARKET,
bu_category, t1.bu_category,
bu_name_en, t1.bu_name_en,
sub_bu_name, t1.sub_bu_name,
sub_bu_code_auth, t1.sub_bu_code AS sub_bu_code_auth,
bu_code_auth, CONCAT(t1.bu_code, 'IQVIA-COUNTY(Quarterly)') AS bu_code_auth,
DATA_SOURCE, 'IQVIA-COUNTY(Quarterly)' AS DATA_SOURCE,
REGION_RATIO, 1 AS REGION_RATIO,
TEAM, t1.RSM_Name,
MR_TRTY_CODE, t1.rsd_name,
NSD_KCODE, '' AS TEAM,
NSD_NAME, '' AS MR_TRTY_CODE,
RSD_KCODE, '' AS NSD_KCODE,
RSD_NAME, '' AS NSD_NAME,
RSM_KCODE, '' AS RSD_KCODE,
DSM_KCODE, '' AS RC_Name,
DSM_NAME, '' AS RSM_KCODE,
MR_KCODE, '' AS DSM_KCODE,
MR_NAME '' AS DSM_NAME,
) '' AS MR_KCODE,
select '' AS MR_NAME
'ROC' as REGION_CODE, FROM td_org t1
'ROC' as region_name_en, INNER JOIN province_market t2 ON t1.mr_trty_code = t2.trty_code
'Vacant' as RSM_Name, INNER JOIN external_geo t3 ON t2.province_name = t3.province_c
'ROC' as rc_code, WHERE t2.market IS NOT NULL
'ROC' as rc_name_en, AND t3.audit_cod IS NOT NULL
'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)'
-- COMMAND ---------- UNION ALL
-- DBTITLE 1,DM_TD_EXT_CHPA_ORG -- ════════════════════════════════════════════
----------------------------------------------------------- -- 主查询 Part 2ROC 虚拟兜底行
--修改时间20241118 -- ════════════════════════════════════════════
--Fanxujia SELECT DISTINCT
-- 'ROC' AS REGION_CODE,
--使 'ROC' AS region_name,
----------------------------------------------------------- 'ROC' AS rc_code,
with hidden_market as ( 'ROC' AS rc_name_en,
select distinct 'Other Low Tiers' AS RegionCenter,
case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' 'ROC' AS AUDIT_COD,
when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' t2.MARKET,
when upper(data_source) = 'EC' then 'EC(Monthly)' 'All Channel' AS bu_category,
when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' nvl(subbu,'BBU_County') AS bu_name_en,
when upper(data_source) = 'CHC' then 'CHC(Quarterly)' nvl(subbu,'BBU_County') AS sub_bu_name,
when upper(data_source) = 'AIA' then 'AIA(Monthly)' nvl(subbu,'BBU_County') AS sub_bu_code_auth,
when upper(data_source) = 'THC' then 'THC(Quarterly)' 'IQVIA-COUNTY(Quarterly)' AS bu_code_auth,
when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' 'IQVIA-COUNTY(Quarterly)' AS DATA_SOURCE,
else data_source 1 AS REGION_RATIO,
end as data_source, 'Vacant' AS RSM_Name,
upper(hidden_market) as hidden_market 'Vacant' AS RC_Name,
from dwd.dwd_gnd_ims_hidden_market '' AS TEAM,
union all '' AS MR_TRTY_CODE,
select '' AS NSD_KCODE,
'AIA(Monthly)' as data_source, '' AS NSD_NAME,
'AIA ALL Market' '' AS RSD_KCODE,
) '' AS RSD_NAME,
'' AS RSM_KCODE,
'' AS DSM_KCODE,
MERGE into dm.DM_TD_EXT_COUNTY_ORG as t1 '' AS DSM_NAME,
USING hidden_market t2 '' AS MR_KCODE,
on t1.data_source = t2.data_source '' AS MR_NAME
and upper(t1.MARKET) = upper(t2.hidden_market) FROM pack_2_market t2
WHEN MATCHED THEN
DELETE

View File

@@ -191,7 +191,7 @@ SELECT
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT
FROM DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING FROM DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING
WHERE UPPER(MARKET) NOT LIKE '%ALL%' WHERE UPPER(MARKET) NOT LIKE '%ALL%MARKET'
UNION ALL UNION ALL
SELECT SELECT
@@ -280,7 +280,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market' AS MARKET, 'ALL Market' AS MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -309,7 +309,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market' AS MARKET, 'ALL Market' AS MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -338,7 +338,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -367,7 +367,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -396,7 +396,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -425,7 +425,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -454,7 +454,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -483,7 +483,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -512,7 +512,7 @@ UNION ALL
SELECT SELECT
PACK_CODE, PACK_CODE,
'ALL Market'MARKET, 'ALL Market'MARKET,
'Others' AS CLASS, 'OTHERS' AS CLASS,
'OTHERS' AS KEY_COMPETITOR, 'OTHERS' AS KEY_COMPETITOR,
1 AS MARKET_RATIO, 1 AS MARKET_RATIO,
200001 AS STARTTIME, 200001 AS STARTTIME,
@@ -538,4 +538,4 @@ GROUP BY
-- COMMAND ---------- -- COMMAND ----------
update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING set class = 'Others' where lower(CLASS) = 'others' or CLASS IS null update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING set class = 'OTHERS' where lower(CLASS) = 'others' or CLASS IS null

View File

@@ -30,7 +30,7 @@ select
,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT
from geo_xiehe a from geo_xiehe a
left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C
where fact_province in ('黑吉辽','云贵','湖北','甘肃','其他地区') where fact_province in ('黑吉辽','云贵青','湖北','其他地区')
union all union all
-- 非特殊区域 -- 非特殊区域
@@ -51,7 +51,7 @@ select
,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT
from geo_xiehe a from geo_xiehe a
left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C
where fact_province not in ('黑吉辽','云贵','湖北','甘肃','其他地区') where fact_province not in ('黑吉辽','云贵青','湖北','其他地区')
-- COMMAND ---------- -- COMMAND ----------

View File

@@ -231,6 +231,15 @@ WHERE T2.MARKET IS NOT NULL;
-- COMMAND ---------- -- COMMAND ----------
--
MERGE INTO DM.DM_TD_EXT_XIEHE_PACK2MARKET AS target
USING dwd.dwd_gnd_ims_hidden_market AS source
ON UPPER(target.market) = UPPER(source.hidden_market)
AND source.data_source = '科室市场'
WHEN MATCHED THEN DELETE;
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_KEYCOMPETITOR INSERT OVERWRITE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_KEYCOMPETITOR
WITH kc AS ( WITH kc AS (
SELECT SELECT

View File

@@ -151,39 +151,6 @@ and province_name not in ('台湾','澳门','香港')
-- COMMAND ---------- -- COMMAND ----------
WITH original_sales AS (
SELECT /*+ BROADCAST(T2,T3) */
T1.YM AS YYYYMM,
T2.PROVINCE_CODE AS AUDIT_COD,
T3.IQVIA_PACK_CODE AS PACK_CODE,
T1.VALUE AS SALES_VALUE,
T1.TOTALUNIT AS SALES_UNIT,
T1.COUNTINGUNIT AS COUNTINGUNIT
FROM FACT_COUNTY_PREVIOUS AS T1
LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME
LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD
)
SELECT
cy.YYYYMM,
cy.AUDIT_COD,
cy.PACK_CODE,
cy.SALES_VALUE,
cy.SALES_UNIT,
cy.COUNTINGUNIT,
-- 去年同期YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303
ly.SALES_VALUE AS SALES_VALUE_LY,
ly.SALES_UNIT AS SALES_UNIT_LY,
ly.COUNTINGUNIT AS COUNTINGUNIT_LY
FROM original_sales AS cy
LEFT JOIN original_sales AS ly
ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年
AND ly.AUDIT_COD = cy.AUDIT_COD
AND ly.PACK_CODE = cy.PACK_CODE
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES ( INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES (
YYYYMM, YYYYMM,
PACK_CODE, PACK_CODE,
@@ -227,15 +194,16 @@ WITH original_sales AS (
T1.YM AS YYYYMM, T1.YM AS YYYYMM,
T2.PROVINCE_CODE AS AUDIT_COD, T2.PROVINCE_CODE AS AUDIT_COD,
T3.IQVIA_PACK_CODE AS PACK_COD, T3.IQVIA_PACK_CODE AS PACK_COD,
T1.VALUE AS SALES_VALUE_CAL, SUM(T1.VALUE ) AS SALES_VALUE_CAL,
T1.TOTALUNIT AS SALES_UNIT_CAL, SUM(T1.TOTALUNIT ) AS SALES_UNIT_CAL,
T1.COUNTINGUNIT AS CONUTING_UNIT SUM(T1.COUNTINGUNIT ) AS CONUTING_UNIT
FROM FACT_COUNTY_PREVIOUS AS T1 FROM FACT_COUNTY_PREVIOUS AS T1
LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME
LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD
GROUP BY T1.YM,T2.PROVINCE_CODE,T3.IQVIA_PACK_CODE
) )
,formated_count_sales_table ( ,formated_count_sales_table_detail (
SELECT SELECT
cy.YYYYMM, cy.YYYYMM,
cy.AUDIT_COD, cy.AUDIT_COD,
@@ -243,15 +211,41 @@ WITH original_sales AS (
cy.SALES_VALUE_CAL, cy.SALES_VALUE_CAL,
cy.SALES_UNIT_CAL, cy.SALES_UNIT_CAL,
cy.CONUTING_UNIT, cy.CONUTING_UNIT,
-- 去年同期YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303 0 AS SALES_VALUE_CAL_LY,
0 AS SALES_UNIT_CAL_LY,
0 AS CONUTING_UNIT_LY
FROM original_sales AS cy
union ALL
SELECT
ly.YYYYMM+100 as YYYYMM,
ly.AUDIT_COD,
ly.PACK_COD,
0 as SALES_VALUE_CAL,
0 as SALES_UNIT_CAL,
0 as CONUTING_UNIT,
-- 去年同期
ly.SALES_VALUE_CAL AS SALES_VALUE_CAL_LY, ly.SALES_VALUE_CAL AS SALES_VALUE_CAL_LY,
ly.SALES_UNIT_CAL AS SALES_UNIT_CAL_LY, ly.SALES_UNIT_CAL AS SALES_UNIT_CAL_LY,
ly.CONUTING_UNIT AS CONUTING_UNIT_LY ly.CONUTING_UNIT AS CONUTING_UNIT_LY
FROM original_sales AS cy FROM original_sales AS ly
LEFT JOIN original_sales AS ly WHERE ly.yyyymm+100 <= (select max( yyyymm ) from original_sales )
ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年 )
AND ly.AUDIT_COD = cy.AUDIT_COD
AND ly.PACK_COD = cy.PACK_COD ,formated_count_sales_table (
SELECT
YYYYMM,
AUDIT_COD,
PACK_COD,
SUM(SALES_VALUE_CAL) AS SALES_VALUE_CAL,
SUM(SALES_UNIT_CAL) AS SALES_UNIT_CAL,
SUM(CONUTING_UNIT) AS CONUTING_UNIT,
SUM(SALES_VALUE_CAL_LY) AS SALES_VALUE_CAL_LY,
SUM(SALES_UNIT_CAL_LY) AS SALES_UNIT_CAL_LY,
SUM(CONUTING_UNIT_LY) AS CONUTING_UNIT_LY
FROM formated_count_sales_table_detail
GROUP BY 1,2,3
) )
-- ════════════════════════════════════════════ -- ════════════════════════════════════════════

View File

@@ -75,7 +75,7 @@
-- COMMAND ---------- -- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_PACK_PROPERTY INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK_PROPERTY
SELECT SELECT
-- MARKET_PACK_KEY, -- MARKET_PACK_KEY,
PACK_COD AS PACK_CODE, PACK_COD AS PACK_CODE,

View File

@@ -45,6 +45,28 @@
-- COMMAND ---------- -- COMMAND ----------
-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR (
-- KEY_COMPETITOR STRING,
-- MARKET STRING,
-- PACK_CODE STRING)
-- USING delta
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_keycompetitor';
-- -- 上面是生产环境location下面是测试环境location
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_keycompetitor';
-- COMMAND ----------
-- CREATE or REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS (
-- MARKET STRING,
-- PACK_CODE STRING,
-- CLASS STRING)
-- USING delta
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_class';
-- -- 上面是生产环境location下面是测试环境location
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market_class';
-- COMMAND ----------
-- 使用 EXCEPT集合差操作简化逻辑 -- 使用 EXCEPT集合差操作简化逻辑
INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET
-- 包含规则 -- 包含规则
@@ -206,3 +228,99 @@ LEFT JOIN (
AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH) AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH)
AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE) AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE)
WHERE T2.MARKET IS NOT NULL; WHERE T2.MARKET IS NOT NULL;
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR
WITH kc AS (
SELECT
keycompetitor, no,
ROW_NUMBER() OVER (ORDER BY
CASE
WHEN ATC1_Code IS NOT NULL THEN 1
WHEN ATC2_Code IS NOT NULL THEN 2
WHEN ATC3_Code IS NOT NULL THEN 3
WHEN ATC4_Code IS NOT NULL THEN 4
WHEN Molecule_Code IS NOT NULL THEN 5
WHEN Product_Code IS NOT NULL THEN 6
WHEN Pack_Code IS NOT NULL THEN 7
ELSE 999
END,
CASE WHEN NFC1_CODE IS NULL THEN 0 ELSE 1 END,
CASE WHEN NFC2_CODE IS NULL THEN 0 ELSE 1 END,
CASE WHEN NFC3_CODE IS NULL THEN 0 ELSE 1 END
) AS no1,
ATC1_Code, ATC2_Code, ATC3_Code, ATC4_Code,
NFC1_Code, NFC2_Code, NFC3_Code,
corporation_code, Manufacturer_Code,
Product_Code, Pack_Code, Strength, Molecule_Code, market
FROM dwd.dwd_gnd_ims_tblkeycompetitor
),
joined AS (
SELECT
/*+ BROADCAST(kc) */
COALESCE(kc.keycompetitor, 'OTHERS') AS Key_Competitor, -- ✅ UPDATE 逻辑内联
t1.market, t1.PACK_CODE
/*bug 调试区
,
kc.no,
kc.no1,
t1.PROD_COD, t1.CMPS_COD, t1.CMPS_DES,
t1.ATC1_COD, t1.ATC2_COD, t1.ATC3_COD, t1.ATC4_COD,
t1.APP1_COD, t1.APP2_COD, t1.APP3_COD,
t1.BIO_DESC, t1.GENE_ORIG_DESC, t1.ETH_OTC_DESC,
t1.NRDL_DESC, t1.NRDL_Entry_Date, t1.EDL_DESC, t1.TCM_DESC,
t1.PAED_DESC, t1.GQCE_DESC, t1.VBP_DESC,
t1.MANU_COD, t1.MANU_DES, t1.MNFL_COD, t1.MNFL_DES,
t1.CORP_COD, t1.CORP_DES, t1.BrandType, t1.bu, t1.Market_Ratio
*/
,ROW_NUMBER() OVER (
PARTITION BY t1.market, t1.PACK_CODE, t1.PROD_CODE
ORDER BY kc.no1 DESC, kc.no DESC
) AS _rn
FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET t1
LEFT JOIN kc
ON (kc.ATC1_Code IS NULL OR t1.ATC1_CODE = kc.ATC1_Code)
AND (kc.ATC2_Code IS NULL OR t1.ATC2_CODE = kc.ATC2_Code)
AND (kc.ATC3_Code IS NULL OR t1.ATC3_CODE = kc.ATC3_Code)
AND (kc.ATC4_Code IS NULL OR t1.ATC4_CODE = kc.ATC4_Code)
AND (kc.NFC1_Code IS NULL OR t1.APP1_CODE = kc.NFC1_Code)
AND (kc.NFC2_Code IS NULL OR t1.APP2_CODE = kc.NFC2_Code)
AND (kc.NFC3_Code IS NULL OR t1.APP3_CODE = kc.NFC3_Code)
AND (kc.corporation_code IS NULL OR t1.CORP_CODE = kc.corporation_code)
AND (kc.Manufacturer_Code IS NULL OR t1.MANU_CODE = kc.Manufacturer_Code)
AND (kc.Product_Code IS NULL OR t1.PROD_CODE = kc.Product_Code)
AND (kc.Pack_Code IS NULL OR t1.PACK_CODE = kc.Pack_Code)
AND (kc.Strength IS NULL OR t1.STGH_DESC = kc.Strength)
AND (kc.Molecule_Code IS NULL OR t1.CMPS_CODE = kc.Molecule_Code)
AND (kc.market IS NULL OR t1.market = kc.market)
)
SELECT distinct Key_Competitor,market,pack_code
FROM joined
WHERE _rn = 1;
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS
SELECT
/*+ BROADCAST(T2) */
DISTINCT
T1.MARKET,
T1.PACK_CODE,
COALESCE( T2.CLASS, 'OTHERS') AS CLASS
FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET T1
LEFT JOIN DWD.DWD_GND_TBLCLASS T2
ON (T2.MARKET IS NULL OR T1.MARKET = T2.MARKET)
AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE)
AND (T2.PRODUCT_CODE IS NULL OR T1.PROD_CODE = T2.PRODUCT_CODE)
AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE)
AND (T2.CORPORATION_CODE IS NULL OR T1.CORP_CODE = T2.CORPORATION_CODE)
AND (T2.MANUFACTURER_CODE IS NULL OR T1.MANU_CODE = T2.MANUFACTURER_CODE)
AND (T2.ATC1_CODE IS NULL OR T1.ATC1_CODE = T2.ATC1_CODE)
AND (T2.ATC2_CODE IS NULL OR T1.ATC2_CODE = T2.ATC2_CODE)
AND (T2.ATC3_CODE IS NULL OR T1.ATC3_CODE = T2.ATC3_CODE)
AND (T2.ATC4_CODE IS NULL OR T1.ATC4_CODE = T2.ATC4_CODE)
AND (T2.NFC1_CODE IS NULL OR T1.APP1_CODE = T2.NFC1_CODE)
AND (T2.NFC2_CODE IS NULL OR T1.APP2_CODE = T2.NFC2_CODE)
AND (T2.NFC3_CODE IS NULL OR T1.APP3_CODE = T2.NFC3_CODE)
AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH)

View File

@@ -27,4 +27,4 @@ SELECT
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT
FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET FROM DM.DM_TD_EXT_COUNTY_PACK2MARKET
WHERE UPPER(MARKET) NOT LIKE '%ALL%' WHERE UPPER(MARKET) NOT LIKE '%ALL%MARKET'

View File

@@ -31,32 +31,41 @@
-- COMMAND ---------- -- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING
SELECT DISTINCT SELECT DISTINCT
T1.PACK_CODE, T1.PACK_CODE,
T1.MARKET, T1.MARKET,
T1.CLASS, T4.CLASS,
T1.KEY_COMPETITOR, T5.KEY_COMPETITOR,
T2.MARKET_RATIO, T2.MARKET_RATIO,
T2.STARTTIME, T2.STARTTIME,
T2.ENDTIME, T2.ENDTIME,
T3.VALUE_BRAND_RATIO, T3.VALUE_BRAND_RATIO,
T3.VALUE_BRAND_RATIO_START, T3.VALUE_BRAND_RATIO_START,
T3.VALUE_BRAND_RATIO_END, T3.VALUE_BRAND_RATIO_END,
T3.UNIT_BRAND_RATIO, T3.UNIT_BRAND_RATIO,
T3.UNIT_BRAND_START, T3.UNIT_BRAND_START,
T3.UNIT_BRAND_END, T3.UNIT_BRAND_END,
T3.COUNTINGUNIT_BRAND_RATIO, T3.COUNTINGUNIT_BRAND_RATIO,
T3.COUNTINGUNIT_BRAND_START, T3.COUNTINGUNIT_BRAND_START,
T3.COUNTINGUNIT_BRAND_END, T3.COUNTINGUNIT_BRAND_END,
T3.PDOT_BRAND_RATIO, T3.PDOT_BRAND_RATIO,
T3.PDOT_BRAND_START, T3.PDOT_BRAND_START,
T3.PDOT_BRAND_END, T3.PDOT_BRAND_END,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT
FROM FROM
DM.DM_TD_EXT_COUNTY_PACK_PROPERTY T1 DM.DM_TD_EXT_COUNTY_PACK2MARKET T1
LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_RATIO T2 LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_RATIO T2
ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE ON T1.MARKET = T2.MARKET
LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO T3 AND T1.PACK_CODE = T2.PACK_CODE
ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO T3
WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" ON T1.MARKET = T3.MARKET
AND T1.PACK_CODE = T3.PACK_CODE
LEFT JOIN DM.DM_TD_EXT_COUNTY_PACK2MARKET_CLASS T4
ON T1.PACK_CODE = T4.PACK_CODE
AND T1.MARKET = T4.MARKET
LEFT JOIN DM.DM_TD_EXT_COUNTY_PACK2MARKET_KEYCOMPETITOR T5
ON T1.PACK_CODE = T5.PACK_CODE
AND T1.MARKET = T5.MARKET
WHERE
UPPER(T1.MARKET) NOT LIKE "%ALL%MARKET"