327 lines
10 KiB
SQL
327 lines
10 KiB
SQL
-- Databricks notebook source
|
||
-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET (
|
||
-- MARKET STRING,
|
||
-- PACK_CODE STRING,
|
||
-- PACK_DESC STRING,
|
||
-- STGH_DESC STRING,
|
||
-- PACK_LCH STRING,
|
||
-- PROD_CODE STRING,
|
||
-- CMPS_CODE STRING,
|
||
-- CMPS_DESC STRING,
|
||
-- ATC1_CODE STRING,
|
||
-- ATC2_CODE STRING,
|
||
-- ATC3_CODE STRING,
|
||
-- ATC4_CODE STRING,
|
||
-- APP1_CODE STRING,
|
||
-- APP2_CODE STRING,
|
||
-- APP3_CODE 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_CODE STRING,
|
||
-- MANU_DESC STRING,
|
||
-- MNFL_CODE STRING,
|
||
-- MNFL_DESC STRING,
|
||
-- CORP_CODE STRING,
|
||
-- CORP_DESC STRING,
|
||
-- BRANDTYPE STRING,
|
||
-- BU STRING,
|
||
-- STARTTIME STRING,
|
||
-- ENDTIME STRING,
|
||
-- MARKET_RATIO STRING,
|
||
-- ETL_INSERT_DT TIMESTAMP,
|
||
-- ETL_UPDATE_DT TIMESTAMP)
|
||
-- USING delta
|
||
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market';
|
||
-- -- 上面是生产环境location,下面是测试环境location
|
||
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market';
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET_KEYCOMPETITOR (
|
||
-- KEY_COMPETITOR STRING,
|
||
-- MARKET STRING,
|
||
-- PACK_CODE STRING)
|
||
-- USING delta
|
||
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market_keycompetitor';
|
||
-- -- 上面是生产环境location,下面是测试环境location
|
||
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market_keycompetitor';
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- CREATE or REPLACE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET_CLASS (
|
||
-- MARKET STRING,
|
||
-- PACK_CODE STRING,
|
||
-- CLASS STRING)
|
||
-- USING delta
|
||
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market_class';
|
||
-- -- 上面是生产环境location,下面是测试环境location
|
||
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack2market_class';
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- 使用 EXCEPT(集合差操作)简化逻辑
|
||
INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET
|
||
-- 包含规则
|
||
SELECT DISTINCT
|
||
T2.MARKET,
|
||
T1.PACK_CODE,
|
||
T1.PACK_DESC,
|
||
T1.STGH_DESC,
|
||
T1.PACK_LCH,
|
||
T1.PROD_CODE,
|
||
T1.CMPS_CODE,
|
||
T1.CMPS_DESC,
|
||
T1.ATC1_CODE,
|
||
T1.ATC2_CODE,
|
||
T1.ATC3_CODE,
|
||
T1.ATC4_CODE,
|
||
T1.APP1_CODE,
|
||
T1.APP2_CODE,
|
||
T1.APP3_CODE,
|
||
T1.BIO_DESC,
|
||
T1.GENE_ORIG_DESC AS GENE_ORIG,
|
||
T1.ETH_OTC_DESC AS ETH_OTC_D,
|
||
T1.NRDL_DESC,
|
||
T1.NRDL_ENTRY_DATE AS NRDL_ENTR,
|
||
T1.EDL_DESC,
|
||
T1.TCM_DESC,
|
||
T1.PAED_DESC,
|
||
T1.GQCE_DESC,
|
||
T1.VBP_DESC,
|
||
T1.MANU_CODE,
|
||
T1.MANU_DESC,
|
||
T1.MNFL_CODE,
|
||
T1.MNFL_DESC,
|
||
T1.CORP_CODE,
|
||
T1.CORP_DESC,
|
||
T1.BRANDTYPE,
|
||
T2.BU,
|
||
T2.STARTTIME,
|
||
T2.ENDTIME,
|
||
COALESCE(T2.EXTEND_MARKET_RATIO, '1') AS MARKET_RATIO,
|
||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT,
|
||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT
|
||
FROM DM.DM_TD_EXT_CHPA_PACK_PROPERTY AS T1
|
||
LEFT JOIN (
|
||
SELECT
|
||
MARKET,
|
||
BU,
|
||
STARTTIME,
|
||
ENDTIME,
|
||
EXTEND_MARKET_RATIO,
|
||
ATC1_CODE,
|
||
ATC2_CODE,
|
||
ATC3_CODE,
|
||
ATC4_CODE,
|
||
NFC1_CODE,
|
||
NFC2_CODE,
|
||
NFC3_CODE,
|
||
CORPORATION_CODE,
|
||
MANUFACTURER_CODE,
|
||
PRODUCT_CODE,
|
||
PACK_CODE,
|
||
STRENGTH,
|
||
MOLECULE_CODE
|
||
FROM DWD.DWD_GND_IMS_TBLMARKET_BYMONTH
|
||
WHERE EXTEND_MARKET IS NULL AND (NOT_IN_FLAG IS NULL OR NOT_IN_FLAG = '1')
|
||
) AS T2
|
||
ON (T2.ATC1_CODE IS NULL OR T1.ATC1_CODE = T2.ATC1_CODE)
|
||
AND (T2.ATC2_CODE IS NULL OR T1.ATC2_CODE = T2.ATC2_CODE)
|
||
AND (T2.ATC3_CODE IS NULL OR T1.ATC3_CODE = T2.ATC3_CODE)
|
||
AND (T2.ATC4_CODE IS NULL OR T1.ATC4_CODE = T2.ATC4_CODE)
|
||
AND (T2.NFC1_CODE IS NULL OR T1.APP1_CODE = T2.NFC1_CODE)
|
||
AND (T2.NFC2_CODE IS NULL OR T1.APP2_CODE = T2.NFC2_CODE)
|
||
AND (T2.NFC3_CODE IS NULL OR T1.APP3_CODE = T2.NFC3_CODE)
|
||
AND (T2.CORPORATION_CODE IS NULL OR T1.CORP_CODE = T2.CORPORATION_CODE)
|
||
AND (T2.MANUFACTURER_CODE IS NULL OR T1.MANU_CODE = T2.MANUFACTURER_CODE)
|
||
AND (T2.PRODUCT_CODE IS NULL OR T1.PROD_CODE = T2.PRODUCT_CODE)
|
||
AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE)
|
||
AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH)
|
||
AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE)
|
||
WHERE T2.MARKET IS NOT NULL
|
||
|
||
EXCEPT
|
||
|
||
-- 排除规则
|
||
SELECT DISTINCT
|
||
T2.MARKET,
|
||
T1.PACK_CODE,
|
||
T1.PACK_DESC,
|
||
T1.STGH_DESC,
|
||
T1.PACK_LCH,
|
||
T1.PROD_CODE,
|
||
T1.CMPS_CODE,
|
||
T1.CMPS_DESC,
|
||
T1.ATC1_CODE,
|
||
T1.ATC2_CODE,
|
||
T1.ATC3_CODE,
|
||
T1.ATC4_CODE,
|
||
T1.APP1_CODE,
|
||
T1.APP2_CODE,
|
||
T1.APP3_CODE,
|
||
T1.BIO_DESC,
|
||
T1.GENE_ORIG_DESC AS GENE_ORIG,
|
||
T1.ETH_OTC_DESC AS ETH_OTC_D,
|
||
T1.NRDL_DESC,
|
||
T1.NRDL_ENTRY_DATE AS NRDL_ENTR,
|
||
T1.EDL_DESC,
|
||
T1.TCM_DESC,
|
||
T1.PAED_DESC,
|
||
T1.GQCE_DESC,
|
||
T1.VBP_DESC,
|
||
T1.MANU_CODE,
|
||
T1.MANU_DESC,
|
||
T1.MNFL_CODE,
|
||
T1.MNFL_DESC,
|
||
T1.CORP_CODE,
|
||
T1.CORP_DESC,
|
||
T1.BRANDTYPE,
|
||
T2.BU,
|
||
T2.STARTTIME,
|
||
T2.ENDTIME,
|
||
COALESCE(T2.EXTEND_MARKET_RATIO, '1') AS MARKET_RATIO,
|
||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT,
|
||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT
|
||
FROM DM.DM_TD_EXT_CHPA_PACK_PROPERTY AS T1
|
||
LEFT JOIN (
|
||
SELECT
|
||
MARKET,
|
||
BU,
|
||
STARTTIME,
|
||
ENDTIME,
|
||
EXTEND_MARKET_RATIO,
|
||
ATC1_CODE,
|
||
ATC2_CODE,
|
||
ATC3_CODE,
|
||
ATC4_CODE,
|
||
NFC1_CODE,
|
||
NFC2_CODE,
|
||
NFC3_CODE,
|
||
CORPORATION_CODE,
|
||
MANUFACTURER_CODE,
|
||
PRODUCT_CODE,
|
||
PACK_CODE,
|
||
STRENGTH,
|
||
MOLECULE_CODE
|
||
FROM DWD.DWD_GND_IMS_TBLMARKET_BYMONTH
|
||
WHERE EXTEND_MARKET IS NULL AND NOT_IN_FLAG = '0'
|
||
) AS T2
|
||
ON (T2.ATC1_CODE IS NULL OR T1.ATC1_CODE = T2.ATC1_CODE)
|
||
AND (T2.ATC2_CODE IS NULL OR T1.ATC2_CODE = T2.ATC2_CODE)
|
||
AND (T2.ATC3_CODE IS NULL OR T1.ATC3_CODE = T2.ATC3_CODE)
|
||
AND (T2.ATC4_CODE IS NULL OR T1.ATC4_CODE = T2.ATC4_CODE)
|
||
AND (T2.NFC1_CODE IS NULL OR T1.APP1_CODE = T2.NFC1_CODE)
|
||
AND (T2.NFC2_CODE IS NULL OR T1.APP2_CODE = T2.NFC2_CODE)
|
||
AND (T2.NFC3_CODE IS NULL OR T1.APP3_CODE = T2.NFC3_CODE)
|
||
AND (T2.CORPORATION_CODE IS NULL OR T1.CORP_CODE = T2.CORPORATION_CODE)
|
||
AND (T2.MANUFACTURER_CODE IS NULL OR T1.MANU_CODE = T2.MANUFACTURER_CODE)
|
||
AND (T2.PRODUCT_CODE IS NULL OR T1.PROD_CODE = T2.PRODUCT_CODE)
|
||
AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE)
|
||
AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH)
|
||
AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE)
|
||
WHERE T2.MARKET IS NOT NULL;
|
||
|
||
-- COMMAND ----------
|
||
|
||
INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET_KEYCOMPETITOR
|
||
WITH kc AS (
|
||
SELECT
|
||
keycompetitor, no,
|
||
ROW_NUMBER() OVER (ORDER BY
|
||
CASE
|
||
WHEN ATC1_Code IS NOT NULL THEN 1
|
||
WHEN ATC2_Code IS NOT NULL THEN 2
|
||
WHEN ATC3_Code IS NOT NULL THEN 3
|
||
WHEN ATC4_Code IS NOT NULL THEN 4
|
||
WHEN Molecule_Code IS NOT NULL THEN 5
|
||
WHEN Product_Code IS NOT NULL THEN 6
|
||
WHEN Pack_Code IS NOT NULL THEN 7
|
||
ELSE 999
|
||
END,
|
||
CASE WHEN NFC1_CODE IS NULL THEN 0 ELSE 1 END,
|
||
CASE WHEN NFC2_CODE IS NULL THEN 0 ELSE 1 END,
|
||
CASE WHEN NFC3_CODE IS NULL THEN 0 ELSE 1 END
|
||
) AS no1,
|
||
ATC1_Code, ATC2_Code, ATC3_Code, ATC4_Code,
|
||
NFC1_Code, NFC2_Code, NFC3_Code,
|
||
corporation_code, Manufacturer_Code,
|
||
Product_Code, Pack_Code, Strength, Molecule_Code, market
|
||
FROM dwd.dwd_gnd_ims_tblkeycompetitor
|
||
),
|
||
joined AS (
|
||
SELECT
|
||
/*+ BROADCAST(kc) */
|
||
COALESCE(kc.keycompetitor, 'OTHERS') AS Key_Competitor, -- ✅ UPDATE 逻辑内联
|
||
t1.market, t1.PACK_CODE
|
||
/*bug 调试区
|
||
,
|
||
kc.no,
|
||
kc.no1,
|
||
t1.PROD_COD, t1.CMPS_COD, t1.CMPS_DES,
|
||
t1.ATC1_COD, t1.ATC2_COD, t1.ATC3_COD, t1.ATC4_COD,
|
||
t1.APP1_COD, t1.APP2_COD, t1.APP3_COD,
|
||
t1.BIO_DESC, t1.GENE_ORIG_DESC, t1.ETH_OTC_DESC,
|
||
t1.NRDL_DESC, t1.NRDL_Entry_Date, t1.EDL_DESC, t1.TCM_DESC,
|
||
t1.PAED_DESC, t1.GQCE_DESC, t1.VBP_DESC,
|
||
t1.MANU_COD, t1.MANU_DES, t1.MNFL_COD, t1.MNFL_DES,
|
||
t1.CORP_COD, t1.CORP_DES, t1.BrandType, t1.bu, t1.Market_Ratio
|
||
*/
|
||
,ROW_NUMBER() OVER (
|
||
PARTITION BY t1.market, t1.PACK_CODE, t1.PROD_CODE
|
||
ORDER BY kc.no1 DESC, kc.no DESC
|
||
) AS _rn
|
||
FROM DM.DM_TD_EXT_CHPA_PACK2MARKET t1
|
||
LEFT JOIN kc
|
||
ON (kc.ATC1_Code IS NULL OR t1.ATC1_CODE = kc.ATC1_Code)
|
||
AND (kc.ATC2_Code IS NULL OR t1.ATC2_CODE = kc.ATC2_Code)
|
||
AND (kc.ATC3_Code IS NULL OR t1.ATC3_CODE = kc.ATC3_Code)
|
||
AND (kc.ATC4_Code IS NULL OR t1.ATC4_CODE = kc.ATC4_Code)
|
||
AND (kc.NFC1_Code IS NULL OR t1.APP1_CODE = kc.NFC1_Code)
|
||
AND (kc.NFC2_Code IS NULL OR t1.APP2_CODE = kc.NFC2_Code)
|
||
AND (kc.NFC3_Code IS NULL OR t1.APP3_CODE = kc.NFC3_Code)
|
||
AND (kc.corporation_code IS NULL OR t1.CORP_CODE = kc.corporation_code)
|
||
AND (kc.Manufacturer_Code IS NULL OR t1.MANU_CODE = kc.Manufacturer_Code)
|
||
AND (kc.Product_Code IS NULL OR t1.PROD_CODE = kc.Product_Code)
|
||
AND (kc.Pack_Code IS NULL OR t1.PACK_CODE = kc.Pack_Code)
|
||
AND (kc.Strength IS NULL OR t1.STGH_DESC = kc.Strength)
|
||
AND (kc.Molecule_Code IS NULL OR t1.CMPS_CODE = kc.Molecule_Code)
|
||
AND (kc.market IS NULL OR t1.market = kc.market)
|
||
)
|
||
SELECT distinct Key_Competitor,market,pack_code
|
||
FROM joined
|
||
WHERE _rn = 1;
|
||
|
||
-- COMMAND ----------
|
||
|
||
-- DBTITLE 1,CLASS
|
||
INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_PACK2MARKET_CLASS
|
||
SELECT
|
||
/*+ BROADCAST(T2) */
|
||
DISTINCT
|
||
T1.MARKET,
|
||
T1.PACK_CODE,
|
||
COALESCE( T2.CLASS, 'OTHERS') AS CLASS
|
||
FROM DM.DM_TD_EXT_CHPA_PACK2MARKET T1
|
||
LEFT JOIN DWD.DWD_GND_TBLCLASS T2
|
||
ON (T2.MARKET IS NULL OR T1.MARKET = T2.MARKET)
|
||
AND (T2.PACK_CODE IS NULL OR T1.PACK_CODE = T2.PACK_CODE)
|
||
AND (T2.PRODUCT_CODE IS NULL OR T1.PROD_CODE = T2.PRODUCT_CODE)
|
||
AND (T2.MOLECULE_CODE IS NULL OR T1.CMPS_CODE = T2.MOLECULE_CODE)
|
||
AND (T2.CORPORATION_CODE IS NULL OR T1.CORP_CODE = T2.CORPORATION_CODE)
|
||
AND (T2.MANUFACTURER_CODE IS NULL OR T1.MANU_CODE = T2.MANUFACTURER_CODE)
|
||
AND (T2.ATC1_CODE IS NULL OR T1.ATC1_CODE = T2.ATC1_CODE)
|
||
AND (T2.ATC2_CODE IS NULL OR T1.ATC2_CODE = T2.ATC2_CODE)
|
||
AND (T2.ATC3_CODE IS NULL OR T1.ATC3_CODE = T2.ATC3_CODE)
|
||
AND (T2.ATC4_CODE IS NULL OR T1.ATC4_CODE = T2.ATC4_CODE)
|
||
AND (T2.NFC1_CODE IS NULL OR T1.APP1_CODE = T2.NFC1_CODE)
|
||
AND (T2.NFC2_CODE IS NULL OR T1.APP2_CODE = T2.NFC2_CODE)
|
||
AND (T2.NFC3_CODE IS NULL OR T1.APP3_CODE = T2.NFC3_CODE)
|
||
AND (T2.STRENGTH IS NULL OR T1.STGH_DESC = T2.STRENGTH) |