Files
MarketAnalysis-ETL/07 dm_td_external_packinfo.sql

2833 lines
93 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
---------------------------------------------------------------------------
--修改时间20241126
--修改人Fanxujia
--修改内容:
--THC渠道分为14省的数据源以及全国的数据源两种分在了2个事实表里下面在维表在引用事实表时需要将两个事实表union在一起
----------------------------------------------------------------------------
----------------------------------------------------------------------------
--修改时间20241129
--修改人Fanxujia
--修改内容:
--补充Retail直取中DTP的手工文件里的pack_cod
----------------------------------------------------------------------------
create or replace temporary view external_sales_union as
select distinct
PACK_COD,
DATA_SOURCE,
PACK_FLAG,
CORP_COD,
SALES_VALUE_CAL,
dept_name,
new_code,
area,
YYYYMM
from dm.DM_TF_EXT_UNIONALL_SALES
union all
select distinct
PACK_COD,
DATA_SOURCE,
PACK_FLAG,
CORP_COD,
SALES_VALUE_CAL,
dept_name,
new_code,
area,
YYYYMM
from dm.dm_tf_external_sales_thc
union all
select distinct
pack_code,
'Retail(Quarterly)' as DATA_SOURCE,
null as PACK_FLAG,
CORP_COD,
0 as SALES_VALUE_CAL,
'' as dept_name,
'' as new_code,
'' as area,
'' as YYYYMM
from dm.dm_zk_retail_sales_kpi
where NVL(pack_code,'Others') <> 'Others'
and pack_code <> ''
----避免单独NIAD部分pack不存在于dm.dm_tf_external_sales中
union all
select distinct
pack_cod,
DATA_SOURCE,
null as PACK_FLAG,
null CORP_COD,
0 as SALES_VALUE_CAL,
'' as dept_name,
'' as new_code,
'' as area,
'' as YYYYMM
from dm.dm_tf_external_sales_niad
where NVL(pack_cod,'Others') <> 'Others'
and pack_cod <> ''
-- COMMAND ----------
----------------------------------------------------------为了避免数据量过大只获取了有销量的产品数据---------------------------------
---------------------------pack code是唯一不允许重复或为空-----------------------------------------------------
insert overwrite dm.dm_td_external_packinfo_temp (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN
)
SELECT
A.PACK_COD,
MAX(B.PACK_DES) PACK_DES,
MAX(B.STGH_DES) STGH_DES,
MAX(B.PACK_LCH) PACK_LCH,
MAX(B.PROD_COD) PROD_COD,
MAX(B.PROD_DES) PROD_DES,
MAX(B.PROD_DES_C) PROD_DES_C,
MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,
MAX(B.CMPS_DES_C) CMPS_DES_C,
MAX(B.ATC1_COD) ATC1_COD,
MAX(B.ATC2_COD) ATC2_COD,
MAX(B.ATC3_COD) ATC3_COD,
MAX(B.ATC4_COD) ATC4_COD,
MAX(B.APP1_COD) APP1_COD,
MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,
MAX(B.BIO_DESC) BIO_DESC,
MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,
MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,
MAX(B.NRDL_DESC) NRDL_DESC,
MAX(B.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,
MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,
MAX(B.PAED_DESC) PAED_DESC,
MAX(B.GQCE_DESC) GQCE_DESC,
CASE
WHEN MAX(B.VBP_DESC_V) = 'VBP-IN' THEN 'VBP-IN'
WHEN MAX(B.VBP_DESC_V) LIKE '%VBP%' THEN 'VBP-OUT'
WHEN MAX(B.VBP_DESC_V) IS NOT NULL THEN 'Non VBP'
ELSE NULL
END VBP_DESC,
MAX(B.MANU_COD) MANU_COD,
MAX(B.MANU_DES) MANU_DES,
MAX(B.MANU_DES_C) MANU_DES_C,
MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,
MAX(B.CORP_COD) CORP_COD,
MAX(B.CORP_DES) CORP_DES,
MAX(B.CORP_DES_C) CORP_DES_C,
MAX(B.BRANDTYPE) BRANDTYPE,
MAX(B.IS_AZ) IS_AZ,
MAX(B.AZ_MAIN) AZ_MAIN,
MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,
MAX(B.ATC2_DES) ATC2_DES,
MAX(B.ATC2_DES_C) ATC2_DES_C,
MAX(B.ATC3_DES) ATC3_DES,
MAX(B.ATC3_DES_C) ATC3_DES_C,
MAX(B.ATC4_DES) ATC4_DES,
MAX(B.ATC4_DES_C) ATC4_DES_C,
MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,
MAX(B.APP2_DES) APP2_DES,
MAX(B.APP2_DES_C) APP2_DES_C,
MAX(B.APP3_DES) APP3_DES,
MAX(B.APP3_DES_C) APP3_DES_C,
CASE
WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4
ELSE 5
END GEN_RN
FROM
(
SELECT DISTINCT
PACK_COD
FROM
external_sales_union-- WHERE YYYYMM >= (SELECT CAST((LEFT(MAX(YYYYMM),4)-3)*100+1 AS INT) FROM DM.DM_TF_EXT_UNIONALL_SALES)) A
) A
LEFT JOIN DM.DM_IMS_TD_PACK_PROPERTY B
ON B.PACK_COD = A.PACK_COD
WHERE
NVL(A.PACK_COD, '') <> ''
GROUP BY
A.PACK_COD
-- COMMAND ----------
-------------------------------------------------------------补充COUNTY部分缺失的pack 维度--------------------------------------------------------------------------------------------
--01 根据主表数据(带多个source)关联chpa的pack_porperty表,取出相关维度
--02 按照步骤1chpa中没有的packcode他的维度字段会被置为空所以要关联我们自己处理好的维度表来补充相关维度
insert overwrite table tmp.tmp_county_dm_td_external_packinfo
with temp as ( -- 临时表补充维度
SELECT
b.PACK_COD,MAX(B.PACK_DES) PACK_DES,MAX(B.STGH_DES) STGH_DES,MAX(B.PACK_LCH) PACK_LCH,MAX(B.PROD_COD) PROD_COD,MAX(B.PROD_DES) PROD_DES,MAX(B.PROD_DES_C) PROD_DES_C,MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,MAX(B.CMPS_DES) CMPS_DES_C,MAX(B.ATC1_COD) ATC1_COD,MAX(B.ATC2_COD) ATC2_COD,MAX(B.ATC3_COD) ATC3_COD,MAX(B.ATC4_COD) ATC4_COD,MAX(B.APP1_COD) APP1_COD,MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,MAX(B.BIO_DESC) BIO_DESC,MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,MAX(B.NRDL_DESC) NRDL_DESC,MAX(B.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,MAX(B.PAED_DESC) PAED_DESC,MAX(B.GQCE_DESC) GQCE_DESC,
CASE WHEN MAX(B.VBP_DESC) = 'VBP-IN' THEN 'VBP-IN' WHEN MAX(B.VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' WHEN MAX(B.VBP_DESC) IS NOT NULL THEN 'Non VBP' ELSE NULL END VBP_DESC,MAX(B.MANU_COD) MANU_COD,MAX(B.MANU_DES) MANU_DES,MAX(B.MANU_DES) MANU_DES_C,MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,MAX(B.CORP_COD) CORP_COD,MAX(B.CORP_DES) CORP_DES,MAX(B.CORP_DES_C) CORP_DES_C,MAX(B.BRANDTYPE) BRANDTYPE,MAX(B.IS_AZ) IS_AZ,MAX(B.AZ_MAIN) AZ_MAIN,MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,MAX(B.ATC2_DES) ATC2_DES,MAX(B.ATC2_DES_C) ATC2_DES_C,MAX(B.ATC3_DES) ATC3_DES,MAX(B.ATC3_DES_C) ATC3_DES_C,MAX(B.ATC4_DES) ATC4_DES,MAX(B.ATC4_DES_C) ATC4_DES_C,MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,MAX(B.APP2_DES) APP2_DES,MAX(B.APP2_DES_C) APP2_DES_C,MAX(B.APP3_DES) APP3_DES,MAX(B.APP3_DES_C) APP3_DES_C,
CASE WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1 WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2 WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3 WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4 ELSE 5 END GEN_RN
FROM dm.dm_ext_county_td_pack_property b
GROUP BY b.PACK_COD
)
select
A.PACK_COD
,case when A.PACK_DES ='' or A.PACK_DES is null then B.PACK_DES else A.PACK_DES end AS PACK_DES
,case when A.STGH_DES ='' or A.STGH_DES is null then B.STGH_DES else A.STGH_DES end AS STGH_DES
,case when A.PACK_LCH ='' or A.PACK_LCH is null then B.PACK_LCH else A.PACK_LCH end AS PACK_LCH
,case when A.PROD_COD ='' or A.PROD_COD is null then B.PROD_COD else A.PROD_COD end AS PROD_COD
,case when A.PROD_DES ='' or A.PROD_DES is null then B.PROD_DES else A.PROD_DES end AS PROD_DES
,case when A.PROD_DES_C ='' or A.PROD_DES_C is null then B.PROD_DES_C else A.PROD_DES_C end AS PROD_DES_C
,case when A.CMPS_COD ='' or A.CMPS_COD is null then B.CMPS_COD else A.CMPS_COD end AS CMPS_COD
,case when A.CMPS_DES ='' or A.CMPS_DES is null then B.CMPS_DES else A.CMPS_DES end AS CMPS_DES
,case when A.CMPS_DES_C ='' or A.CMPS_DES_C is null then B.CMPS_DES_C else A.CMPS_DES_C end AS CMPS_DES_C
,case when A.ATC1_COD ='' or A.ATC1_COD is null then B.ATC1_COD else A.ATC1_COD end AS ATC1_COD
,case when A.ATC2_COD ='' or A.ATC2_COD is null then B.ATC2_COD else A.ATC2_COD end AS ATC2_COD
,case when A.ATC3_COD ='' or A.ATC3_COD is null then B.ATC3_COD else A.ATC3_COD end AS ATC3_COD
,case when A.ATC4_COD ='' or A.ATC4_COD is null then B.ATC4_COD else A.ATC4_COD end AS ATC4_COD
,case when A.APP1_COD ='' or A.APP1_COD is null then B.APP1_COD else A.APP1_COD end AS APP1_COD
,case when A.APP2_COD ='' or A.APP2_COD is null then B.APP2_COD else A.APP2_COD end AS APP2_COD
,case when A.APP3_COD ='' or A.APP3_COD is null then B.APP3_COD else A.APP3_COD end AS APP3_COD
,case when A.BIO_DESC ='' or A.BIO_DESC is null then B.BIO_DESC else A.BIO_DESC end AS BIO_DESC
,case when A.GENE_ORIG_DESC ='' or A.GENE_ORIG_DESC is null then B.GENE_ORIG_DESC else A.GENE_ORIG_DESC end AS GENE_ORIG_DESC
,case when A.ETH_OTC_DESC ='' or A.ETH_OTC_DESC is null then B.ETH_OTC_DESC else A.ETH_OTC_DESC end AS ETH_OTC_DESC
,case when A.NRDL_DESC ='' or A.NRDL_DESC is null then B.NRDL_DESC else A.NRDL_DESC end AS NRDL_DESC
,case when A.NRDL_ENTRY_DATE='' or A.NRDL_ENTRY_DATE is null then B.NRDL_ENTRY_DATE else A.NRDL_ENTRY_DATE end AS NRDL_ENTRY_DATE
,case when A.EDL_DESC ='' or A.EDL_DESC is null then B.EDL_DESC else A.EDL_DESC end AS EDL_DESC
,case when A.TCM_DESC ='' or A.TCM_DESC is null then B.TCM_DESC else A.TCM_DESC end AS TCM_DESC
,case when A.PAED_DESC ='' or A.PAED_DESC is null then B.PAED_DESC else A.PAED_DESC end AS PAED_DESC
,case when A.GQCE_DESC ='' or A.GQCE_DESC is null then B.GQCE_DESC else A.GQCE_DESC end AS GQCE_DESC
,case when A.VBP_DESC ='' or A.VBP_DESC is null then B.VBP_DESC else A.VBP_DESC end AS VBP_DESC
,case when A.MANU_COD ='' or A.MANU_COD is null then B.MANU_COD else A.MANU_COD end AS MANU_COD
,case when A.MANU_DES ='' or A.MANU_DES is null then B.MANU_DES else A.MANU_DES end AS MANU_DES
,case when A.MANU_DES_C ='' or A.MANU_DES_C is null then B.MANU_DES_C else A.MANU_DES_C end AS MANU_DES_C
,case when A.MNFL_COD ='' or A.MNFL_COD is null then B.MNFL_COD else A.MNFL_COD end AS MNFL_COD
,case when A.MNFL_DES ='' or A.MNFL_DES is null then B.MNFL_DES else A.MNFL_DES end AS MNFL_DES
,case when A.CORP_COD ='' or A.CORP_COD is null then B.CORP_COD else A.CORP_COD end AS CORP_COD -- THC存在CORP_COD 归属不一致问题
,REPLACE( case when A.CORP_DES ='' or A.CORP_DES is null then B.CORP_DES else A.CORP_DES end ,' GROUP', '' ) as CORP_DES -- 消除group
,case when A.CORP_DES_C ='' or A.CORP_DES_C is null then B.CORP_DES_C else A.CORP_DES_C end AS CORP_DES_C
,case when A.BRANDTYPE ='' or A.BRANDTYPE is null then B.BRANDTYPE else A.BRANDTYPE end AS BRANDTYPE
,case when A.IS_AZ ='' or A.IS_AZ is null then B.IS_AZ else A.IS_AZ end AS IS_AZ
,case when A.AZ_MAIN ='' or A.AZ_MAIN is null then B.AZ_MAIN else A.AZ_MAIN end AS AZ_MAIN
,case when A.ATC1_DES ='' or A.ATC1_DES is null then B.ATC1_DES else A.ATC1_DES end AS ATC1_DES
,case when A.ATC1_DES_C ='' or A.ATC1_DES_C is null then B.ATC1_DES_C else A.ATC1_DES_C end AS ATC1_DES_C
,case when A.ATC2_DES ='' or A.ATC2_DES is null then B.ATC2_DES else A.ATC2_DES end AS ATC2_DES
,case when A.ATC2_DES_C ='' or A.ATC2_DES_C is null then B.ATC2_DES_C else A.ATC2_DES_C end AS ATC2_DES_C
,case when A.ATC3_DES ='' or A.ATC3_DES is null then B.ATC3_DES else A.ATC3_DES end AS ATC3_DES
,case when A.ATC3_DES_C ='' or A.ATC3_DES_C is null then B.ATC3_DES_C else A.ATC3_DES_C end AS ATC3_DES_C
,case when A.ATC4_DES ='' or A.ATC4_DES is null then B.ATC4_DES else A.ATC4_DES end AS ATC4_DES
,case when A.ATC4_DES_C ='' or A.ATC4_DES_C is null then B.ATC4_DES_C else A.ATC4_DES_C end AS ATC4_DES_C
,case when A.APP1_DES ='' or A.APP1_DES is null then B.APP1_DES else A.APP1_DES end AS APP1_DES
,case when A.APP1_DES_C ='' or A.APP1_DES_C is null then B.APP1_DES_C else A.APP1_DES_C end AS APP1_DES_C
,case when A.APP2_DES ='' or A.APP2_DES is null then B.APP2_DES else A.APP2_DES end AS APP2_DES
,case when A.APP2_DES_C ='' or A.APP2_DES_C is null then B.APP2_DES_C else A.APP2_DES_C end AS APP2_DES_C
,case when A.APP3_DES ='' or A.APP3_DES is null then B.APP3_DES else A.APP3_DES end AS APP3_DES
,case when A.APP3_DES_C ='' or A.APP3_DES_C is null then B.APP3_DES_C else A.APP3_DES_C end AS APP3_DES_C
,case when A.GEN_RN ='' or A.GEN_RN is null then B.GEN_RN else A.GEN_RN end AS GEN_RN
FROM dm.dm_td_external_packinfo_temp a
LEFT JOIN temp B
ON B.PACK_COD = A.PACK_COD ;
insert overwrite dm.dm_td_external_packinfo_temp(
PACK_COD ,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,PROD_DES,PROD_DES_C,CMPS_COD,CMPS_DES,CMPS_DES_C,ATC1_COD,ATC2_COD,ATC3_COD,ATC4_COD,
APP1_COD,APP2_COD,APP3_COD,BIO_DESC,GENE_ORIG_DESC,ETH_OTC_DESC,NRDL_DESC,NRDL_ENTRY_DATE,EDL_DESC,TCM_DESC,PAED_DESC,GQCE_DESC,
VBP_DESC,MANU_COD,MANU_DES,MANU_DES_C,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,CORP_DES_C,BRANDTYPE,IS_AZ,AZ_MAIN,ATC1_DES,ATC1_DES_C,
ATC2_DES,ATC2_DES_C,ATC3_DES,ATC3_DES_C, ATC4_DES,ATC4_DES_C,APP1_DES,APP1_DES_C,APP2_DES,APP2_DES_C,APP3_DES,APP3_DES_C,GEN_RN
)
select * from tmp.tmp_county_dm_td_external_packinfo
-- COMMAND ----------
-------------------------------------------------------------补充THC部分缺失的pack 维度--------------------------------------------------------------------------------------------
--01 根据主表数据(带多个source)关联chpa的pack_porperty表,取出相关维度
--02 按照步骤1chpa中没有的packcode他的维度字段会被置为空所以要关联我们自己处理好的维度表来补充相关维度
insert overwrite table tmp.tmp_thc_dm_td_external_packinfo
with temp as ( -- 临时表补充维度
SELECT
iqvia_pack_code PACK_COD,
MAX(B.PACK_DES) PACK_DES,
MAX(B.STGH_DES) STGH_DES,
MAX(B.PACK_LCH) PACK_LCH,
MAX(B.iqvia_prod_code) PROD_COD,
MAX(B.PROD_DES) PROD_DES,
MAX(B.PROD_DES_C) PROD_DES_C,
MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,
MAX(B.CMPS_DES_C) CMPS_DES_C,
MAX(B.ATC1_COD) ATC1_COD,
MAX(B.ATC2_COD) ATC2_COD,
MAX(B.ATC3_COD) ATC3_COD,
MAX(B.ATC4_COD) ATC4_COD,
MAX(B.APP1_COD) APP1_COD,
MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,
MAX(B.BIO_DESC) BIO_DESC,
MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,
MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,
MAX(B.NRDL_DESC) NRDL_DESC,
null as NRDL_ENTRY_DATE,
MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,
MAX(B.PAED_DESC) PAED_DESC,
MAX(B.GQCE_DESC) GQCE_DESC,
NULL AS VBP_DESC,
MAX(B.MANU_COD) MANU_COD,
MAX(B.MANU_DES) MANU_DES,
MAX(B.MANU_DES_C) MANU_DES_C,
MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,
max(B.CORP_COD) as CORP_COD,
max(B.CORP_DES) as CORP_DES,
--coalesce(MAX(C.CORP_COD) ,MAX(B.CORP_COD) ) CORP_COD, -- THC存在CORP_COD 归属不一致问题
--REPLACE( coalesce( MAX(C.CORP_DES) ,MAX(B.CORP_DES) ) , ' GROUP', '' ) as CORP_DES,
MAX(B.CORP_DES_C) CORP_DES_C,
null as BRANDTYPE,
null as IS_AZ,
null as AZ_MAIN,
MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,
MAX(B.ATC2_DES) ATC2_DES,
MAX(B.ATC2_DES_C) ATC2_DES_C,
MAX(B.ATC3_DES) ATC3_DES,
MAX(B.ATC3_DES_C) ATC3_DES_C,
MAX(B.ATC4_DES) ATC4_DES,
MAX(B.ATC4_DES_C) ATC4_DES_C,
MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,
MAX(B.APP2_DES) APP2_DES,
MAX(B.APP2_DES_C) APP2_DES_C,
MAX(B.APP3_DES) APP3_DES,
MAX(B.APP3_DES_C) APP3_DES_C,
CASE WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4
ELSE 5
END GEN_RN
FROM dwd.dwd_gnd_ext_thc_pack_property B
GROUP BY B.iqvia_pack_code
)
select
A.PACK_COD
,case when A.PACK_DES ='' or A.PACK_DES is null then B.PACK_DES else A.PACK_DES end AS PACK_DES
,case when A.STGH_DES ='' or A.STGH_DES is null then B.STGH_DES else A.STGH_DES end AS STGH_DES
,case when A.PACK_LCH ='' or A.PACK_LCH is null then B.PACK_LCH else A.PACK_LCH end AS PACK_LCH
,case when A.PROD_COD ='' or A.PROD_COD is null then B.PROD_COD else A.PROD_COD end AS PROD_COD
,case when A.PROD_DES ='' or A.PROD_DES is null then B.PROD_DES else A.PROD_DES end AS PROD_DES
,case when A.PROD_DES_C ='' or A.PROD_DES_C is null then B.PROD_DES_C else A.PROD_DES_C end AS PROD_DES_C
,case when A.CMPS_COD ='' or A.CMPS_COD is null then B.CMPS_COD else A.CMPS_COD end AS CMPS_COD
,case when A.CMPS_DES ='' or A.CMPS_DES is null then B.CMPS_DES else A.CMPS_DES end AS CMPS_DES
,case when A.CMPS_DES_C ='' or A.CMPS_DES_C is null then B.CMPS_DES_C else A.CMPS_DES_C end AS CMPS_DES_C
,case when A.ATC1_COD ='' or A.ATC1_COD is null then B.ATC1_COD else A.ATC1_COD end AS ATC1_COD
,case when A.ATC2_COD ='' or A.ATC2_COD is null then B.ATC2_COD else A.ATC2_COD end AS ATC2_COD
,case when A.ATC3_COD ='' or A.ATC3_COD is null then B.ATC3_COD else A.ATC3_COD end AS ATC3_COD
,case when A.ATC4_COD ='' or A.ATC4_COD is null then B.ATC4_COD else A.ATC4_COD end AS ATC4_COD
,case when A.APP1_COD ='' or A.APP1_COD is null then B.APP1_COD else A.APP1_COD end AS APP1_COD
,case when A.APP2_COD ='' or A.APP2_COD is null then B.APP2_COD else A.APP2_COD end AS APP2_COD
,case when A.APP3_COD ='' or A.APP3_COD is null then B.APP3_COD else A.APP3_COD end AS APP3_COD
,case when A.BIO_DESC ='' or A.BIO_DESC is null then B.BIO_DESC else A.BIO_DESC end AS BIO_DESC
,case when A.GENE_ORIG_DESC ='' or A.GENE_ORIG_DESC is null then B.GENE_ORIG_DESC else A.GENE_ORIG_DESC end AS GENE_ORIG_DESC
,case when A.ETH_OTC_DESC ='' or A.ETH_OTC_DESC is null then B.ETH_OTC_DESC else A.ETH_OTC_DESC end AS ETH_OTC_DESC
,case when A.NRDL_DESC ='' or A.NRDL_DESC is null then B.NRDL_DESC else A.NRDL_DESC end AS NRDL_DESC
,case when A.NRDL_ENTRY_DATE='' or A.NRDL_ENTRY_DATE is null then B.NRDL_ENTRY_DATE else A.NRDL_ENTRY_DATE end AS NRDL_ENTRY_DATE
,case when A.EDL_DESC ='' or A.EDL_DESC is null then B.EDL_DESC else A.EDL_DESC end AS EDL_DESC
,case when A.TCM_DESC ='' or A.TCM_DESC is null then B.TCM_DESC else A.TCM_DESC end AS TCM_DESC
,case when A.PAED_DESC ='' or A.PAED_DESC is null then B.PAED_DESC else A.PAED_DESC end AS PAED_DESC
,case when A.GQCE_DESC ='' or A.GQCE_DESC is null then B.GQCE_DESC else A.GQCE_DESC end AS GQCE_DESC
,case when A.VBP_DESC ='' or A.VBP_DESC is null then B.VBP_DESC else A.VBP_DESC end AS VBP_DESC
,case when A.MANU_COD ='' or A.MANU_COD is null then B.MANU_COD else A.MANU_COD end AS MANU_COD
,case when A.MANU_DES ='' or A.MANU_DES is null then B.MANU_DES else A.MANU_DES end AS MANU_DES
,case when A.MANU_DES_C ='' or A.MANU_DES_C is null then B.MANU_DES_C else A.MANU_DES_C end AS MANU_DES_C
,case when A.MNFL_COD ='' or A.MNFL_COD is null then B.MNFL_COD else A.MNFL_COD end AS MNFL_COD
,case when A.MNFL_DES ='' or A.MNFL_DES is null then B.MNFL_DES else A.MNFL_DES end AS MNFL_DES
,case when A.CORP_COD ='' or A.CORP_COD is null then B.CORP_COD else A.CORP_COD end AS CORP_COD -- THC存在CORP_COD 归属不一致问题
,REPLACE( case when A.CORP_DES ='' or A.CORP_DES is null then B.CORP_DES else A.CORP_DES end ,' GROUP', '' ) as CORP_DES -- 消除group
,case when A.CORP_DES_C ='' or A.CORP_DES_C is null then B.CORP_DES_C else A.CORP_DES_C end AS CORP_DES_C
,case when A.BRANDTYPE ='' or A.BRANDTYPE is null then B.BRANDTYPE else A.BRANDTYPE end AS BRANDTYPE
,case when A.IS_AZ ='' or A.IS_AZ is null then B.IS_AZ else A.IS_AZ end AS IS_AZ
,case when A.AZ_MAIN ='' or A.AZ_MAIN is null then B.AZ_MAIN else A.AZ_MAIN end AS AZ_MAIN
,case when A.ATC1_DES ='' or A.ATC1_DES is null then B.ATC1_DES else A.ATC1_DES end AS ATC1_DES
,case when A.ATC1_DES_C ='' or A.ATC1_DES_C is null then B.ATC1_DES_C else A.ATC1_DES_C end AS ATC1_DES_C
,case when A.ATC2_DES ='' or A.ATC2_DES is null then B.ATC2_DES else A.ATC2_DES end AS ATC2_DES
,case when A.ATC2_DES_C ='' or A.ATC2_DES_C is null then B.ATC2_DES_C else A.ATC2_DES_C end AS ATC2_DES_C
,case when A.ATC3_DES ='' or A.ATC3_DES is null then B.ATC3_DES else A.ATC3_DES end AS ATC3_DES
,case when A.ATC3_DES_C ='' or A.ATC3_DES_C is null then B.ATC3_DES_C else A.ATC3_DES_C end AS ATC3_DES_C
,case when A.ATC4_DES ='' or A.ATC4_DES is null then B.ATC4_DES else A.ATC4_DES end AS ATC4_DES
,case when A.ATC4_DES_C ='' or A.ATC4_DES_C is null then B.ATC4_DES_C else A.ATC4_DES_C end AS ATC4_DES_C
,case when A.APP1_DES ='' or A.APP1_DES is null then B.APP1_DES else A.APP1_DES end AS APP1_DES
,case when A.APP1_DES_C ='' or A.APP1_DES_C is null then B.APP1_DES_C else A.APP1_DES_C end AS APP1_DES_C
,case when A.APP2_DES ='' or A.APP2_DES is null then B.APP2_DES else A.APP2_DES end AS APP2_DES
,case when A.APP2_DES_C ='' or A.APP2_DES_C is null then B.APP2_DES_C else A.APP2_DES_C end AS APP2_DES_C
,case when A.APP3_DES ='' or A.APP3_DES is null then B.APP3_DES else A.APP3_DES end AS APP3_DES
,case when A.APP3_DES_C ='' or A.APP3_DES_C is null then B.APP3_DES_C else A.APP3_DES_C end AS APP3_DES_C
,case when A.GEN_RN ='' or A.GEN_RN is null then B.GEN_RN else A.GEN_RN end AS GEN_RN
FROM dm.dm_td_external_packinfo_temp a
LEFT JOIN temp B
ON B.PACK_COD = A.PACK_COD ;
insert overwrite dm.dm_td_external_packinfo_temp(
PACK_COD ,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,PROD_DES,PROD_DES_C,CMPS_COD,CMPS_DES,CMPS_DES_C,ATC1_COD,ATC2_COD,ATC3_COD,ATC4_COD,
APP1_COD,APP2_COD,APP3_COD,BIO_DESC,GENE_ORIG_DESC,ETH_OTC_DESC,NRDL_DESC,NRDL_ENTRY_DATE,EDL_DESC,TCM_DESC,PAED_DESC,GQCE_DESC,
VBP_DESC,MANU_COD,MANU_DES,MANU_DES_C,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,CORP_DES_C,BRANDTYPE,IS_AZ,AZ_MAIN,ATC1_DES,ATC1_DES_C,
ATC2_DES,ATC2_DES_C,ATC3_DES,ATC3_DES_C, ATC4_DES,ATC4_DES_C,APP1_DES,APP1_DES_C,APP2_DES,APP2_DES_C,APP3_DES,APP3_DES_C,GEN_RN
)
select * from tmp.tmp_thc_dm_td_external_packinfo
-- COMMAND ----------
-------------------------------------------------------------补充CHC部分缺失的维度数据--------------------------------------------------------------------------------------------
insert overwrite table tmp.tmp_chc_dm_td_external_packinfo
with temp as ( -- dm.dm_td_external_packinfo_temp 该表数据
--01首先是根据主表数据(带多个source)关联chpa的pack_porperty表,取出相关维度
--02chpa中,没有的code他的维度字段会被置为空所以要关联我们自己处理好的维度表来补充相关维度
SELECT
iqvia_pack_code PACK_COD,
MAX(B.PACK_DES) PACK_DES,
MAX(B.STGH_DES) STGH_DES,
MAX(B.PACK_LCH) PACK_LCH,
MAX(B.iqvia_prod_code) PROD_COD,
MAX(B.PROD_DES) PROD_DES,
MAX(B.PROD_DES_C) PROD_DES_C,
MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,
MAX(B.CMPS_DES_C) CMPS_DES_C,
MAX(B.ATC1_COD) ATC1_COD,
MAX(B.ATC2_COD) ATC2_COD,
MAX(B.ATC3_COD) ATC3_COD,
MAX(B.ATC4_COD) ATC4_COD,
MAX(B.APP1_COD) APP1_COD,
MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,
MAX(B.BIO_DESC) BIO_DESC,
MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,
MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,
MAX(B.NRDL_DESC) NRDL_DESC,
null as NRDL_ENTRY_DATE,
MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,
MAX(B.PAED_DESC) PAED_DESC,
MAX(B.GQCE_DESC) GQCE_DESC,
NULL AS VBP_DESC,
MAX(B.MANU_COD) MANU_COD,
MAX(B.MANU_DES) MANU_DES,
MAX(B.MANU_DES_C) MANU_DES_C,
MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,
max(B.CORP_COD) as CORP_COD,
max(B.CORP_DES) as CORP_DES,
-- coalesce(MAX(C.CORP_COD) ,MAX(B.CORP_COD) ) CORP_COD, -- THC存在CORP_COD 归属不一致问题
-- REPLACE( coalesce( MAX(C.CORP_DES) ,MAX(B.CORP_DES) ) , ' GROUP', '' ) as CORP_DES,
MAX(B.CORP_DES_C) CORP_DES_C,
null as BRANDTYPE,
null as IS_AZ,
null as AZ_MAIN,
MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,
MAX(B.ATC2_DES) ATC2_DES,
MAX(B.ATC2_DES_C) ATC2_DES_C,
MAX(B.ATC3_DES) ATC3_DES,
MAX(B.ATC3_DES_C) ATC3_DES_C,
MAX(B.ATC4_DES) ATC4_DES,
MAX(B.ATC4_DES_C) ATC4_DES_C,
MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,
MAX(B.APP2_DES) APP2_DES,
MAX(B.APP2_DES_C) APP2_DES_C,
MAX(B.APP3_DES) APP3_DES,
MAX(B.APP3_DES_C) APP3_DES_C,
CASE WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4
ELSE 5
END GEN_RN
FROM dwd.dwd_gnd_ext_chc_pack_property B
GROUP BY B.iqvia_pack_code
)
select
A.PACK_COD
,case when A.PACK_DES ='' or A.PACK_DES is null then B.PACK_DES else A.PACK_DES end AS PACK_DES
,case when A.STGH_DES ='' or A.STGH_DES is null then B.STGH_DES else A.STGH_DES end AS STGH_DES
,case when A.PACK_LCH ='' or A.PACK_LCH is null then B.PACK_LCH else A.PACK_LCH end AS PACK_LCH
,case when A.PROD_COD ='' or A.PROD_COD is null then B.PROD_COD else A.PROD_COD end AS PROD_COD
,case when A.PROD_DES ='' or A.PROD_DES is null then B.PROD_DES else A.PROD_DES end AS PROD_DES
,case when A.PROD_DES_C ='' or A.PROD_DES_C is null then B.PROD_DES_C else A.PROD_DES_C end AS PROD_DES_C
,case when A.CMPS_COD ='' or A.CMPS_COD is null then B.CMPS_COD else A.CMPS_COD end AS CMPS_COD
,case when A.CMPS_DES ='' or A.CMPS_DES is null then B.CMPS_DES else A.CMPS_DES end AS CMPS_DES
,case when A.CMPS_DES_C ='' or A.CMPS_DES_C is null then B.CMPS_DES_C else A.CMPS_DES_C end AS CMPS_DES_C
,case when A.ATC1_COD ='' or A.ATC1_COD is null then B.ATC1_COD else A.ATC1_COD end AS ATC1_COD
,case when A.ATC2_COD ='' or A.ATC2_COD is null then B.ATC2_COD else A.ATC2_COD end AS ATC2_COD
,case when A.ATC3_COD ='' or A.ATC3_COD is null then B.ATC3_COD else A.ATC3_COD end AS ATC3_COD
,case when A.ATC4_COD ='' or A.ATC4_COD is null then B.ATC4_COD else A.ATC4_COD end AS ATC4_COD
,case when A.APP1_COD ='' or A.APP1_COD is null then B.APP1_COD else A.APP1_COD end AS APP1_COD
,case when A.APP2_COD ='' or A.APP2_COD is null then B.APP2_COD else A.APP2_COD end AS APP2_COD
,case when A.APP3_COD ='' or A.APP3_COD is null then B.APP3_COD else A.APP3_COD end AS APP3_COD
,case when A.BIO_DESC ='' or A.BIO_DESC is null then B.BIO_DESC else A.BIO_DESC end AS BIO_DESC
,case when A.GENE_ORIG_DESC ='' or A.GENE_ORIG_DESC is null then B.GENE_ORIG_DESC else A.GENE_ORIG_DESC end AS GENE_ORIG_DESC
,case when A.ETH_OTC_DESC ='' or A.ETH_OTC_DESC is null then B.ETH_OTC_DESC else A.ETH_OTC_DESC end AS ETH_OTC_DESC
,case when A.NRDL_DESC ='' or A.NRDL_DESC is null then B.NRDL_DESC else A.NRDL_DESC end AS NRDL_DESC
,case when A.NRDL_ENTRY_DATE='' or A.NRDL_ENTRY_DATE is null then B.NRDL_ENTRY_DATE else A.NRDL_ENTRY_DATE end AS NRDL_ENTRY_DATE
,case when A.EDL_DESC ='' or A.EDL_DESC is null then B.EDL_DESC else A.EDL_DESC end AS EDL_DESC
,case when A.TCM_DESC ='' or A.TCM_DESC is null then B.TCM_DESC else A.TCM_DESC end AS TCM_DESC
,case when A.PAED_DESC ='' or A.PAED_DESC is null then B.PAED_DESC else A.PAED_DESC end AS PAED_DESC
,case when A.GQCE_DESC ='' or A.GQCE_DESC is null then B.GQCE_DESC else A.GQCE_DESC end AS GQCE_DESC
,case when A.VBP_DESC ='' or A.VBP_DESC is null then B.VBP_DESC else A.VBP_DESC end AS VBP_DESC
,case when A.MANU_COD ='' or A.MANU_COD is null then B.MANU_COD else A.MANU_COD end AS MANU_COD
,case when A.MANU_DES ='' or A.MANU_DES is null then B.MANU_DES else A.MANU_DES end AS MANU_DES
,case when A.MANU_DES_C ='' or A.MANU_DES_C is null then B.MANU_DES_C else A.MANU_DES_C end AS MANU_DES_C
,case when A.MNFL_COD ='' or A.MNFL_COD is null then B.MNFL_COD else A.MNFL_COD end AS MNFL_COD
,case when A.MNFL_DES ='' or A.MNFL_DES is null then B.MNFL_DES else A.MNFL_DES end AS MNFL_DES
,case when A.CORP_COD ='' or A.CORP_COD is null then B.CORP_COD else A.CORP_COD end AS CORP_COD -- THC存在CORP_COD 归属不一致问题
,REPLACE( case when A.CORP_DES ='' or A.CORP_DES is null then B.CORP_DES else A.CORP_DES end ,' GROUP', '' ) as CORP_DES -- 消除group
,case when A.CORP_DES_C ='' or A.CORP_DES_C is null then B.CORP_DES_C else A.CORP_DES_C end AS CORP_DES_C
,case when A.BRANDTYPE ='' or A.BRANDTYPE is null then B.BRANDTYPE else A.BRANDTYPE end AS BRANDTYPE
,case when A.IS_AZ ='' or A.IS_AZ is null then B.IS_AZ else A.IS_AZ end AS IS_AZ
,case when A.AZ_MAIN ='' or A.AZ_MAIN is null then B.AZ_MAIN else A.AZ_MAIN end AS AZ_MAIN
,case when A.ATC1_DES ='' or A.ATC1_DES is null then B.ATC1_DES else A.ATC1_DES end AS ATC1_DES
,case when A.ATC1_DES_C ='' or A.ATC1_DES_C is null then B.ATC1_DES_C else A.ATC1_DES_C end AS ATC1_DES_C
,case when A.ATC2_DES ='' or A.ATC2_DES is null then B.ATC2_DES else A.ATC2_DES end AS ATC2_DES
,case when A.ATC2_DES_C ='' or A.ATC2_DES_C is null then B.ATC2_DES_C else A.ATC2_DES_C end AS ATC2_DES_C
,case when A.ATC3_DES ='' or A.ATC3_DES is null then B.ATC3_DES else A.ATC3_DES end AS ATC3_DES
,case when A.ATC3_DES_C ='' or A.ATC3_DES_C is null then B.ATC3_DES_C else A.ATC3_DES_C end AS ATC3_DES_C
,case when A.ATC4_DES ='' or A.ATC4_DES is null then B.ATC4_DES else A.ATC4_DES end AS ATC4_DES
,case when A.ATC4_DES_C ='' or A.ATC4_DES_C is null then B.ATC4_DES_C else A.ATC4_DES_C end AS ATC4_DES_C
,case when A.APP1_DES ='' or A.APP1_DES is null then B.APP1_DES else A.APP1_DES end AS APP1_DES
,case when A.APP1_DES_C ='' or A.APP1_DES_C is null then B.APP1_DES_C else A.APP1_DES_C end AS APP1_DES_C
,case when A.APP2_DES ='' or A.APP2_DES is null then B.APP2_DES else A.APP2_DES end AS APP2_DES
,case when A.APP2_DES_C ='' or A.APP2_DES_C is null then B.APP2_DES_C else A.APP2_DES_C end AS APP2_DES_C
,case when A.APP3_DES ='' or A.APP3_DES is null then B.APP3_DES else A.APP3_DES end AS APP3_DES
,case when A.APP3_DES_C ='' or A.APP3_DES_C is null then B.APP3_DES_C else A.APP3_DES_C end AS APP3_DES_C
,case when A.GEN_RN ='' or A.GEN_RN is null then B.GEN_RN else A.GEN_RN end AS GEN_RN
FROM dm.dm_td_external_packinfo_temp a
LEFT JOIN temp B
ON B.PACK_COD = A.PACK_COD ;
insert overwrite dm.dm_td_external_packinfo_temp(
PACK_COD ,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,PROD_DES,PROD_DES_C,CMPS_COD,CMPS_DES,CMPS_DES_C,ATC1_COD,ATC2_COD,ATC3_COD,ATC4_COD,
APP1_COD,APP2_COD,APP3_COD,BIO_DESC,GENE_ORIG_DESC,ETH_OTC_DESC,NRDL_DESC,NRDL_ENTRY_DATE,EDL_DESC,TCM_DESC,PAED_DESC,GQCE_DESC,
VBP_DESC,MANU_COD,MANU_DES,MANU_DES_C,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,CORP_DES_C,BRANDTYPE,IS_AZ,AZ_MAIN,ATC1_DES,ATC1_DES_C,
ATC2_DES,ATC2_DES_C,ATC3_DES,ATC3_DES_C, ATC4_DES,ATC4_DES_C,APP1_DES,APP1_DES_C,APP2_DES,APP2_DES_C,APP3_DES,APP3_DES_C,GEN_RN
)
select * from tmp.tmp_chc_dm_td_external_packinfo
-- COMMAND ----------
-----------------------------------------------retail 补齐 retail 缺失部分pack 维度------------------------------------------------
-------------将补全数据存入临时表,再写入目标表格----------------
insert overwrite table tmp.tmp_retail_dm_td_external_packinfo
WITH dm_retail_pack AS (
SELECT
iqvia_pack_code PACK_COD,MAX(B.PACK_DES) PACK_DES,MAX(B.STGH_DES) STGH_DES,MAX(B.PACK_LCH) PACK_LCH,MAX(B.iqvia_prod_code) PROD_COD,MAX(B.PROD_DES) PROD_DES,MAX(B.PROD_DES_C) PROD_DES_C,MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,MAX(B.CMPS_DES_C) CMPS_DES_C,MAX(B.ATC1_COD) ATC1_COD,MAX(B.ATC2_COD) ATC2_COD,MAX(B.ATC3_COD) ATC3_COD,MAX(B.ATC4_COD) ATC4_COD,MAX(B.APP1_COD) APP1_COD,MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,MAX(B.BIO_DESC) BIO_DESC,MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,MAX(B.NRDL_DESC) NRDL_DESC,MAX(B.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,MAX(B.PAED_DESC) PAED_DESC,MAX(B.GQCE_DESC) GQCE_DESC,
case when MAX(B.VBP_DESC) = 'VBP-IN' then 'VBP-IN' when MAX(B.VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' WHEN MAX(B.VBP_DESC) IS NOT NULL THEN 'Non VBP' ELSE NULL end as VBP_DESC,
MAX(B.MANU_COD) MANU_COD,MAX(B.MANU_DES) MANU_DES,MAX(B.MANU_DES_C) MANU_DES_C,MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,MAX(B.CORP_COD) CORP_COD,MAX(B.CORP_DES) CORP_DES,MAX(B.CORP_DES_C) CORP_DES_C,MAX(B.BRANDTYPE) BRANDTYPE,MAX(B.IS_AZ) IS_AZ,MAX(B.AZ_MAIN) AZ_MAIN,MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,MAX(B.ATC2_DES) ATC2_DES,MAX(B.ATC2_DES_C) ATC2_DES_C,MAX(B.ATC3_DES) ATC3_DES,MAX(B.ATC3_DES_C) ATC3_DES_C,MAX(B.ATC4_DES) ATC4_DES,MAX(B.ATC4_DES_C) ATC4_DES_C,MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,MAX(B.APP2_DES) APP2_DES,MAX(B.APP2_DES_C) APP2_DES_C,MAX(B.APP3_DES) APP3_DES,MAX(B.APP3_DES_C) APP3_DES_C,
CASE WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1 WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2 WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3 WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4 ELSE 5 END GEN_RN
FROM dm.dm_zk_retail_pack_property B
GROUP BY B.iqvia_pack_code
union
SELECT
B.iqvia_pack_code PACK_COD,MAX(B.PACK_DES) PACK_DES,MAX(B.STGH_DES) STGH_DES,MAX(B.PACK_LCH) PACK_LCH,MAX(B.PROD_COD) PROD_COD,MAX(B.PROD_DES) PROD_DES,MAX(B.PROD_DES_C) PROD_DES_C,MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,MAX(B.CMPS_DES_C) CMPS_DES_C,MAX(B.ATC1_COD) ATC1_COD,MAX(B.ATC2_COD) ATC2_COD,MAX(B.ATC3_COD) ATC3_COD,MAX(B.ATC4_COD) ATC4_COD,MAX(B.APP1_COD) APP1_COD,MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,MAX(B.BIO_DESC) BIO_DESC,MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,MAX(B.NRDL_DESC) NRDL_DESC,MAX(B.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,MAX(B.PAED_DESC) PAED_DESC,MAX(B.GQCE_DESC) GQCE_DESC,
case when MAX(B.VBP_DESC) = 'VBP-IN' then 'VBP-IN' when MAX(B.VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' WHEN MAX(B.VBP_DESC) IS NOT NULL THEN 'Non VBP' ELSE NULL end as VBP_DESC,
MAX(B.MANU_COD) MANU_COD,MAX(B.MANU_DES) MANU_DES,MAX(B.MANU_DES_C) MANU_DES_C,MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,MAX(B.CORP_COD) CORP_COD,MAX(B.CORP_DES) CORP_DES,MAX(B.CORP_DES_C) CORP_DES_C,MAX(B.BRANDTYPE) BRANDTYPE,MAX(B.IS_AZ) IS_AZ,MAX(B.AZ_MAIN) AZ_MAIN,MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,MAX(B.ATC2_DES) ATC2_DES,MAX(B.ATC2_DES_C) ATC2_DES_C,MAX(B.ATC3_DES) ATC3_DES,MAX(B.ATC3_DES_C) ATC3_DES_C,MAX(B.ATC4_DES) ATC4_DES,MAX(B.ATC4_DES_C) ATC4_DES_C,MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,MAX(B.APP2_DES) APP2_DES,MAX(B.APP2_DES_C) APP2_DES_C,MAX(B.APP3_DES) APP3_DES,MAX(B.APP3_DES_C) APP3_DES_C,
CASE WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1 WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2 WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3 WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4 ELSE 5 END GEN_RN
FROM dm.dm_zk_retail_dtp_pack_property B
GROUP BY B.iqvia_pack_code
)
SELECT
A.PACK_COD
,case when A.PACK_DES ='' or A.PACK_DES is null then B.PACK_DES else A.PACK_DES end AS PACK_DES
,case when A.STGH_DES ='' or A.STGH_DES is null then B.STGH_DES else A.STGH_DES end AS STGH_DES
,case when A.PACK_LCH ='' or A.PACK_LCH is null then B.PACK_LCH else A.PACK_LCH end AS PACK_LCH
,case when A.PROD_COD ='' or A.PROD_COD is null then B.PROD_COD else A.PROD_COD end AS PROD_COD
,case when A.PROD_DES ='' or A.PROD_DES is null then B.PROD_DES else A.PROD_DES end AS PROD_DES
,case when A.PROD_DES_C ='' or A.PROD_DES_C is null then B.PROD_DES_C else A.PROD_DES_C end AS PROD_DES_C
,case when A.CMPS_COD ='' or A.CMPS_COD is null then B.CMPS_COD else A.CMPS_COD end AS CMPS_COD
,case when A.CMPS_DES ='' or A.CMPS_DES is null then B.CMPS_DES else A.CMPS_DES end AS CMPS_DES
,case when A.CMPS_DES_C ='' or A.CMPS_DES_C is null then B.CMPS_DES_C else A.CMPS_DES_C end AS CMPS_DES_C
,case when A.ATC1_COD ='' or A.ATC1_COD is null then B.ATC1_COD else A.ATC1_COD end AS ATC1_COD
,case when A.ATC2_COD ='' or A.ATC2_COD is null then B.ATC2_COD else A.ATC2_COD end AS ATC2_COD
,case when A.ATC3_COD ='' or A.ATC3_COD is null then B.ATC3_COD else A.ATC3_COD end AS ATC3_COD
,case when A.ATC4_COD ='' or A.ATC4_COD is null then B.ATC4_COD else A.ATC4_COD end AS ATC4_COD
,case when A.APP1_COD ='' or A.APP1_COD is null then B.APP1_COD else A.APP1_COD end AS APP1_COD
,case when A.APP2_COD ='' or A.APP2_COD is null then B.APP2_COD else A.APP2_COD end AS APP2_COD
,case when A.APP3_COD ='' or A.APP3_COD is null then B.APP3_COD else A.APP3_COD end AS APP3_COD
,case when A.BIO_DESC ='' or A.BIO_DESC is null then B.BIO_DESC else A.BIO_DESC end AS BIO_DESC
,case when A.GENE_ORIG_DESC ='' or A.GENE_ORIG_DESC is null then B.GENE_ORIG_DESC else A.GENE_ORIG_DESC end AS GENE_ORIG_DESC
,case when A.ETH_OTC_DESC ='' or A.ETH_OTC_DESC is null then B.ETH_OTC_DESC else A.ETH_OTC_DESC end AS ETH_OTC_DESC
,case when A.NRDL_DESC ='' or A.NRDL_DESC is null then B.NRDL_DESC else A.NRDL_DESC end AS NRDL_DESC
,case when A.NRDL_ENTRY_DATE='' or A.NRDL_ENTRY_DATE is null then B.NRDL_ENTRY_DATE else A.NRDL_ENTRY_DATE end AS NRDL_ENTRY_DATE
,case when A.EDL_DESC ='' or A.EDL_DESC is null then B.EDL_DESC else A.EDL_DESC end AS EDL_DESC
,case when A.TCM_DESC ='' or A.TCM_DESC is null then B.TCM_DESC else A.TCM_DESC end AS TCM_DESC
,case when A.PAED_DESC ='' or A.PAED_DESC is null then B.PAED_DESC else A.PAED_DESC end AS PAED_DESC
,case when A.GQCE_DESC ='' or A.GQCE_DESC is null then B.GQCE_DESC else A.GQCE_DESC end AS GQCE_DESC
,case when A.VBP_DESC ='' or A.VBP_DESC is null then B.VBP_DESC else A.VBP_DESC end AS VBP_DESC
,case when A.MANU_COD ='' or A.MANU_COD is null then B.MANU_COD else A.MANU_COD end AS MANU_COD
,case when A.MANU_DES ='' or A.MANU_DES is null then B.MANU_DES else A.MANU_DES end AS MANU_DES
,case when A.MANU_DES_C ='' or A.MANU_DES_C is null then B.MANU_DES_C else A.MANU_DES_C end AS MANU_DES_C
,case when A.MNFL_COD ='' or A.MNFL_COD is null then B.MNFL_COD else A.MNFL_COD end AS MNFL_COD
,case when A.MNFL_DES ='' or A.MNFL_DES is null then B.MNFL_DES else A.MNFL_DES end AS MNFL_DES
,case when A.CORP_COD ='' or A.CORP_COD is null then B.CORP_COD else A.CORP_COD end AS CORP_COD
,REPLACE( case when A.CORP_DES ='' or A.CORP_DES is null then B.CORP_DES else A.CORP_DES end ,' GROUP', '' ) as CORP_DES -- 消除group
,case when A.CORP_DES_C ='' or A.CORP_DES_C is null then B.CORP_DES_C else A.CORP_DES_C end AS CORP_DES_C
,case when A.BRANDTYPE ='' or A.BRANDTYPE is null then B.BRANDTYPE else A.BRANDTYPE end AS BRANDTYPE
,case when A.IS_AZ ='' or A.IS_AZ is null then B.IS_AZ else A.IS_AZ end AS IS_AZ
,case when A.AZ_MAIN ='' or A.AZ_MAIN is null then B.AZ_MAIN else A.AZ_MAIN end AS AZ_MAIN
,case when A.ATC1_DES ='' or A.ATC1_DES is null then B.ATC1_DES else A.ATC1_DES end AS ATC1_DES
,case when A.ATC1_DES_C ='' or A.ATC1_DES_C is null then B.ATC1_DES_C else A.ATC1_DES_C end AS ATC1_DES_C
,case when A.ATC2_DES ='' or A.ATC2_DES is null then B.ATC2_DES else A.ATC2_DES end AS ATC2_DES
,case when A.ATC2_DES_C ='' or A.ATC2_DES_C is null then B.ATC2_DES_C else A.ATC2_DES_C end AS ATC2_DES_C
,case when A.ATC3_DES ='' or A.ATC3_DES is null then B.ATC3_DES else A.ATC3_DES end AS ATC3_DES
,case when A.ATC3_DES_C ='' or A.ATC3_DES_C is null then B.ATC3_DES_C else A.ATC3_DES_C end AS ATC3_DES_C
,case when A.ATC4_DES ='' or A.ATC4_DES is null then B.ATC4_DES else A.ATC4_DES end AS ATC4_DES
,case when A.ATC4_DES_C ='' or A.ATC4_DES_C is null then B.ATC4_DES_C else A.ATC4_DES_C end AS ATC4_DES_C
,case when A.APP1_DES ='' or A.APP1_DES is null then B.APP1_DES else A.APP1_DES end AS APP1_DES
,case when A.APP1_DES_C ='' or A.APP1_DES_C is null then B.APP1_DES_C else A.APP1_DES_C end AS APP1_DES_C
,case when A.APP2_DES ='' or A.APP2_DES is null then B.APP2_DES else A.APP2_DES end AS APP2_DES
,case when A.APP2_DES_C ='' or A.APP2_DES_C is null then B.APP2_DES_C else A.APP2_DES_C end AS APP2_DES_C
,case when A.APP3_DES ='' or A.APP3_DES is null then B.APP3_DES else A.APP3_DES end AS APP3_DES
,case when A.APP3_DES_C ='' or A.APP3_DES_C is null then B.APP3_DES_C else A.APP3_DES_C end AS APP3_DES_C
,case when A.GEN_RN ='' or A.GEN_RN is null then B.GEN_RN else A.GEN_RN end AS GEN_RN
FROM dm.dm_td_external_packinfo_temp a
LEFT JOIN dm_retail_pack B
ON B.PACK_COD = A.PACK_COD ;
insert overwrite dm.dm_td_external_packinfo_temp(
PACK_COD ,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,PROD_DES,PROD_DES_C,CMPS_COD,CMPS_DES,CMPS_DES_C,ATC1_COD,ATC2_COD,ATC3_COD,ATC4_COD,
APP1_COD,APP2_COD,APP3_COD,BIO_DESC,GENE_ORIG_DESC,ETH_OTC_DESC,NRDL_DESC,NRDL_ENTRY_DATE,EDL_DESC,TCM_DESC,PAED_DESC,GQCE_DESC,
VBP_DESC,MANU_COD,MANU_DES,MANU_DES_C,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,CORP_DES_C,BRANDTYPE,IS_AZ,AZ_MAIN,ATC1_DES,ATC1_DES_C,
ATC2_DES,ATC2_DES_C,ATC3_DES,ATC3_DES_C, ATC4_DES,ATC4_DES_C,APP1_DES,APP1_DES_C,APP2_DES,APP2_DES_C,APP3_DES,APP3_DES_C,GEN_RN
)
select * from tmp.tmp_retail_dm_td_external_packinfo;
-- COMMAND ----------
---------------------------------------------------ec---------------------------------------------------
insert overwrite table tmp.tmp_ec_dm_td_external_packinfo
WITH dm_ec_pack AS (
SELECT
iqvia_pack_code PACK_COD,
MAX(B.PACK_DES) PACK_DES,
MAX(B.STGH_DES) STGH_DES,
MAX(B.PACK_LCH) PACK_LCH,
MAX(B.prod_cod) PROD_COD,
MAX(B.PROD_DES) PROD_DES,
MAX(B.PROD_DES_C) PROD_DES_C,
MAX(B.CMPS_COD) CMPS_COD,
MAX(B.CMPS_DES) CMPS_DES,
MAX(B.CMPS_DES_C) CMPS_DES_C,
MAX(B.ATC1_COD) ATC1_COD,
MAX(B.ATC2_COD) ATC2_COD,
MAX(B.ATC3_COD) ATC3_COD,
MAX(B.ATC4_COD) ATC4_COD,
MAX(B.APP1_COD) APP1_COD,
MAX(B.APP2_COD) APP2_COD,
MAX(B.APP3_COD) APP3_COD,
MAX(B.BIO_DESC) BIO_DESC,
MAX(B.GENE_ORIG_DESC) GENE_ORIG_DESC,
MAX(B.ETH_OTC_DESC) ETH_OTC_DESC,
MAX(B.NRDL_DESC) NRDL_DESC,
MAX(B.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,
MAX(B.EDL_DESC) EDL_DESC,
MAX(B.TCM_DESC) TCM_DESC,
MAX(B.PAED_DESC) PAED_DESC,
MAX(B.GQCE_DESC) GQCE_DESC,
case when MAX(B.VBP_DESC) = 'VBP-IN' then 'VBP-IN' when MAX(B.VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' WHEN MAX(B.VBP_DESC) IS NOT NULL THEN 'Non VBP' ELSE NULL end as VBP_DESC,
MAX(B.MANU_COD) MANU_COD,
MAX(B.MANU_DES) MANU_DES,
MAX(B.MANU_DES_C) MANU_DES_C,
MAX(B.MNFL_COD) MNFL_COD,
MAX(B.MNFL_DES) MNFL_DES,
MAX(B.CORP_COD) CORP_COD,
MAX(B.CORP_DES) CORP_DES,
MAX(B.CORP_DES_C) CORP_DES_C,
MAX(B.BRANDTYPE) BRANDTYPE,
MAX(B.IS_AZ) IS_AZ,
MAX(B.AZ_MAIN) AZ_MAIN,
MAX(B.ATC1_DES) ATC1_DES,
MAX(B.ATC1_DES_C) ATC1_DES_C,
MAX(B.ATC2_DES) ATC2_DES,
MAX(B.ATC2_DES_C) ATC2_DES_C,
MAX(B.ATC3_DES) ATC3_DES,
MAX(B.ATC3_DES_C) ATC3_DES_C,
MAX(B.ATC4_DES) ATC4_DES,
MAX(B.ATC4_DES_C) ATC4_DES_C,
MAX(B.APP1_DES) APP1_DES,
MAX(B.APP1_DES_C) APP1_DES_C,
MAX(B.APP2_DES) APP2_DES,
MAX(B.APP2_DES_C) APP2_DES_C,
MAX(B.APP3_DES) APP3_DES,
MAX(B.APP3_DES_C) APP3_DES_C,
CASE
WHEN MAX(B.GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN MAX(B.GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN MAX(B.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN MAX(B.GENE_ORIG_DESC) = 'TCM' THEN 4 ELSE 5 END GEN_RN
FROM dm.dm_zk_ec_pack_property B
GROUP BY B.iqvia_pack_code
)
SELECT
A.PACK_COD
,NVL(A.PACK_DES,B.PACK_DES) AS PACK_DES
,NVL(A.STGH_DES,B.STGH_DES) AS STGH_DES
,NVL(A.PACK_LCH,B.PACK_LCH) AS PACK_LCH
,NVL(A.PROD_COD,B.PROD_COD) AS PROD_COD
,NVL(A.PROD_DES,B.PROD_DES ) AS PROD_DES
,NVL(A.PROD_DES_C,B.PROD_DES_C ) AS PROD_DES_C
,NVL(A.CMPS_COD,B.CMPS_COD) AS CMPS_COD
,NVL(A.CMPS_DES,B.CMPS_DES) AS CMPS_DES
,NVL(A.CMPS_DES_C,B.CMPS_DES_C) AS CMPS_DES_C
,NVL(A.ATC1_COD,B.ATC1_COD) AS ATC1_COD
,NVL(A.ATC2_COD,B.ATC2_COD) AS ATC2_COD
,NVL(A.ATC3_COD,B.ATC3_COD) AS ATC3_COD
,NVL(A.ATC4_COD,B.ATC4_COD) AS ATC4_COD
,NVL(A.APP1_COD,B.APP1_COD) AS APP1_COD
,NVL(A.APP2_COD,B.APP2_COD) AS APP2_COD
,NVL(A.APP3_COD,B.APP3_COD) AS APP3_COD
,NVL(A.BIO_DESC,B.BIO_DESC) AS BIO_DESC
,NVL(A.GENE_ORIG_DESC,B.GENE_ORIG_DESC) AS GENE_ORIG_DESC
,NVL(A.ETH_OTC_DESC,B.ETH_OTC_DESC) AS ETH_OTC_DESC
,NVL(A.NRDL_DESC,B.NRDL_DESC) AS NRDL_DESC
,NVL(A.NRDL_ENTRY_DATE,B.NRDL_ENTRY_DATE) AS NRDL_ENTRY_DATE
,NVL(A.EDL_DESC,B.EDL_DESC) AS EDL_DESC
,NVL(A.TCM_DESC,B.TCM_DESC) AS TCM_DESC
,NVL(A.PAED_DESC,B.PAED_DESC) AS PAED_DESC
,NVL(A.GQCE_DESC,B.GQCE_DESC) AS GQCE_DESC
,NVL(A.VBP_DESC,B.VBP_DESC) AS VBP_DESC
,NVL(A.MANU_COD,B.MANU_COD) AS MANU_COD
,NVL(A.MANU_DES,B.MANU_DES) AS MANU_DES
,NVL(A.MANU_DES_C,B.MANU_DES_C) AS MANU_DES_C
,NVL(A.MNFL_COD,B.MNFL_COD) AS MNFL_COD
,NVL(A.MNFL_DES,B.MNFL_DES) AS MNFL_DES
,NVL(A.CORP_COD,B.CORP_COD) AS CORP_COD
,NVL(A.CORP_DES,B.CORP_DES) AS CORP_DES
,NVL(A.CORP_DES_C,B.CORP_DES_C) AS CORP_DES_C
,NVL(A.BRANDTYPE,B.BRANDTYPE) AS BRANDTYPE
,NVL(A.IS_AZ,B.IS_AZ) AS IS_AZ
,NVL(A.AZ_MAIN,B.AZ_MAIN) AS AZ_MAIN
,NVL(A.ATC1_DES,B.ATC1_DES) AS ATC1_DES
,NVL(A.ATC1_DES_C,B.ATC1_DES_C) AS ATC1_DES_C
,NVL(A.ATC2_DES,B.ATC2_DES) AS ATC2_DES
,NVL(A.ATC2_DES_C,B.ATC2_DES_C) AS ATC2_DES_C
,NVL(A.ATC3_DES,B.ATC3_DES) AS ATC3_DES
,NVL(A.ATC3_DES_C,B.ATC3_DES_C) AS ATC3_DES_C
,NVL(A.ATC4_DES,B.ATC4_DES) AS ATC4_DES
,NVL(A.ATC4_DES_C,B.ATC4_DES_C) AS ATC4_DES_C
,NVL(A.APP1_DES,B.APP1_DES) AS APP1_DES
,NVL(A.APP1_DES_C,B.APP1_DES_C) AS APP1_DES_C
,NVL(A.APP2_DES,B.APP2_DES) AS APP2_DES
,NVL(A.APP2_DES_C,B.APP2_DES_C) AS APP2_DES_C
,NVL(A.APP3_DES,B.APP3_DES) AS APP3_DES
,NVL(A.APP3_DES_C,B.APP3_DES_C) AS APP3_DES_C
,NVL(A.GEN_RN,B.GEN_RN) AS GEN_RN
FROM dm.dm_td_external_packinfo_temp a
LEFT JOIN dm_ec_pack B
ON B.PACK_COD = A.PACK_COD ;
insert overwrite dm.dm_td_external_packinfo_temp(
PACK_COD ,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,PROD_DES,PROD_DES_C,CMPS_COD,CMPS_DES,CMPS_DES_C,ATC1_COD,ATC2_COD,ATC3_COD,ATC4_COD,
APP1_COD,APP2_COD,APP3_COD,BIO_DESC,GENE_ORIG_DESC,ETH_OTC_DESC,NRDL_DESC,NRDL_ENTRY_DATE,EDL_DESC,TCM_DESC,PAED_DESC,GQCE_DESC,
VBP_DESC,MANU_COD,MANU_DES,MANU_DES_C,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,CORP_DES_C,BRANDTYPE,IS_AZ,AZ_MAIN,ATC1_DES,ATC1_DES_C,
ATC2_DES,ATC2_DES_C,ATC3_DES,ATC3_DES_C, ATC4_DES,ATC4_DES_C,APP1_DES,APP1_DES_C,APP2_DES,APP2_DES_C,APP3_DES,APP3_DES_C,GEN_RN
)
select * from tmp.tmp_ec_dm_td_external_packinfo;
-- COMMAND ----------
-- MAGIC %md
-- MAGIC # AIA渠道
-- COMMAND ----------
--PACK_COD是唯一的不允许重复
create or replace temporary view aia_external_packinfo_1 as
select
case when PACK_COD like '%OTHERS%' or length(PACK_COD) >= 12 or (not PACK_COD REGEXP '^[0-9]') then PACK_COD
else right(concat('000000000000',PACK_COD),12)
end as PACK_COD,
max(PACK_DES) as PACK_DES,
max(STGH_DES) as STGH_DES,
max(PACK_LCH) as PACK_LCH,
max(PROD_COD) as PROD_COD,
max(PROD_DES) as PROD_DES,
max(PROD_DES_C) as PROD_DES_C,
max(CMPS_COD) as CMPS_COD,
max(CMPS_DES) as CMPS_DES,
max(CMPS_DES_C) as CMPS_DES_C,
max(ATC1_COD) as ATC1_COD,
max(ATC2_COD) as ATC2_COD,
max(ATC3_COD) as ATC3_COD,
max(ATC4_COD) as ATC4_COD,
max(APP1_COD) as APP1_COD,
max(APP2_COD) as APP2_COD,
max(APP3_COD) as APP3_COD,
max(BIO_DESC) as BIO_DESC,
max(GENE_ORIG_DESC) as GENE_ORIG_DESC,
max(ETH_OTC_DESC) as ETH_OTC_DESC,
max(NRDL_DESC) as NRDL_DESC,
max(NRDL_Entry_Date) as NRDL_ENTRY_DATE,
max(EDL_DESC) as EDL_DESC,
max(TCM_DESC) as TCM_DESC,
max(PAED_DESC) as PAED_DESC,
max(GQCE_DESC) as GQCE_DESC,
NULL as VBP_DESC,
max(MANU_COD) as MANU_COD,
max(MANU_DES) as MANU_DES,
max(MANU_DES_C) as MANU_DES_C,
max(MNFL_COD) as MNFL_COD,
max(MNFL_DES) as MNFL_DES,
max(CORP_COD) as CORP_COD,
max(CORP_DES) as CORP_DES,
max(CORP_DES_C) as CORP_DES_C,
max(BrandType) as BRANDTYPE,
max(IS_AZ) as IS_AZ,
max(AZ_MAIN) as AZ_MAIN,
max(ATC1_DES) as ATC1_DES,
max(ATC1_DES_C) as ATC1_DES_C,
max(ATC2_DES) as ATC2_DES,
max(ATC2_DES_C) as ATC2_DES_C,
max(ATC3_DES) as ATC3_DES,
max(ATC3_DES_C) as ATC3_DES_C,
max(ATC4_DES) as ATC4_DES,
max(ATC4_DES_C) as ATC4_DES_C,
max(APP1_DES) as APP1_DES,
max(APP1_DES_C) as APP1_DES_C,
max(APP2_DES) as APP2_DES,
max(APP2_DES_C) as APP2_DES_C,
max(APP3_DES) as APP3_DES,
max(APP3_DES_C) as APP3_DES_C,
CASE WHEN max(GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN max(GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN max(GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN max(GENE_ORIG_DESC) = 'TCM' THEN 4
ELSE 5
END as GEN_RN
from dm.dm_aia_pack_property
group by PACK_COD
-- COMMAND ----------
--补全维度
insert overwrite table tmp.aia_external_packinfo_2
select distinct
case when A.PACK_COD like '%OTHERS%' or length(A.PACK_COD) >= 12 or (not A.PACK_COD REGEXP '^[0-9]') then A.PACK_COD
else right(concat('000000000000',A.PACK_COD),12)
end as PACK_COD
,NVL(A.PACK_DES,B.PACK_DES) AS PACK_DES
,NVL(A.STGH_DES,B.STGH_DES) AS STGH_DES
,NVL(A.PACK_LCH,B.PACK_LCH) AS PACK_LCH
,NVL(A.PROD_COD,B.PROD_COD) AS PROD_COD
,NVL(A.PROD_DES,B.PROD_DES) AS PROD_DES
,NVL(A.PROD_DES_C,B.PROD_DES_C) AS PROD_DES_C
,NVL(A.CMPS_COD,B.CMPS_COD) AS CMPS_COD
,NVL(A.CMPS_DES,B.CMPS_DES) AS CMPS_DES
,NVL(A.CMPS_DES_C,B.CMPS_DES_C) AS CMPS_DES_C
,NVL(A.ATC1_COD,B.ATC1_COD) AS ATC1_COD
,NVL(A.ATC2_COD,B.ATC2_COD) AS ATC2_COD
,NVL(A.ATC3_COD,B.ATC3_COD) AS ATC3_COD
,NVL(A.ATC4_COD,B.ATC4_COD) AS ATC4_COD
,NVL(A.APP1_COD,B.APP1_COD) AS APP1_COD
,NVL(A.APP2_COD,B.APP2_COD) AS APP2_COD
,NVL(A.APP3_COD,B.APP3_COD) AS APP3_COD
,NVL(A.BIO_DESC,B.BIO_DESC) AS BIO_DESC
,NVL(A.GENE_ORIG_DESC,B.GENE_ORIG_DESC) AS GENE_ORIG_DESC
,NVL(A.ETH_OTC_DESC,B.ETH_OTC_DESC) AS ETH_OTC_DESC
,NVL(A.NRDL_DESC,B.NRDL_DESC) AS NRDL_DESC
,NVL(A.NRDL_ENTRY_DATE,B.NRDL_ENTRY_DATE) AS NRDL_ENTRY_DATE
,NVL(A.EDL_DESC,B.EDL_DESC) AS EDL_DESC
,NVL(A.TCM_DESC,B.TCM_DESC) AS TCM_DESC
,NVL(A.PAED_DESC,B.PAED_DESC) AS PAED_DESC
,NVL(A.GQCE_DESC,B.GQCE_DESC) AS GQCE_DESC
,NVL(A.VBP_DESC,B.VBP_DESC) AS VBP_DESC
,NVL(A.MANU_COD,B.MANU_COD) AS MANU_COD
,NVL(A.MANU_DES,B.MANU_DES) AS MANU_DES
,NVL(A.MANU_DES_C,B.MANU_DES_C) AS MANU_DES_C
,NVL(A.MNFL_COD,B.MNFL_COD) AS MNFL_COD
,NVL(A.MNFL_DES,B.MNFL_DES) AS MNFL_DES
,NVL(A.CORP_COD,B.CORP_COD) AS CORP_COD
,REPLACE( NVL(A.CORP_DES,B.CORP_DES) ,' GROUP', '' ) as CORP_DES -- 消除group
,NVL(A.CORP_DES_C,B.CORP_DES_C) AS CORP_DES_C
,NVL(A.BRANDTYPE,B.BRANDTYPE) AS BRANDTYPE
,NVL(A.IS_AZ,B.IS_AZ) AS IS_AZ
,NVL(A.AZ_MAIN,B.AZ_MAIN) AS AZ_MAIN
,NVL(A.ATC1_DES,B.ATC1_DES) AS ATC1_DES
,NVL(A.ATC1_DES_C,B.ATC1_DES_C) AS ATC1_DES_C
,NVL(A.ATC2_DES,B.ATC2_DES) AS ATC2_DES
,NVL(A.ATC2_DES_C,B.ATC2_DES_C) AS ATC2_DES_C
,NVL(A.ATC3_DES,B.ATC3_DES) AS ATC3_DES
,NVL(A.ATC3_DES_C,B.ATC3_DES_C) AS ATC3_DES_C
,NVL(A.ATC4_DES,B.ATC4_DES) AS ATC4_DES
,NVL(A.ATC4_DES_C,B.ATC4_DES_C) AS ATC4_DES_C
,NVL(A.APP1_DES,B.APP1_DES) AS APP1_DES
,NVL(A.APP1_DES_C,B.APP1_DES_C) AS APP1_DES_C
,NVL(A.APP2_DES,B.APP2_DES) AS APP2_DES
,NVL(A.APP2_DES_C,B.APP2_DES_C) AS APP2_DES_C
,NVL(A.APP3_DES,B.APP3_DES) AS APP3_DES
,NVL(A.APP3_DES_C,B.APP3_DES_C) AS APP3_DES_C
,NVL(A.GEN_RN,B.GEN_RN) AS GEN_RN
FROM dm.dm_td_external_packinfo_temp A
LEFT JOIN aia_external_packinfo_1 B
ON case when A.PACK_COD like '%OTHERS%' or length(A.PACK_COD) >= 12 or (not A.PACK_COD REGEXP '^[0-9]') then A.PACK_COD else right(concat('000000000000',A.PACK_COD),12) end
= B.PACK_COD
-- COMMAND ----------
--更新dm.dm_td_external_packinfo_temp
insert overwrite dm.dm_td_external_packinfo_temp (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN
)
select
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN
from tmp.aia_external_packinfo_2
-- COMMAND ----------
-- MAGIC %md
-- MAGIC # XIEHE渠道
-- COMMAND ----------
--PACK_COD是唯一的不允许重复
create or replace temporary view xiehe_external_packinfo_1 as
select
A.PACK_COD,
max(A.PACK_DES) as PACK_DES,
max(A.STGH_DES) as STGH_DES,
max(A.PACK_LCH) as PACK_LCH,
max(A.PROD_COD) as PROD_COD,
max(A.PROD_DES) as PROD_DES,
max(A.PROD_DES_C) as PROD_DES_C,
max(A.CMPS_COD) as CMPS_COD,
max(A.CMPS_DES) as CMPS_DES,
max(A.CMPS_DES_C) as CMPS_DES_C,
max(A.ATC1_COD) as ATC1_COD,
max(A.ATC2_COD) as ATC2_COD,
max(A.ATC3_COD) as ATC3_COD,
max(A.ATC4_COD) as ATC4_COD,
max(A.APP1_COD) as APP1_COD,
max(A.APP2_COD) as APP2_COD,
max(A.APP3_COD) as APP3_COD,
max(A.BIO_DESC) as BIO_DESC,
max(A.GENE_ORIG_DESC) as GENE_ORIG_DESC,
max(A.ETH_OTC_DESC) as ETH_OTC_DESC,
max(A.NRDL_DESC) as NRDL_DESC,
max(A.NRDL_Entry_Date) as NRDL_ENTRY_DATE,
max(A.EDL_DESC) as EDL_DESC,
max(A.TCM_DESC) as TCM_DESC,
max(A.PAED_DESC) as PAED_DESC,
max(A.GQCE_DESC) as GQCE_DESC,
NULL as VBP_DESC,
max(A.MANU_COD) as MANU_COD,
max(A.MANU_DES) as MANU_DES,
max(A.MANU_DES_C) as MANU_DES_C,
max(A.MNFL_COD) as MNFL_COD,
max(A.MNFL_DES) as MNFL_DES,
max(A.CORP_COD) as CORP_COD,
max(A.CORP_DES) as CORP_DES,
max(A.CORP_DES_C) as CORP_DES_C,
max(A.BrandType) as BRANDTYPE,
max(A.IS_AZ) as IS_AZ,
max(A.AZ_MAIN) as AZ_MAIN,
max(A.ATC1_DES) as ATC1_DES,
max(A.ATC1_DES_C) as ATC1_DES_C,
max(A.ATC2_DES) as ATC2_DES,
max(A.ATC2_DES_C) as ATC2_DES_C,
max(A.ATC3_DES) as ATC3_DES,
max(A.ATC3_DES_C) as ATC3_DES_C,
max(A.ATC4_DES) as ATC4_DES,
max(A.ATC4_DES_C) as ATC4_DES_C,
max(A.APP1_DES) as APP1_DES,
max(A.APP1_DES_C) as APP1_DES_C,
max(A.APP2_DES) as APP2_DES,
max(A.APP2_DES_C) as APP2_DES_C,
max(A.APP3_DES) as APP3_DES,
max(A.APP3_DES_C) as APP3_DES_C,
CASE WHEN max(A.GENE_ORIG_DESC) = 'ORIG' THEN 1
WHEN max(A.GENE_ORIG_DESC) = 'Branded Gen' THEN 2
WHEN max(A.GENE_ORIG_DESC) = 'Unbranded Gen' THEN 3
WHEN max(A.GENE_ORIG_DESC) = 'TCM' THEN 4
ELSE 5
END as GEN_RN
from dm.dm_xiehe_pack_property a
group by A.PACK_COD
-- COMMAND ----------
--补全维度
insert overwrite table tmp.xiehe_external_packinfo_2
select distinct
A.PACK_COD
,NVL(A.PACK_DES,B.PACK_DES) AS PACK_DES
,NVL(A.STGH_DES,B.STGH_DES) AS STGH_DES
,NVL(A.PACK_LCH,B.PACK_LCH) AS PACK_LCH
,NVL(A.PROD_COD,B.PROD_COD) AS PROD_COD
,NVL(A.PROD_DES,B.PROD_DES) AS PROD_DES
,NVL(A.PROD_DES_C,B.PROD_DES_C) AS PROD_DES_C
,NVL(A.CMPS_COD,B.CMPS_COD) AS CMPS_COD
,NVL(A.CMPS_DES,B.CMPS_DES) AS CMPS_DES
,NVL(A.CMPS_DES_C,B.CMPS_DES_C) AS CMPS_DES_C
,NVL(A.ATC1_COD,B.ATC1_COD) AS ATC1_COD
,NVL(A.ATC2_COD,B.ATC2_COD) AS ATC2_COD
,NVL(A.ATC3_COD,B.ATC3_COD) AS ATC3_COD
,NVL(A.ATC4_COD,B.ATC4_COD) AS ATC4_COD
,NVL(A.APP1_COD,B.APP1_COD) AS APP1_COD
,NVL(A.APP2_COD,B.APP2_COD) AS APP2_COD
,NVL(A.APP3_COD,B.APP3_COD) AS APP3_COD
,NVL(A.BIO_DESC,B.BIO_DESC) AS BIO_DESC
,NVL(A.GENE_ORIG_DESC,B.GENE_ORIG_DESC) AS GENE_ORIG_DESC
,NVL(A.ETH_OTC_DESC,B.ETH_OTC_DESC) AS ETH_OTC_DESC
,NVL(A.NRDL_DESC,B.NRDL_DESC) AS NRDL_DESC
,NVL(A.NRDL_ENTRY_DATE,B.NRDL_ENTRY_DATE) AS NRDL_ENTRY_DATE
,NVL(A.EDL_DESC,B.EDL_DESC) AS EDL_DESC
,NVL(A.TCM_DESC,B.TCM_DESC) AS TCM_DESC
,NVL(A.PAED_DESC,B.PAED_DESC) AS PAED_DESC
,NVL(A.GQCE_DESC,B.GQCE_DESC) AS GQCE_DESC
,NVL(A.VBP_DESC,B.VBP_DESC) AS VBP_DESC
,NVL(A.MANU_COD,B.MANU_COD) AS MANU_COD
,NVL(A.MANU_DES,B.MANU_DES) AS MANU_DES
,NVL(A.MANU_DES_C,B.MANU_DES_C) AS MANU_DES_C
,NVL(A.MNFL_COD,B.MNFL_COD) AS MNFL_COD
,NVL(A.MNFL_DES,B.MNFL_DES) AS MNFL_DES
,NVL(A.CORP_COD,B.CORP_COD) AS CORP_COD
,REPLACE( NVL(A.CORP_DES,B.CORP_DES) ,' GROUP', '' ) as CORP_DES -- 消除group
,NVL(A.CORP_DES_C,B.CORP_DES_C) AS CORP_DES_C
,NVL(A.BRANDTYPE,B.BRANDTYPE) AS BRANDTYPE
,NVL(A.IS_AZ,B.IS_AZ) AS IS_AZ
,NVL(A.AZ_MAIN,B.AZ_MAIN) AS AZ_MAIN
,NVL(A.ATC1_DES,B.ATC1_DES) AS ATC1_DES
,NVL(A.ATC1_DES_C,B.ATC1_DES_C) AS ATC1_DES_C
,NVL(A.ATC2_DES,B.ATC2_DES) AS ATC2_DES
,NVL(A.ATC2_DES_C,B.ATC2_DES_C) AS ATC2_DES_C
,NVL(A.ATC3_DES,B.ATC3_DES) AS ATC3_DES
,NVL(A.ATC3_DES_C,B.ATC3_DES_C) AS ATC3_DES_C
,NVL(A.ATC4_DES,B.ATC4_DES) AS ATC4_DES
,NVL(A.ATC4_DES_C,B.ATC4_DES_C) AS ATC4_DES_C
,NVL(A.APP1_DES,B.APP1_DES) AS APP1_DES
,NVL(A.APP1_DES_C,B.APP1_DES_C) AS APP1_DES_C
,NVL(A.APP2_DES,B.APP2_DES) AS APP2_DES
,NVL(A.APP2_DES_C,B.APP2_DES_C) AS APP2_DES_C
,NVL(A.APP3_DES,B.APP3_DES) AS APP3_DES
,NVL(A.APP3_DES_C,B.APP3_DES_C) AS APP3_DES_C
,NVL(A.GEN_RN,B.GEN_RN) AS GEN_RN
FROM dm.dm_td_external_packinfo_temp A
LEFT JOIN xiehe_external_packinfo_1 B
ON A.PACK_COD = B.PACK_COD
-- COMMAND ----------
--更新dm.dm_td_external_packinfo_temp
insert overwrite dm.dm_td_external_packinfo_temp (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN
)
select
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN
from tmp.xiehe_external_packinfo_2
-- COMMAND ----------
-----------------------------------------------------------------------------------
--修改时间20240827
--修改人FanXujia
--修改内容:
--有一部分pack的商品名、公司名为空这两不能为空将他们设置成OTHERS
-----------------------------------------------------------------------------------
update dm.dm_td_external_packinfo_temp
set PROD_DES = 'OTHERS'
where PROD_DES is null;
update dm.dm_td_external_packinfo_temp
set PROD_DES_C = 'OTHERS'
where PROD_DES_C is null;
update dm.dm_td_external_packinfo_temp
set CORP_DES = 'OTHERS'
where CORP_DES is null or CORP_DES='';
update dm.dm_td_external_packinfo_temp
set CORP_DES_C = 'OTHERS'
where CORP_DES_C is null or CORP_DES_C='';
-- COMMAND ----------
-- MAGIC %md
-- MAGIC # 增加data_source字段
-- COMMAND ----------
--增加DATA_SOURCE字段
insert overwrite table dm.dm_td_external_packinfo_temp2 (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
DATA_SOURCE,
area,
h_level,
dept_name,
reimburse,
reimburse_type,
prescription_source,
atc,
new_code,
common_name,
product_name,
manu_des_xiehe,
pack_des_xiehe,
drug_delivery_route,
nfc,
LaunchTime,
-- ,Family_Code,
-- Family_Name
VBP_BATCH,
VBP_IMPLEMENTING_TIME
)
select
case when t1.PACK_COD is null or t1.PACK_COD = '' then concat('PACK_COD_',t2.DATA_SOURCE)
else t1.PACK_COD end as PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
case when CORP_COD is null or CORP_COD = '' then concat('CORP_COD_',t2.DATA_SOURCE)
else CORP_COD end as CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
t2.DATA_SOURCE,
'' as area,
null as h_level,
'' as dept_name,
null as reimburse,
null as reimburse_type,
null as prescription_source,
null as atc,
'' as new_code,
null as common_name,
null as product_name,
null as manu_des_xiehe,
null as pack_des_xiehe,
null as drug_delivery_route,
null as nfc,
null as LaunchTime,
-- ,null as Family_Code,
-- null as Family_Name
'' as VBP_BATCH,
'' as VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp t1
inner join (select distinct pack_cod,DATA_SOURCE from external_sales_union where NVL(PACK_FLAG,'1') <> 0) t2
on t1.PACK_COD = t2.pack_cod
union all
select
case when t1.PACK_COD is null or t1.PACK_COD = '' then concat('PACK_COD_',t2.DATA_SOURCE)
else t1.PACK_COD end as PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
null as VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
case when CORP_COD is null or CORP_COD = '' then concat('CORP_COD_',t2.DATA_SOURCE)
else CORP_COD end as CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
t2.DATA_SOURCE,
'' as area,
null as h_level,
'' as dept_name,
null as reimburse,
null as reimburse_type,
null as prescription_source,
null as atc,
'' as new_code,
null as common_name,
null as product_name,
null as manu_des_xiehe,
null as pack_des_xiehe,
null as drug_delivery_route,
null as nfc,
null as LaunchTime,
-- ,null as Family_Code,
-- null as Family_Name
'' as VBP_BATCH,
'' as VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp t1
inner join (select distinct pack_cod,DATA_SOURCE from external_sales_union where PACK_FLAG = 0) t2
on t1.PACK_COD = t2.pack_cod
-- COMMAND ----------
-----------------------------------------------------------------------------------------------------
--修改时间20240829
--修改人:FanXujia
--修改内容:
--增加协和相关产品属性值
------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------
--修改时间20250621
--修改人:chenwu
--修改内容:
--xiehe数据源变更格式故重写部分逻辑
------------------------------------------------------------------------------------------------------
with raw_data as (
--一个pack_cod对应多个科室信息也全部显示出来
select distinct
NVL(new_code,'') new_code,
NVL(province,'') area,
max(h_level) h_level,
NVL(dept_name,'') dept_name,
max(reimburse) reimburse,
max(reimburse_type) reimburse_type,
max(prescription_source) prescription_source,
max(atc) atc,
max(common_name) common_name,
max(product_name) product_name,
max(manu_des) manu_des,
max(pack_des) pack_des,
max(drug_delivery_route) drug_delivery_route,
max(nfc) nfc,
max(iqvia_pack_code) iqvia_pack_code
from dm.dm_ext_xiehe_sales--dwd.dwd_gnd_ext_xiehe_raw_data_new
group by new_code,dept_name,area
)
,packinfo as (
select
t1.PACK_COD,
t1.PACK_DES,
t1.STGH_DES,
t1.PACK_LCH,
t1.PROD_COD,
t1.PROD_DES,
t1.PROD_DES_C,
t1.CMPS_COD,
t1.CMPS_DES,
t1.CMPS_DES_C,
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.MANU_DES_C,
t1.MNFL_COD,
t1.MNFL_DES,
t1.CORP_COD,
t1.CORP_DES,
t1.CORP_DES_C,
t1.BRANDTYPE,
t1.IS_AZ,
t1.AZ_MAIN,
t1.ATC1_DES,
t1.ATC1_DES_C,
t1.ATC2_DES,
t1.ATC2_DES_C,
t1.ATC3_DES,
t1.ATC3_DES_C,
t1.ATC4_DES,
t1.ATC4_DES_C,
t1.APP1_DES,
t1.APP1_DES_C,
t1.APP2_DES,
t1.APP2_DES_C,
t1.APP3_DES,
t1.APP3_DES_C,
t1.GEN_RN,
t1.DATA_SOURCE,
t3.area,
t3.h_level,
t3.dept_name,
t3.reimburse,
t3.reimburse_type,
t3.prescription_source,
t3.atc,
t3.new_code,
t3.common_name,
t3.product_name,
t3.manu_des manu_des_xiehe,
t3.pack_des pack_des_xiehe,
t3.drug_delivery_route,
t3.nfc,
null as LaunchTime,
-- ,null as Family_Code,
-- null as Family_Name
'' as VBP_BATCH,
'' as VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp2 t1
left join raw_data t3
on upper(t1.pack_cod) = upper(t3.iqvia_pack_code)
where t1.DATA_SOURCE = 'XH Data(Quarterly)'
union all
select
*
from dm.dm_td_external_packinfo_temp2
where DATA_SOURCE <> 'XH Data(Quarterly)'
)
insert overwrite table dm.dm_td_external_packinfo_temp2 (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
DATA_SOURCE,
area,
h_level,
dept_name,
reimburse,
reimburse_type,
prescription_source,
atc,
new_code,
common_name,
product_name,
manu_des_xiehe,
pack_des_xiehe,
drug_delivery_route,
nfc,
LaunchTime,
-- ,Family_Code,
-- Family_Name
VBP_BATCH,
VBP_IMPLEMENTING_TIME
)
select *
from packinfo;
-- COMMAND ----------
-----------------------------------------------------------------------------------------------------
--修改时间20240902
--修改人:FanXujia
--修改内容:
--增加CHPA的维度信息
------------------------------------------------------------------------------------------------------
with PACK_launchtime as (
select PACK.Pack_Code,max(PACK.launchtime) launchtime
from dwd.dwd_ims_td_pack PACK
group by PACK.Pack_Code
)
-- ,Family as (
-- select PACK_COD,max(Family_Code) Family_Code,max(Family_Name) Family_Name
-- from DM.DM_IMS_TD_PACK_PROPERTY
-- where MARKET = 'IMS ALL Market'
-- group by PACK_COD
-- )
,packinfo as (
select
t1.PACK_COD,
t1.PACK_DES,
t1.STGH_DES,
t1.PACK_LCH,
t1.PROD_COD,
t1.PROD_DES,
t1.PROD_DES_C,
t1.CMPS_COD,
t1.CMPS_DES,
t1.CMPS_DES_C,
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.MANU_DES_C,
t1.MNFL_COD,
t1.MNFL_DES,
t1.CORP_COD,
t1.CORP_DES,
t1.CORP_DES_C,
t1.BRANDTYPE,
t1.IS_AZ,
t1.AZ_MAIN,
t1.ATC1_DES,
t1.ATC1_DES_C,
t1.ATC2_DES,
t1.ATC2_DES_C,
t1.ATC3_DES,
t1.ATC3_DES_C,
t1.ATC4_DES,
t1.ATC4_DES_C,
t1.APP1_DES,
t1.APP1_DES_C,
t1.APP2_DES,
t1.APP2_DES_C,
t1.APP3_DES,
t1.APP3_DES_C,
t1.GEN_RN,
t1.DATA_SOURCE,
t1.area,
t1.h_level,
NVL(t1.dept_name,'') dept_name,
t1.reimburse,
t1.reimburse_type,
t1.prescription_source,
t1.atc,
t1.new_code,
t1.common_name,
t1.product_name,
t1.manu_des_xiehe,
t1.pack_des_xiehe,
t1.drug_delivery_route,
t1.nfc,
t2.LaunchTime,
-- ,t3.Family_Code,
-- t3.Family_Name
t1.VBP_BATCH,
t1.VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp2 t1
left join PACK_launchtime t2
on t1.PACK_COD = t2.Pack_Code
-- left join Family t3
-- on t1.PACK_COD = t3.PACK_COD
where t1.DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
union all
select *
from dm.dm_td_external_packinfo_temp2
where DATA_SOURCE <> 'IQVIA-CHPA(Monthly)'
)
insert overwrite table dm.dm_td_external_packinfo_temp2 (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
DATA_SOURCE,
area,
h_level,
dept_name,
reimburse,
reimburse_type,
prescription_source,
atc,
new_code,
common_name,
product_name,
manu_des_xiehe,
pack_des_xiehe,
drug_delivery_route,
nfc,
LaunchTime,
-- ,Family_Code,
-- Family_Name
VBP_BATCH,
VBP_IMPLEMENTING_TIME
)
select *
from packinfo;
-- COMMAND ----------
--修改时间20240808
--修改人FanXuJia
--修改背景:
--事实表与维度表来自于不同手工表目前存在一部分pack_cod在事实表有销量但是在维度表没有这个pack_cod导致销量缺失。
--因此需要从事实表补全这部分pack_cod
with raw_data as (
--一个pack_cod对应多个科室信息也全部显示出来
select distinct
NVL(new_code,'') new_code,
NVL(province,'') area,
max(h_level) h_level,
NVL(dept_name,'') dept_name,
max(reimburse) reimburse,
max(reimburse_type) reimburse_type,
max(prescription_source) prescription_source,
max(atc) atc,
max(common_name) common_name,
max(product_name) product_name,
max(manu_des) manu_des,
max(pack_des) pack_des,
max(drug_delivery_route) drug_delivery_route,
max(nfc) nfc,
max(iqvia_pack_code) iqvia_pack_code
from dm.dm_ext_xiehe_sales--dwd.dwd_gnd_ext_xiehe_raw_data_new
group by new_code,dept_name,area
)
,PACK_launchtime as (
select PACK.Pack_Code,max(PACK.launchtime) launchtime
from dwd.dwd_ims_td_pack PACK
group by PACK.Pack_Code
)
-- ,Family as (
-- select PACK_COD,max(Family_Code) Family_Code,max(Family_Name) Family_Name
-- from DM.DM_IMS_TD_PACK_PROPERTY
-- where MARKET = 'IMS ALL Market'
-- group by PACK_COD
-- )
,tmp_packinfo as (
select distinct
t1.PACK_COD,t1.CORP_COD,t1.DATA_SOURCE,nvl(t3.CORP_DES,'OTHERS') CORP_DES,nvl(t3.CORP_DES_C,'OTHERS') CORP_DES_C,
t5.area,
t5.h_level,
t5.dept_name,
t5.reimburse,
t5.reimburse_type,
t5.prescription_source,
t5.atc,
t5.new_code,
t5.common_name,
t5.product_name,
t5.manu_des manu_des_xiehe,
t5.pack_des pack_des_xiehe,
t5.drug_delivery_route,
t5.nfc
,null as launchtime
-- ,null as Family_Code
-- ,null as Family_Name
from external_sales_union t1
left join dm.dm_td_external_packinfo_temp2 t2
on t1.PACK_COD = t2.PACK_COD
and t1.DATA_SOURCE = t2.DATA_SOURCE
left join (select CORP_COD,max(CORP_DES) CORP_DES,max(CORP_DES_C) CORP_DES_C
from dm.dm_td_external_packinfo_temp2 group by CORP_COD) t3
on t1.CORP_COD = t3.CORP_COD
-- left join pack_code_info t4
-- on t1.PACK_COD = t4.IQVIA_PACK_CODE
left join raw_data t5
on upper(t1.pack_cod) = upper(t5.iqvia_pack_code)
where t2.PACK_COD is null
and t1.DATA_SOURCE = 'XH Data(Quarterly)'
union all
select distinct
t1.PACK_COD,t1.CORP_COD,t1.DATA_SOURCE,nvl(t3.CORP_DES,'OTHERS') CORP_DES,nvl(t3.CORP_DES_C,'OTHERS') CORP_DES_C,
'' as area,
null as h_level,
'' as dept_name,
null as reimburse,
null as reimburse_type,
null as prescription_source,
null as atc,
'' as new_code,
null as common_name,
null as product_name,
null as manu_des_xiehe,
null as pack_des_xiehe,
null as drug_delivery_route,
null as nfc,
t4.launchtime
-- ,t5.Family_Code
-- ,t5.Family_Name
from external_sales_union t1
left join dm.dm_td_external_packinfo_temp2 t2
on t1.PACK_COD = t2.PACK_COD
and t1.DATA_SOURCE = t2.DATA_SOURCE
left join (select CORP_COD,max(CORP_DES) CORP_DES,max(CORP_DES_C) CORP_DES_C
from dm.dm_td_external_packinfo_temp2 group by CORP_COD) t3
on t1.CORP_COD = t3.CORP_COD
left join PACK_launchtime t4
on t1.PACK_COD = t4.Pack_Code
-- left join Family t5
-- on t1.PACK_COD = t5.PACK_COD
where t2.PACK_COD is null
and t1.DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
union all
select distinct
t1.PACK_COD,t1.CORP_COD,t1.DATA_SOURCE,nvl(t3.CORP_DES,'OTHERS') CORP_DES,nvl(t3.CORP_DES_C,'OTHERS') CORP_DES_C,
'' as area,
null as h_level,
'' as dept_name,
null as reimburse,
null as reimburse_type,
null as prescription_source,
null as atc,
'' as new_code,
null as common_name,
null as product_name,
null as manu_des_xiehe,
null as pack_des_xiehe,
null as drug_delivery_route,
null as nfc,
null as launchtime
-- ,null as Family_Code
-- ,null as Family_Name
from external_sales_union t1
left join dm.dm_td_external_packinfo_temp2 t2
on t1.PACK_COD = t2.PACK_COD
and t1.DATA_SOURCE = t2.DATA_SOURCE
left join (select CORP_COD,max(CORP_DES) CORP_DES,max(CORP_DES_C) CORP_DES_C
from dm.dm_td_external_packinfo_temp2 group by CORP_COD) t3
on t1.CORP_COD = t3.CORP_COD
where t2.PACK_COD is null
and t1.DATA_SOURCE not in ('XH Data(Quarterly)','IQVIA-CHPA(Monthly)')
)
insert into table dm.dm_td_external_packinfo_temp2 (
PACK_COD,
PACK_DES,
STGH_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
ATC1_COD,
ATC2_COD,
ATC3_COD,
ATC4_COD,
APP1_COD,
APP2_COD,
APP3_COD,
BIO_DESC,
GENE_ORIG_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
VBP_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
BRANDTYPE,
IS_AZ,
AZ_MAIN,
ATC1_DES,
ATC1_DES_C,
ATC2_DES,
ATC2_DES_C,
ATC3_DES,
ATC3_DES_C,
ATC4_DES,
ATC4_DES_C,
APP1_DES,
APP1_DES_C,
APP2_DES,
APP2_DES_C,
APP3_DES,
APP3_DES_C,
GEN_RN,
DATA_SOURCE,
area,
h_level,
dept_name,
reimburse,
reimburse_type,
prescription_source,
atc,
new_code,
common_name,
product_name,
manu_des_xiehe,
pack_des_xiehe,
drug_delivery_route,
nfc,
LaunchTime,
-- ,Family_Code,
-- Family_Name
VBP_BATCH,
VBP_IMPLEMENTING_TIME
)
select distinct
PACK_COD,
null as PACK_DES,
null as STGH_DES,
null as PACK_LCH,
null as PROD_COD,
null as PROD_DES,
null as PROD_DES_C,
null as CMPS_COD,
null as CMPS_DES,
null as CMPS_DES_C,
null as ATC1_COD,
null as ATC2_COD,
null as ATC3_COD,
null as ATC4_COD,
null as APP1_COD,
null as APP2_COD,
null as APP3_COD,
null as BIO_DESC,
null as GENE_ORIG_DESC,
null as ETH_OTC_DESC,
null as NRDL_DESC,
null as NRDL_ENTRY_DATE,
null as EDL_DESC,
null as TCM_DESC,
null as PAED_DESC,
null as GQCE_DESC,
null as VBP_DESC,
null as MANU_COD,
null as MANU_DES,
null as MANU_DES_C,
null as MNFL_COD,
null as MNFL_DES,
CORP_COD,
CORP_DES,
CORP_DES_C,
null as BRANDTYPE,
null as IS_AZ,
null as AZ_MAIN,
null as ATC1_DES,
null as ATC1_DES_C,
null as ATC2_DES,
null as ATC2_DES_C,
null as ATC3_DES,
null as ATC3_DES_C,
null as ATC4_DES,
null as ATC4_DES_C,
null as APP1_DES,
null as APP1_DES_C,
null as APP2_DES,
null as APP2_DES_C,
null as APP3_DES,
null as APP3_DES_C,
null as GEN_RN,
DATA_SOURCE,
area,
h_level,
dept_name,
reimburse,
reimburse_type,
prescription_source,
atc,
new_code,
common_name,
product_name,
manu_des_xiehe,
pack_des_xiehe,
drug_delivery_route,
nfc,
LaunchTime,
-- ,null as Family_Code,
-- null as Family_Name
'' as VBP_BATCH,
'' as VBP_IMPLEMENTING_TIME
from tmp_packinfo
-- COMMAND ----------
------------------------------------------------------------------------------------------------
--修改时间20240923
--修改人FanXujia
--修改内容:
--增加VBP信息
------------------------------------------------------------------------------------------------
with tmp as (
select t1.PACK_COD,
t1.PACK_DES,
t1.STGH_DES,
t1.PACK_LCH,
t1.PROD_COD,
t1.PROD_DES,
t1.PROD_DES_C,
t1.CMPS_COD,
t1.CMPS_DES,
t1.CMPS_DES_C,
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,
NVL(t1.VBP_DESC,'Non VBP') AS VBP_DESC,
t1.MANU_COD,
t1.MANU_DES,
t1.MANU_DES_C,
t1.MNFL_COD,
t1.MNFL_DES,
t1.CORP_COD,
t1.CORP_DES,
t1.CORP_DES_C,
t1.BRANDTYPE,
t1.IS_AZ,
t1.AZ_MAIN,
t1.ATC1_DES,
t1.ATC1_DES_C,
t1.ATC2_DES,
t1.ATC2_DES_C,
t1.ATC3_DES,
t1.ATC3_DES_C,
t1.ATC4_DES,
t1.ATC4_DES_C,
t1.APP1_DES,
t1.APP1_DES_C,
t1.APP2_DES,
t1.APP2_DES_C,
t1.APP3_DES,
t1.APP3_DES_C,
t1.GEN_RN,
t1.DATA_SOURCE,
t1.area,
t1.h_level,
t1.dept_name,
t1.reimburse,
t1.reimburse_type,
t1.prescription_source,
t1.atc,
t1.new_code,
t1.common_name,
t1.product_name,
t1.manu_des_xiehe,
t1.pack_des_xiehe,
t1.drug_delivery_route,
t1.nfc,
t1.LaunchTime,
NVL(t2.VBP_BATCH,'') VBP_BATCH,
NVL(t2.VBP_IMPLEMENTING_TIME,'') VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp2 t1
left join dwd.dwd_gnd_ims_vbp_information t2
on t1.PACK_COD = t2.PACK_CODE
)
insert overwrite table dm.dm_td_external_packinfo_temp2
select * from tmp
-- COMMAND ----------
-------------------------------------------------------------------------------------------------
--修改时间20240906
--修改人FanXujia
--修改内容:
--按主键去重
-------------------------------------------------------------------------------------------------
with tmp as (
select
PACK_COD,
max(PACK_DES) PACK_DES,
max(STGH_DES) STGH_DES,
max(PACK_LCH) PACK_LCH,
max(PROD_COD) PROD_COD,
max(PROD_DES) PROD_DES,
COALESCE(max(PROD_DES_C),'') PROD_DES_C,
max(CMPS_COD) CMPS_COD,
max(CMPS_DES) CMPS_DES,
max(CMPS_DES_C) CMPS_DES_C,
max(ATC1_COD) ATC1_COD,
max(ATC2_COD) ATC2_COD,
max(ATC3_COD) ATC3_COD,
max(ATC4_COD) ATC4_COD,
max(APP1_COD) APP1_COD,
max(APP2_COD) APP2_COD,
max(APP3_COD) APP3_COD,
max(BIO_DESC) BIO_DESC,
max(GENE_ORIG_DESC) GENE_ORIG_DESC,
max(ETH_OTC_DESC) ETH_OTC_DESC,
max(NRDL_DESC) NRDL_DESC,
max(NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,
max(EDL_DESC) EDL_DESC,
max(TCM_DESC) TCM_DESC,
max(PAED_DESC) PAED_DESC,
max(GQCE_DESC) GQCE_DESC,
max(VBP_DESC) VBP_DESC,
max(MANU_COD) MANU_COD,
max(MANU_DES) MANU_DES,
max(MANU_DES_C) MANU_DES_C,
max(MNFL_COD) MNFL_COD,
max(MNFL_DES) MNFL_DES,
max(CORP_COD) CORP_COD,
max(CORP_DES) CORP_DES,
max(CORP_DES_C) CORP_DES_C,
max(BRANDTYPE) BRANDTYPE,
max(IS_AZ) IS_AZ,
max(AZ_MAIN) AZ_MAIN,
max(ATC1_DES) ATC1_DES,
max(ATC1_DES_C) ATC1_DES_C,
max(ATC2_DES) ATC2_DES,
max(ATC2_DES_C) ATC2_DES_C,
max(ATC3_DES) ATC3_DES,
max(ATC3_DES_C) ATC3_DES_C,
max(ATC4_DES) ATC4_DES,
max(ATC4_DES_C) ATC4_DES_C,
max(APP1_DES) APP1_DES,
max(APP1_DES_C) APP1_DES_C,
max(APP2_DES) APP2_DES,
max(APP2_DES_C) APP2_DES_C,
max(APP3_DES) APP3_DES,
max(APP3_DES_C) APP3_DES_C,
max(GEN_RN) GEN_RN,
DATA_SOURCE,
area,
max(h_level) h_level,
dept_name,
max(reimburse) reimburse,
max(reimburse_type) reimburse_type,
max(prescription_source) prescription_source,
max(atc) atc,
new_code,
max(common_name) common_name,
max(product_name) product_name,
max(manu_des_xiehe) manu_des_xiehe,
max(pack_des_xiehe) pack_des_xiehe,
max(drug_delivery_route) drug_delivery_route,
max(nfc) nfc,
max(LaunchTime) LaunchTime,
max(VBP_BATCH) VBP_BATCH,
max(VBP_IMPLEMENTING_TIME) VBP_IMPLEMENTING_TIME
from dm.dm_td_external_packinfo_temp2
group by DATA_SOURCE,PACK_COD,dept_name,new_code,area
)
insert overwrite dm.dm_td_external_packinfo_temp2
select * from tmp;
-- COMMAND ----------
------------------------------------------------------------------------------------------
--修改时间20241104
--修改人Fanxujia
--修改内容:
--CHPA有个分子式英文名TRADITIONAL CHINESE MEDICINE对应的中文名是取自另一个表tblProdCN的namec字段每个产品的中文名目前是不同的。
--用户想要让中文名统一显示成“传统中药”
--因此通过hardcoding的方式把中文名修改成传统中药。
--另外本改动不局限于CHPA渠道全部渠道一起修改。
-------------------------------------------------------------------------------------------
update dm.dm_td_external_packinfo_temp2
set CMPS_DES_C = '传统中药'
where upper(CMPS_DES) = 'TRADITIONAL CHINESE MEDICINE'
;
-- COMMAND ----------
--------------------------------------------------------------------------------
--修改时间20241025
--修改人Fanxujia
--修改内容:
--外部数据报告优化将PBI的逻辑搬到DBR
--------------------------------------------------------------------------------
insert overwrite table dm.dm_td_external_packinfo
(
PACK_COD,
PACK_DES,
PACK_LCH,
PROD_COD,
PROD_DES,
PROD_DES_C,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
VBP_BATCH,
VBP_IMPLEMENTING_TIME,
STGH_DES,
BIO_DESC,
ETH_OTC_DESC,
NRDL_DESC,
NRDL_ENTRY_DATE,
EDL_DESC,
TCM_DESC,
PAED_DESC,
GQCE_DESC,
MANU_COD,
MANU_DES,
MNFL_COD,
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,
APP1_COD,
APP1_DES,
APP1_DES_C,
APP2_COD,
APP2_DES,
APP2_DES_C,
APP3_COD,
APP3_DES,
APP3_DES_C,
GENE_ORIG_DESC,
VBP_DESC,
CORP_COD,
GEN_RN,
CORP_DES,
CORP_DES_C,
PACK_RN,
PROD_RN,
CMPS_RN,
DATA_SOURCE,
ATC,
NEW_CODE,
COMMON_NAME,
PRODUCT_NAME,
MANU_DES_XIEHE,
PACK_DES_XIEHE,
DRUG_DELIVERY_ROUTE,
NFC,
CORP_TYPE,
LAUNCHTIME,
VBP_BRAND
)
with CHPA_PACK_SALES as (
SELECT
upper(A.PACK_DES) PACK_DES,
upper(A.PROD_DES_C) PROD_DES_C,
upper(A.CORP_DES_C) CORP_DES_C,
SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL
FROM
DM.dm_td_external_packinfo_temp2 A
INNER JOIN external_sales_union B ON A.PACK_COD = B.PACK_COD
and A.dept_name = B.dept_name
and A.new_code = B.new_code
and A.area = B.area
and A.DATA_SOURCE = B.DATA_SOURCE
WHERE
B.YYYYMM >= (
SELECT
LEFT(MAX(YYYYMM), 4) * 100 + 1
FROM
external_sales_union
WHERE
DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
)
AND B.DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
GROUP BY
upper(A.PACK_DES),
upper(A.CORP_DES_C),
upper(A.PROD_DES_C)
)
,pack_N as (
SELECT
PACK_DES,
PROD_DES_C,
CORP_DES_C,
row_number() OVER(
PARTITION BY 1
ORDER BY
(
CASE
WHEN PACK_DES = ''
OR PROD_DES_C = ''
OR CORP_DES_C = '' THEN 2
ELSE 1
END
) ASC,
sum(SALES_VALUE_CAL) OVER(PARTITION BY PROD_DES_C, CORP_DES_C) DESC,
SALES_VALUE_CAL DESC
) RN
FROM
CHPA_PACK_SALES
)
,CHPA_BRAND_SALES as (
SELECT
upper(A.PROD_DES_C) PROD_DES_C,
upper(A.CORP_DES_C) CORP_DES_C,
SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL
FROM
DM.dm_td_external_packinfo_temp2 A
INNER JOIN external_sales_union B ON A.PACK_COD = B.PACK_COD
and A.dept_name = B.dept_name
and A.new_code = B.new_code
and A.area = B.area
and A.DATA_SOURCE = B.DATA_SOURCE
WHERE
B.YYYYMM >= (
SELECT
LEFT(MAX(YYYYMM), 4) * 100 + 1
FROM
external_sales_union
WHERE
DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
)
AND B.DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
GROUP BY
upper(A.CORP_DES_C),
upper(A.PROD_DES_C)
)
,brand_N as (
SELECT
PROD_DES_C,
CORP_DES_C,
row_number() OVER(
PARTITION BY 1
ORDER BY
(
CASE
WHEN PROD_DES_C = ''
OR CORP_DES_C = '' THEN 2
ELSE 1
END
) ASC,
SALES_VALUE_CAL DESC
) RN
FROM
CHPA_BRAND_SALES
)
,CHPA_MOLE_SALES as (
SELECT
upper(A.CMPS_DES) CMPS_DES,
upper(A.CMPS_DES_C) CMPS_DES_C,
SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL
FROM
DM.dm_td_external_packinfo_temp2 A
INNER JOIN external_sales_union B ON A.PACK_COD = B.PACK_COD
and A.dept_name = B.dept_name
and A.new_code = B.new_code
and A.area = B.area
and A.DATA_SOURCE = B.DATA_SOURCE
WHERE
B.YYYYMM >= (
SELECT
LEFT(MAX(YYYYMM), 4) * 100 + 1
FROM
external_sales_union
WHERE
DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
)
AND B.DATA_SOURCE = 'IQVIA-CHPA(Monthly)'
GROUP BY
upper(A.CMPS_DES),
upper(A.CMPS_DES_C)
)
,mole_N as (
SELECT
CMPS_DES,
CMPS_DES_C,
row_number() OVER(
PARTITION BY 1
ORDER BY
(
CASE
WHEN CMPS_DES = ''
OR CMPS_DES_C = '' THEN 2
ELSE 1
END
) ASC,
SALES_VALUE_CAL DESC
) RN
FROM
CHPA_MOLE_SALES
)
------------------------------------------------------------------------------
--修改时间20241209
--修改人Fanxujia
--修改内容:
--调整VBP_BRAND的逻辑
--一个Brand对应多个pack每个pack会有不同的VBP_DESC
--有以下几种情况
--1一个Brand下面的所有pack的VBP_DESC都一样VBP_BRAND = VBP_DESC的值
--2一个Brand下面的VBP_DESC存在VBP-IN、VBP-OUT两种情况VBP_BRAND = VBP-IN/OUT
--3一个Brand下面的VBP_DESC存在VBP-IN、Non VBP两种情况VBP_BRAND = VBP-IN/Non VBP
--4一个Brand下面的VBP_DESC存在VBP-OUT、Non VBP两种情况VBP_BRAND = VBP-OUT/Non VBP
--5一个Brand下面的VBP_DESC存在VBP-IN、VBP-OUT、Non VBP三种情况VBP_BRAND = VBP-IN/OUT/Non VBP
------------------------------------------------------------------------------
-- ,vbp_brand as (
-- select PROD_DES_C,DATA_SOURCE,max(VBP_DESC) VBP_BRAND
-- from DM.dm_td_external_packinfo_temp2
-- group by PROD_DES_C,DATA_SOURCE
-- )
,vbp_brand_1 as (
select distinct
PROD_DES_C,
DATA_SOURCE,
case when VBP_DESC = 'VBP-IN' then 1
when VBP_DESC = 'VBP-OUT' then 2
when VBP_DESC = 'Non VBP' then 4
else 99
end as VBP_FLAG
from dm.dm_td_external_packinfo_temp2
)
,vbp_brand as (
select
PROD_DES_C,
DATA_SOURCE,
case
--单独一个VBP-IN1
when sum(VBP_FLAG) = 1 then 'VBP-IN'
--单独一个VBP-OUT2
when sum(VBP_FLAG) = 2 then 'VBP-OUT'
--单独一个Non VBP4
when sum(VBP_FLAG) = 4 then 'Non VBP'
--同时存在VBP-IN1 + VBP-OUT2 = 3
when sum(VBP_FLAG) = 3 then 'VBP-IN/OUT'
--同时存在VBP-IN1 + Non VBP4 = 5
when sum(VBP_FLAG) = 5 then 'VBP-IN/Non VBP'
--同时存在VBP-OUT2 + Non VBP4 = 6
when sum(VBP_FLAG) = 6 then 'VBP-OUT/Non VBP'
--同时存在VBP-IN1 + VBP-OUT2 + Non VBP4 = 7
when sum(VBP_FLAG) = 7 then 'VBP-IN/OUT/Non VBP'
else ''
end as VBP_BRAND
from vbp_brand_1
group by PROD_DES_C,DATA_SOURCE
)
SELECT
A.PACK_COD,
upper(max(A.PACK_DES)) PACK_DES,
max(A.PACK_LCH) PACK_LCH,
max(A.PROD_COD) PROD_COD,
max(A.PROD_DES) PROD_DES,
upper(max(A.PROD_DES_C)) PROD_DES_C,
max(A.CMPS_COD) CMPS_COD,
upper(max(A.CMPS_DES)) CMPS_DES,
upper(max(A.CMPS_DES_C)) CMPS_DES_C,
max(A.VBP_BATCH) VBP_BATCH,
max(A.VBP_IMPLEMENTING_TIME) VBP_IMPLEMENTING_TIME,
max(A.STGH_DES) STGH_DES,
max(A.BIO_DESC) BIO_DESC,
max(A.ETH_OTC_DESC) ETH_OTC_DESC,
max(A.NRDL_DESC) NRDL_DESC,
max(A.NRDL_ENTRY_DATE) NRDL_ENTRY_DATE,
max(A.EDL_DESC) EDL_DESC,
max(A.TCM_DESC) TCM_DESC,
max(A.PAED_DESC) PAED_DESC,
max(A.GQCE_DESC) GQCE_DESC,
max(A.MANU_COD) MANU_COD,
max(A.MANU_DES) MANU_DES,
max(A.MNFL_COD) MNFL_COD,
max(A.ATC1_COD) ATC1_COD,
max(A.ATC1_DES) ATC1_DES,
max(A.ATC1_DES_C) ATC1_DES_C,
max(A.ATC2_COD) ATC2_COD,
max(A.ATC2_DES) ATC2_DES,
max(A.ATC2_DES_C) ATC2_DES_C,
max(A.ATC3_COD) ATC3_COD,
max(A.ATC3_DES) ATC3_DES,
max(A.ATC3_DES_C) ATC3_DES_C,
max(A.ATC4_COD) ATC4_COD,
max(A.ATC4_DES) ATC4_DES,
max(A.ATC4_DES_C) ATC4_DES_C,
max(A.APP1_COD) APP1_COD,
max(A.APP1_DES) APP1_DES,
max(A.APP1_DES_C) APP1_DES_C,
max(A.APP2_COD) APP2_COD,
max(A.APP2_DES) APP2_DES,
max(A.APP2_DES_C) APP2_DES_C,
max(A.APP3_COD) APP3_COD,
max(A.APP3_DES) APP3_DES,
max(A.APP3_DES_C) APP3_DES_C,
max(A.GENE_ORIG_DESC) GENE_ORIG_DESC,
max(A.VBP_DESC) VBP_DESC,
max(A.CORP_COD) CORP_COD,
max(A.GEN_RN) GEN_RN,
max(A.CORP_DES) CORP_DES,
upper(max(A.CORP_DES_C)) CORP_DES_C,
NVL(max(PN.RN), 9999999) PACK_RN,
NVL(max(BN.RN), 9999999) PROD_RN,
NVL(max(MN.RN), 9999999) CMPS_RN,
A.DATA_SOURCE,
max(A.ATC) ATC,
A.NEW_CODE,
max(A.COMMON_NAME) COMMON_NAME,
max(A.PRODUCT_NAME) PRODUCT_NAME,
max(A.MANU_DES_XIEHE) MANU_DES_XIEHE,
max(A.PACK_DES_XIEHE) PACK_DES_XIEHE,
max(A.DRUG_DELIVERY_ROUTE) DRUG_DELIVERY_ROUTE,
max(A.NFC) NFC,
case when max(upper(A.MNFL_DES)) = 'LOCAL' then 'LOCAL'
else 'MNC'
end as CORP_TYPE,
max(A.LAUNCHTIME) LAUNCHTIME,
max(VBP.VBP_BRAND) VBP_BRAND
FROM
DM.dm_td_external_packinfo_temp2 A
LEFT JOIN pack_N PN ON upper(A.PACK_DES) = PN.PACK_DES
AND upper(A.PROD_DES_C) = PN.PROD_DES_C
AND upper(A.CORP_DES_C) = PN.CORP_DES_C
LEFT JOIN brand_N BN ON upper(A.PROD_DES_C) = BN.PROD_DES_C
AND upper(A.CORP_DES_C) = BN.CORP_DES_C
LEFT JOIN mole_N MN ON upper(A.CMPS_DES) = MN.CMPS_DES
AND upper(A.CMPS_DES_C) = MN.CMPS_DES_C
left join vbp_brand VBP on VBP.PROD_DES_C = A.PROD_DES_C
and VBP.DATA_SOURCE = A.DATA_SOURCE
group by A.PACK_COD,A.NEW_CODE,A.DATA_SOURCE
-- COMMAND ----------
-- DBTITLE 1,找出多个中文名或英文名的PROD
insert overwrite table dm.dm_td_exchange_packinfo_m_prod
with
base_table as (
select
PROD_DES_C
,PROD_COD
,CMPS_COD
,CMPS_DES_C
,DATA_SOURCE
from DM.DM_TD_EXTERNAL_PACKINFO
where PROD_COD is not null
group by 1,2,3,4,5
)
select distinct
t1.prod_cod,t1.cmps_cod,t1.data_source
from base_table t1
left join (select PROD_DES_C,DATA_SOURCE from base_table
group by 1,2
having count(distinct PROD_COD)>1
) t2
on t1.prod_des_c = t2.prod_des_c and t1.data_source = t2.data_source
left join (select CMPS_DES_C,DATA_SOURCE from base_table
group by 1,2
having count(distinct cmps_cod)>1
) t3
on t1.CMPS_DES_C = t3.CMPS_DES_C and t1.data_source = t3.data_source
where t2.prod_des_c is not null or t3.cmps_des_c is not null