Files
MarketAnalysis-ETL/AIA/01 dm_aia_pack_property.sql
2026-04-27 11:04:09 +08:00

355 lines
9.3 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- Databricks notebook source
-- CREATE OR REPLACE TABLE dm.dm_aia_pack_property (
-- PACK_COD STRING,
-- pack_des STRING,
-- stgh_des STRING,
-- pack_lch STRING,
-- PROD_COD STRING,
-- prod_des STRING,
-- prod_des_c STRING,
-- Family_Code STRING,
-- Family_Name STRING,
-- cmps_cod STRING,
-- cmps_des STRING,
-- cmps_des_c STRING,
-- atc1_cod STRING,
-- atc1_des STRING,
-- atc1_des_c STRING,
-- atc2_cod STRING,
-- atc2_des STRING,
-- atc2_des_c STRING,
-- atc3_cod STRING,
-- atc3_des STRING,
-- atc3_des_c STRING,
-- atc4_cod STRING,
-- atc4_des STRING,
-- atc4_des_c STRING,
-- app1_cod STRING,
-- app1_des STRING,
-- app1_des_c STRING,
-- app2_cod STRING,
-- app2_des STRING,
-- app2_des_c STRING,
-- app3_cod STRING,
-- app3_des STRING,
-- app3_des_c STRING,
-- bio_desc STRING,
-- gene_orig_desc STRING,
-- eth_otc_desc STRING,
-- nrdl_desc STRING,
-- NRDL_Entry_Date STRING,
-- edl_desc STRING,
-- tcm_desc STRING,
-- paed_desc STRING,
-- gqce_desc STRING,
-- vbp_desc STRING,
-- manu_cod STRING,
-- manu_des STRING,
-- manu_des_c STRING,
-- mnfl_cod STRING,
-- mnfl_des STRING,
-- corp_cod STRING,
-- corp_des STRING,
-- corp_des_c STRING,
-- BrandType STRING,
-- IS_AZ STRING,
-- AZ_MAIN STRING,
-- AZ_Related STRING,
-- COUNTING_UNIT STRING,
-- ETL_INSERT_DT TIMESTAMP,
-- ETL_UPDATE_DT TIMESTAMP)
-- USING delta
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_aia_pack_property';
-- -- 上面是生产环境location下面是测试环境location
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_aia_pack_property';
-- COMMAND ----------
--对用户上传的表进行去重处理
--对部分编码字段进行补0
create or replace temporary view aia_pack_property_distinct as
select distinct
iqvia_lineno,
case
when
length(trim(iqvia_pack_code)) < 12
and trim(iqvia_pack_code) REGEXP '^[0-9]'
then
right(concat('000000000000', trim(iqvia_pack_code)), 12)
else trim(iqvia_pack_code)
end as iqvia_pack_code,
case
when length(iqvia_prod_code) < 9 then right(concat('000000000', iqvia_prod_code), 9)
else iqvia_prod_code
end as iqvia_prod_code,
iqvia_notes,
IS_NEW_PRD,
IS_IN_CHPA,
ATC1,
ATC2,
ATC3,
ATC4,
org_prd_cd,
org_mole_nm_c,
org_manu_prd_nm_c,
org_prd_nm_c,
org_pk,
org_prd_str,
org_pth,
min_pk_unit,
org_pk_unit,
org_manu_nm,
app1_cod,
app1_des,
app1_des_c,
app2_cod,
app2_des,
app2_des_c,
app3_cod,
app3_des,
app3_des_c,
atc1_cod,
atc1_des,
atc1_des_c,
atc2_cod,
atc2_des,
atc2_des_c,
atc3_cod,
atc3_des,
atc3_des_c,
atc4_cod,
atc4_des,
atc4_des_c,
bio_desc,
case
when length(cmps_cod) < 6 then right(concat('000000', cmps_cod), 6)
else cmps_cod
end as cmps_cod,
cmps_des,
cmps_des_c,
corp_cod,
corp_des,
corp_des_c,
edl_desc,
eth_otc_desc,
gene_orig_desc,
gqce_desc,
manu_cod,
manu_des,
manu_des_c,
mnfl_cod,
mnfl_des,
nrdl_desc,
pack_des,
stgh_des,
pack_lch,
paed_desc,
prod_des,
prod_des_c,
tcm_desc,
vbp_desc,
unit,
case
when
counting_unit is null
and org_pk_unit is null
then
1
when counting_unit is null then cast(org_pk_unit as decimal(30, 10))
else cast(counting_unit / coalesce(unit, 1) as decimal(30, 10))
end as counting_unit,
dosage_unit
from
dwd.dwd_gnd_ext_aia_cpt_data;
-- COMMAND ----------
-- create or replace table dm.dm_aia_pack_property
insert overwrite table dm.dm_aia_pack_property
WITH dedup_l AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY iqvia_pack_code ORDER BY iqvia_pack_code) AS rn
FROM aia_pack_property_distinct
QUALIFY rn = 1
),
dedup_r AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY PACK_COD ORDER BY PACK_COD) AS rn
FROM tmp.tmp_ext_chpa_pack_propetry
QUALIFY rn = 1
)
SELECT
l.iqvia_pack_code AS PACK_COD,
-- Pack / Product 描述
COALESCE(r.PACK_DES, l.pack_des) AS pack_des,
COALESCE(r.STGH_DES, l.stgh_des) AS stgh_des,
COALESCE(r.PACK_LCH, l.pack_lch) AS pack_lch,
COALESCE(r.PROD_COD, l.iqvia_prod_code) AS PROD_COD,
COALESCE(r.PROD_DES, l.prod_des) AS prod_des,
COALESCE(r.PROD_DES_C, l.prod_des_c) AS prod_des_c,
-- 右表独有Family
r.Family_Code,
r.Family_Name,
-- 成分
COALESCE(r.CMPS_COD, l.cmps_cod) AS cmps_cod,
COALESCE(r.CMPS_DES, l.cmps_des) AS cmps_des,
COALESCE(r.CMPS_DES_C, l.cmps_des_c) AS cmps_des_c,
-- ATC
COALESCE(r.ATC1_COD, l.atc1_cod) AS atc1_cod,
COALESCE(r.atc1_des, l.atc1_des) AS atc1_des,
COALESCE(r.atc1_des_c, l.atc1_des_c) AS atc1_des_c,
COALESCE(r.ATC2_COD, l.atc2_cod) AS atc2_cod,
COALESCE(r.atc2_des, l.atc2_des) AS atc2_des,
COALESCE(r.atc2_des_c, l.atc2_des_c) AS atc2_des_c,
COALESCE(r.ATC3_COD, l.atc3_cod) AS atc3_cod,
COALESCE(r.atc3_des, l.atc3_des) AS atc3_des,
COALESCE(r.atc3_des_c, l.atc3_des_c) AS atc3_des_c,
COALESCE(r.ATC4_COD, l.atc4_cod) AS atc4_cod,
COALESCE(r.atc4_des, l.atc4_des) AS atc4_des,
COALESCE(r.atc4_des_c, l.atc4_des_c) AS atc4_des_c,
-- APP
COALESCE(r.APP1_COD, l.app1_cod) AS app1_cod,
COALESCE(r.app1_des, l.app1_des) AS app1_des,
COALESCE(r.app1_des_c, l.app1_des_c) AS app1_des_c,
COALESCE(r.APP2_COD, l.app2_cod) AS app2_cod,
COALESCE(r.app2_des, l.app2_des) AS app2_des,
COALESCE(r.app2_des_c, l.app2_des_c) AS app2_des_c,
COALESCE(r.APP3_COD, l.app3_cod) AS app3_cod,
COALESCE(r.app3_des, l.app3_des) AS app3_des,
COALESCE(r.app3_des_c, l.app3_des_c) AS app3_des_c,
-- 标志位
COALESCE(r.BIO_DESC, l.bio_desc) AS bio_desc,
COALESCE(r.GENE_ORIG_DESC, l.gene_orig_desc) AS gene_orig_desc,
COALESCE(r.ETH_OTC_DESC, l.eth_otc_desc) AS eth_otc_desc,
COALESCE(r.NRDL_DESC, l.nrdl_desc) AS nrdl_desc,
r.NRDL_Entry_Date,
COALESCE(r.EDL_DESC, l.edl_desc) AS edl_desc,
COALESCE(r.TCM_DESC, l.tcm_desc) AS tcm_desc,
COALESCE(r.PAED_DESC, l.paed_desc) AS paed_desc,
COALESCE(r.GQCE_DESC, l.gqce_desc) AS gqce_desc,
COALESCE(r.VBP_DESC, l.vbp_desc) AS vbp_desc,
-- 厂商
COALESCE(r.MANU_COD, l.manu_cod) AS manu_cod,
COALESCE(r.MANU_DES, l.manu_des) AS manu_des,
COALESCE(r.MANU_DES_C, l.manu_des_c) AS manu_des_c,
COALESCE(r.MNFL_COD, l.mnfl_cod) AS mnfl_cod,
COALESCE(r.MNFL_DES, l.mnfl_des) AS mnfl_des,
-- 公司
COALESCE(r.CORP_COD, l.corp_cod) AS corp_cod,
COALESCE(r.CORP_DES, l.corp_des) AS corp_des,
COALESCE(r.CORP_DES_C, l.corp_des_c) AS corp_des_c,
-- 右表独有:品牌 / AZ 标志
r.BrandType,
r.IS_AZ,
r.AZ_MAIN,
r.AZ_Related,
-- 左表独有
l.COUNTING_UNIT,
from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_INSERT_DT,
from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_UPDATE_DT
FROM dedup_l l
LEFT JOIN dedup_r r
ON l.iqvia_pack_code = r.PACK_COD
-- COMMAND ----------
-- -----------------------------------------------------------
-- --修改时间20241118
-- --修改人Fanxujia
-- --修改内容:
-- --使用手工文件排除掉每个渠道的不需要显示的市场
-- --由于AIA涉及后面的Flag逻辑、NEW AIA Dashboard因此不能直接在最后的DM表进行限制需要在这里限制。
-- -----------------------------------------------------------
-- with hidden_market as (
-- select distinct
-- upper(hidden_market) as hidden_market
-- from dwd.dwd_gnd_ims_hidden_market
-- where upper(data_source) = 'AIA'
-- )
-- ,tmp as (
-- select
-- MARKET_PACK_KEY,
-- PACK_COD,
-- PACK_DES,
-- STGH_DES,
-- PACK_LCH,
-- Family_Code,
-- Family_Name,
-- 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,
-- t1.MARKET,
-- t1.MARKET_CHPA,
-- KEY_COMPETITOR,
-- IS_AZ,
-- AZ_MAIN,
-- AZ_Related,
-- 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,
-- Class,
-- ETL_INSERT_DT,
-- ETL_UPDATE_DT,
-- market_ratio,
-- counting_unit
-- from dm.dm_aia_pack_property t1
-- left join hidden_market t3
-- on upper(t1.MARKET) = t3.hidden_market
-- where t3.hidden_market is null
-- union
-- select *
-- from dm.dm_aia_pack_property
-- where MARKET = 'AIA ALL Market'
-- )
-- insert overwrite dm.dm_aia_pack_property
-- select * from tmp