Files
MarketAnalysis-ETL/EXTERNAL/z 01 dm_tf_external_sales.sql
2026-04-20 14:55:25 +08:00

1187 lines
30 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
-- MAGIC %md
-- MAGIC ## 清空表
-- COMMAND ----------
TRUNCATE TABLE dm.dm_tf_external_sales
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ## 各渠道逻辑
-- COMMAND ----------
-- DBTITLE 1,CHPA
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'IQVIA-CHPA(Monthly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD,
'IQVIA-CHPA(Monthly)' DATA_SOURCE,
-------------------------------------
SUM(SALES_UNIT_CAL) SALES_UNIT_CAL,
SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY,
SUM(SALES_VALUE_CAL) SALES_VALUE_CAL,
SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY,
SUM(CONUTING_UNIT) CONUTING_UNIT,
SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_ims_tf_sales A
where
A.YYYYMM >= '202001'
AND A.MARKET = 'IMS ALL Market'
GROUP BY
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD
-- COMMAND ----------
-- DBTITLE 1,COUNTY
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD,
'IQVIA-COUNTY(Quarterly)' DATA_SOURCE,
-------------------------------------
SUM(SALES_UNIT_CAL) SALES_UNIT_CAL,
SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY,
SUM(SALES_VALUE_CAL) SALES_VALUE_CAL,
SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY,
SUM(CONUTING_UNIT) CONUTING_UNIT,
SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
NVL(A.REGION_TYPE, '') REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
DM.dm_ext_county_tf_sales_region A
where
A.YYYYMM >= '202001'
AND A.MARKET = 'IMS ALL Market'
GROUP BY
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD,
A.REGION_TYPE
-- COMMAND ----------
-- DBTITLE 1,THC
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'THC(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD,
'THC(Quarterly)' DATA_SOURCE,
-------------------------------------
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
COUNTING_UNIT,
COUNTING_UNIT_LY ,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_ext_thc_sales A
where
AUDIT_COD = 'CHT'
-- COMMAND ----------
-- DBTITLE 1,CHC_RAW_DATA
------------------------------------------------------------------------------CHC-------------------------------------------------------------------
CREATE OR REPLACE TEMPORARY VIEW V_CHC_RAW_DATA AS
with exchc_rawdata_temp as ( --主表数据
select
CASE
WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03')
WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06')
WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09')
WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12')
ELSE yq
END AS yq,
city_c,
pack_cod,
prod_cod,
value,
totalunit,
countingunit
from dwd.dwd_gnd_chc_rawdata
where year >= '2021'
),
temp_corp as (
select
PACK_COD,
CORP_COD,
CORP_DES
from dm.dm_ims_td_pack_property
group by PACK_COD,CORP_COD,CORP_DES
),
chc_pack_property_clean as (
select distinct
iqvia_pack_code ,
iqvia_prod_code ,
pack_cod ,
app1_cod ,
app1_des ,
app1_des_c ,
app2_cod ,
app2_des ,
app2_des_c ,
app3_cod ,
app3_des ,
app3_des_c ,
atc1_cod ,
atc1_des ,
atc1_des_c ,
atc2_cod ,
atc2_des ,
atc2_des_c ,
atc3_cod ,
atc3_des ,
atc3_des_c ,
atc4_cod ,
atc4_des ,
atc4_des_c ,
bio_desc ,
cmps_cod ,
cmps_des ,
cmps_des_c ,
corp_cod ,
corp_des ,
corp_des_c ,
edl_desc ,
eth_otc_desc ,
gene_orig_desc ,
gqce_desc ,
manu_cod ,
manu_des ,
manu_des_c ,
mnfl_cod ,
mnfl_des ,
nrdl_desc ,
pack_des ,
stgh_des ,
pack_lch ,
paed_desc ,
prod_des ,
prod_des_c ,
tcm_desc ,
vbp_desc ,
builtinarchivedate ,
source_file_path ,
source_file_name ,
etl_insert_dt ,
countingunit
from dwd.dwd_gnd_ext_chc_pack_property
),
temp_corp_temp as ( -- chc本身唯独表 存在corp_cod以及 CORP_DES 与手工数据不一致的问题
select
t1.pack_cod,
t1.iqvia_pack_code,
t1.countingunit,
coalesce(t2.CORP_COD, t1.CORP_COD) as CORP_COD ,
coalesce(t2.CORP_DES,t1.CORP_DES ) as CORP_DES
from chc_pack_property_clean t1
left join temp_corp t2
on t1.iqvia_pack_code = t2.PACK_COD
),
dim_exchc_geo as (
-- geo相关信息 在CHPA中没有 苏州、无锡、福州等数据,根据业务反馈,按照 city_c当作AUDIT_COD
select
t1.city_e,
concat( t1.city_c , '') as city_c,
upper( nvl(t2.AUDIT_COD ,t1.city_e) ) as AUDIT_COD
from dwd.dwd_gnd_ext_chc_geo t1
left join dm.dm_ims_td_geo t2
on t1.city_e= t2.city
-- --20260122 按照新的业务逻辑直接用城市名称匹配获得省份code
-- SELECT DISTINCT city_name,province_code,province_name FROM DM.dm_td_geography
-- WHERE nvl(city_code,'')!='' and nvl(province_code,'')!='' and nvl(province_name,'')!=''
),
exchc_rawdata_iqvia as (
select
t1.yq ,
t1.city_c,
-- t1.pack_cod pack_cod_old,
t3.iqvia_pack_code as pack_cod,
t3.CORP_COD as CORP_COD,
C.AUDIT_COD as AUDIT_COD,
t1.prod_cod,
t1.value,
t1.totalunit,
-- t1.countingunit,
t1.totalunit * nvl(t3.countingunit,1 ) as countingunit
-- t2.countingunit as tt
from exchc_rawdata_temp t1
left join temp_corp_temp t3
on t1.pack_cod = t3.pack_cod
LEFT JOIN dim_exchc_geo C
ON t1.CITY_C = C.city_c
),
value_temp as(
select
a.yq,
a.AUDIT_COD,
a.pack_cod,
--t1.prod_cod,
a.CORP_COD,
sum(a.value) value,
sum(a.totalunit) totalunit,
sum(a.countingunit) countingunit,
sum(value_ly) value_ly,
sum(totalunit_ly) totalunit_ly,
sum(countingunit_ly) countingunit_ly
from (
select
t1.yq,
t1.AUDIT_COD,
t1.pack_cod,
--t1.prod_cod,
t1.CORP_COD,
t1.value,
t1.totalunit,
t1.countingunit,
0 value_ly,
0 totalunit_ly,
0 countingunit_ly
from exchc_rawdata_iqvia t1
union all
select
cast(t1.yq+100 as int),
t1.AUDIT_COD,
t1.pack_cod,
--t1.prod_cod,
t1.CORP_COD,
0 value,
0 totalunit,
0 countingunit,
t1.value value_ly,
t1.totalunit totalunit_ly,
t1.countingunit countingunit_ly
from exchc_rawdata_iqvia t1
WHERE T1.YQ+100 <= (SELECT MAX(YQ) FROM exchc_rawdata_iqvia)
) a
group by a.yq,
a.AUDIT_COD,
a.pack_cod,
--t1.prod_cod,
a.CORP_COD
)
select
t1.yq as YYYYMM ,
t1.AUDIT_COD,
t1.pack_cod,
t1.CORP_COD
--t1.prod_cod
,sum(totalunit) AS SALES_UNIT_CAL -- totalunit
,sum(totalunit_ly) AS SALES_UNIT_CAL_LY --totalunit_ly
,sum(value) AS SALES_VALUE_CAL --value
,sum(value_ly ) AS SALES_VALUE_CAL_LY
,sum(countingunit) AS CONUTING_UNIT --countingunit
,sum(countingunit_ly) AS CONUTING_UNIT_LY
,'CHC(Quarterly)' as DATA_SOURCE
from value_temp t1
group by 1,2,3,4
-- COMMAND ----------
-- DBTITLE 1,CHC
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'CHC(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD,
'CHC(Quarterly)' DATA_SOURCE,
-------------------------------------
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
V_CHC_RAW_DATA A
WHERE
YYYYMM >= (
SELECT
CAST((LEFT(MAX(YYYYMM), 4) - 3) * 100 + 1 AS INT)
FROM
V_CHC_RAW_DATA
)
-- COMMAND ----------
-- DBTITLE 1,Retail
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'Retail(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.iqvia_pack_code,
trim(A.AUDIT_COD) AS AUDIT_COD,
'Retail(Quarterly)' DATA_SOURCE,
-------------------------------------
SUM(sales_unit) SALES_UNIT_CAL,
SUM(sales_unit_ly) as SALES_UNIT_CAL_LY,
SUM(sales_value) SALES_VALUE_CAL,
SUM(sales_value_LY) as SALES_VALUE_CAL_LY,
SUM(counting_unit) CONUTING_UNIT,
SUM(counting_unit_LY) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
A.PACK_FLAG,
A.brand_flag PROD_FLAG,
0 DTP_FLAG,
case
when
max(lower(C.CMPS_DES)) in ('atorvastatin', 'rosuvastatin', 'esomeprazole', 'omeprazole')
then
1
else 0
end as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_zk_retail_sales A
LEFT JOIN (
select DISTINCT
iqvia_pack_code,
CMPS_DES
from
dm.dm_zk_retail_pack_property
) C
ON A.iqvia_pack_code = C.iqvia_pack_code
-------------------------------------
LEFT JOIN (SELECT OTHERS_MONTH FROM tmp.tmp_dm_td_ext_retail_niad_month) D
-------------------------------------
where
A.YYYYMM >= '202001' AND A.YYYYMM <= D.OTHERS_MONTH
GROUP BY
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
A.PACK_FLAG,
A.brand_flag
-- COMMAND ----------
-- DBTITLE 1,DTP
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'DTP(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.iqvia_pack_code,
trim(A.AUDIT_COD) AS AUDIT_COD,
'DTP(Quarterly)' DATA_SOURCE,
-------------------------------------
SUM(sales_unit) SALES_UNIT_CAL,
SUM(sales_unit_ly) as SALES_UNIT_CAL_LY,
SUM(sales_value) SALES_VALUE_CAL,
SUM(sales_value_LY) as SALES_VALUE_CAL_LY,
SUM(counting_unit) CONUTING_UNIT,
SUM(counting_unit_LY) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
brand_flag AS PROD_FLAG,
1 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_zk_retail_dtp_sales A
where
A.YYYYMM >= '202001'
GROUP BY
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
A.brand_flag,
A.pack_flag
-- COMMAND ----------
-- DBTITLE 1,EC
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'EC(Monthly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
'EC(Monthly)' DATA_SOURCE,
-------------------------------------
SUM(sales_unit) SALES_UNIT_CAL,
SUM(sales_unit_ly) SALES_UNIT_CAL_LY,
SUM(sales_value) SALES_VALUE_CAL,
SUM(sales_value_LY) SALES_VALUE_CAL_LY,
SUM(counting_unit) CONUTING_UNIT,
SUM(counting_unit_LY) CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
A.PLATFORM,
A.STORE_NAME,
A.STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_zk_ec_sales A
LEFT JOIN (SELECT OTHERS_MONTH FROM tmp.tmp_dm_td_ext_ec_niad_month) D
where
A.YYYYMM >= '202001' and A.YYYYMM<=D.others_month
GROUP BY
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
A.PLATFORM,
A.STORE_NAME,
A.STORE_TYPE,
A.PACK_FLAG,
A.PROD_FLAG
-- COMMAND ----------
-- DBTITLE 1,AIA
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'AIA(Monthly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.ym,
A.PACK_COD,
A.AUDIT_COD,
'AIA(Monthly)' DATA_SOURCE,
-------------------------------------
sum(volume) as SALES_UNIT_CAL,
sum(volume_ly) as SALES_UNIT_CAL_LY,
sum(value) as SALES_VALUE_CAL,
sum(value_ly) as SALES_VALUE_CAL_LY,
sum(counting_unit) as CONUTING_UNIT,
sum(counting_unit_ly) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
inst_code AS inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
from
dm.dm_ext_aia_sales A
--取202401年之后的数
where
ym >= '202401'
group by
ym,
pack_cod,
corp_cod,
AUDIT_COD,
inst_code
-- COMMAND ----------
-- DBTITLE 1,XIEHE
-- DELETE FROM
-- dm.dm_tf_external_sales
-- WHERE
-- DATA_SOURCE = 'XH Data(Quarterly)';
INSERT INTO dm.dm_tf_external_sales (
YYYYMM,
PACK_COD,
AUDIT_COD,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
prescription,
prescription_ly,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
cmps_flag,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
inst_code,
dept_name,
new_code,
area,
h_level,
reimburse,
reimburse_type,
prescription_source,
CORP_COD
)
SELECT
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
'XH Data(Quarterly)' DATA_SOURCE,
-------------------------------------
0 SALES_UNIT_CAL,
0 SALES_UNIT_CAL_LY,
SUM(sales_value) SALES_VALUE_CAL,
SUM(sales_value_LY) SALES_VALUE_CAL_LY,
SUM(A.counting_unit) CONUTING_UNIT,
SUM(A.counting_unit_ly) CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --可以移除,报告没有使用
-------------------------------------
--XIE HE 数据标签---------------------
NVL(A.dept_name, '') dept_name,
NVL(A.new_code, '') new_code,
NVL(A.province, '') area,
NVL(A.h_level, '') h_level,
NVL(A.reimburse, '') reimburse,
NVL(A.reimburse_type, '') reimburse_type,
NVL(A.prescription_source, '') prescription_source,
-------------------------------------
'' as CORP_COD --可以移除,报告没有使用
-------------------------------------
FROM
dm.dm_ext_xiehe_sales A
WHERE
A.YYYYMM >= '202001'
GROUP BY
A.YYYYMM,
A.iqvia_pack_code,
A.AUDIT_COD,
A.dept_name,
A.new_code,
A.province,
A.h_level,
A.reimburse,
A.reimburse_type,
A.prescription_source
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ## 特殊逻辑
-- COMMAND ----------
-- DBTITLE 1,更新pack code
update dm.dm_tf_external_sales set PACK_COD = concat('PACK_COD_',DATA_SOURCE)
where PACK_COD is null or PACK_COD = '';
update dm.dm_tf_external_sales set AUDIT_COD = 'ROC'
where AUDIT_COD is null or AUDIT_COD = '';
-- COMMAND ----------
-- MAGIC %md
-- MAGIC ## NIAD单独页面数据
-- COMMAND ----------
update dm.dm_zk_retail_sales set DATA_SOURCE = 'Retail(Quarterly)'
-- COMMAND ----------
-- DBTITLE 1,NIAD
-- =============================================================================
-- 脚本名称: dm.dm_tf_external_sales_niad 数据装载脚本
-- 功能描述: 将零售和电商的销售数据仅限NIAD市场插入目标表
-- 数据来源: dm.dm_zk_retail_sales, dm.dm_zk_ec_sales, dm.dm_td_external_market_pack_mapping_temp
-- 目标表: dm.dm_tf_external_sales_niad
-- 更新方式: INSERT OVERWRITE全量覆盖
-- 创建时间: 2026-03-09
-- =============================================================================
INSERT OVERWRITE TABLE dm.dm_tf_external_sales_niad
(
YYYYMM, -- 年月分区键
PACK_COD, -- 药品包装代码
AUDIT_COD, -- 审计代码
SALES_UNIT_CAL, -- 本期销量(单位)
SALES_UNIT_CAL_LY, -- 去年同期销量(单位)
SALES_VALUE_CAL, -- 本期销售额
SALES_VALUE_CAL_LY, -- 去年同期销售额
CONUTING_UNIT, -- 计数单位(本期)
CONUTING_UNIT_LY, -- 计数单位(去年同期)
DATA_SOURCE, -- 数据来源(零售/电商)
DATE_KEY, -- 日期键(转换为日期类型)
PACK_SOURCE, -- 包装来源唯一标识
AUDIT_SOURCE -- 审计来源唯一标识
)
WITH mkt_pack AS (
SELECT DISTINCT
PACK_COD,
DATA_SOURCE
FROM dm.dm_td_external_market_pack_mapping_temp
WHERE DATA_SOURCE IN ('Retail(Quarterly)', 'EC(Monthly)') -- 仅限零售和电商
AND MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' -- NIAD市场过滤
),
sales AS (
-- 零售数据(季度)
SELECT
YYYYMM,
iqvia_pack_code AS PACK_COD,
AUDIT_COD,
sales_unit AS SALES_UNIT_CAL,
sales_unit_ly AS SALES_UNIT_CAL_LY,
sales_value AS SALES_VALUE_CAL,
sales_value_ly AS SALES_VALUE_CAL_LY,
counting_unit AS CONUTING_UNIT,
counting_unit_ly AS CONUTING_UNIT_LY,
DATA_SOURCE,
-- 将日期转换放在CTE中统一处理避免重复解析
TO_DATE(YYYYMM, 'yyyyMM') AS DATE_KEY,
CONCAT(iqvia_pack_code, DATA_SOURCE) AS PACK_SOURCE,
CONCAT(AUDIT_COD, DATA_SOURCE) AS AUDIT_SOURCE
FROM dm.dm_zk_retail_sales
WHERE YYYYMM >= '202001' -- 仅保留2020年及以后数据
UNION ALL
-- 电商数据(月度)
SELECT
YYYYMM,
iqvia_pack_code AS PACK_COD,
AUDIT_COD,
sales_unit AS SALES_UNIT_CAL,
sales_unit_ly AS SALES_UNIT_CAL_LY,
sales_value AS SALES_VALUE_CAL,
sales_value_ly AS SALES_VALUE_CAL_LY,
counting_unit AS CONUTING_UNIT,
counting_unit_ly AS CONUTING_UNIT_LY,
DATA_SOURCE,
TO_DATE(YYYYMM, 'yyyyMM') AS DATE_KEY,
CONCAT(iqvia_pack_code, DATA_SOURCE) AS PACK_SOURCE,
CONCAT(AUDIT_COD, DATA_SOURCE) AS AUDIT_SOURCE
FROM dm.dm_zk_ec_sales
WHERE YYYYMM >= '202001' -- 仅保留2020年及以后数据
)
SELECT
a.YYYYMM,
a.PACK_COD,
a.AUDIT_COD,
a.SALES_UNIT_CAL,
a.SALES_UNIT_CAL_LY,
a.SALES_VALUE_CAL,
a.SALES_VALUE_CAL_LY,
a.CONUTING_UNIT,
a.CONUTING_UNIT_LY,
a.DATA_SOURCE,
a.DATE_KEY,
a.PACK_SOURCE,
a.AUDIT_SOURCE
FROM sales a
INNER JOIN mkt_pack b
ON a.PACK_COD = b.PACK_COD
AND a.DATA_SOURCE = b.DATA_SOURCE;