-- 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_CODE as PACK_COD, DATA_SOURCE, PACK_FLAG, CORP_CODE AS 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 按照步骤1,chpa中没有的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 按照步骤1,chpa中没有的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-IN(1) when sum(VBP_FLAG) = 1 then 'VBP-IN' --单独一个VBP-OUT(2) when sum(VBP_FLAG) = 2 then 'VBP-OUT' --单独一个Non VBP(4) when sum(VBP_FLAG) = 4 then 'Non VBP' --同时存在VBP-IN(1) + VBP-OUT(2) = 3 when sum(VBP_FLAG) = 3 then 'VBP-IN/OUT' --同时存在VBP-IN(1) + Non VBP(4) = 5 when sum(VBP_FLAG) = 5 then 'VBP-IN/Non VBP' --同时存在VBP-OUT(2) + Non VBP(4) = 6 when sum(VBP_FLAG) = 6 then 'VBP-OUT/Non VBP' --同时存在VBP-IN(1) + VBP-OUT(2) + Non VBP(4) = 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