diff --git a/.gitignore b/.gitignore deleted file mode 100644 index 7699118..0000000 --- a/.gitignore +++ /dev/null @@ -1,31 +0,0 @@ -# Python -__pycache__/ -*.py[cod] -*$py.class -*.so -.Python -env/ -venv/ -ENV/ - -# Databricks -.databricks/ -.databricks-bundles/ -*.dbc - -# IDE -.vscode/ -.idea/ -*.swp -*.swo - -# OS -.DS_Store -Thumbs.db - -# Logs -*.log - -# Environment variables -.env -.env.local diff --git a/EXTERNAL/01 dm_tf_external_sales.sql b/EXTERNAL/01 dm_tf_external_sales.sql deleted file mode 100644 index bff2cd2..0000000 --- a/EXTERNAL/01 dm_tf_external_sales.sql +++ /dev/null @@ -1,64 +0,0 @@ --- Databricks notebook source -insert overwrite table dm.dm_tf_external_sales -(YYYYMM, -PACK_COD, -CORP_COD, -AUDIT_COD, -PLATFORM_TYPE, -STORE_NAME, -STORE_TYPE, -REGION_TYPE, -PACK_FLAG, -PROD_FLAG, -DTP_FLAG, -SALES_UNIT_CAL, -SALES_UNIT_CAL_LY, -SALES_VALUE_CAL, -SALES_VALUE_CAL_LY, -CONUTING_UNIT, -CONUTING_UNIT_LY, -DATA_SOURCE, -inst_code, -cmps_flag, -dept_name, -prescription, -prescription_ly, -new_code, -area, -h_level, -reimburse, -reimburse_type, -prescription_source -) -select -YYYYMM, -PACK_CODE AS PACK_COD, -CORP_CODE AS CORP_COD, -AUDIT_CODE AS AUDIT_COD, -PLATFORM_TYPE, -STORE_NAME, -STORE_TYPE, -REGION_TYPE, -PACK_FLAG, -PROD_FLAG, -DTP_FLAG, -SALES_UNIT_CAL, -SALES_UNIT_CAL_LY, -SALES_VALUE_CAL, -SALES_VALUE_CAL_LY, -CONUTING_UNIT, -CONUTING_UNIT_LY, -DATA_SOURCE, -inst_code, -cmps_flag, -dept_name, -prescription, -prescription_ly, -new_code, -area, -h_level, -reimburse, -reimburse_type, -prescription_source -from - dm.DM_TF_EXT_UNIONALL_SALES \ No newline at end of file diff --git a/EXTERNAL/01 dm_tf_external_sales.sql:Zone.Identifier b/EXTERNAL/01 dm_tf_external_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/01 dm_tf_external_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/02 dm_td_external_keycompatitor.sql b/EXTERNAL/02 dm_td_external_keycompatitor.sql deleted file mode 100644 index 87adaa7..0000000 --- a/EXTERNAL/02 dm_td_external_keycompatitor.sql +++ /dev/null @@ -1,42 +0,0 @@ --- Databricks notebook source -insert overwrite dm.dm_td_external_keycompatitor ( - RNK, - BRAND_NAME, - BRAND_CODE, - IMSBRAND, - CompatitorCN, - CLASS, - CompatitorEN, - CORP, - Market, - VBP, - ValueType, - MARKETDESC, - Strategicbrand, - TA, - DEFAULTFLAG, - CompatitorMarket, - CompatitorType, - DATA_SOURCE -) - select - RNK, - BRAND_NAME, - BRAND_CODE, - IMSBRAND, - competitorcn, - CLASS, - competitoren, - CORP, - Market, - VBP, - ValueType, - MARKETDESC, - Strategicbrand, - TA, - int(DEFAULTFLAG), - competitormarket, - competitortype, - DATA_SOURCE - from - dwd.dwd_gnd_ims_compete_product_config \ No newline at end of file diff --git a/EXTERNAL/02 dm_td_external_keycompatitor.sql:Zone.Identifier b/EXTERNAL/02 dm_td_external_keycompatitor.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/02 dm_td_external_keycompatitor.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/03 dm_td_external_brand_market.sql b/EXTERNAL/03 dm_td_external_brand_market.sql deleted file mode 100644 index ac6f7be..0000000 --- a/EXTERNAL/03 dm_td_external_brand_market.sql +++ /dev/null @@ -1,70 +0,0 @@ --- Databricks notebook source --- drop table if exists dm.DM_TD_EXTERNAL_BRAND_MARKET; --- create table if not exists dm.DM_TD_EXTERNAL_BRAND_MARKET --- using parquet as -INSERT OVERWRITE dm.DM_TD_EXTERNAL_BRAND_MARKET ( - TA_NAME, - RNK, - BRAND_CODE, - BRAND_NAME, - KEYCOMPATITORCN, - KEYCOMPATITOREN, - CLASS, - IMSBRAND, - CORP, - MARKET, - MARKETDESC, - DEFAULTFLAG, - VBP, - VBPFLAG, - VALUETYPE, - Strategicbrand, - CompatitorMarket, - CompatitorType, - TA_RN, - DATA_SOURCE -) - SELECT - A.TA TA_NAME, - CASE - WHEN A.RNK = 'null' then 99 - ELSE A.RNK - END, - A.BRAND_CODE, - A.BRAND_NAME, - REPLACE(NVL(A.CompatitorCN, ''), 'null', '') KEYCOMPATITORCN, - REPLACE(NVL(A.CompatitorEN, ''), 'null', '') KEYCOMPATITOREN, - REPLACE(NVL(A.CLASS, ''), 'null', '') CLASS, - upper(A.IMSBRAND) IMSBRAND, - REPLACE(NVL(A.CORP, ''), 'null', '') CORP, - REPLACE(NVL(A.MARKET, ''), 'null', '') MARKET, - A.MARKETDESC, - A.DEFAULTFLAG, - CASE - WHEN REPLACE(NVL(A.VBP, ''), 'null', '') = '' THEN 'NonVBP' - ELSE REPLACE(NVL(A.VBP, ''), 'null', '') - END VBP, - CASE - WHEN REPLACE(NVL(A.VBP, ''), 'null', '') <> '' THEN 'VBP' - ELSE 'NonVBP' - END VBPFLAG, - A.VALUETYPE, - A.Strategicbrand, - REPLACE(NVL(A.CompatitorMarket, ''), 'null', '') CompatitorMarket, - REPLACE(NVL(A.CompatitorType, ''), 'null', '') CompatitorType, - CASE - WHEN A.TA = 'CV' THEN 2 - WHEN A.TA = 'DM' THEN 1 - WHEN A.TA = 'RD' THEN 3 - WHEN A.TA = 'RE' THEN 4 - WHEN A.TA = 'NEB' THEN 5 - WHEN A.TA = 'GI' THEN 6 - WHEN A.TA = 'ONC' THEN 7 - WHEN A.TA = 'RARE' THEN 8 - END TA_RN, - CASE - when A.DATA_SOURCE = 'IQVIA-County(Quarterly)' THEN 'IQVIA-COUNTY(Quarterly)' - ELSE A.DATA_SOURCE - END DATA_SOURCE - FROM - dm.DM_TD_EXTERNAL_KEYCOMPATITOR A \ No newline at end of file diff --git a/EXTERNAL/03 dm_td_external_brand_market.sql:Zone.Identifier b/EXTERNAL/03 dm_td_external_brand_market.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/03 dm_td_external_brand_market.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/04 dm_td_external_calendar.sql b/EXTERNAL/04 dm_td_external_calendar.sql deleted file mode 100644 index b5097b7..0000000 --- a/EXTERNAL/04 dm_td_external_calendar.sql +++ /dev/null @@ -1,382 +0,0 @@ --- Databricks notebook source ---------------------------------------------------------------------------- ---修改时间:20241126 ---修改人:Fanxujia ---修改内容: ---THC渠道分为14省的数据源以及全国的数据源两种,分在了2个事实表里,下面在维表在引用事实表时,需要将两个事实表union在一起 ----------------------------------------------------------------------------- -create or replace temporary view external_sales_union as -select YYYYMM,SALES_VALUE_CAL,DATA_SOURCE from dm.dm_tf_ext_unionall_sales -union all -select YYYYMM,SALES_VALUE_CAL,DATA_SOURCE from dm.dm_tf_external_sales_thc - - --- COMMAND ---------- - ---------------------------------------------------------------------------- ---修改时间:20260309 ---修改人:chenwu ---修改内容: ---niad 的数据会比其他数据先入数据库,会产生月份差。 ----------------------------------------------------------------------------- -create or replace temporary view retail_niad_sales as -select - GREATEST(niad_month, OTHERS_MONTH) as YYYYMM, - NIAD_MONTH -from - ( - select - max(niad_month) as niad_month, - max(OTHERS_MONTH) as OTHERS_MONTH - from - ( - select - niad_month, - OTHERS_MONTH - from - tmp.tmp_dm_td_ext_retail_niad_month - union all - select - niad_month, - OTHERS_MONTH - from - tmp.tmp_dm_td_ext_ec_niad_month - ) - ) - --- COMMAND ---------- - -create or replace temporary view merged_date_calender as -WITH ALL_DATA_YYYY ( - select - max(yyyymm) YYYYMM, - 'AIA' DATATYPE - from - dm.dm_tf_ext_unionall_sales - where - DATA_SOURCE = 'AIA(Monthly)' - union all - select - max(yyyymm) YYYYMM, - 'DTP' DATATYPE - from - dm.dm_tf_ext_unionall_sales - where - DATA_SOURCE = 'DTP(Quarterly)' - union all - select - max(yyyymm) YYYYMM, - 'CHPA' DATATYPE - from - dm.dm_tf_ext_unionall_sales - where - DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -) -SELECT - min(YYYYMM) AS MERGED_DATA_MONTH, - GREATEST( - '202401', - CAST((CAST(LEFT(min(yyyymm), 4) AS INT) - 3) * 100 + 1 AS VARCHAR(6)) --三年区间 - ) AS MERGED_DATA_MONTH_START -from - ALL_DATA_YYYY - --- COMMAND ---------- - -insert overwrite dm.dm_td_external_calendar ( - date, - yyyymmdd, - yyyymm, - year, - quarter, - month, - month_cn, - day, - is_holiday, - work_days, - mtd_work_days, - left_work_days, - year_quater, - half_year, - dd, - YYYYMM_EXTERNAL, - MONTH_EXTERNAL, - YEAR_EXTERNAL, - YYYYMM_EXTERNAL_AIA, - YYYYMM_EXTERNAL_NIAD, - YYYYMM_MERGED_DATA -) - --公用的日历表最小日期不到2018年,因此需要自己构造一个日历表,日期从2018年起。 - --31天 - with day_31 as (select - explode( - array( - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29, - 30, - 31 - ) - ) as day - ), - --30天 - day_30 as (select - day - from - day_31 - where - day <= 30 - ), - --29天(闰年的2月份) - day_29 as (select - day - from - day_31 - where - day <= 29 - ), - --28天(非闰年的2月份) - day_28 as (select - day - from - day_31 - where - day <= 28 - ), - --最后一天是31号的月份 - month_31 as (select - explode(array(1, 3, 5, 7, 8, 10, 12)) as month - ), - --最后一天是30号的月份 - month_30 as (select - explode(array(4, 6, 9, 11)) as month - ), - --2月份单拎出来 - month_2 as (select - 2 as month - ), - --非闰年的月、日 - mmdd_365 as (select - month, - day - from - month_31 cross join day_31 - union all - select - month, - day - from - month_30 cross join day_30 - union all - select - month, - day - from - month_2 cross join day_28 - ), - --闰年的月、日 - mmdd_366 as (select - month, - day - from - month_31 cross join day_31 - union all - select - month, - day - from - month_30 cross join day_30 - union all - select - month, - day - from - month_2 cross join day_29 - ), - --注意事项: - --目前年份设计只到2040年,如果2041年依旧使用此套代码,这里需要做修改 - --非闰年的年份 - year_365 as (select - explode( - array( - 2018, - 2019, - 2021, - 2022, - 2023, - 2025, - 2026, - 2027, - 2029, - 2030, - 2031, - 2033, - 2034, - 2035, - 2037, - 2038, - 2039 - ) - ) as year - ), - --闰年的年份 - year_366 as (select - explode(array(2020, 2024, 2028, 2032, 2036, 2040)) as year - ), - --从2018年1月1日至2040年12月31日的数据 - --最终插入dm表时还会在此基础上框定时间范围 - yyyymmdd as (select - year, - month, - day - from - year_365 cross join mmdd_365 - union all - select - year, - month, - day - from - year_366 cross join mmdd_366 - ), - --补充其他需要的字段 - tmp_calendar as (select - make_date(year, month, day) as `date`, - year * 10000 + month * 100 + day as yyyymmdd, - year * 100 + month as yyyymm, - concat(month, '月') as month_cn, - year, - month, - day, - case - when month <= 3 then 1 - when month <= 6 then 2 - when month <= 9 then 3 - else 4 - end as quarter, - case - when month <= 3 then concat(year, 'Q1') - when month <= 6 then concat(year, 'Q2') - when month <= 9 then concat(year, 'Q3') - else concat(year, 'Q4') - end as year_quater, - case - when month <= 6 then concat(year, 'H1') - else concat(year, 'H2') - end as half_year, - --下面4个字段实际在PBI上没有用到,因此直接设为0 - 0 as work_days, - 0 as mtd_work_days, - 0 as is_holiday, - 0 as left_work_days - from - yyyymmdd - ) - select - `date`, - yyyymmdd, - A.yyyymm, - `year`, - quarter, - `month`, - month_cn, - `day`, - is_holiday, - work_days, - mtd_work_days, - left_work_days, - year_quater, - half_year, - substring(yyyymmdd, 7, 2) dd, - CASE - WHEN A.yyyymm = B.YYYYMM THEN 'R' - ELSE A.yyyymm - END YYYYMM_EXTERNAL, - CASE - WHEN A.yyyymm = B.YYYYMM THEN 'R' - ELSE `month` - END MONTH_EXTERNAL, - CASE - WHEN A.`year` = LEFT(B.YYYYMM, 4) THEN 'R' - ELSE A.`year` - END YEAR_EXTERNAL, - -- from DM.DM_TD_CALENDAR A - ---------------------------------------------------- - --修改时间:20241211 - --修改人:Fanxujia - --修改内容: - --给AIA报告增加单独的R月标记 - ---------------------------------------------------- - case - when A.yyyymm = C.YYYYMM THEN 'R' - WHEN A.yyyymm >= C.min_yyyymm AND A.yyyymm <=C.yyyymm - THEN A.YYYYMM - ELSE NULL - end as YYYYMM_EXTERNAL_AIA, - case - when A.yyyymm = D.NIAD_MONTH THEN 'R' - else A.yyyymm - end as YYYYMM_EXTERNAL_NIAD, - case - when A.yyyymm = E.MERGED_DATA_MONTH THEN 'R' - when A.yyyymm >= E.MERGED_DATA_MONTH_START AND A.YYYYMM<= E.MERGED_DATA_MONTH THEN A.yyyymm - else null - end as YYYYMM_MERGED_DATA - from - tmp_calendar A - join ( - select - MAX(YYYYMM) YYYYMM - from - external_sales_union - where - SALES_VALUE_CAL <> 0 - ) B - on 1 = 1 - --获得AIA数据的最新月 - cross join ( - select - max(YYYYMM) as YYYYMM,min(yyyymm) AS min_yyyymm - from - dm.dm_tf_ext_unionall_sales - where - DATA_SOURCE = 'AIA(Monthly)' - and SALES_VALUE_CAL <> 0 - ) C - left join retail_niad_sales AS D - left join merged_date_calender as E - WHERE - A.yyyymm >= ( - SELECT - MIN(YYYYMM) - FROM - external_sales_union - ) - AND A.yyyymm <= (LEFT(D.YYYYMM, 4) * 100 + 12) - AND A.day = 1 \ No newline at end of file diff --git a/EXTERNAL/04 dm_td_external_calendar.sql:Zone.Identifier b/EXTERNAL/04 dm_td_external_calendar.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/04 dm_td_external_calendar.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/05 dm_td_external_exchangerate.sql b/EXTERNAL/05 dm_td_external_exchangerate.sql deleted file mode 100644 index 0cbd778..0000000 --- a/EXTERNAL/05 dm_td_external_exchangerate.sql +++ /dev/null @@ -1,26 +0,0 @@ --- Databricks notebook source -/* -修改日期:20250311 -修改人:chenwu -修改内容:取sales表中最大日期的年 -*/ -insert OVERWRITE dm.dm_td_external_exchangerate ( - from_currency_id, to_currency_id, az_year, exchange_rate, etl_update_dt, etl_insert_dt -) - select - from_currency_id, - to_currency_id, - az_year, - exchange_rate, - etl_update_dt, - etl_insert_dt - from - dm.DM_TD_EXCHANGE_RATE - where - AZ_YEAR in ( - select - left(max(YYYYMM), 4) - from - dm.dm_tf_external_sales --取sales表中最大日期的年 - ) - AND FROM_CURRENCY_ID = 'USD' \ No newline at end of file diff --git a/EXTERNAL/05 dm_td_external_exchangerate.sql:Zone.Identifier b/EXTERNAL/05 dm_td_external_exchangerate.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/05 dm_td_external_exchangerate.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/07 dm_td_external_packinfo.sql b/EXTERNAL/07 dm_td_external_packinfo.sql deleted file mode 100644 index b56abf4..0000000 --- a/EXTERNAL/07 dm_td_external_packinfo.sql +++ /dev/null @@ -1,2833 +0,0 @@ --- Databricks notebook source ---------------------------------------------------------------------------- ---修改时间:20241126 ---修改人:Fanxujia ---修改内容: ---THC渠道分为14省的数据源以及全国的数据源两种,分在了2个事实表里,下面在维表在引用事实表时,需要将两个事实表union在一起 ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ---修改时间:20241129 ---修改人:Fanxujia ---修改内容: ---补充Retail直取中DTP的手工文件里的pack_cod ----------------------------------------------------------------------------- -create or replace temporary view external_sales_union as -select distinct -PACK_COD, -DATA_SOURCE, -PACK_FLAG, -CORP_COD, -SALES_VALUE_CAL, -dept_name, -new_code, -area, -YYYYMM -from dm.dm_tf_external_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_EXTERNAL_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 \ No newline at end of file diff --git a/EXTERNAL/07 dm_td_external_packinfo.sql:Zone.Identifier b/EXTERNAL/07 dm_td_external_packinfo.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/07 dm_td_external_packinfo.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/08 dm_td_external_corp.sql b/EXTERNAL/08 dm_td_external_corp.sql deleted file mode 100644 index a583b28..0000000 --- a/EXTERNAL/08 dm_td_external_corp.sql +++ /dev/null @@ -1,83 +0,0 @@ --- Databricks notebook source ----------------------------------------------------------------------------- ---修改时间:20241126 ---修改人:Fanxujia ---修改内容: ---补充THC渠道的全国的事实表中的pack_cod ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ---修改时间:20241129 ---修改人:Fanxujia ---修改内容: ---补充Retail直取中DTP的手工文件里的pack_cod ----------------------------------------------------------------------------- -with external_sales as ( -select distinct PACK_COD -from dm.DM_TF_EXTERNAL_SALES -union -select distinct pack_cod -from dm.dm_tf_external_sales_thc -union -select distinct pack_code -from dm.dm_zk_retail_sales_kpi -where NVL(pack_code,'Others') <> 'Others' -and pack_code <> '' -) - ---只存放有外部数据的公司信息数据 -INSERT OVERWRITE dm.dm_td_external_corp(CORP_COD,CORP_DES,CORP_DES_C,CORP_TYPE) -SELECT A.CORP_COD,CASE WHEN MAX(CORP_DES) LIKE 'ASTRAZENECA%' THEN 'ASTRAZENECA' ELSE MAX(CORP_DES) END CORP_DES,MAX(CORP_DES_C) CORP_DES_C, -CASE WHEN MAX(UPPER(MNFL_DES)) = 'LOCAL' THEN 'LOCAL' -WHEN UPPER(A.CORP_COD) LIKE '%CORP_COD%' OR UPPER(A.CORP_COD) LIKE '%OTHERS%' THEN '' -ELSE 'MNC' END CORP_TYPE -FROM (select distinct PACK_COD,CORP_COD,CORP_DES,CORP_DES_C,MNFL_DES from DM.dm_td_external_packinfo_temp2) A -INNER JOIN external_sales B ON A.PACK_COD = B.PACK_COD -WHERE A.CORP_COD IS NOT NULL -GROUP BY A.CORP_COD - --- COMMAND ---------- - - -------------ec补充缺少的Corp信息 -insert into dm.dm_td_external_corp(CORP_COD,CORP_DES,CORP_DES_C,CORP_TYPE) -select - case when CORP_COD is null or CORP_COD = '' then 'CORP_COD_EC(Monthly)' - else CORP_COD end as CORP_COD, - max(CORP_DES) CORP_DES, - max(CORP_DES_C) CORP_DES, - max(case when upper(MNFL_DES) = 'LOCAL' then 'LOCAL' else 'MNC' end) CORP_TYPE -from dwd.dwd_inc_gnd_retail_b2c_label_total -where CORP_COD in ( - select distinct - a.CORP_COD - from (select distinct corp_cod from dm.dm_zk_ec_sales_kpi ) a - where not exists( - select 1 from dm.dm_td_external_corp b - where a.CORP_COD = b.CORP_COD - ) -) -group by 1 - - --- COMMAND ---------- - - -------------Retail补充缺少的Corp信息 -insert into dm.dm_td_external_corp(CORP_COD,CORP_DES,CORP_DES_C,CORP_TYPE) -select distinct - case when CORP_COD is null or CORP_COD = '' then 'CORP_COD_Retail(Quarterly)' - else CORP_COD end as CORP_COD, - max(CORP_DES) CORP_DES, - max(CORP_DES_C) CORP_DES, - max(case when upper(MNFL_DES) = 'LOCAL' then 'LOCAL' else 'MNC' end) CORP_TYPE -from dwd.dwd_inc_gnd_retail_b2c_label_total -where CORP_COD in ( - select distinct - a.CORP_COD - from (select distinct corp_cod from dm.dm_zk_retail_sales_kpi ) a - where not exists( - select 1 from dm.dm_td_external_corp b - where a.CORP_COD = b.CORP_COD - ) -) -group by 1 \ No newline at end of file diff --git a/EXTERNAL/08 dm_td_external_corp.sql:Zone.Identifier b/EXTERNAL/08 dm_td_external_corp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/08 dm_td_external_corp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/09 dm_td_external_geo_type.sql b/EXTERNAL/09 dm_td_external_geo_type.sql deleted file mode 100644 index 4d072fd..0000000 --- a/EXTERNAL/09 dm_td_external_geo_type.sql +++ /dev/null @@ -1,1968 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC # dm.dm_td_external_geo_temp - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 排序 - --- COMMAND ---------- - --- DBTITLE 1,PROVINCE RANK -CREATE OR REPLACE TEMPORARY VIEW V_PROVINCE_RANK AS -WITH - MIN_YM AS ( --开始年月 - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - DM.DM_TF_EXTERNAL_SALES - ), - MAX_YM AS ( --结束年月 - SELECT - MAX(YYYYMM) - FROM - DM.DM_TF_EXTERNAL_SALES - ), - SALESRANK AS ( -- 省份销售额,取DM.DM_TF_DEMAND_SALES中的销量排序 - SELECT - T2.province_code AS PROVINCE_CODE, - T2.province_name AS PROVINCE_NAME, - SUM(SALES_VAL) SALES_VALUE - FROM - DM.DM_TF_DEMAND_SALES T1 - INNER JOIN DM.DM_TD_INSTITUTION T2 ON T1.BUYER_CODE = T2.INST_CODE - WHERE - T1.yyyymm BETWEEN ( - SELECT - YYYYMM - FROM - MIN_YM - ) AND ( - SELECT - YYYYMM - FROM - MAX_YM - ) - GROUP BY - 1,2 - ) - -- 排序结果 -SELECT - PROVINCE_CODE, - PROVINCE_NAME, - ROW_NUMBER() OVER ( - ORDER BY - SALES_VALUE DESC - ) RANK -FROM - SALESRANK - --- COMMAND ---------- - --- DBTITLE 1,CITY RANK -CREATE OR REPLACE TEMPORARY VIEW V_CITY_RANK AS -WITH - MIN_YM AS ( --开始年月 - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - DM.DM_TF_EXTERNAL_SALES - ), - MAX_YM AS ( --结束年月 - SELECT - MAX(YYYYMM) - FROM - DM.DM_TF_EXTERNAL_SALES - ), - SALESRANK AS ( -- 城市销售额,取DM.DM_TF_DEMAND_SALES中的销量排序 - SELECT - T2.city_code AS CITY_CODE, - T2.city_name AS CITY_NAME, - SUM(SALES_VAL) SALES_VALUE - FROM - DM.DM_TF_DEMAND_SALES T1 - INNER JOIN DM.DM_TD_INSTITUTION T2 ON T1.BUYER_CODE = T2.INST_CODE - WHERE - T1.yyyymm BETWEEN ( - SELECT - YYYYMM - FROM - MIN_YM - ) AND ( - SELECT - YYYYMM - FROM - MAX_YM - ) - GROUP BY - 1,2 - ) - -- 排序结果 -SELECT - CITY_CODE, - CITY_NAME, - ROW_NUMBER() OVER ( - ORDER BY - SALES_VALUE DESC - ) RANK -FROM - SALESRANK - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 各数据源逻辑 - --- COMMAND ---------- - --- DBTITLE 1,CHPA -CREATE OR REPLACE TEMPORARY VIEW V_CHPA_GEO AS -SELECT - A.AUDIT_COD, - A.CITY, - CASE - WHEN A.CITY_C = 'Other Low Tiers' THEN 'ROC' - ELSE A.CITY_C - END CITY_C, - A.CITY_TYPE, - A.CITY_TIER, - A.AZ_CITY_TIER, - A.PROVINCE, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_C - END PROVINCE_C, - NVL(A.PROVINCE_CODE, A.AUDIT_COD) PROVINCE_CODE, - CASE - WHEN A.CITY_MAP IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.CITY_MAP - END CITY_MAP, - CASE - WHEN A.PROVINCE_MAP IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_MAP - END PROVINCE_MAP, - A.REGION_CENTER, - CASE - WHEN A.CITY IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE C.RANK - END PROVINCE_RN, - CASE - WHEN A.CITY IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE B.RANK - END CITY_RN, - 'IQVIA-CHPA(Monthly)' DATA_SOURCE -FROM - DM.DM_IMS_TD_GEO A - LEFT JOIN V_CITY_RANK B - ON A.CITY_MAP = B.CITY_NAME - LEFT JOIN V_PROVINCE_RANK C - ON A.PROVINCE_CODE = C.province_code -WHERE - A.CITY_TYPE = 'City' - --- COMMAND ---------- - --- DBTITLE 1,COUNTY -CREATE OR REPLACE TEMPORARY VIEW V_COUNTY_GEO -AS -SELECT - A.AUDIT_COD, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_C - END CITY, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - when A.PROVINCE_C = '福厦泉' then '福建' - ELSE A.PROVINCE_C - END CITY_C, - "Province" CITY_TYPE, - null CITY_TIER, - NULL AZ_CITY_TIER, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_C - END PROVINCE, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - when A.PROVINCE_C = '福厦泉' then '福建' - ELSE A.PROVINCE_C - END PROVINCE_C, - A.AUDIT_COD PROVINCE_CODE, - CASE - WHEN A.PROVINCE_MAP IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_MAP - END CITY_MAP, - CASE - WHEN A.PROVINCE_MAP IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.PROVINCE_MAP - END PROVINCE_MAP, - A.REGION_CENTER, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE NVL(B.RANK,999) - END PROVINCE_RN, - CASE - WHEN A.PROVINCE_C IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE NVL(B.RANK,999) - END CITY_RN, - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE -FROM - DM.DM_IMS_TD_COUNTY_GEO A - LEFT JOIN V_PROVINCE_RANK AS B ON A.PROVINCE_C = B.PROVINCE_NAME - --- COMMAND ---------- - --- DBTITLE 1,Retail -CREATE OR REPLACE TEMPORARY VIEW V_RETAIL_GEO -AS -SELECT - geo_key AS AUDIT_COD, - city_name_en AS CITY, - CASE - WHEN A.city_c IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.city_c - END city_c, - city_type, - city_tier, - AZ_City_tier, - province_name_en AS PROVINCE, - CASE - WHEN A.province_name IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - when A.province_name = '福厦泉' then '福建' - ELSE A.province_name - END AS PROVINCE_C, - NVL(a.province_code, GEO_KEY) province_code, - CASE - WHEN A.city_map IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.city_map - END city_map, - CASE - WHEN A.province_map IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.province_map - END province_map, - area_code AS REGION_CENTER, - CASE - WHEN A.city_c IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE C.PROVINCE_RN - END PROVINCE_RN, - null CITY_RN, - 'Retail(Quarterly)' DATA_SOURCE -FROM - DM.dm_zk_retail_geo A - LEFT JOIN ( - SELECT - province_code, - ROW_NUMBER() OVER (ORDER BY SALES_VALUE DESC) PROVINCE_RN - FROM - ( - SELECT - T2.province_code, - SUM(T1.sales_value) SALES_VALUE - FROM - dm.dm_zk_retail_sales T1 - INNER JOIN dm.dm_zk_retail_geo T2 - ON T1.AUDIT_COD = T2.geo_key - WHERE - YYYYMM >= ( - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - dm.dm_zk_retail_sales - ) - AND YYYYMM <= ( - SELECT - MAX(YYYYMM) - FROM - dm.dm_zk_retail_sales - ) - AND AUDIT_COD != 'ROC' - GROUP BY - T2.province_code - ) - ) C - ON A.PROVINCE_CODE = C.province_code -WHERE - geo_key != 'CHT' - --- COMMAND ---------- - --- DBTITLE 1,DTP -CREATE OR REPLACE TEMPORARY VIEW V_DTP_GEO -AS -SELECT - geo_key AS AUDIT_COD, - city_name_en AS CITY, - CASE - WHEN A.city_c IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.city_c - END city_c, - city_type, - city_tier, - AZ_City_tier, - province_name_en AS PROVINCE, - CASE - WHEN A.province_name IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - when A.province_name = '福厦泉' then '福建' - ELSE A.province_name - END AS PROVINCE_C, - NVL(a.province_code, GEO_KEY) province_code, - CASE - WHEN A.city_map IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.city_map - END city_map, - CASE - WHEN A.province_map IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 'ROC' - ELSE A.province_map - END province_map, - area_code AS REGION_CENTER, - CASE - WHEN A.city_c IN ('Other Low Tiers', 'OTHER LOW TIERS') THEN 999 - ELSE C.PROVINCE_RN - END PROVINCE_RN, - null CITY_RN, - 'DTP(Quarterly)' DATA_SOURCE -FROM - DM.dm_zk_retail_geo A - LEFT JOIN ( - SELECT - province_code, - ROW_NUMBER() OVER (ORDER BY SALES_VALUE DESC) PROVINCE_RN - FROM - ( - SELECT - T2.province_code, - SUM(T1.sales_value) SALES_VALUE - FROM - dm.dm_zk_retail_sales T1 - INNER JOIN dm.dm_zk_retail_geo T2 - ON T1.AUDIT_COD = T2.geo_key - WHERE - YYYYMM >= ( - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - dm.dm_zk_retail_sales - ) - AND YYYYMM <= ( - SELECT - MAX(YYYYMM) - FROM - dm.dm_zk_retail_sales - ) - AND AUDIT_COD != 'ROC' - GROUP BY - T2.province_code - ) - ) C - ON A.PROVINCE_CODE = C.province_code -WHERE - geo_key != 'CHT' - --- COMMAND ---------- - --- DBTITLE 1,THC -CREATE OR REPLACE TEMPORARY VIEW V_THC_GEO -AS -select -case when t1.province_c = '全国' then 'CHT' - when t2.geo_key is null then t1.province_e - else t2.geo_key -end as AUDIT_COD, -t1.city_e as CITY, -t1.city_c, -'Province' as CITY_TYPE, -t3.city_tier, -t3.AZ_City_tier, -t1.province_e as province, -t1.province_c, -case when t1.province_c = '全国' then 'CHT' - when t2.province_code is null then t1.province_e - else t2.province_code -end as PROVINCE_CODE, -NVL(t2.city_name,'') as CITY_MAP, -case when t1.province_c = '全国' then '全国' - when t2.province_code in ('TJ','CQ','BJ','SH') then concat(t2.province_name,'市') - when t2.province_code in ('SC','YN','LN','SA','GZ', - 'HN','HL','SX','ZJ','JS', - 'SD','JL','FJ','GD','HU', - 'AH','GS','HE','JX','HB', - 'HA','QH','TW') - then concat(t2.province_name,'省') - when t2.province_code = 'GX' then concat(t2.province_name,'壮族自治区') - when t2.province_code = 'NX' then concat(t2.province_name,'回族自治区') - when t2.province_code in ('IM','XZ') then concat(t2.province_name,'自治区') - when t2.province_code in ('HK','MC') then concat(t2.province_name,'特别行政区') - when t2.province_code in ('XJ') then concat(t2.province_name,'维吾尔自治区') - ELSE coalesce(t2.province_name,t1.province_c) -end as province_map, -case when t1.province_c = '全国' then 'National' - else t2.area_code -end as REGION_CENTER, -1 as PROVINCE_RN, -1 as CITY_RN, -'THC(Quarterly)' as DATA_SOURCE -from dwd.dwd_gnd_ext_thc_geo t1 -left join dm.dm_td_geography t2 ---THC最细到省,用省关联 -on t1.province_c = t2.province_name -and t2.geo_key = t2.province_code -left join dws.dws_ims_td_geo t3 -on t1.province_c = replace(t3.AUDIT_DES_C,'市','') - --- COMMAND ---------- - --- DBTITLE 1,AIA -CREATE OR REPLACE TEMPORARY VIEW V_AIA_GEO -AS -select distinct upper(nvl(t2.inst_code,t1.ins_cd)) as AUDIT_COD, - COALESCE(t3.city_name_en,t4.city) as city, - CASE WHEN COALESCE(t3.city_name,t4.CITY_C) IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - ELSE COALESCE(t3.city_name,t4.CITY_C) - END as CITY_C, - COALESCE(t3.city_type_desc,t4.CITY_TYPE) as CITY_TYPE, - t4.CITY_TIER, - t4.AZ_CITY_TIER, - COALESCE(t3.province_name_en,t4.PROVINCE) as PROVINCE, - CASE WHEN COALESCE(t3.province_name,t4.PROVINCE_C) IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - when COALESCE(t3.province_name,t4.PROVINCE_C) = '福厦泉' then '福建' - ELSE COALESCE(t3.province_name,t4.PROVINCE_C) - END as province_c, - COALESCE(t3.province_code,t4.PROVINCE_CODE,t4.AUDIT_COD) as PROVINCE_CODE, - CASE WHEN COALESCE(t3.city_name,t4.CITY_MAP) IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - ELSE COALESCE(t3.city_name,t4.CITY_MAP) - END as CITY_MAP, - CASE WHEN t3.province_code in ('TJ','CQ','BJ','SH') then concat(t3.province_name,'市') - when t3.province_code in ('SC','YN','LN','SA','GZ','HN','HL','SX','ZJ','JS','SD','JL','FJ','GD','HU','AH','GS','HE','JX','HB') then concat(t3.province_name,'省') - when t3.province_code = 'GX' then concat(t3.province_name,'壮族自治区') - when t3.province_code ='IM' then concat(t3.province_name,'自治区') - when t4.PROVINCE_MAP IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - ELSE COALESCE(t3.province_name,t4.PROVINCE_MAP) - END as PROVINCE_MAP, - case when t3.area_code = 'SOUTH' then 'South' - when t3.area_code = 'WEST' then 'West' - when t3.area_code = 'CENTRAL' then 'Central' - when t3.area_code = 'NORTH' then 'North' - when t3.area_code = 'EAST' then 'East' - else t4.REGION_CENTER - end as REGION_CENTER, - 1 as PROVINCE_RN, - 1 as CITY_RN, - 'AIA(Monthly)' as DATA_SOURCE - -from (select distinct case when ins_cd is not null and length(ins_cd) < 7 then right(concat('0000000',ins_cd),7) else ins_cd end as ins_cd - from dwd.dwd_gnd_aia_rawdata) t1 -left join ( -select distinct -case when length(cpa_hospital_code) < 7 then right(concat('0000000',cpa_hospital_code),7) else cpa_hospital_code end as cpa_hospital_code, -ins_cd_nl as inst_code -from dwd.dwd_gnd_hospital_not_provided -) t2 -on NVL(t1.ins_cd,'') = t2.cpa_hospital_code -left join dm.dm_td_institution t3 -on t2.inst_code = t3.inst_code -left join dm.dm_ims_td_geo t4 -on t3.city_name_en = t4.city - --- COMMAND ---------- - --- DBTITLE 1,CHC -CREATE OR REPLACE TEMPORARY VIEW V_CHC_GEO -AS -select - upper( nvl(t2.AUDIT_COD ,t1.city_e) ) as AUDIT_COD, - t1.city_e as city, - CASE WHEN t1.city_c IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - when t1.city_c = '福厦泉' then '福建' ELSE t1.city_c END city_c, - case - when t1.city_e='Suzhou'then 'City' - when t1.city_e='Wuxi' then 'City' - when t1.city_e = 'Fuzhou' then 'City' - else t2.CITY_TYPE - end CITY_TYPE, - case - when t1.city_e='Suzhou'then '5' - when t1.city_e='Wuxi' then '5' - when t1.city_e = 'Fuzhou' then '5' - else t2.CITY_TIER - end CITY_TIER, - case - when t1.city_e='Suzhou'then '2' - when t1.city_e='Wuxi' then '2' - when t1.city_e = 'Fuzhou' then '2' - else t2.AZ_CITY_TIER - end AZ_CITY_TIER, - t1.province_e as province, - CASE WHEN t1.province_c IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - when t1.province_c = '福厦泉' then '福建' ELSE t1.province_c END province_c, - case - when t1.city_e='Suzhou'then 'JS' - when t1.city_e='Wuxi' then 'JS' - when t1.city_e = 'Fuzhou' then 'FJ' - else t2.PROVINCE_CODE - end PROVINCE_CODE, - case - when t1.city_e='Suzhou'then '苏锡' - when t1.city_e='Wuxi' then '苏锡' - when t1.city_e = 'Fuzhou' then '福厦泉' - when t1.city_e IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - when t2.CITY_MAP IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - else t2.CITY_MAP - end CITY_MAP, - case - when t1.city_e='Suzhou'then '江苏省' - when t1.city_e='Wuxi' then '江苏省' - when t1.city_e = 'Fuzhou' then '福建省' - when t1.city_e IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - when t2.PROVINCE_MAP IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' - else t2.PROVINCE_MAP - end PROVINCE_MAP, - case - when t1.city_e='Suzhou'then 'Central' - when t1.city_e='Wuxi' then 'Central' - when t1.city_e = 'Fuzhou' then 'East' - else t2.REGION_CENTER - end REGION_CENTER, - 1 as PROVINCE_RN, - 1 as CITY_RN, - 'CHC(Quarterly)' as DATA_SOURCE -from dwd.dwd_gnd_ext_chc_geo t1 -left join dm.dm_ims_td_geo t2 -on t1.city_e = t2.CITY - --- COMMAND ---------- - --- DBTITLE 1,EC -CREATE OR REPLACE TEMPORARY VIEW V_EC_GEO -AS -select - audit_cod, - city_e as CITY, - CASE WHEN t1.CITY_C IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' ELSE t1.CITY_C END CITY_C, - 'Province' as CITY_TYPE, - '0' as CITY_TIER, - '0' as AZ_CITY_TIER, - province_e as PROVINCE, - CASE WHEN t1.PROVINCE_C IN ('Other Low Tiers','OTHER LOW TIERS') THEN 'ROC' when t1.PROVINCE_C = '福厦泉' then '福建' ELSE t1.PROVINCE_C END PROVINCE_C, - 'National' as PROVINCE_CODE, - '' as CITY_MAP, - '全国' as PROVINCE_MAP, - 'National' as REGION_CENTER, - 1 as PROVINCE_RN, - 1 AS CITY_RN, - 'EC(Monthly)' as DATA_SOURCE -from dm.dm_zk_ec_geo T1 - --- COMMAND ---------- - --- DBTITLE 1,XIE HE -create or replace temporary view V_xiehe_geo -as -with --- 计算 province, city 的rank -xiehe_sales( - select - city - ,province - ,yyyymm - ,sum(sales_value) sales_value - from dm.dm_ext_xiehe_sales - group by 1,2,3 -) -,thisyear ( - select - city - ,province - ,sum(sales_value) sales_value - from xiehe_sales a - left join (select LEFT(MAX(YYYYMM), 4) * 100 + 1 as start_ym,MAX(YYYYMM) as end_ym from xiehe_sales) b - where yyyymm>=b.start_ym and yyyymm <=b.end_ym - group by 1,2 -) -,otheryear ( - select - city - ,province - ,sum(sales_value) sales_value - from xiehe_sales a - left join (select LEFT(MAX(YYYYMM), 4) * 100 + 1 as start_ym from xiehe_sales) b - where yyyymm<=start_ym and concat(a.city,a.province) not in (select concat(city,province) from thisyear) - group by 1,2 -) ---city 部分的排序,考虑不在今年范围内的机构排序 -,city_rn ( -select - city - ,province - ,row_number() over( order by sales_value) CITY_RN -from thisyear -union all -select - city - ,province - ,(row_number() over( order by sales_value) + b.this_c) CITY_RN -from otheryear a -left join (select count(1) this_c from thisyear) b -) ---province部分的排序,考虑不在今年范围内的机构排序 -,province_rn ( -select - province - ,row_number() over( order by sum(sales_value)) PROVINCE_RN -from thisyear -group by 1 -union all -select - province - ,(row_number() over( order by sum(sales_value)) + b.this_c) PROVINCE_RN -from otheryear a -left join (select count(distinct province) this_c from thisyear) b -group by province,b.this_c -) - -SELECT - A.AUDIT_COD, - A.CITY, - A.CITY_C, - A.city_type, - A.AZ_City_tier city_tier, - AZ_City_tier, - A.PROVINCE, - A.PROVINCE_C, - NVL(A.PROVINCE_CODE, A.AUDIT_COD) PROVINCE_CODE, - A.CITY_MAP, - A.PROVINCE_MAP, - A.REGION_CENTER, - CASE WHEN B.CITY_RN is null then 60+ row_number() over( order by a.CITY) else B.CITY_RN end as CITY_RN, - CASE WHEN C.PROVINCE_RN is null then 40+ row_number() over( order by a.PROVINCE) else C.PROVINCE_RN end as PROVINCE_RN, - 'XH Data(Quarterly)' DATA_SOURCE -FROM - dm.dm_ext_xiehe_geo A -LEFT JOIN city_rn B ON B.city = A.city_c -LEFT JOIN province_rn C ON C.province = A.province_c - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## RESULT - --- COMMAND ---------- - -INSERT OVERWRITE dm.dm_td_external_geo_temp ( - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -) -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_CHPA_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_CHC_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_RETAIL_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_DTP_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_THC_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_EC_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_xiehe_geo -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_COUNTY_GEO -UNION ALL -SELECT - AUDIT_COD, - CITY, - CITY_C, - CITY_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - PROVINCE_CODE, - CITY_MAP, - PROVINCE_MAP, - REGION_CENTER, - PROVINCE_RN, - CITY_RN, - DATA_SOURCE -FROM - V_AIA_GEO - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # TEMPORARY VIEW dm_td_external_geo_type_temp - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 各数据源逻辑 - --- COMMAND ---------- - --- DBTITLE 1,CHPA --------------------------------------------------CHPA 城--------------------------------------------------------------- -CREATE OR REPLACE TEMPORARY VIEW CHPA_geo_type_temp -AS -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - CASE - WHEN - A.PROVINCE_C IN ( - 'BBU_OtherProv', 'OBU_OtherProv', 'Others', 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL - THEN - 'ROC' - ELSE A.PROVINCE_C - END PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - NVL( - A.CITY_C, - CASE - WHEN - A.PROVINCE_C IN ( - 'BBU_OtherProv', 'OBU_OtherProv', 'Others', 'ROC', 'Other Low Tiers', 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL - THEN - 'ROC' - ELSE A.CITY_C - END - ) CITY_C, - A.AZ_CITY_TIER, - 3 RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN DM.dm_tf_external_sales B - ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.AUDIT_COD -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' PROVINCE_C, - A.REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.dm_tf_external_sales A -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.dm_tf_external_sales A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b - on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - ) C - ON C.AUDIT_COD = a.AUDIT_COD -WHERE - A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,county_mapping -CREATE OR REPLACE TEMPORARY VIEW county_mapping -AS -SELECT 'bbu_bu_county_obu_East5' as original_name,'BBU_BU_COUNTY' as display_name -union ALL -SELECT 'bbu_bu_county_obu_East5' as original_name,'OBU East5' as display_name -union ALL -SELECT 'bbu_bu_county_obu_nonEast5' as original_name,'BBU_BU_COUNTY' as display_name -union ALL -SELECT 'bbu_bu_county_obu_nonEast5' as original_name,'OBU NonEast5' as display_name -union ALL -SELECT 'bbu_county_obu_nonEast5' as original_name,'BBU County' as display_name -union ALL -SELECT 'bbu_county_obu_nonEast5' as original_name,'OBU NonEast5' as display_name - --- COMMAND ---------- - --- DBTITLE 1,COUNTY -------------------------------------------------COUNTY 省------------------------------------------------------------ -CREATE OR REPLACE TEMPORARY VIEW COUNTY_geo_type_temp -AS -SELECT - DATA_SOURCE, - AUDIT_COD, - PACK_COD, - PROVINCE_C, - REGION_TYPE, - PROVINCE_MAP, - CITY_C, - AZ_CITY_TIER, - RN -FROM - ( - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - --,'OBU_BU_County','OBU County','OBU_BU_COUNTY','OBU COUNTY' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END PROVINCE_C, - NVL (B.REGION_TYPE, '') as REGION_TYPE, - A.PROVINCE_MAP, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'OTHER LOW TIERS', - 'Other Low Tiers' --,'OBU_BU_County','OBU County','OBU_BU_COUNTY','OBU COUNTY' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END CITY_C, - NULL AZ_CITY_TIER, - 3 RN - FROM - DM.dm_ims_td_county_geo A - INNER JOIN DM.dm_ext_county_tf_sales_region B ON A.REGION_COD = B.REGION_COD - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN - FROM - DM.dm_ext_county_tf_sales_region A - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - COALESCE(f1.display_name, A.REGION_TYPE, '') PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '' PROVINCE_MAP, - COALESCE(f1.display_name, A.REGION_TYPE, '') CITY_C, - NULL AZ_CITY_TIER, - 2 RN - FROM - DM.dm_ext_county_tf_sales_region A - left join county_mapping f1 on A.REGION_TYPE = f1.original_name - WHERE - A.REGION_TYPE IS NOT NULL - UNION ALL - SELECT DISTINCT - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - C.ProvinceGroup PROVINCE_C, - NVL (A.REGION_TYPE, '') REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN - FROM - DM.dm_ext_county_tf_sales_region A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - AND upper(A.ProvinceGroup) NOT IN ( - 'OBU EAST5', - 'BBU County', - 'BBU_BU_COUNTY', - 'OBU NONEAST5' - ) - ) C ON C.AUDIT_COD = a.AUDIT_COD - ) T -WHERE - T.PROVINCE_C <> 'Other Low Tiers' - --- COMMAND ---------- - --- DBTITLE 1,RETAIL -------------------------------------------------RETAIL 省------------------------------------------------------------ ----,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -CREATE OR REPLACE TEMPORARY VIEW RETAIL_geo_type_temp -AS -SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code PACK_COD, - CASE - WHEN A.province_city IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.province_city IS NULL THEN 'ROC' - WHEN A.province_city = '福厦泉' THEN '福建' - ELSE A.province_city - END PROVINCE_C, - '' REGION_TYPE, - C.PROVINCE_MAP, - CASE - WHEN A.province_city IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.province_city IS NULL THEN 'ROC' - WHEN A.province_city = '福厦泉' THEN '福建' - ELSE A.province_city - END CITY_C, - NULL AZ_CITY_TIER, - 3 RN -FROM - DM.dm_zk_retail_sales A - LEFT JOIN DM.dm_zk_retail_geo C ON A.AUDIT_COD = C.geo_key -UNION ALL -SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code PACK_COD, - '全国' PROVINCE_C, - '' REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.dm_zk_retail_sales A -UNION ALL -SELECT DISTINCT - 'Retail(Quarterly)' DATA_SOURCE, - A.AUDIT_COD, - A.iqvia_pack_code, - c.ProvinceGroup PROVINCE_C, - '' REGION_TYPE, - '' PROVINCE_MAP, - c.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.dm_zk_retail_sales A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'Retail(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_COD - --DTP -UNION all -select - 'DTP(Quarterly)' DATA_SOURCE, - AUDIT_COD, - PACK_COD, - C.province_city, - '' REGION_TYPE, - C.province_map, - C.province_city CITY_C, - NULL AZ_CITY_TIER, - 3 RN -from - ( - select - iqvia_pack_code PACK_COD, - case - when AUDIT_COD = 'CHT' then 'ROC' - else AUDIT_COD - end AUDIT_COD - from - dm.dm_zk_retail_dtp_sales a - group by - 1, - 2 - ) A - LEFT JOIN DM.dm_zk_retail_geo C ON A.AUDIT_COD = C.geo_key - --- COMMAND ---------- - --- DBTITLE 1,THC -CREATE OR REPLACE TEMPORARY VIEW THC_geo_type_temp -AS -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - dm.dm_tf_external_sales A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.city = b.province_c - or a.province = b.province_c - ) - WHERE - B.CITY_TYPE = 'Province' - and b.DATA_SOURCE = 'THC(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_COD -WHERE - A.DATA_SOURCE = 'THC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - A.PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - A.CITY_C, - A.AZ_CITY_TIER, - 3 as RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN ( - --补充所有的geo维度,保证全国的数据和省份的数据都有对应的维度。 - select - PACK_COD, - REGION_TYPE, - DATA_SOURCE, - AUDIT_COD - from - dm.dm_tf_external_sales - WHERE - DATA_SOURCE = 'THC(Quarterly)' - union - select - PACK_COD, - '' REGION_TYPE, - 'THC(Quarterly)' DATA_SOURCE, - AUDIT_COD - from - dm.dm_tf_external_sales_thc - -- - ) B ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.AUDIT_COD -WHERE - A.DATA_SOURCE = 'THC(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,AIA -------------------------------------------------AIA------------------------------------------------------------ -CREATE OR REPLACE TEMPORARY VIEW AIA_geo_type_temp -AS -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' as PROVINCE_C, - A.REGION_TYPE, - '全国' as PROVINCE_MAP, - '全国' as CITY_C, - NULL as AZ_CITY_TIER, - 1 as RN -from - dm.dm_tf_external_sales A -where - A.DATA_SOURCE = 'AIA(Monthly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - B.ProvinceGroup as PROVINCE_C, - A.REGION_TYPE, - '' as PROVINCE_MAP, - B.ProvinceGroup as CITY_C, - null as AZ_CITY_TIER, - 2 as RN -from - dm.dm_tf_external_sales A - inner join ( - select - t1.ProvinceGroup, - t2.AUDIT_COD - from - dwd.dwd_gnd_province_group_city t1 - inner join dm.dm_td_external_geo_temp t2 on t1.AUDIT_CD = t2.AUDIT_COD - or t1.AUDIT_CD = t2.PROVINCE_CODE - WHERE - t2.CITY_TYPE = 'City' - and t2.DATA_SOURCE = 'AIA(Monthly)' - ) B ON A.AUDIT_COD = B.AUDIT_COD -WHERE - A.DATA_SOURCE = 'AIA(Monthly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - case - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL then 'ROC' - else A.PROVINCE_C - END as PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - case - when A.CITY_C is not null then A.CITY_C - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL THEN 'ROC' - else A.PROVINCE_C - END as CITY_C, - A.AZ_CITY_TIER, - 3 as RN -from - dm.dm_td_external_geo_temp A - inner join dm.dm_tf_external_sales B on A.DATA_SOURCE = B.DATA_SOURCE - and A.AUDIT_COD = B.AUDIT_COD -where - A.DATA_SOURCE = 'AIA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,CHC --------------------------------------------------CHC城--------------------------------------------------------------- -CREATE OR REPLACE TEMPORARY VIEW CHC_geo_type_temp -AS -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - NVL ( - A.CITY_C, - CASE - WHEN A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - OR A.PROVINCE_C IS NULL THEN 'ROC' - ELSE A.PROVINCE_C - END - ) CITY_C, - A.AZ_CITY_TIER, - 3 RN -FROM - DM.dm_td_external_geo_temp A - INNER JOIN DM.dm_tf_external_sales B ON A.DATA_SOURCE = B.DATA_SOURCE - AND A.AUDIT_COD = B.AUDIT_COD -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' PROVINCE_C, - A.REGION_TYPE, - '全国' PROVINCE_MAP, - '全国' CITY_C, - NULL AZ_CITY_TIER, - 1 RN -FROM - DM.dm_tf_external_sales A -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' -UNION ALL -SELECT DISTINCT - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - C.ProvinceGroup PROVINCE_C, - A.REGION_TYPE, - '' PROVINCE_MAP, - C.ProvinceGroup CITY_C, - NULL AZ_CITY_TIER, - 2 RN -FROM - DM.dm_tf_external_sales A - INNER JOIN ( - select - a.ProvinceGroup, - b.AUDIT_COD - from - dwd.dwd_gnd_province_group_city a - inner join dm.dm_td_external_geo_temp b on ( - a.AUDIT_CD = b.AUDIT_COD - or a.AUDIT_CD = b.PROVINCE_CODE - ) - WHERE - B.CITY_TYPE = 'City' - and b.DATA_SOURCE = 'CHC(Quarterly)' - ) C ON C.AUDIT_COD = a.AUDIT_COD -WHERE - A.DATA_SOURCE = 'CHC(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,EC ----------------------------------------------------EC 全国--------------------------------------------------- -CREATE OR REPLACE TEMPORARY VIEW EC_geo_type_temp -AS -select distinct - a.DATA_SOURCE, - a.AUDIT_COD, - b.PACK_COD, - a.PROVINCE_C, - b.REGION_TYPE, - a.PROVINCE_MAP, - a.CITY_C, - a.AZ_CITY_TIER, - 1 RN -from - dm.dm_td_external_geo_temp a - left join dm.dm_tf_external_sales b on a.audit_cod = b.AUDIT_COD -where - a.DATA_SOURCE = 'EC(Monthly)' - and b.DATA_SOURCE = 'EC(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,XIE HE ------------------------------------------------XIEHE------------------- -CREATE OR REPLACE TEMPORARY VIEW XH_geo_type_temp -AS -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - A.PACK_COD, - '全国' as PROVINCE_C, - A.REGION_TYPE, - '全国' as PROVINCE_MAP, - '全国' as CITY_C, - NULL as AZ_CITY_TIER, - 1 as RN -from - dm.dm_tf_external_sales A -where - A.DATA_SOURCE = 'XH Data(Quarterly)' -union all -select distinct - A.DATA_SOURCE, - A.AUDIT_COD, - B.PACK_COD, - case - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL then 'ROC' - else A.PROVINCE_C - END as PROVINCE_C, - B.REGION_TYPE, - A.PROVINCE_MAP, - case - when A.CITY_C is not null then A.CITY_C - when A.PROVINCE_C IN ( - 'BBU_OtherProv', - 'OBU_OtherProv', - 'Others', - 'ROC', - 'Other Low Tiers', - 'OTHER LOW TIERS' - ) - or A.PROVINCE_C IS NULL THEN 'ROC' - else A.PROVINCE_C - END as CITY_C, - A.AZ_CITY_TIER, - 3 as RN -from - dm.dm_td_external_geo_temp A - inner join dm.dm_tf_external_sales B on A.DATA_SOURCE = B.DATA_SOURCE - and A.AUDIT_COD = B.AUDIT_COD -where - A.DATA_SOURCE = 'XH Data(Quarterly)' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## RESULT - --- COMMAND ---------- - --- -----------------------此处需要注意,若源头数据只有全国,需要转化成ROC,否则下面的sql脚本跑出来的数据全国是错误的。--------------------------------------------- --- insert overwrite dm.dm_td_external_geo_type_temp( --- DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN --- ) -create or replace temporary view dm_td_external_geo_type_temp -as -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -CHPA_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -COUNTY_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -RETAIL_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -THC_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -AIA_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -CHC_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -EC_geo_type_temp -union all -select -DATA_SOURCE,AUDIT_COD,PACK_COD,PROVINCE_C,REGION_TYPE,PROVINCE_MAP,CITY_C,AZ_CITY_TIER,RN -from -XH_geo_type_temp - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # dm.dm_td_external_geo - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 各临时表 - --- COMMAND ---------- - --- DBTITLE 1,pmt --- --省长信息 --- pmt as ( --- select distinct area_name,area_head_name --- from dm.dm_pmt_td_area_head --- where rmt_pmt = 'PMT' --- ) ---pmt_region -create or replace temporary view pmt -as -select distinct PROVINCE_CODE,province_name,AREA_NAME_EN -from dm.dm_td_geography -where PROVINCE_CODE <> '' - --- COMMAND ---------- - --- DBTITLE 1,TEMP -create or replace temporary view TEMP -as - SELECT - DISTINCT t1.DATA_SOURCE, - t1.AUDIT_COD, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_C - END PROVINCE_C, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_MAP - END PROVINCE_MAP, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.CITY_C - END CITY_C, - CASE - WHEN t1.AUDIT_COD NOT IN ('CHT', 'ROC') THEN t1.AZ_CITY_TIER - END AZ_CITY_TIER, - t1.REGION_TYPE, - t1.AUDIT_COD as inst_code, - NVL(t2.inst_name,'') as inst_name, - NVL(t3.PROVINCE_CODE,'') as PROVINCE_CODE, - NVL(t4.AUDIT_COD,'') as CITY_CODE, - NVL(t2.county_name,'') as county_name, - NVL(t2.county_tier_desc,'') as county_tier, - -- NVL(t5.area_head_name,'') as pmt_region, - NVL(t5.AREA_NAME_EN,'') as pmt_region, - NVL(t2.inst_sub_type,'') as inst_sub_type, - NVL(t2.ins_level,'') as ins_level - FROM - dm_td_external_geo_type_temp t1 - left join (select distinct inst_code,inst_name,province_name,city_name,county_name,city_tier_desc,county_tier_desc,inst_sub_type,org_level_desc as ins_level, - case when city_name = '深圳市' then '深圳' else province_name end as pmt_key from dm.dm_td_institution) t2 - on t1.AUDIT_COD = t2.inst_code - left join dm.dm_td_external_geo_temp t3 - on t1.AUDIT_COD = t3.AUDIT_COD - and t1.DATA_SOURCE = t3.DATA_SOURCE - left join dm.dm_ims_td_geo t4 - on t1.CITY_C = t4.CITY_C - left join pmt t5 - -- on t2.pmt_key = t5.area_name - on t3.PROVINCE_CODE = t5.PROVINCE_CODE - where t1.DATA_SOURCE = 'AIA(Monthly)' - union all - SELECT - DISTINCT t1.DATA_SOURCE, - t1.AUDIT_COD, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_C - END PROVINCE_C, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.PROVINCE_MAP - END PROVINCE_MAP, - CASE - WHEN t1.AUDIT_COD IN ('CHT', 'ROC') THEN 'ROC' - ELSE t1.CITY_C - END CITY_C, - CASE - WHEN t1.AUDIT_COD NOT IN ('CHT', 'ROC') THEN t1.AZ_CITY_TIER - END AZ_CITY_TIER, - t1.REGION_TYPE, - '' as inst_code, - '' as inst_name, - NVL(t3.PROVINCE_CODE,'') as PROVINCE_CODE, - NVL(t4.AUDIT_COD,'') as CITY_CODE, - '' as county_name, - '' as county_tier, - NVL(t5.AREA_NAME_EN,'') as pmt_region, - '' as inst_sub_type, - '' as ins_level - FROM - dm_td_external_geo_type_temp t1 - left join dm.dm_td_external_geo_temp t3 - on t1.AUDIT_COD = t3.AUDIT_COD - and t1.DATA_SOURCE = t3.DATA_SOURCE - left join dm.dm_ims_td_geo t4 - on t1.CITY_C = t4.CITY_C - left join pmt t5 - on t1.PROVINCE_C = t5.province_name - where t1.DATA_SOURCE <> 'AIA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,province_sales -create or replace temporary view province_sales -as - SELECT - A.PROVINCE_C, - SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL - FROM - TEMP A - INNER JOIN DM.DM_TF_EXTERNAL_SALES B ON A.AUDIT_COD = B.AUDIT_COD - AND A.DATA_SOURCE = B.DATA_SOURCE - AND A.REGION_TYPE = B.REGION_TYPE - and A.DATA_SOURCE = B.DATA_SOURCE - WHERE - B.YYYYMM >= ( - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - DM.DM_TF_EXTERNAL_SALES - WHERE - DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - ) - AND B.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - GROUP BY - A.PROVINCE_C - - --- COMMAND ---------- - --- DBTITLE 1,Province_N -create or replace temporary view Province_N -as - SELECT - PROVINCE_C, - row_number() OVER( - PARTITION BY 1 - ORDER BY - ( - CASE - WHEN PROVINCE_C = 'ROC' THEN 2 - ELSE 1 - END - ) ASC, - SALES_VALUE_CAL DESC - ) RN_PROV - FROM - province_sales - - --- COMMAND ---------- - --- DBTITLE 1,city_sales -create or replace temporary view city_sales -as - SELECT - A.CITY_C, - SUM(B.SALES_VALUE_CAL) SALES_VALUE_CAL - FROM - TEMP A - INNER JOIN DM.DM_TF_EXTERNAL_SALES B ON A.AUDIT_COD = B.AUDIT_COD - AND A.DATA_SOURCE = B.DATA_SOURCE - AND A.REGION_TYPE = B.REGION_TYPE - and A.DATA_SOURCE = B.DATA_SOURCE - WHERE - B.YYYYMM >= ( - SELECT - LEFT(MAX(YYYYMM), 4) * 100 + 1 - FROM - DM.DM_TF_EXTERNAL_SALES - WHERE - DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - ) - AND B.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - GROUP BY - A.CITY_C - --- COMMAND ---------- - --- DBTITLE 1,city_N -create or replace temporary view city_N -as - SELECT - CITY_C, - row_number() OVER( - PARTITION BY 1 - ORDER BY - ( - CASE - WHEN CITY_C = 'ROC' THEN 2 - ELSE 1 - END - ) ASC, - SALES_VALUE_CAL DESC - ) RN_CITY - FROM - city_sales - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## RESULT - --- COMMAND ---------- - --------------------------------------------------------------------------------- ---修改时间:20241025 ---修改人:Fanxujia ---修改内容: ---外部数据报告优化,将PBI的逻辑搬到DBR --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- ---修改时间:20241105 ---修改人:Fanxujia ---修改内容: ---for AIA Dashboard:增加county、pmt_region等字段 --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- ---修改时间:20241209 ---修改人:Fanxujia ---修改内容: ---其他渠道仿照AIA Dashboard增加一个pmt_region字段 --------------------------------------------------------------------------------- -insert overwrite table dm.dm_td_external_geo -( -DATA_SOURCE, -AUDIT_COD, -REGION_TYPE, -PROVINCE_C, -CITY_C, -AZ_CITY_TIER, -PROV_RN, -CITY_RN, -PROVINCE_MAP, -inst_code, -inst_name, -PROVINCE_CODE, -CITY_CODE, -county_name, -county_tier, -pmt_region, -inst_sub_type, -ins_level -) -SELECT - A.DATA_SOURCE, - A.AUDIT_COD, - A.REGION_TYPE, - CASE - WHEN A.DATA_SOURCE = 'EC(Monthly)' THEN '全国' - WHEN A.DATA_SOURCE = 'THC(Quarterly)' AND A.AUDIT_COD = 'CHT' THEN '全国' - ELSE MAX(A.PROVINCE_C) - END PROVINCE_C, - CASE - WHEN A.DATA_SOURCE = 'EC(Monthly)' THEN '全国' - WHEN A.DATA_SOURCE = 'THC(Quarterly)' AND A.AUDIT_COD = 'CHT' THEN '全国' - ELSE MAX(A.CITY_C) - END CITY_C, - MAX(A.AZ_CITY_TIER) AZ_CITY_TIER, - NVL(MAX(PN.RN_PROV), 999) PROV_RN, - NVL(MAX(CN.RN_CITY), 999) CITY_RN, - case when A.DATA_SOURCE = 'THC(Quarterly)' AND A.AUDIT_COD = 'CHT' then '全国' - else MAX(A.PROVINCE_MAP) - end as PROVINCE_MAP, - A.inst_code, - A.inst_name, - case when A.AUDIT_COD = 'CHT' and A.PROVINCE_CODE = '' then 'CHT' else A.PROVINCE_CODE end as PROVINCE_CODE, - case when A.AUDIT_COD = 'CHT' and A.CITY_CODE = '' then 'CHT' - when A.AUDIT_COD <> A.PROVINCE_CODE and A.AUDIT_COD <> A.CITY_CODE and A.AUDIT_COD <> A.inst_code and A.CITY_CODE = '' then A.AUDIT_COD - else A.CITY_CODE - end as CITY_CODE, - A.county_name, - A.county_tier, - A.pmt_region, - A.inst_sub_type, - A.ins_level -FROM - TEMP A - LEFT JOIN Province_N PN ON A.PROVINCE_C = PN.PROVINCE_C - LEFT JOIN city_N CN ON A.CITY_C = CN.CITY_C -WHERE - A.PROVINCE_C NOT IN ( - SELECT - DISTINCT provincegroup - FROM - DWD.dwd_gnd_province_group_city - UNION ALL - SELECT - '全国' - UNION ALL - SELECT - 'BBU_BU_COUNTY' - ) - GROUP BY A.AUDIT_COD,A.REGION_TYPE,A.DATA_SOURCE,10,11,12,13,14,15,16,17,18 - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # dm.dm_td_external_geo_type - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 各临时表 - --- COMMAND ---------- - --- DBTITLE 1,TEMP -create or replace temporary view TEMP -as - SELECT - DISTINCT DATA_SOURCE, - AUDIT_COD, - PROVINCE_C, - PROVINCE_MAP, - CITY_C, - AZ_CITY_TIER, - RN, - REGION_TYPE, - CASE - WHEN PROVINCE_C <> 'Other Low Tiers' - AND ( - DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - OR ( - DATA_SOURCE <> 'IQVIA-COUNTY(Quarterly)' - AND PROVINCE_C NOT IN ( - 'BBU_BU_COUNTY', - 'OBU_BU_COUNTY', - 'OBU COUNTY', - 'BBU COUNTY' - ) - ) - ) THEN 1 - ELSE 0 - END GEO_FLAG - FROM - dm_td_external_geo_type_temp - WHERE - PROVINCE_C <> 'ROC' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## RESULT - --- COMMAND ---------- - --------------------------------------------------------------------------------- ---修改时间:20241025 ---修改人:Fanxujia ---修改内容: ---外部数据报告优化,将PBI的逻辑搬到DBR --------------------------------------------------------------------------------- -insert overwrite table dm.dm_td_external_geo_type -( -DATA_SOURCE, -AUDIT_COD, -REGION_TYPE, -PROVINCE_GROUP -) -SELECT - DISTINCT DATA_SOURCE, - AUDIT_COD, - REGION_TYPE, - A.PROVINCE_C PROVINCE_GROUP -FROM - TEMP A -WHERE - A.PROVINCE_C IN ( - SELECT - DISTINCT provincegroup - FROM - DWD.dwd_gnd_province_group_city - UNION ALL - SELECT - '全国' - ) \ No newline at end of file diff --git a/EXTERNAL/09 dm_td_external_geo_type.sql:Zone.Identifier b/EXTERNAL/09 dm_td_external_geo_type.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/09 dm_td_external_geo_type.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql b/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql deleted file mode 100644 index 2f8159f..0000000 --- a/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql +++ /dev/null @@ -1,380 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET ( --- MARKET STRING, --- DATA_SOURCE STRING, --- TA STRING, --- AZ_RELATED STRING, --- MARKET_DESC STRING, --- TA_RN INT, --- PRD_FLAG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market'; - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET_TA ( --- MARKET STRING COMMENT '市场', --- DATA_SOURCE STRING COMMENT '数据源', --- TA STRING COMMENT '治疗领域', --- TA_MAP STRING COMMENT '治疗领域匹配', --- TA_RN INT COMMENT '治疗领域排名', --- MARKET_DESC STRING COMMENT '市场描述', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_ta'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_ta'; - --- COMMAND ---------- - --- DBTITLE 1,pbi页面展示ta标签 --- create or replace table tmp.tmp_td_ext_unionall_market_ta_mapping --- ( --- market string, --- ta string, --- data_source string); --- INSERT OVERWRITE tmp.tmp_td_ext_unionall_market_ta_mapping (market, ta, data_source) VALUES --- ('CVRM Market', 'CVRM', 'EC(Monthly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'DM', 'EC(Monthly)'), --- ('GI Market', 'GI', 'EC(Monthly)'), --- ('RE Market', 'RE', 'EC(Monthly)'), --- ('ATTR_EPL', 'CV', 'DTP(Quarterly)'), --- ('ONC Market', 'ONCO', 'DTP(Quarterly)'), --- ('RARE Market', 'RARE', 'DTP(Quarterly)'), --- ('RE Market', 'RE', 'Retail(Quarterly)'), --- ('CV Market', 'CV', 'Retail(Quarterly)'), --- ('CVRM Market', 'CVRM', 'Retail(Quarterly)'), --- ('RD Market', 'RD', 'Retail(Quarterly)'), --- ('GI Market', 'GI', 'Retail(Quarterly)'), --- ('DM Market', 'DM', 'THC(Quarterly)'), --- ('GI Market', 'GI', 'THC(Quarterly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'THC(Quarterly)'), --- ('RE Market', 'RE', 'THC(Quarterly)'), --- ('ONC Market', 'ONCO', 'THC(Quarterly)'), --- ('CV Market', 'CV', 'THC(Quarterly)'), --- ('RE Market', 'RE', 'XH Data(Quarterly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'XH Data(Quarterly)'), --- ('RD Market', 'RD', 'XH Data(Quarterly)'), --- ('DM Market', 'DM', 'XH Data(Quarterly)'), --- ('ONC Market', 'ONCO', 'XH Data(Quarterly)'), --- ('RARE Market', 'RARE', 'XH Data(Quarterly)'), --- ('CV Market', 'CV', 'XH Data(Quarterly)'), --- ('DM Market', 'DM', 'IQVIA-COUNTY(Quarterly)'), --- ('ONC Market', 'ONCO', 'IQVIA-COUNTY(Quarterly)'), --- ('GI Market', 'GI', 'IQVIA-COUNTY(Quarterly)'), --- ('RE Market', 'RE', 'IQVIA-COUNTY(Quarterly)'), --- ('CV Market', 'CV', 'IQVIA-COUNTY(Quarterly)'), --- ('RARE Market', 'RARE', 'IQVIA-COUNTY(Quarterly)'), --- ('RD Market', 'RD', 'IQVIA-COUNTY(Quarterly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'IQVIA-COUNTY(Quarterly)'), --- ('ONC Market', 'ONCO', 'IQVIA-CHPA(Monthly)'), --- ('RE Market', 'RE', 'IQVIA-CHPA(Monthly)'), --- ('RD Market', 'RD', 'IQVIA-CHPA(Monthly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'IQVIA-CHPA(Monthly)'), --- ('RARE Market', 'RARE', 'IQVIA-CHPA(Monthly)'), --- ('DM Market', 'DM', 'IQVIA-CHPA(Monthly)'), --- ('GI Market', 'GI', 'IQVIA-CHPA(Monthly)'), --- ('CV Market', 'CV', 'IQVIA-CHPA(Monthly)'), --- ('DM Market', 'DM', 'AIA(Monthly)'), --- ('CV Market', 'CV', 'AIA(Monthly)'), --- ('GI Market', 'GI', 'AIA(Monthly)'), --- ('RE Market', 'RE', 'AIA(Monthly)'), --- ('RARE Market', 'RARE', 'AIA(Monthly)'), --- ('ONC Market', 'ONCO', 'AIA(Monthly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'AIA(Monthly)'), --- ('RD Market', 'RD', 'AIA(Monthly)'), --- ('GI Market', 'GI', 'CHC(Quarterly)'), --- ('DM Market', 'DM', 'CHC(Quarterly)'), --- ('RE Market', 'RE', 'CHC(Quarterly)'), --- ('CV Market', 'CV', 'CHC(Quarterly)'), --- ('NIAD (Non-Insulin Anti-Diabetic) Market', 'NIAD', 'CHC(Quarterly)'); - --- COMMAND ---------- - --- DBTITLE 1,藏数逻辑标签 --- -- 建表 --- CREATE TABLE IF NOT EXISTS tmp.tmp_td_ext_market_hide_flag ( --- data_source VARCHAR(20), --- market VARCHAR(100), --- flag VARCHAR(1) --- ); - --- -- 插入数据(对应 case when 中返回 '1' 的规则) --- INSERT overwrite tmp.tmp_td_ext_market_hide_flag (data_source, market, flag) VALUES --- -- Retail(Quarterly) 部分 --- ('Retail(Quarterly)', 'Antacid anti GI swelling agent+PPI Oral', '1'), --- ('Retail(Quarterly)', 'HTN Market', '1'), --- ('Retail(Quarterly)', 'NIAD (Non-Insulin Anti-Diabetic) Market', '1'), --- ('Retail(Quarterly)', 'Respules Market', '1'), --- ('Retail(Quarterly)', 'Statin+XZK Market', '1'), --- ('Retail(Quarterly)', 'BUDESONIDE Market', '1'), --- ('Retail(Quarterly)', 'Rosuvastatin Market', '1'), --- ('Retail(Quarterly)', 'Atorvastatin Market', '1'), --- ('Retail(Quarterly)', 'Metoprolol Succinate Market', '1'), --- ('Retail(Quarterly)', 'PPI Oral ESOMEPRAZOLE Market', '1'), --- ('Retail(Quarterly)', 'PPI Oral OMEPRAZOLE Market', '1'), --- ('Retail(Quarterly)', 'Inhaled Extended Market', '1'), --- ('Retail(Quarterly)', 'Non-Omeprazole', '1'), --- ('Retail(Quarterly)', 'Metoprolol Tartrate Market', '1'), --- ('Retail(Quarterly)', 'Pediatric Cough Market', '1'), --- ('Retail(Quarterly)', 'Anti-HER2 Market', '1'), --- ('Retail(Quarterly)', 'Anti-HER2 mBC Market', '1'), --- ('Retail(Quarterly)', 'Fasenra Market', '1'), --- ('Retail(Quarterly)', 'Severe Asthma', '1'), --- ('Retail(Quarterly)', 'DAPA Market', '1'), - --- -- DTP(Quarterly) 部分 --- ('DTP(Quarterly)', 'EGFR TKI Market', '1'), --- ('DTP(Quarterly)', 'Anti-HER2 Market', '1'), --- ('DTP(Quarterly)', 'Anti-HER2 mBC Market', '1'), --- ('DTP(Quarterly)', 'Fasenra/Tezspire Related Market', '1'), --- ('DTP(Quarterly)', 'Severe Asthma', '1'), --- ('DTP(Quarterly)', 'Tezspire CRSwNP Market', '1'), --- ('DTP(Quarterly)', 'CRSwNP Market', '1'), --- ('DTP(Quarterly)', 'PAM Market', '1'); - --- COMMAND ---------- - --- ============================================================ --- 目标表:dm.dm_td_ext_unionall_market --- 功能:整合各数据源的市场、TA、AZ关联、产品标志等维度信息 --- 调度:全量覆盖写入(INSERT OVERWRITE) --- 作者/更新:chenwu --- ============================================================ -INSERT OVERWRITE dm.dm_td_ext_unionall_market ( - MARKET, DATA_SOURCE, TA, AZ_RELATED, MARKET_DESC, TA_RN, PRD_FLAG, ETL_INSERT_DT, ETL_UPDATE_DT -) - -WITH - --- ------------------------------------------------------------ --- market_info:从包映射表取市场-数据源组合,关联竞品表补充市场描述 --- 用 MAX(MARKET_DESC) 避免一对多 JOIN 导致重复行 --- ------------------------------------------------------------ -market_info AS ( - SELECT - t1.MARKET, - t1.DATASOURCE AS DATA_SOURCE, - MAX(t2.MARKETDESC) AS MARKET_DESC - FROM dm.dm_td_ext_unionall_market_pack_mapping t1 - LEFT JOIN dm.dm_td_external_keycompatitor t2 - ON t1.MARKET = t2.MARKET - GROUP BY 1, 2 -), - --- ------------------------------------------------------------ --- TA_info:从市场属性表取市场-TA-排序,过滤占位行(MARKET_ORDER=999) --- 末尾 UNION ALL 补充"ALL Market"汇总行 --- 改用 SELECT DISTINCT 替代无聚合的 GROUP BY --- ------------------------------------------------------------ -TA_info AS ( - SELECT DISTINCT - MARKET, - TA, - TA_ORDER - FROM DM.DM_IMS_TD_MARKET_PROPERTY - WHERE MARKET_ORDER <> 999 - - UNION ALL - - SELECT - 'ALL Market' AS MARKET, - 'ALL' AS TA, - -1 AS TA_ORDER -), - --- ------------------------------------------------------------ --- AZ_RELATED_info:从临时映射表取市场-数据源-AZ关联关系(已去重) --- ------------------------------------------------------------ -AZ_RELATED_info AS ( - SELECT DISTINCT - MARKET, - TA AS AZ_RELATED, - DATA_SOURCE - FROM tmp.tmp_td_ext_unionall_market_ta_mapping -) - --- ------------------------------------------------------------ --- 主查询:以 market_info 为驱动表,依次关联 TA、AZ关联、隐藏标志 --- hide_flag 为小维表,添加 BROADCAST hint 避免 shuffle --- PRD_FLAG=1 表示市场在隐藏标志表中存在(需隐藏/特殊处理) --- ------------------------------------------------------------ -SELECT /*+ BROADCAST(t4) */ -DISTINCT - t1.MARKET, - t1.DATA_SOURCE, - t2.TA, - t3.AZ_RELATED, - t1.MARKET_DESC, - t2.TA_ORDER AS TA_RN, - IF(t4.MARKET IS NULL, 0, 1) AS PRD_FLAG, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM market_info t1 -LEFT JOIN TA_info t2 - ON t1.MARKET = t2.MARKET -LEFT JOIN AZ_RELATED_info t3 - ON t1.MARKET = t3.MARKET - AND t1.DATA_SOURCE = t3.DATA_SOURCE -LEFT JOIN - tmp.tmp_td_ext_market_hide_flag t4 - ON t1.MARKET = t4.MARKET - AND t1.DATA_SOURCE = t4.DATA_SOURCE - --- COMMAND ---------- - -insert overwrite dm.dm_td_ext_unionall_market_ta ( - MARKET, DATA_SOURCE, TA, TA_RN, MARKET_DESC, ETL_INSERT_DT, ETL_UPDATE_DT -) - SELECT - MARKET, - DATA_SOURCE, - AZ_RELATED TA, - TA_RN, - MARKET_DESC, - 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_unionall_market - -- WHERE MARKET NOT LIKE '%ALL Market%' and MARKET <>'Retail All Market' - -- UNION all - -- SELECT - -- MARKET, - -- DATA_SOURCE, - -- 'CVRM' TA, - -- 0 TA_RN, - -- MARKET_DESC, - -- 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_unionall_market - -- WHERE - -- MARKET = 'CVRM Market' - --- COMMAND ---------- - ------------------------------------------------------------------------------------ ---修改时间:20240822 ---修改人:FanXujia ---修改内容: ---Retail、EC渠道,新增NIAD这个TA。数据与DM相同 ------------------------------------------------------------------------------------ -insert into dm.dm_td_ext_unionall_market_ta ( - MARKET, DATA_SOURCE, TA, TA_RN, MARKET_DESC, ETL_INSERT_DT, ETL_UPDATE_DT -) - select - market, - DATA_SOURCE, - 'NIAD' as TA, - 7 as TA_RN, - MARKET_DESC, - 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_unionall_market_ta - where - DATA_SOURCE = 'Retail(Quarterly)' - and ta = 'DM' - union all - select - market, - DATA_SOURCE, - 'NIAD' as TA, - 7 as TA_RN, - MARKET_DESC, - 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_unionall_market_ta - where - DATA_SOURCE = 'EC(Monthly)' - and ta = 'DM' - --20250701 chenwu 新增RARE = ONCO的Soliris Related Market - union all - select - market, - DATA_SOURCE, - 'RARE' as TA, - 8 as TA_RN, - MARKET_DESC, - 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_unionall_market_ta - where - DATA_SOURCE = 'DTP(Quarterly)' - and ta = 'ONCO' - and MARKET = 'Soliris Related Market'; - --- COMMAND ---------- - --- log 20250226 auth:庄伟 --- 对market_ta表中市场进行补全,并依据手工文件维护的 market 与 ta 映射,匹配出完整市场对应的TA_NAME -insert overwrite table dm.dm_td_ext_unionall_market_ta ( - MARKET, DATA_SOURCE, TA, TA_MAP, TA_RN, MARKET_DESC, ETL_INSERT_DT, ETL_UPDATE_DT -) - -----找出在market维度表中不存在的market列表 - with temp_ma_ext_market as (select distinct - MARKET, - DATA_SOURCE - from - dm.dm_td_ext_unionall_market - where - MARKET NOT IN ( - select distinct - MARKET - from - dm.dm_td_ext_unionall_market_ta - ) - ) - ------补充完整的market列表,并通过market匹配手工文件维护的market对应的TA - select - distinct - dim_mkt_ta.MARKET, - DATA_SOURCE, - dim_mkt_ta.TA, - case - when dim_mkt_ta.MARKET = 'ALL Market' then 'ALL' - else nvl(mkt_property.ta, mkt_property_key.TA) - end as TA_MAP, - dim_mkt_ta.TA_RN, - dim_mkt_ta.MARKET_DESC, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT - from - ( - select - MARKET, - DATA_SOURCE, - TA, - TA_RN, - MARKET_DESC - from - dm.dm_td_ext_unionall_market_ta - ) dim_mkt_ta - left join dm.dm_ims_td_market_property mkt_property - on dim_mkt_ta.market = mkt_property.market - left join dm.dm_ims_td_market_property mkt_property_key - on dim_mkt_ta.MARKET = mkt_property_key.MARKET_KEY - union all - select - ext_market.MARKET, - ext_market.DATA_SOURCE, - null TA, - mkt_property.TA TA_MAP, - '99' as TA_RN, - null MARKET_DESC, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT - from - temp_ma_ext_market ext_market - left join dm.dm_ims_td_market_property mkt_property - on ext_market.market = mkt_property.MARKET - where - nvl(mkt_property.TA, '') <> ''; \ No newline at end of file diff --git a/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql:Zone.Identifier b/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/11 DM_TD_EXTERNAL_MARKET_NEW.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/12 dm_td_external_org.sql b/EXTERNAL/12 dm_td_external_org.sql deleted file mode 100644 index e121af6..0000000 --- a/EXTERNAL/12 dm_td_external_org.sql +++ /dev/null @@ -1,358 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXTERNAL_ORG ( --- REGION_CODE STRING, --- region_name_en STRING, --- RSM_Name STRING, --- rc_code STRING, --- rc_name_en STRING, --- RC_Name STRING, --- RegionCenter STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- bu_category STRING, --- bu_name_en STRING, --- sub_bu_name STRING, --- sub_bu_code_auth STRING, --- bu_code_auth STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_external_org'; - --- COMMAND ---------- - --- DBTITLE 1,UNIONALL_ORG -CREATE OR REPLACE TEMPORARY VIEW UNIONALL_ORG -AS -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_AIA_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_CHC_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_CHPA_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_COUNTY_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_EC_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_RETAIL_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_THC_ORG -UNION ALL -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM - DM.DM_TD_EXT_XIEHE_ORG - --- COMMAND ---------- - --- DBTITLE 1,overwrite dm.dm_td_external_org -insert overwrite dm.dm_td_external_org -select -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -from - UNIONALL_ORG - --- COMMAND ---------- - --- /* --- 修改时间:2025.09.18 --- 修改人:chenwu --- 修改内容:新增一个org表给merged data使用,原org表在13 external auth 中会被删除掉'BBU_County','CHC','EC','Eagle','Retail' --- 故要在被删除前将这部分数据保留,供pbi端打目标机构标签 --- */ -INSERT OVERWRITE DM.DM_TD_EXTERNAL_ORG_MERGED_DATA -SELECT - REGION_CODE, - REGION_NAME_EN, - RSM_NAME, - RC_CODE, - RC_NAME_EN, - RC_NAME, - REGIONCENTER, - AUDIT_COD, - MARKET, - BU_CATEGORY, - BU_NAME_EN, - SUB_BU_NAME, - SUB_BU_CODE_AUTH, - BU_CODE_AUTH, - DATA_SOURCE, - REGION_RATIO, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME -FROM DM.DM_TD_EXTERNAL_ORG \ No newline at end of file diff --git a/EXTERNAL/12 dm_td_external_org.sql:Zone.Identifier b/EXTERNAL/12 dm_td_external_org.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/12 dm_td_external_org.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/13 external auth.sql b/EXTERNAL/13 external auth.sql deleted file mode 100644 index 4824fdc..0000000 --- a/EXTERNAL/13 external auth.sql +++ /dev/null @@ -1,1230 +0,0 @@ --- Databricks notebook source --- log 20250226 auth:庄伟 --- MA和AIA权限表改造如下 ---1.MA销售权限表(dm.dm_auth_sales_ta),通过辖区中销售负责的产品(Family)找到对应的TA,然后按照权限矩阵的限制对用户所能看到的BU进行筛选 --- Market Analysis_CHPA 全BU可看 --- Market Analysis_County 除BU:EC以外可以看 --- Market Analysis_CHC 除BU:EC&RDU 以外可以看 --- Market Analysis_THC 除BU:EC&RDU 以外可以看 --- Market Analysis_Retail/DTP 除BU:EC&RDU 以外可以看 --- Market Analysis_EC 仅EC可看 --修改 全BU可看 --- Market Analysis_AIA 除BU:EC以外可以看 --- Market Analysis_科室市场数据 全BU可看 - ---2.MA和AIA非销售权限表,按照workmate和mds用户申请的权限看 --- dm.dm_auth_nonsales_ta 直接按照用户申请的TA权限查看 --- dm.dm_auth_nonsales_org 根据用户申请的Sub_bu/BU转换为TA权限查看 - --- log 20251105 auth:chenwu --- MA和AIA权限范围修改 dm.dm_auth_sales_ta --- Market Analysis_AIA 除BU:EC,Retail以外可以看 --- Market Analysis_科室市场数据 除BU:EC以外可以看 --- Market Analysis_Retail/DTP 除BU: EC以外可以看 - --- COMMAND ---------- - ---for ec into retail -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,p2.rsm_kcode,p2.rc_code,p2.rc_name_en,p2.region_code,p2.region_name_en,BU_CATEGORY,yyyymm,mr_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code -FROM DM.dm_td_org P2 - --- COMMAND ---------- - -------销售权限 ----从C月辖区中提取USER与TA映射 -drop view if exists tmp_auth_sales_user_ta_mapping; -create temporary view tmp_auth_sales_user_ta_mapping -as -( -select -bu_active_list.bm_name, -org.bu_code, -org.bu_name, -org.sub_bu_code, -org.sub_bu_name, -org.dsm_trty_code, -org.dsm_kcode, -org.rsm_trty_code, -org.rsm_kcode, -org.rsd_trty_code, -org.rsd_kcode, -org.nsd_trty_code, -org.nsd_kcode, -org.rc_code, -prod.ta_code, -case when prod.ta_name ='ONC' then 'ONCO' else prod.ta_name end ta_name -from -( -select distinct -yyyymm, -trty_code, -family_code -from dm.dm_td_sd_territory_indication -where yyyymm in( -select key_value as yyyymm -from dm.dm_td_date_config -where key_code = 'pfmc_cvh' -) and bu not in ('CUBE','KA') and family_code not in ('RTRT','ECEC') -and key_hp<>3 --chenwu 20250904 排除双考影响 -)trty_ind_c -left join dm.dm_td_product prod -on trty_ind_c.family_code = prod.prd_key -left join dm_td_org_temp org -on trty_ind_c.yyyymm = org.yyyymm and trty_ind_c.trty_code = org.mr_trty_code -left join dws.dws_td_bu_active bu_active_list -on org.bu_name =bu_active_list.bu_name -); - --- COMMAND ---------- - -insert overwrite table dm.dm_auth_sales_ta -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -data_source, -concat(ta,data_source) ta_source, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from -( -----chpa 1 -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'IQVIA-CHPA(Monthly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -)auth_chpa -----county 2 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'IQVIA-COUNTY(Quarterly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where --- bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where --- bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --- bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --- bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_county -----chc 3 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'CHC(Quarterly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_chc -----thc 4 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'THC(Quarterly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('RDU','EC') -bu_name not in ('RDU') -and not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_thc -union -----retail 5 -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'Retail(Quarterly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_retail -----ec 6 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'EC(Monthly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping --- where --bu_name ='EC' --- -- (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 --- not (bu_name in ('Retail') and rc_code in ('RC198')) -- EC 改成和CHPA一样, 全BU可看 20260305 yusuo -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping --- where --bu_name ='EC' --- -- (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 --- not (bu_name in ('Retail') and rc_code in ('RC198')) -- EC 改成和CHPA一样, 全BU可看 20260305 yusuo -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping --- where --bu_name ='EC' --- -- (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 --- not (bu_name in ('Retail') and rc_code in ('RC198')) -- EC 改成和CHPA一样, 全BU可看 20260305 yusuo -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping --- where --bu_name ='EC' --- -- (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 --- not (bu_name in ('Retail') and rc_code in ('RC198')) -- EC 改成和CHPA一样, 全BU可看 20260305 yusuo -)auth_ec -----aia 7 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'AIA(Monthly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where bu_name not in ('Retail','EC') -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where bu_name not in ('Retail','EC') -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where bu_name not in ('Retail','EC') -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where bu_name not in ('Retail','EC') -)auth_aia -----xiehe 8 -union -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'XH Data(Quarterly)' data_source -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_xiehe -)auth_sales_ta - -----DTP 9 -union all -select -bu_name, -user_trty_code, -user_kcode, -ta, -role, -'DTP(Quarterly)' data_source, -concat(ta,data_source) ta_source, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from -( ---dsm -select -bu_name, -dsm_trty_code user_trty_code, -dsm_kcode user_kcode, -ta_name ta, -'dsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsm -select -bu_name, -rsm_trty_code user_trty_code, -rsm_kcode user_kcode, -ta_name ta, -'rsm' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---rsd -select -bu_name, -rsd_trty_code user_trty_code, -rsd_kcode user_kcode, -ta_name ta, -'rsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -union ---nsd -select -bu_name, -nsd_trty_code user_trty_code, -nsd_kcode user_kcode, -ta_name ta, -'nsd' role -from tmp_auth_sales_user_ta_mapping -where --bu_name not in ('EC') -not (bu_name in ('Retail') and rc_code in ('RC198')) --架构中 EC 合并到 Retail 调整 20260127 -)auth_retail - -; - - --- COMMAND ---------- - ------非销售权限 用户申请的TA维度权限 -insert overwrite table dm.dm_auth_nonsales_ta -select -user_kcode, -user_role, -ta_code, -case when ta_name ='ONC' then 'ONCO' else ta_name end ta_name, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from -( -select distinct user_kcode,role user_role,ta_code,ta_name -from dm.dm_td_user_permission_derived -where nvl(ta_name,'')<>'' -)nonsales_ta; - --- COMMAND ---------- - -drop view if exists tmp_auth_sales_bu_ta_mapping; -create temporary view tmp_auth_sales_bu_ta_mapping -as -( -select distinct bu_code,bu_name,sub_bu_code,sub_bu_name,ta_code,ta_name -from tmp_auth_sales_user_ta_mapping -); - --- COMMAND ---------- - ------用户申请的BU维度权限转换为架构中负责的TA -insert overwrite table dm.dm_auth_nonsales_org -select -coalesce(subbu_ta_map.bu_code,nonsales_subbu.bu_code) bu_code, -coalesce(subbu_ta_map.bu_name,nonsales_subbu.bu_name) bu_name, -nonsales_subbu.user_kcode, -nonsales_subbu.user_role, -coalesce(subbu_ta_map.sub_bu_code,nonsales_subbu.sub_bu_code) sub_bu_code, -coalesce(subbu_ta_map.sub_bu_name,nonsales_subbu.sub_bu_name) sub_bu_name, -subbu_ta_map.ta_code, -subbu_ta_map.ta_name, -'SUB_BU' row_tag, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from -( -select -distinct -user_kcode, -role user_role, -bu_code, -bu_name, -sub_bu_code, -sub_bu_name -from dm.dm_td_user_permission_detail -where nvl(sub_bu_code,'')<>'' -)nonsales_subbu -left join -( -select bu_code,bu_name,sub_bu_code,sub_bu_name,ta_code,ta_name -from tmp_auth_sales_bu_ta_mapping -)subbu_ta_map -on nonsales_subbu.sub_bu_code = subbu_ta_map.sub_bu_code -union -select -nonsales_bu.user_kcode, -nonsales_bu.user_role, -coalesce(bu_ta_map.bu_code,nonsales_bu.bu_code) bu_code, -coalesce(bu_ta_map.bu_name,nonsales_bu.bu_name) bu_name, -bu_ta_map.sub_bu_code, -bu_ta_map.sub_bu_name, -bu_ta_map.ta_code, -bu_ta_map.ta_name, -'BU' row_tag, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from -( -select -distinct -user_kcode, -role user_role, -bu_code, -bu_name -from dm.dm_td_user_permission_detail -where nvl(sub_bu_code,'')='' and nvl(bu_code,'')<>'' -)nonsales_bu -left join -( -select distinct bu_code,bu_name,sub_bu_code,sub_bu_name,ta_code,ta_name -from tmp_auth_sales_bu_ta_mapping -)bu_ta_map -on nonsales_bu.bu_code = bu_ta_map.bu_code; - --- COMMAND ---------- - --- DBTITLE 1,old version --- insert overwrite dm.dm_auth_geo(KCODE,CITY_CODE) --- select distinct --- t1.k_account as KCODE, --- t2.AUDIT_COD as CITY_CODE --- from ( --- select K_ACCOUNT, --- USER_NAME, --- Province_GEO --- from dm.DM_TD_SPECIAL_GROUP --- where ROLE = 'PI_GEO_IMS' --- and length(Province_GEO) > 0 --- ) t1 --- join --- ( --- select distinct --- PROVINCE_C, --- AUDIT_COD --- from dm.DM_IMS_TD_GEO --- where length(AUDIT_COD) > 0 --- ) t2 --- on t1.Province_GEO = t2.PROVINCE_C - --- COMMAND ---------- - --- insert overwrite dm.dm_auth_org(KCODE,SUB_BU_CODE) --- select --- t1.user_kcode as KCODE, --- t2.SUB_BU_CODE as SUB_BU_CODE --- from ( --- select K_ACCOUNT as user_kcode, --- bu_org as BU_NAME --- from dm.DM_TD_SPECIAL_GROUP --- where ROLE = 'PI_ORG_IMS' --- and length(bu_org) > 0 --- ) t1 --- join ( --- select distinct --- BU_NAME, --- SUB_BU_CODE --- from DM.DM_TD_ORG --- ) t2 --- on t1.BU_NAME = t2.BU_NAME - --- COMMAND ---------- - --- --------------------------------------------------------------------------- --- --修改时间:20241112 --- --修改人:Fanxujia --- --修改内容: --- --for AIA Dashboard: --- --1)MA报告没有权限,旧AIA报告有权限:增加旧AIA报告的权限人员,以旧AIA报告的范围开权限(by TA) --- --2)MA报告有权限,旧AIA报告也有权限:以旧AIA报告权限范围为准 --- --3)MA报告有权限,旧AIA报告没有权限:保持不变 --- --------------------------------------------------------------------------- --- with AIA_USERS as ( --- select --- distinct gu.k_account as KCODE, --- upper(rg.ta_prd) as TA_PRD --- from --- dm.DM_TD_GROUP_USERS gu --- join dm.DM_TD_REPORT_GROUP rg on gu.user_team = rg.user_group --- where --- rg.role = 'PI_PRD_CPA' --- and length(rg.ta_prd) > 0 --- union --- SELECT distinct --- K_ACCOUNT as KCODE, --- upper(TA_PRD) as TA_PRD --- FROM --- dm.DM_TD_SPECIAL_GROUP --- WHERE --- ROLE = 'PI_PRD_CPA' --- AND length(TA_PRD) > 0 --- ) - --- ,CHPA_USERS as ( --- select --- distinct gu.k_account as KCODE, --- upper(rg.ta_prd) as TA_PRD --- from --- dm.DM_TD_GROUP_USERS gu --- join dm.DM_TD_REPORT_GROUP rg on gu.user_team = rg.user_group --- where --- rg.role = 'PI_PRD_IMS' --- and length(rg.ta_prd) > 0 --- union --- SELECT distinct --- K_ACCOUNT as KCODE, --- upper(TA_PRD) as TA_PRD --- FROM --- dm.DM_TD_SPECIAL_GROUP --- WHERE --- ROLE = 'PI_PRD_IMS' --- AND length(TA_PRD) > 0 --- ) - --- ,ALL_USERS as ( --- --单独CHPA用户 --- select distinct --- KCODE, --- TA_PRD --- from CHPA_USERS --- where KCODE not in ( --- select KCODE from AIA_USERS --- ) --- union --- --1:单独AIA用户 --- --2:同时存在于CHPA以及AIA的用户,以AIA的权限为准 --- select distinct --- KCODE, --- TA_PRD --- from AIA_USERS --- ) - --- ,TA_MARKET as ( --- SELECT --- DISTINCT TA, --- MARKET --- FROM --- dm.dm_td_external_market_pack_mapping_temp --- WHERE --- length(TA) > 0 --- ) - - --- insert overwrite dm.dm_auth_prd( --- KCODE, --- MARKET --- ) --- select distinct --- t1.KCODE, --- t2.MARKET --- from ALL_USERS t1 --- inner join TA_MARKET t2 --- on t1.TA_PRD = t2.TA - - --- COMMAND ---------- - --- ------------------------------------------------------------------------ --- --修改时间:20241108 --- --修改人:Fanxujia --- --修改内容: --- --增加产品粒度的权限表 --- ------------------------------------------------------------------------ --- insert overwrite table dm.dm_auth_prd_pack --- ( --- KCODE, --- PACK_COD --- ) --- with market_pack as ( --- select distinct --- PACK_COD, --- MARKET --- from dm.dm_td_external_market_pack_mapping --- ) - --- select distinct --- t1.KCODE, --- t2.PACK_COD --- from dm.dm_auth_prd t1 --- inner join market_pack t2 --- on t1.MARKET = t2.MARKET - - - --- COMMAND ---------- - --- --------------------------------chpa-------------------------------------------------------------------- --- ------------------所有BU能看CHPA,用户需要排除非重点城市之外的人 --- insert overwrite dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- WITH EMP AS ( --- select distinct dsm_kcode KCODE,concat(bu_code,'IQVIA-CHPA(Monthly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) --and audit_cod is not null --- union all --- select distinct rsm_kcode KCODE,concat(bu_code,'IQVIA-CHPA(Monthly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 --and audit_cod is not null --- union all --- select distinct rsd_kcode KCODE,concat(bu_code,'IQVIA-CHPA(Monthly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 --and audit_cod is not null --- union all --- select distinct nsd_kcode KCODE,concat(bu_code,'IQVIA-CHPA(Monthly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 --and audit_cod is not null --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'IQVIA-CHPA(Monthly)') MKT_SOURCE,concat(B.AUDIT_COD,'IQVIA-CHPA(Monthly)') AUDIT_SOURCE --- ,'IQVIA-CHPA(Monthly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- ----------------------------------------------------CHC------------------------------------------------------------------------------ --- -----------------------CHC的人能看 --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- with emp as ( --- select distinct dsm_kcode KCODE,concat(bu_code,'CHC(Quarterly)') as bu_code_auth,'' bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) AND BU_NAME_EN = 'CHC' --- union all --- select distinct rsm_kcode KCODE,concat(bu_code,'CHC(Quarterly)') as bu_code_auth,'' bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 AND BU_NAME_EN = 'CHC' --- union all --- select distinct rsd_kcode KCODE,concat(bu_code,'CHC(Quarterly)') as bu_code_auth,'' bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 AND BU_NAME_EN = 'CHC' --- union all --- select distinct nsd_kcode KCODE,concat(bu_code,'CHC(Quarterly)') as bu_code_auth,'' bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 AND BU_NAME_EN = 'CHC' --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'CHC(Quarterly)') MKT_SOURCE,concat(B.AUDIT_COD,'CHC(Quarterly)') AUDIT_SOURCE --- ,'CHC(Quarterly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org ) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- ----------------------------------------------------county------------------------------------------------------------------------------ --- -----------------------除了Eagle、CHC、Retail、EC的人都能看 --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- with emp as ( --- select distinct dsm_kcode KCODE,concat('','IQVIA-COUNTY(Quarterly)') bu_code_auth,'' bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) AND BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') --- union all --- select distinct rsm_kcode KCODE,concat('','IQVIA-COUNTY(Quarterly)') bu_code_auth,'' bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 AND BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') --- union all --- select distinct rsd_kcode KCODE,concat('','IQVIA-COUNTY(Quarterly)') bu_code_auth,'' bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 AND BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') --- union all --- select distinct nsd_kcode KCODE,concat('','IQVIA-COUNTY(Quarterly)') bu_code_auth,'' bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 AND BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'IQVIA-COUNTY(Quarterly)') MKT_SOURCE,concat(B.AUDIT_COD,'IQVIA-COUNTY(Quarterly)') AUDIT_SOURCE --- ,'IQVIA-COUNTY(Quarterly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org ) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- ----------------------------------------------------THC------------------------------------------------------------------------------ --- -----------------------Eagle的人能看 --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- with emp as ( --- select distinct dsm_kcode KCODE,concat('','THC(Quarterly)') as bu_code_auth,'' bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) AND BU_NAME_EN = 'Eagle' --- union all --- select distinct rsm_kcode KCODE,concat('','THC(Quarterly)') as bu_code_auth,'' bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 AND BU_NAME_EN = 'Eagle' --- union all --- select distinct rsd_kcode KCODE,concat('','THC(Quarterly)') as bu_code_auth,'' bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 AND BU_NAME_EN = 'Eagle' --- union all --- select distinct nsd_kcode KCODE,concat('','THC(Quarterly)') as bu_code_auth,'' bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 AND BU_NAME_EN = 'Eagle' --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'THC(Quarterly)') MKT_SOURCE,concat(B.AUDIT_COD,'THC(Quarterly)') AUDIT_SOURCE --- ,'THC(Quarterly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org ) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- --------------------------------Retail-------------------------------------------------------------------- --- ------------------------------------------------ --- --修改时间:20241016 --- --修改人:FanXujia --- --修改内容: --- --给Eagle的人查看Metoprolol Tartrate Market的权限 --- ------------------------------------------------- --- ------------------所有BU能看CHPA,用户需要排除非重点城市之外的人 --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- with emp as ( --- select distinct dsm_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) and bu_name_en in ('Retail','OBU') --- union all --- select distinct rsm_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 and bu_name_en in ('Retail','OBU') --- union all --- select distinct rsd_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 and bu_name_en in ('Retail','OBU') --- union all --- select distinct nsd_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 and bu_name_en in ('Retail','OBU') --- ) --- ,Eagle as ( --- select distinct dsm_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) and bu_name_en in ('Eagle') --- union all --- select distinct rsm_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 and bu_name_en in ('Eagle') --- union all --- select distinct rsd_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 and bu_name_en in ('Eagle') --- union all --- select distinct nsd_kcode KCODE,concat('PC09','Retail(Quarterly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 and bu_name_en in ('Eagle') --- ) --- ,audit as ( --- select distinct t1.AUDIT_COD --- from dm.dm_tf_external_sales t1 --- left join dm.dm_td_external_market_pack_mapping_temp t2 --- on t1.DATA_SOURCE = t2.DATA_SOURCE --- and t1.PACK_COD = t2.PACK_COD --- where t1.DATA_SOURCE = 'Retail(Quarterly)' --- and t2.MARKET = 'Metoprolol Tartrate Market' --- ) - --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'Retail(Quarterly)') MKT_SOURCE,concat(B.AUDIT_COD,'Retail(Quarterly)') AUDIT_SOURCE --- ,'Retail(Quarterly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org ) B ON A.bu_code_auth = B.bu_code_auth --- union all --- select t1.KCODE, --- t1.bu_code_auth, --- t1.bu_name, --- t1.role, --- concat('Metoprolol Tartrate Market','Retail(Quarterly)') MKT_SOURCE, --- concat(t2.AUDIT_COD,'Retail(Quarterly)') AUDIT_SOURCE, --- 'Retail(Quarterly)' DATA_SOURCE --- from Eagle t1 --- cross join audit t2 - - --- COMMAND ---------- - --- --------------------------------EC-------------------------------------------------------------------- --- ------------------EC的数据暂时开通给EC --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- with emp as ( --- select distinct dsm_kcode KCODE,concat('','EC(Monthly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) and bu_name_en = 'EC' --- union all --- select distinct rsm_kcode KCODE,concat('','EC(Monthly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 and bu_name_en = 'EC' --- union all --- select distinct rsd_kcode KCODE,concat('','EC(Monthly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 and bu_name_en = 'EC' --- union all --- select distinct nsd_kcode KCODE,concat('','EC(Monthly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 and bu_name_en = 'EC' --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'EC(Monthly)') MKT_SOURCE,concat(B.AUDIT_COD,'EC(Monthly)') AUDIT_SOURCE --- ,'EC(Monthly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org ) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- --------------------------------AIA-------------------------------------------------------------------- --- ------------------所有BU能看AIA --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- WITH EMP AS ( --- select distinct dsm_kcode KCODE,concat(bu_code,'AIA(Monthly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) --and audit_cod is not null --- union all --- select distinct rsm_kcode KCODE,concat(bu_code,'AIA(Monthly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 --and audit_cod is not null --- union all --- select distinct rsd_kcode KCODE,concat(bu_code,'AIA(Monthly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 --and audit_cod is not null --- union all --- select distinct nsd_kcode KCODE,concat(bu_code,'AIA(Monthly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 --and audit_cod is not null --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'AIA(Monthly)') MKT_SOURCE,concat(B.AUDIT_COD,'AIA(Monthly)') AUDIT_SOURCE --- ,'AIA(Monthly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- --------------------------------XIEHE-------------------------------------------------------------------- --- ------------------所有BU能看XIEHE --- insert into dm.dm_auth_sales(KCODE,bu_code_auth,bu_name,role,MKT_SOURCE,AUDIT_SOURCE,DATA_SOURCE) --- WITH EMP AS ( --- select distinct dsm_kcode KCODE,concat(bu_code,'XH Data(Quarterly)') as bu_code_auth,bu_name,'dsm' role from DM.DM_IMS_TD_ORG_HVH where length(dsm_kcode) > 0 and yyyymm=(select max(yyyymm) from DM.DM_IMS_TD_ORG_HVH) --and audit_cod is not null --- union all --- select distinct rsm_kcode KCODE,concat(bu_code,'XH Data(Quarterly)') as bu_code_auth,bu_name,'rsm' role from DM.DM_IMS_TD_ORG where length(rsm_kcode) > 0 --and audit_cod is not null --- union all --- select distinct rsd_kcode KCODE,concat(bu_code,'XH Data(Quarterly)') as bu_code_auth,bu_name,'rsd' role from DM.DM_IMS_TD_ORG where length(rsd_kcode) > 0 --and audit_cod is not null --- union all --- select distinct nsd_kcode KCODE,concat(bu_code,'XH Data(Quarterly)') as bu_code_auth,bu_name,'nsd' role from DM.DM_IMS_TD_ORG where length(nsd_kcode) > 0 --and audit_cod is not null --- ) --- SELECT A.KCODE,A.bu_code_auth,A.bu_name,A.role,concat(B.MARKET,'XH Data(Quarterly)') MKT_SOURCE,concat(B.AUDIT_COD,'XH Data(Quarterly)') AUDIT_SOURCE --- ,'XH Data(Quarterly)' DATA_SOURCE FROM EMP A --- INNER JOIN (SELECT DISTINCT bu_code_auth,AUDIT_COD,MARKET FROM DM.dm_td_external_org) B ON A.bu_code_auth = B.bu_code_auth - --- COMMAND ---------- - --- ------------------------------------------------------------------------- --- --修改时间:20241106 --- --修改人:Fanxujia --- --修改内容: --- --将PBI的逻辑移到DBR上(dm_auth_sales_geo) --- ------------------------------------------------------------------------- --- insert overwrite table dm.dm_auth_sales_geo( --- KCODE, --- AUDIT_SOURCE --- ) --- select --- distinct KCODE, --- AUDIT_SOURCE --- from --- dm.dm_auth_sales - --- COMMAND ---------- - --- ------------------------------------------------------------------------- --- --修改时间:20241106 --- --修改人:Fanxujia --- --修改内容: --- --将PBI的逻辑移到DBR上(dm_auth_sales_mkt) --- ------------------------------------------------------------------------- --- insert overwrite table dm.dm_auth_sales_mkt( --- KCODE, --- MKT_SOURCE --- ) --- select --- distinct KCODE, --- MKT_SOURCE --- from --- dm.dm_auth_sales - --- COMMAND ---------- - --- ------------------------------------------------------------------------- --- --修改时间:20241106 --- --修改人:Fanxujia --- --修改内容: --- --将PBI的逻辑移到DBR上(dm_auth_sales_org) --- ------------------------------------------------------------------------- --- insert overwrite table dm.dm_auth_sales_org( --- KCODE, --- BU_CODE_AUTH --- ) --- select --- distinct KCODE, --- BU_CODE_AUTH --- from --- dm.dm_auth_sales - --- COMMAND ---------- - --- DBTITLE 1,old version --- ------------------------------------------------------------------------- --- --修改时间:20241106 --- --修改人:Fanxujia --- --修改内容: --- --将PBI的逻辑移到DBR上(dm_auth_sales_pack) --- ------------------------------------------------------------------------- --- insert overwrite table dm.dm_auth_sales_pack( --- KCODE, --- PACK_SOURCE --- ) --- with market_pack as ( --- select distinct --- concat(MARKET,DATA_SOURCE) as MKT_SOURCE, --- concat(PACK_COD,DATA_SOURCE) as PACK_SOURCE --- from dm.dm_td_external_market_pack_mapping --- ) --- ,user_market as ( --- select distinct KCODE,MKT_SOURCE --- from dm.dm_auth_sales --- ) - --- select distinct --- t1.KCODE, --- t2.PACK_SOURCE --- from user_market t1 --- inner join market_pack t2 --- on t1.MKT_SOURCE = t2.MKT_SOURCE - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### ------------------------- - --- COMMAND ---------- - ------------------------------------------------------------------------- ---修改时间:20241112 ---修改人:Fanxujia ---修改内容: ---CHPA渠道不显示以下几个BU的架构 ('BBU_County','CHC','EC','Eagle','Retail') ------------------------------------------------------------------------- -delete from DM.DM_TD_EXTERNAL_ORG -where bu_name_en in ('BBU_County','CHC','EC','Retail') -and data_source = 'IQVIA-CHPA(Monthly)'; -/* -修改时间:20251124 -修改人:Chenwu -修改内容:CHPA数据源,消化口服产品(Nexium Oral, Losec Oral)架构需要增加Eagle团队 -*/ -WITH market_list AS ( - SELECT DISTINCT m.MARKET - FROM dws.dws_ims_td_market m - INNER JOIN dwd.dwd_td_imscode_azcode a ON m.PACK_COD = a.ims_pack_cod - WHERE a.brandcode IN ('B018','B019') - AND a.ims_pack_cod IS NOT NULL -) -DELETE FROM DM.DM_TD_EXTERNAL_ORG -WHERE data_source = 'IQVIA-CHPA(Monthly)' - AND bu_name_en = 'Eagle' - AND MARKET NOT IN (SELECT MARKET FROM market_list); - --- COMMAND ---------- - ---------------------------------------------------------------------------- ---修改时间:20240828 ---修改人:FanXujia ---修改内容: ---同一个城市的同一个市场同时对应了正常的大区以及ROC,这是不对的,需要把ROC的数据删除 ----------------------------------------------------------------------------- -with org as ( -select distinct DATA_SOURCE,AUDIT_COD,MARKET,'ROC' as region_name_en -from DM.DM_TD_EXTERNAL_ORG -where region_name_en <> 'ROC' -) - -merge into DM.DM_TD_EXTERNAL_ORG as t1 -using org t2 -on t1.DATA_SOURCE = t2.DATA_SOURCE -and t1.AUDIT_COD = t2.AUDIT_COD -and t1.MARKET = t2.MARKET -and t1.region_name_en = t2.region_name_en -when matched then -delete ; - --- COMMAND ---------- - ---------------------------------------------------------------------------- ---修改时间:20240828 ---修改人:FanXujia ---修改内容: ---在上一步删除完之后 ---同一个城市的同一个市场只对应ROC,但是有多条数据对应ROC,保留1条数据,其余的删除 ----------------------------------------------------------------------------- -with org_1 as ( -select DATA_SOURCE,AUDIT_COD,MARKET -from DM.DM_TD_EXTERNAL_ORG -where region_name_en = 'ROC' -group by DATA_SOURCE,AUDIT_COD,MARKET -having count(1) >1 -) -,org_2 as ( -select t1.DATA_SOURCE,t1.AUDIT_COD,t1.MARKET, -max(concat(t1.RSM_Name,t1.rc_name,t1.regioncenter,t1.bu_category,t1.bu_name_en,t1.sub_bu_name,t1.sub_bu_code_auth,t1.bu_code_auth,t1.MR_TRTY_CODE)) link_key -from DM.DM_TD_EXTERNAL_ORG t1 -inner join org_1 t2 -on t1.DATA_SOURCE = t2.DATA_SOURCE -and t1.AUDIT_COD = t2.AUDIT_COD -and t1.MARKET = t2.MARKET -group by t1.DATA_SOURCE,t1.AUDIT_COD,t1.MARKET -) - -merge into DM.DM_TD_EXTERNAL_ORG as t1 -using org_2 t2 -on t1.DATA_SOURCE = t2.DATA_SOURCE -and t1.AUDIT_COD = t2.AUDIT_COD -and t1.MARKET = t2.MARKET -and concat(t1.RSM_Name,t1.rc_name,t1.regioncenter,t1.bu_category,t1.bu_name_en,t1.sub_bu_name,t1.sub_bu_code_auth,t1.bu_code_auth,t1.MR_TRTY_CODE) <> t2.link_key -when matched then -delete ; \ No newline at end of file diff --git a/EXTERNAL/13 external auth.sql:Zone.Identifier b/EXTERNAL/13 external auth.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/13 external auth.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql b/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql deleted file mode 100644 index 6ea869d..0000000 --- a/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql +++ /dev/null @@ -1,22 +0,0 @@ --- Databricks notebook source -insert overwrite table dm.dm_tf_external_retail_special ---dtp 部分的数据 EGFR TKI 需要直取 -select - case when a.market = 'EGFR TKI' then 'EGFR TKI Market' else a.market end as market - ,a.province_city - ,a.audit_key - ,a.audit_source - ,a.date_key - ,a.yyyymm - ,a.sales_value - ,a.sales_volume - ,a.pdot_counting_unit - ,c.sales_value sales_value_ly - ,c.sales_volume sales_volume_ly - ,c.pdot_counting_unit pdot_counting_unit_ly - ,'dtp' `source` -from dws.dws_tf_external_retail_dtp_special a -left join dws.dws_tf_external_retail_dtp_special c --取去年同期数据 - on a.province_city = c.province_city - and a.market = c.market - and (a.yyyymm-100) = c.yyyymm \ No newline at end of file diff --git a/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql:Zone.Identifier b/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/14 dm_tf_external_retail_special_bkp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/01 dm_aia_pack_property.sql b/EXTERNAL/AIA/01 dm_aia_pack_property.sql deleted file mode 100644 index 2b3f16d..0000000 --- a/EXTERNAL/AIA/01 dm_aia_pack_property.sql +++ /dev/null @@ -1,333 +0,0 @@ --- 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, - 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 \ No newline at end of file diff --git a/EXTERNAL/AIA/01 dm_aia_pack_property.sql:Zone.Identifier b/EXTERNAL/AIA/01 dm_aia_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/01 dm_aia_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/02 dm_ext_aia_sales.sql b/EXTERNAL/AIA/02 dm_ext_aia_sales.sql deleted file mode 100644 index c285f32..0000000 --- a/EXTERNAL/AIA/02 dm_ext_aia_sales.sql +++ /dev/null @@ -1,710 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_AIA_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_aia_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_aia_sales'; - - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 原始数据 --- 字段值的初步处理 -CREATE OR REPLACE TEMPORARY VIEW AIA_RAWDATA -AS -SELECT - YEAR, - QTR, - CAST(YEAR * 100 + YM AS INT) YM, - ORG_PROV, - ORG_CITY, - INS_LEVEL, - CASE - WHEN - INS_CD IS NOT NULL - AND - LENGTH (INS_CD) < 7 - THEN RIGHT (CONCAT ('0000000', INS_CD), 7) - ELSE INS_CD - END AS ORG_INS_CD, - ATC1, - ATC2, - ATC3, - ATC4, - ATC, - MOLE_NM, - PROD_NM, - ORG_PRD_NM_C, - ORG_PK, - ORG_PRD_STR, - ORG_PTH, - MIN_UNIT, - VALUE, - UNIT, - CAST(PACK_DESC AS INT) AS PACK_DESC, - ORG_PK_UN, - MANU -FROM - DWD.DWD_GND_AIA_RAWDATA - --- COMMAND ---------- - ---关联出AUDIT_COD、INST_CODE -CREATE OR REPLACE TEMPORARY VIEW AIA_RAWDATA_WITH_AUDIT_INST -AS -SELECT - UPPER(NVL (T2.INST_CODE, T1.ORG_INS_CD)) AS AUDIT_COD, - T1.YEAR, - T1.QTR, - T1.YM, - T1.ORG_PROV, - T1.ORG_CITY, - T1.INS_LEVEL, - T1.ORG_INS_CD, - T1.ATC1, - T1.ATC2, - T1.ATC3, - T1.ATC4, - T1.ATC, - T1.MOLE_NM, - T1.PROD_NM, - T1.ORG_PRD_NM_C, - T1.ORG_PK, - T1.ORG_PRD_STR, - T1.ORG_PTH, - T1.MIN_UNIT, - T1.VALUE, - T1.UNIT, - T1.PACK_DESC, - T1.ORG_PK_UN, - T1.MANU, - NVL (T2.INST_CODE, T1.ORG_INS_CD) AS INST_CODE -FROM - AIA_RAWDATA AS T1 -LEFT JOIN - ( - SELECT - DISTINCT - CASE - WHEN LENGTH (CPA_HOSPITAL_CODE) < 7 - THEN RIGHT (CONCAT ('0000000', CPA_HOSPITAL_CODE), 7) - ELSE CPA_HOSPITAL_CODE - END AS CPA_HOSPITAL_CODE, - INS_CD_NL AS INST_CODE - FROM - DWD.DWD_GND_HOSPITAL_NOT_PROVIDED - ) AS T2 -ON - T1.ORG_INS_CD = T2.CPA_HOSPITAL_CODE - --- COMMAND ---------- - -/* -修改人 CHENWU -修改时间 20250513 -修改内容 打包分子的数据,不论 打通表 和 事实表,都没有系数,需要用 事实表里的 最小制剂单位数量 作为COUNTING_UNIT -*/ ---关联出PACK_COD、CORP_COD、COUNTING_UNIT -CREATE OR REPLACE TEMPORARY VIEW AIA_RAWDATA_WIHT_COUNTING_UNIT -AS -SELECT - CASE - WHEN - LENGTH (TRIM(T2.IQVIA_PACK_CODE)) < 12 - AND - TRIM(T2.IQVIA_PACK_CODE) REGEXP '^[0-9]' - THEN RIGHT (CONCAT ('000000000000', TRIM(T2.IQVIA_PACK_CODE)),12) - ELSE TRIM(T2.IQVIA_PACK_CODE) - END AS PACK_COD, - T3.CORP_COD, - CASE - WHEN LEFT (T2.IQVIA_PACK_CODE, 4) = 'AZP_' - THEN CAST(T1.MIN_UNIT / T1.ORG_PK_UN AS DECIMAL(38, 10)) - ELSE T3.COUNTING_UNIT - END COUNTING_UNIT, - T1.AUDIT_COD, - T1.YEAR, - T1.QTR, - T1.YM, - T1.ORG_PROV, - T1.ORG_CITY, - T1.INS_LEVEL, - T1.ORG_INS_CD, - T1.ATC1, - T1.ATC2, - T1.ATC3, - T1.ATC4, - T1.ATC, - T1.MOLE_NM, - T1.PROD_NM, - T1.ORG_PRD_NM_C, - T1.ORG_PK, - T1.ORG_PRD_STR, - T1.ORG_PTH, - T1.MIN_UNIT, - T1.VALUE, - T1.UNIT, - T1.PACK_DESC, - T1.ORG_PK_UN, - T1.MANU, - T1.INST_CODE -FROM - AIA_RAWDATA_WITH_AUDIT_INST T1 -LEFT JOIN - ( - SELECT - DISTINCT - TRIM(IQVIA_PACK_CODE) AS IQVIA_PACK_CODE, - 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 - FROM - DWD.DWD_GND_EXT_AIA_CPT_DATA - ) AS T2 ---ATC1编码+ATC2编码+ATC3编码+ATC4编码+药品编码(ATC)+药品通用名+药品产品名+药品商品名+规格+剂型+给药途径+最小销售包装单位+包装规格+生产企业 -ON - NVL (T1.ATC1, '') = NVL (T2.ATC1, '') - AND NVL (T1.ATC2, '') = NVL (T2.ATC2, '') - AND NVL (T1.ATC3, '') = NVL (T2.ATC3, '') - AND NVL (T1.ATC4, '') = NVL (T2.ATC4, '') - AND NVL (T1.ATC, '') = NVL (T2.ORG_PRD_CD, '') - AND NVL (T1.MOLE_NM, '') = NVL (T2.ORG_MOLE_NM_C, '') - AND NVL (T1.PROD_NM, '') = NVL (T2.ORG_MANU_PRD_NM_C, '') - AND NVL (T1.ORG_PRD_NM_C, '') = NVL (T2.ORG_PRD_NM_C, '') - AND NVL (T1.ORG_PK, '') = NVL (T2.ORG_PK, '') - AND NVL (T1.ORG_PRD_STR, '') = NVL (T2.ORG_PRD_STR, '') - AND NVL (T1.ORG_PTH, '') = NVL (T2.ORG_PTH, '') - AND NVL (T1.UNIT, '') = NVL (T2.MIN_PK_UNIT, '') - AND NVL (T1.PACK_DESC, '') = NVL (T2.ORG_PK_UNIT, '') - AND NVL (T1.MANU, '') = NVL (T2.ORG_MANU_NM, '') -LEFT JOIN -( - SELECT - PACK_COD, - CORP_COD, - COUNTING_UNIT - FROM - DM.DM_AIA_PACK_PROPERTY - GROUP BY - PACK_COD, - CORP_COD, - COUNTING_UNIT -) T3 ON T2.IQVIA_PACK_CODE = T3.PACK_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FILTER_YM -AS -SELECT - MAX(YM) AS MAX_YYYYMM, - CONCAT(CAST(FLOOR(MAX(YM)/100-2) AS STRING),'01') AS MIN_YYYYMM -FROM - AIA_RAWDATA_WIHT_COUNTING_UNIT - --- COMMAND ---------- - ---计算出LY销量 -CREATE OR REPLACE TEMPORARY VIEW AIA_RAWDATA_FINAL AS -SELECT - YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD, - SUM(VALUE) AS VALUE, - SUM(VOLUME) AS VOLUME, - SUM(COUNTING_UNIT) AS COUNTING_UNIT, - SUM(VALUE_LY) AS VALUE_LY, - SUM(VOLUME_LY) AS VOLUME_LY, - SUM(COUNTING_UNIT_LY) AS COUNTING_UNIT_LY -FROM - ( - SELECT - YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD, - CAST(VALUE AS DECIMAL(38, 10)) AS VALUE, - CAST(ORG_PK_UN AS DECIMAL(38, 10)) AS VOLUME, - CAST(ORG_PK_UN AS DECIMAL(38, 10)) * COALESCE(CAST(COUNTING_UNIT AS DECIMAL(38, 10)), 1) AS COUNTING_UNIT, - 0 AS VALUE_LY, - 0 AS VOLUME_LY, - 0 AS COUNTING_UNIT_LY - FROM - AIA_RAWDATA_WIHT_COUNTING_UNIT - UNION ALL - SELECT - CAST(CAST(YM AS INT) + 100 AS STRING) AS YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD, - 0 AS VALUE, - 0 AS VOLUME, - 0 AS COUNTING_UNIT, - CAST(VALUE AS DECIMAL(38, 10)) AS VALUE_LY, - CAST(ORG_PK_UN AS DECIMAL(38, 10)) AS VOLUME_LY, - CAST(ORG_PK_UN AS DECIMAL(38, 10)) * COALESCE(CAST(COUNTING_UNIT AS DECIMAL(38, 10)), 1) AS COUNTING_UNIT_LY - FROM - AIA_RAWDATA_WIHT_COUNTING_UNIT T1 - JOIN - FILTER_YM T2 - ON - 1 = 1 - WHERE - CAST(CAST(YM AS INT) + 100 AS STRING) <= T2.MAX_YYYYMM - ) -GROUP BY - YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FINAL_DM_TF_EXT_AIA_SALES -AS -SELECT - YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD, - SUM(VALUE) AS VALUE, - SUM(VOLUME) AS VOLUME, - SUM(COUNTING_UNIT) AS COUNTING_UNIT, - SUM(VALUE_LY) AS VALUE_LY, - SUM(VOLUME_LY) AS VOLUME_LY, - SUM(COUNTING_UNIT_LY) AS COUNTING_UNIT_LY -FROM - AIA_RAWDATA_FINAL -GROUP BY - YM, - ORG_INS_CD, - INST_CODE, - AUDIT_COD, - PACK_COD, - CORP_COD - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_AIA_SALES ( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) - SELECT - A.ym, - A.PACK_COD as PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'AIA(Monthly)' DATA_SOURCE, - ------------------------------------- - sum(volume) as SALES_UNIT_CAL, - sum(volume_ly) as SALES_UNIT_CAL_LY, - sum(value) as SALES_VALUE_CAL, - sum(value_ly) as SALES_VALUE_CAL_LY, - sum(counting_unit) as CONUTING_UNIT, - sum(counting_unit_ly) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - inst_code AS inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE, --可以移除,报告没有使用 - ------------------------------------- - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT - FROM - FINAL_DM_TF_EXT_AIA_SALES A - WHERE - ym >= '202401' - GROUP BY - YM, - PACK_COD, - CORP_COD, - AUDIT_COD, - INST_CODE - --- COMMAND ---------- - --- 20260109 dm.dm_ext_aia_sales 是老的表,现在已经用DM.DM_TF_EXT_AIA_SALES 替换,但是为了下游,老表暂时不下线,仍然写入 - insert overwrite table dm.dm_ext_aia_sales ( - ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod, - value, - volume, - counting_unit, - value_ly, - volume_ly, - counting_unit_ly - ) -select - ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod, - sum(value) as value, - sum(volume) as volume, - sum(counting_unit) as counting_unit, - sum(value_ly) as value_ly, - sum(volume_ly) as volume_ly, - sum(counting_unit_ly) as counting_unit_ly -from - aia_rawdata_FINAL -CROSS JOIN - filter_ym -WHERE - YM BETWEEN filter_ym.min_yyyymm AND filter_ym.max_yyyymm -group by - ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod - --- COMMAND ---------- - --- MAGIC %md --- MAGIC 下面是重构验证,chenwu可删 - --- COMMAND ---------- - --- %sql --- inst_code --- ym --- MARKET - --- COMMAND ---------- - --- SELECT ym,AUDIT_COD,inst_code,SUM(value) value,SUM(volume) volume,SUM(counting_unit) counting_unit,SUM(value_ly) value_ly,SUM(volume_ly) volume_ly,SUM(counting_unit_ly) counting_unit_ly --- FROM dm.dm_ext_aia_sales --- GROUP BY ym,AUDIT_COD,inst_code --- ORDER BY ym,AUDIT_COD,inst_code - --- COMMAND ---------- - --- SELECT ym,AUDIT_COD,SUM(value) value,SUM(volume) volume,SUM(counting_unit) counting_unit,SUM(value_ly) value_ly,SUM(volume_ly) volume_ly,SUM(counting_unit_ly) counting_unit_ly --- FROM dm.dm_ext_aia_sales --- GROUP BY ym,AUDIT_COD --- ORDER BY ym,AUDIT_COD - --- COMMAND ---------- - - --- SELECT --- old.ym, --- OLD.AUDIT_COD, --- OLD.inst_code, --- OLD.value, --- NEW.value, --- OLD.value-NEW.value as dif_value, --- OLD.value_ly, --- NEW.value_ly, --- OLD.value_ly-NEW.value_ly as dif_value_ly, --- OLD.volume, --- NEW.volume, --- OLD.volume-NEW.volume as dif_volume, --- OLD.volume_ly, --- NEW.volume_ly, --- OLD.volume_ly-NEW.volume_ly as dif_volume_ly, --- OLD.counting_unit, --- NEW.counting_unit, --- OLD.counting_unit-NEW.counting_unit as dif_counting_unit, --- OLD.counting_unit_ly, --- NEW.counting_unit_ly, --- OLD.counting_unit_ly-NEW.counting_unit_ly as dif_counting_unit_ly --- FROM --- ( --- SELECT ym,AUDIT_COD,inst_code,SUM(value) value,SUM(volume) volume,SUM(counting_unit) counting_unit,SUM(value_ly) value_ly,SUM(volume_ly) volume_ly,SUM(counting_unit_ly) counting_unit_ly --- FROM dm.dm_ext_aia_sales --- GROUP BY ym,AUDIT_COD,inst_code --- -- ORDER BY ym --- ) AS OLD --- LEFT JOIN --- ( --- SELECT YYYYMM,AUDIT_CODE,inst_code,SUM(SALES_VALUE_CAL) value,SUM(SALES_UNIT_CAL) volume,SUM(CONUTING_UNIT) counting_unit,SUM(SALES_VALUE_CAL_LY) value_ly,SUM(SALES_UNIT_CAL_LY) volume_ly,SUM(CONUTING_UNIT_LY) counting_unit_ly --- FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY YYYYMM,AUDIT_CODE,inst_code --- -- ORDER BY YYYYMM --- ) AS NEW --- ON OLD.YM =NEW.YYYYMM AND old.AUDIT_COD = NEW.AUDIT_CODE AND old.inst_code = new.inst_code --- where --- ABS(OLD.value - NEW.value) > 0.0000000001 OR --- ABS(OLD.volume - NEW.volume) > 0.0000000001 OR --- ABS(OLD.value_ly - NEW.value_ly) > 0.0000000001 OR --- ABS(OLD.volume_ly - NEW.volume_ly) > 0.0000000001 OR --- ABS(OLD.counting_unit - NEW.counting_unit) > 0.0000000001 OR --- ABS(OLD.counting_unit_ly - NEW.counting_unit_ly) > 0.0000000001; - --- COMMAND ---------- - - --- SELECT --- old.ym, --- OLD.AUDIT_COD, --- OLD.value, --- NEW.value, --- OLD.value-NEW.value as dif_value, --- OLD.value_ly, --- NEW.value_ly, --- OLD.value_ly-NEW.value_ly as dif_value_ly, --- OLD.volume, --- NEW.volume, --- OLD.volume-NEW.volume as dif_volume, --- OLD.volume_ly, --- NEW.volume_ly, --- OLD.volume_ly-NEW.volume_ly as dif_volume_ly, --- OLD.counting_unit, --- NEW.counting_unit, --- OLD.counting_unit-NEW.counting_unit as dif_counting_unit, --- OLD.counting_unit_ly, --- NEW.counting_unit_ly, --- OLD.counting_unit_ly-NEW.counting_unit_ly as dif_counting_unit_ly --- FROM --- ( --- SELECT ym,AUDIT_COD,SUM(value) value,SUM(volume) volume,SUM(counting_unit) counting_unit,SUM(value_ly) value_ly,SUM(volume_ly) volume_ly,SUM(counting_unit_ly) counting_unit_ly --- FROM dm.dm_ext_aia_sales --- GROUP BY ym,AUDIT_COD --- -- ORDER BY ym --- ) AS OLD --- LEFT JOIN --- ( --- SELECT YYYYMM,AUDIT_CODE,SUM(SALES_VALUE_CAL) value,SUM(SALES_UNIT_CAL) volume,SUM(CONUTING_UNIT) counting_unit,SUM(SALES_VALUE_CAL_LY) value_ly,SUM(SALES_UNIT_CAL_LY) volume_ly,SUM(CONUTING_UNIT_LY) counting_unit_ly --- FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY YYYYMM,AUDIT_CODE --- -- ORDER BY YYYYMM --- ) AS NEW --- ON OLD.YM =NEW.YYYYMM AND old.AUDIT_COD = NEW.AUDIT_CODE --- where --- ABS(OLD.value - NEW.value) > 0.0000000001 OR --- ABS(OLD.volume - NEW.volume) > 0.0000000001 OR --- ABS(OLD.value_ly - NEW.value_ly) > 0.0000000001 OR --- ABS(OLD.volume_ly - NEW.volume_ly) > 0.0000000001 OR --- ABS(OLD.counting_unit - NEW.counting_unit) > 0.0000000001 OR --- ABS(OLD.counting_unit_ly - NEW.counting_unit_ly) > 0.0000000001; - --- COMMAND ---------- - - --- SELECT --- old.ym, --- OLD.value, --- NEW.value, --- OLD.value-NEW.value as dif_value, --- OLD.value_ly, --- NEW.value_ly, --- OLD.value_ly-NEW.value_ly as dif_value_ly, --- OLD.volume, --- NEW.volume, --- OLD.volume-NEW.volume as dif_volume, --- OLD.volume_ly, --- NEW.volume_ly, --- OLD.volume_ly-NEW.volume_ly as dif_volume_ly, --- OLD.counting_unit, --- NEW.counting_unit, --- OLD.counting_unit-NEW.counting_unit as dif_counting_unit, --- OLD.counting_unit_ly, --- NEW.counting_unit_ly, --- OLD.counting_unit_ly-NEW.counting_unit_ly as dif_counting_unit_ly --- FROM --- ( --- SELECT ym,SUM(value) value,SUM(volume) volume,SUM(counting_unit) counting_unit,SUM(value_ly) value_ly,SUM(volume_ly) volume_ly,SUM(counting_unit_ly) counting_unit_ly --- FROM dm.dm_ext_aia_sales --- GROUP BY ym --- ORDER BY ym --- ) AS OLD --- LEFT JOIN --- ( --- SELECT YYYYMM,SUM(SALES_VALUE_CAL) value,SUM(SALES_UNIT_CAL) volume,SUM(CONUTING_UNIT) counting_unit,SUM(SALES_VALUE_CAL_LY) value_ly,SUM(SALES_UNIT_CAL_LY) volume_ly,SUM(CONUTING_UNIT_LY) counting_unit_ly --- FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY YYYYMM --- ORDER BY YYYYMM --- ) AS NEW --- ON OLD.YM =NEW.YYYYMM --- where --- ABS(OLD.value - NEW.value) > 0.0000000001 OR --- ABS(OLD.volume - NEW.volume) > 0.0000000001 OR --- ABS(OLD.value_ly - NEW.value_ly) > 0.0000000001 OR --- ABS(OLD.volume_ly - NEW.volume_ly) > 0.0000000001 OR --- ABS(OLD.counting_unit - NEW.counting_unit) > 0.0000000001 OR --- ABS(OLD.counting_unit_ly - NEW.counting_unit_ly) > 0.0000000001; - --- COMMAND ---------- - --- -- 这个sql证明,两张表的inst_code,值也相同 --- SELECT --- * --- FROM --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY inst_code --- ) AS NEW --- FULL JOIN --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.dm_ext_aia_sales --- GROUP BY inst_code --- ) AS OLD --- ON NEW.inst_code = old.inst_code --- WHERE new.c1 != old.c1 - --- COMMAND ---------- - --- -- 这个sql证明,两张表的inst_code相同 --- SELECT --- * --- FROM --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY inst_code --- ) AS NEW --- FULL JOIN --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY inst_code --- ) AS OLD --- ON NEW.inst_code = old.inst_code --- WHERE NEW.inst_code IS NULL OR old.inst_code IS NULL - --- COMMAND ---------- - --- -- 这个sql证明,两张表的inst_code,值也相同 --- SELECT --- * --- FROM --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY inst_code --- ) AS NEW --- FULL JOIN --- ( --- SELECT inst_code,COUNT(*) as c1 FROM DM.DM_TF_EXT_AIA_SALES --- GROUP BY inst_code --- ) AS OLD --- ON NEW.inst_code = old.inst_code --- WHERE new.c1 != old.c1 - --- COMMAND ---------- - --- SELECT COUNT(*) FROM DM.DM_TF_EXT_AIA_SALES - --- COMMAND ---------- - --- SELECT COUNT(*) FROM DM.dm_ext_aia_sales \ No newline at end of file diff --git a/EXTERNAL/AIA/02 dm_ext_aia_sales.sql:Zone.Identifier b/EXTERNAL/AIA/02 dm_ext_aia_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/02 dm_ext_aia_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql b/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql deleted file mode 100644 index 66a5305..0000000 --- a/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql +++ /dev/null @@ -1,195 +0,0 @@ --- Databricks notebook source ---字段值的初步处理 -create or replace temporary view aia_rawdata_1 as -select -year, -qtr, -cast(year * 100 + ym as int) ym, -org_prov, -org_city, -ins_level, -case when ins_cd is not null and length(ins_cd) < 7 then right(concat('0000000',ins_cd),7) else ins_cd end as org_ins_cd, -atc1, -atc2, -atc3, -atc4, -atc, -mole_nm, -prod_nm, -org_prd_nm_c, -org_pk, -org_prd_str, -org_pth, -min_unit, -value, -unit, -cast(pack_desc as int) as pack_desc, -org_pk_un, -manu -from dwd.dwd_gnd_aia_rawdata - --- COMMAND ---------- - - ---关联出AUDIT_COD、inst_code -create or replace temporary view aia_rawdata_2 as -with hospital_mapping as ( -select distinct -case when length(cpa_hospital_code) < 7 then right(concat('0000000',cpa_hospital_code),7) else cpa_hospital_code end as cpa_hospital_code, -ins_cd_nl as inst_code -from dwd.dwd_gnd_hospital_not_provided -) - -select upper(nvl(t2.inst_code,t1.org_ins_cd)) AUDIT_COD, -t1.*, -nvl(t2.inst_code,t1.org_ins_cd) as inst_code -from aia_rawdata_1 t1 -left join hospital_mapping t2 -on t1.org_ins_cd = t2.cpa_hospital_code --- left join dm.dm_td_institution t3 --- on t2.ins_code = t3.inst_code --- left join dm.dm_ims_td_geo t4 --- on t3.city_name_en = t4.city - - --- COMMAND ---------- - -/* -修改人 chenwu -修改时间 20250513 -修改内容 打包分子的数据,不论 打通表 和 事实表,都没有系数,需要用 事实表里的 最小制剂单位数量 作为counting_unit -*/ ---关联出pack_cod、corp_cod、counting_unit -create or replace temporary view aia_rawdata_3 as -select case when length(trim(t2.iqvia_pack_code)) < 12 and trim(t2.iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(t2.iqvia_pack_code)),12) - else trim(t2.iqvia_pack_code) - end as pack_cod, -t3.corp_cod, -case when left(t2.iqvia_pack_code,4) = 'AZP_' then cast(t1.min_unit/t1.org_pk_un as decimal(38,10)) else t3.counting_unit end counting_unit, --- t3.counting_unit,20250513 -t1.* -from aia_rawdata_2 t1 -left join (select distinct trim(iqvia_pack_code) as iqvia_pack_code, -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 from dwd.dwd_gnd_ext_aia_cpt_data) t2 ---ATC1编码+ATC2编码+ATC3编码+ATC4编码+药品编码(ATC)+药品通用名+药品产品名+药品商品名+规格+剂型+给药途径+最小销售包装单位+包装规格+生产企业 -on nvl(t1.ATC1,'') = nvl(t2.ATC1,'') -and nvl(t1.ATC2,'') = nvl(t2.ATC2,'') -and nvl(t1.ATC3,'') = nvl(t2.ATC3,'') -and nvl(t1.ATC4,'') = nvl(t2.ATC4,'') -and nvl(t1.ATC,'') = nvl(t2.org_prd_cd,'') -and nvl(t1.MOLE_NM,'') = nvl(t2.org_mole_nm_c,'') -and nvl(t1.PROD_NM,'') = nvl(t2.org_manu_prd_nm_c,'') -and nvl(t1.ORG_PRD_NM_C,'') = nvl(t2.org_prd_nm_c,'') -and nvl(t1.ORG_PK,'') = nvl(t2.org_pk,'') -and nvl(t1.ORG_PRD_STR,'') = nvl(t2.org_prd_str,'') -and nvl(t1.ORG_PTH,'') = nvl(t2.org_pth,'') -and nvl(t1.UNIT,'') = nvl(t2.min_pk_unit,'') -and nvl(t1.PACK_DESC,'') = nvl(t2.org_pk_unit,'') -and nvl(t1.MANU,'') = nvl(t2.org_manu_nm,'') -left join (select distinct PACK_COD,corp_cod,counting_unit from dm.dm_aia_pack_property) t3 -on t2.iqvia_pack_code = t3.PACK_COD - - --- COMMAND ---------- - - ---计算出ly销量 -create or replace temporary view aia_rawdata_4 as -with max_ym as ( -select max(ym) as max_ym from aia_rawdata_3 -) - -select - YM, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod, - sum(value) as value, - sum(volume) as volume, - sum(counting_unit) as counting_unit, - sum(value_ly) as value_ly, - sum(volume_ly) as volume_ly, - sum(counting_unit_ly) as counting_unit_ly -from ( -select - ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod, - cast(value as decimal(38,10)) as value, - cast(ORG_PK_UN as decimal(38,10)) as volume, - cast(ORG_PK_UN as decimal(38,10)) * coalesce(cast(counting_unit as decimal(38,10)),1) as counting_unit, - 0 as value_ly, - 0 as volume_ly, - 0 as counting_unit_ly -from aia_rawdata_3 -union all -select - cast(cast(ym as int) + 100 as string) as ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod, - 0 as value, - 0 as volume, - 0 as counting_unit, - cast(value as decimal(38,10)) as value_ly, - cast(ORG_PK_UN as decimal(38,10)) as volume_ly, - cast(ORG_PK_UN as decimal(38,10)) * coalesce(cast(counting_unit as decimal(38,10)),1) as counting_unit_ly -from aia_rawdata_3 t1 -join max_ym t2 -on 1=1 -where cast(cast(ym as int) + 100 as string) <= t2.max_ym - ) -group by ym, - org_ins_cd, - inst_code, - AUDIT_COD, - pack_cod, - corp_cod - - --- COMMAND ---------- - -insert overwrite table dm.dm_ext_aia_sales( -ym, -org_ins_cd, -inst_code, -AUDIT_COD, -pack_cod, -corp_cod, -value, -volume, -counting_unit, -value_ly, -volume_ly, -counting_unit_ly -) -select -ym, -org_ins_cd, -inst_code, -AUDIT_COD, -pack_cod, -corp_cod, -sum(value) as value, -sum(volume) as volume, -sum(counting_unit) as counting_unit, -sum(value_ly) as value_ly, -sum(volume_ly) as volume_ly, -sum(counting_unit_ly) as counting_unit_ly -from aia_rawdata_4 -group by -ym, -org_ins_cd, -inst_code, -AUDIT_COD, -pack_cod, -corp_cod \ No newline at end of file diff --git a/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql:Zone.Identifier b/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/02 dm_ext_aia_sales_bakup_20230327.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/03 dm_aia_flag.sql b/EXTERNAL/AIA/03 dm_aia_flag.sql deleted file mode 100644 index a33a05e..0000000 --- a/EXTERNAL/AIA/03 dm_aia_flag.sql +++ /dev/null @@ -1,84 +0,0 @@ --- Databricks notebook source ------------------------------------------------------------------------------------ ---修改时间:20241021 ---修改人:FanXujia ---修改内容: ---只取最新年-1 ~ 最新年范围内的,称为“2年共有”。增加 ------------------------------------------------------------------------------------ ---共有机构 -insert overwrite table dm.dm_aia_hp_flag -with max_year as ( -select -max(cast(year as int)) as max_year, -max(cast(year as int) - 1) as max_year_ly -from dwd.dwd_gnd_hospital_not_provided -) -,hp_flag as ( - select - distinct concat(t1.year, '-Y') as hp_his_flag, - case when length(t1.cpa_hospital_code) < 7 then right(concat('0000000',t1.cpa_hospital_code),7) else t1.cpa_hospital_code end as cpa_hospital_code - from - dwd.dwd_gnd_hospital_not_provided t1 - cross join max_year t2 - where cast(t1.year as int) >= t2.max_year_ly -) -,hp_flag2 as ( -SELECT - cpa_hospital_code, - CONCAT_WS(' ∩ ', SORT_ARRAY(COLLECT_LIST(hp_his_flag))) AS FLAG -FROM - hp_flag -GROUP BY - cpa_hospital_code -) -,inst_mapping as ( - -- select - -- distinct right(concat('0000000', org_cd), 7) org_cd, - -- ins_cd - -- from - -- dwd.dwd_gnd_hospitalmapping -select distinct -case when length(cpa_hospital_code) < 7 then right(concat('0000000',cpa_hospital_code),7) else cpa_hospital_code end as cpa_hospital_code, -ins_cd_nl as inst_code -from dwd.dwd_gnd_hospital_not_provided -) - -,ALL_INS as ( -select distinct inst_code -from dm.dm_ext_aia_sales -) - -,flag as ( - select distinct - coalesce(t2.inst_code,t1.cpa_hospital_code) as inst_code, - t1.flag as aia_hp_flag, - 'Y' as FLAG, -'AIA(Monthly)' as DATA_SOURCE - from hp_flag2 t1 - left join inst_mapping t2 on t1.cpa_hospital_code = t2.cpa_hospital_code - where - length(t1.flag) > 6 -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-CHPA(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'XH Data(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'EC(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'Retail(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'CHC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'THC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-COUNTY(Quarterly)' as DATA_SOURCE -) - -select t1.inst_code, -NVL(t2.aia_hp_flag,'') as aia_hp_flag, -NVL(t2.FLAG,'N') as FLAG, -'AIA(Monthly)' as DATA_SOURCE -from ALL_INS t1 -left join flag t2 -on t1.inst_code = t2.inst_code - diff --git a/EXTERNAL/AIA/03 dm_aia_flag.sql:Zone.Identifier b/EXTERNAL/AIA/03 dm_aia_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/03 dm_aia_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/04 dm_aia_provided_flag.sql b/EXTERNAL/AIA/04 dm_aia_provided_flag.sql deleted file mode 100644 index c772213..0000000 --- a/EXTERNAL/AIA/04 dm_aia_provided_flag.sql +++ /dev/null @@ -1,112 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dwd_hospital_classification`').createOrReplaceTempView('cdw_dwd_dwd_hospital_classification') - --- COMMAND ---------- - ---连续取数机构 ----------------------------------------------------------------------------------------------------------------------- ---修改时间:20241029 ---修改人:FanXujia ---修改内容: ---根据事实表最新月,往前推12个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动一年有数 ---根据事实表最新月,往前推24个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动两年有数 ---2022年没有销量为正常情况,判断时仅考虑2023年01月起销量是否等于0 ----------------------------------------------------------------------------------------------------------------------- -insert overwrite table dm.dm_aia_provided_flag -with max_ym as ( -select max(ym) as max_ym -from dm.dm_ext_aia_sales -) -,ym_range as ( -select max_ym, -case when max_ym <= '202412' then cast(right(max_ym,2) as int) - else cast(12 as int) -end ym_12m, -case when max_ym <= '202312' then '202401' - when right(max_ym,2) = '12' then concat(left(max_ym,4),'01') - else concat(cast(left(max_ym, 4) - 1 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) -end as ym_12m_before, -case when max_ym <= '202312' then cast(right(max_ym,2) as int) - when max_ym <= '202512' then cast(right(max_ym,2) as int) + 12 - else cast(24 as int) -end as ym_24m, -case when max_ym <= '202512' then '202401' - when right(max_ym,2) = '12' then concat(cast(left(max_ym,4) - 1 as int),'01') - else concat(cast(left(max_ym, 4) -2 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) -end as ym_24m_before -from max_ym -) -,sales_1 as ( -select - inst_code, - ym -from - dm.dm_ext_aia_sales -group by - ym, - inst_code -having - sum(value) <> 0 -) -,sales_2 as ( -select - t1.inst_code, - t1.ym, - t2.max_ym, - t2.ym_12m, - t2.ym_12m_before, - t2.ym_24m, - t2.ym_24m_before -from sales_1 t1 -cross join ym_range t2 -) -,flag_12m as ( -select inst_code, -'滚动一年有数' as aia_provided_flag, -'AIA(Monthly)' as DATA_SOURCE -from sales_2 -where ym <= max_ym -and ym >= ym_12m_before -group by inst_code -having count(1) = (select ym_12m from ym_range) -) -,flag_24m as ( -select inst_code, -'滚动两年有数' as aia_provided_flag, -'AIA(Monthly)' as DATA_SOURCE -from sales_2 -where ym <= max_ym -and ym >= ym_24m_before -group by inst_code -having count(1) = (select ym_24m from ym_range) -) - -select inst_code, -aia_provided_flag, -DATA_SOURCE -from flag_12m -union all -select inst_code, -aia_provided_flag, -DATA_SOURCE -from flag_24m -union all -select '' as inst_code,'' as aia_provided_flag,'IQVIA-CHPA(Monthly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'XH Data(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'EC(Monthly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'Retail(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'CHC(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'THC(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'IQVIA-COUNTY(Quarterly)' as data_source diff --git a/EXTERNAL/AIA/04 dm_aia_provided_flag.sql:Zone.Identifier b/EXTERNAL/AIA/04 dm_aia_provided_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/04 dm_aia_provided_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql b/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql deleted file mode 100644 index 3f5c061..0000000 --- a/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_PACK_PROPERTY --- ( --- -- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- -- MARKET STRING, --- -- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- -- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- -- CLASS STRING, --- -- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_PACK_PROPERTY -SELECT - -- MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - -- MARKET, - -- KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - -- AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - -- CLASS, - -- NULL AS MARKET_RATIO, - NULL AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_AIA_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/06 DM_TD_EXT_AIA_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql b/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql deleted file mode 100644 index ac0822c..0000000 --- a/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql +++ /dev/null @@ -1,339 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_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_aia_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market'; - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_PACK2MARKET_KEYCOMPETITOR ( --- KEY_COMPETITOR STRING, --- MARKET STRING, --- PACK_CODE STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market_keycompetitor'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market_keycompetitor'; - --- COMMAND ---------- - --- CREATE or REPLACE TABLE DM.DM_TD_EXT_AIA_PACK2MARKET_CLASS ( --- MARKET STRING, --- PACK_CODE STRING, --- CLASS STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market_class'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market_class'; - --- COMMAND ---------- - -select * from DM.DM_TD_EXT_AIA_PACK2MARKET where PACK_CODE = '000097274004' - - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_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, - 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_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_AIA_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, - 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_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_AIA_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 ---------- - ---删除需要隐藏的市场 -MERGE INTO DM.DM_TD_EXT_AIA_PACK2MARKET AS target -USING dwd.dwd_gnd_ims_hidden_market AS source -ON UPPER(target.market) = UPPER(source.hidden_market) -AND source.data_source = 'AIA' -WHEN MATCHED THEN DELETE; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_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_AIA_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 ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_PACK2MARKET_CLASS -SELECT - /*+ BROADCAST(T2) */ - DISTINCT - T1.MARKET, - T1.PACK_CODE, - COALESCE( T2.CLASS, 'OTHERS') AS CLASS -FROM DM.DM_TD_EXT_AIA_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) \ No newline at end of file diff --git a/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/07 DM_TD_EXT_AIA_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql b/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql deleted file mode 100644 index 2651cf1..0000000 --- a/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_aia_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_AIA_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/08 DM_TD_EXT_AIA_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql b/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 1bba9c1..0000000 --- a/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_AIA_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/09 DM_TD_EXT_AIA_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql b/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 798af44..0000000 --- a/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING - SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T4.CLASS, - T5.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_AIA_PACK2MARKET T1 - LEFT JOIN DM.DM_TD_EXT_AIA_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET - AND T1.PACK_CODE = T2.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_AIA_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET - AND T1.PACK_CODE = T3.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_AIA_PACK2MARKET_CLASS T4 - ON T1.PACK_CODE = T4.PACK_CODE - AND T1.MARKET = T4.MARKET - LEFT JOIN DM.DM_TD_EXT_AIA_PACK2MARKET_KEYCOMPETITOR T5 - ON T1.PACK_CODE = T5.PACK_CODE - AND T1.MARKET = T5.MARKET - WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/10 DM_TD_EXT_AIA_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql b/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql deleted file mode 100644 index f310520..0000000 --- a/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql +++ /dev/null @@ -1,366 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dwd_hospital_classification`').createOrReplaceTempView('cdw_dwd_dwd_hospital_classification') - --- COMMAND ---------- - ---------------------------------------------------------------------------- ---修改时间:20241108 ---修改人:Fanxujia ---修改内容: ---for AIA Dashboard ---增加sub_channel,dragon_flag,ka_flag,target_ins_level字段 ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- ---修改时间:20241209 ---修改人:Fanxujia ---修改内容: ---增加sub channel的排序 ---------------------------------------------------------------------------- ---目标医院 -insert overwrite table dm.dm_aia_targethp_flag --获取全部的机构 + 市场 -with sales as ( - select distinct t1.inst_code,t2.MARKET - from dm.dm_ext_aia_sales t1 - left join DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING t2 - on t1.pack_cod = t2.PACK_CODE -) ---获取产品与市场的映射关系 -,pack_market as ( -select distinct -PACK_CODE as PACK_COD, -MARKET -from DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING -) ---辖区表,获取到KA_Flag、target_ins_level以及目标机构Flag(在辖区表里存在的就是目标机构) -,td_territory_inst as ( -select distinct -inst_code, -trty_code, -family_code, -ka_flag, -TARGET_LEVEL as target_ins_level -from dm.dm_td_sd_territory_indication --eagle的非重点医院同样加为目标机构 -where yyyymm in ( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) -and bu not in ('CUBE','KA') -and key_hp<>3 --chenwu 20250904 排除双考影响 -) ---汇报线表,获取到Channel,后续用于判断出sub_channel -,td_org as ( -select distinct -t1.mr_trty_code, -case when t1.bu_code in ('PC14','PC16','PC18','PC19') then 'BU' - when t1.bu_code = 'SC01' and t1.sub_bu_code = 'NA29' then sub_bu_name - when t1.bu_code = 'SC01' then 'BU' - when t1.bu_code <> 'SC01' and t2.bm_name = 'BCBH' then 'BU' - when t1.bu_code <> 'SC01' then t1.bu_name -end as channel -from dm.dm_td_org t1 -left join dws.dws_td_bu_active t2 -on t1.bu_name = t2.bu_name -where t1.yyyymm in ( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) -) ---Family粒度和Brand粒度的映射表 -,product_wide as ( -select distinct -prd_family_cd, -prd_brand_cd -from cdw_dwd_dim_product_wide -) ---内部Brand粒度与外部pack_cod的映射表 -,imscode_azcode as ( -select distinct -brandcode, -case when length(ims_pack_cod) < 12 and ims_pack_cod REGEXP '^[0-9]' then right(concat('00000000000',ims_pack_cod),12) else ims_pack_cod end as ims_pack_cod -from dwd.dwd_td_imscode_azcode -) ---综合上面的几个表,得到KA_flag、target_ins_level、channel、目标机构Flag -,target_hp_all as ( -select - distinct - t1.inst_code, - t1.ka_flag, - t1.target_ins_level, - t2.channel, - t5.MARKET -from - td_territory_inst t1 - inner join td_org t2 on t1.trty_code = t2.mr_trty_code - left join product_wide t3 on t3.prd_family_cd = t1.family_code - left join imscode_azcode t4 on t3.prd_brand_cd = t4.brandcode - left join pack_market t5 on t4.ims_pack_cod = t5.pack_cod -where t5.MARKET is not null -) ---target_hp_all里一个机构一个市场对应了多个属性,这里按优先级依次取唯一值 ---ka_flag -,ka_flag1 as ( -select distinct -inst_code, -MARKET, -ka_flag -from target_hp_all -) -,ka_flag2 as ( -select -inst_code, -MARKET, -ka_flag, -row_number() over(partition by inst_code,market - order by case when ka_flag = 'KA' then 1 - ELSE 2 end asc) as RN -from ka_flag1 -) -,ka_flag_final as ( -select -inst_code, -MARKET, -ka_flag -from ka_flag2 -where RN = 1 -) ---target_ins_level不取唯一值 ---加个hardcoding,ONC Market和ALL Market设置成NA -,target_ins_level1 as ( -select distinct -inst_code, -MARKET, -case when MARKET in ('ALL Market','ONC Market') then 'NA' - else target_ins_level -end as target_ins_level -from target_hp_all -) -,target_ins_level_final as ( -select distinct -inst_code, -MARKET, -target_ins_level -from target_ins_level1 -) ---target_hp_all里一个机构一个市场对应了多个属性,这里按优先级依次取唯一值 ---Channel -,Channel1 as ( -select distinct -inst_code, -MARKET, -channel -from target_hp_all -) -,channel2 as ( -select -inst_code, -MARKET, -channel, -row_number() over(partition by inst_code,market - order by case when channel = 'BU' then 1 - when channel = 'BBU_County' then 2 - when channel = 'CHC' then 3 - when channel = 'Eagle' then 4 - ELSE 5 end asc) as RN -from channel1 -) -,channel_final as ( -select -inst_code, -MARKET, -channel -from channel2 -where RN = 1 -) ---确定唯一值后重新放一起 -,target_hp1 as ( -select distinct -inst_code, -MARKET -from target_hp_all -) -,target_hp as ( -select t1.inst_code, -t1.market, -t2.ka_flag, -t3.target_ins_level, -t4.channel -from target_hp1 t1 -left join ka_flag_final t2 -on t1.inst_code = t2.inst_code -and t1.market = t2.market -left join target_ins_level_final t3 -on t1.inst_code = t3.inst_code -and t1.market = t3.market -left join channel_final t4 -on t1.inst_code = t4.inst_code -and t1.market = t4.market -) - ---获取Dragon_type ---判断Dragon_type是否为County -,county as ( -select distinct inst_code,county_tier_desc -from dm.dm_td_institution -) ---判断另外2种 --- 20250825修改 -,dragon_type as ( -select src_hcc_code as inst_code, -src_prod_code as family_code, -max(is_core) is_core -from cdw_dwd_dwd_hospital_classification -where active_status = 1 -and src_sales_cycle = (select key_value from dm.dm_td_date_config where key_code = 'pfmc_cvh') -group by src_hcc_code, -src_prod_code -) ---将Family_code转为pack_cod -,dragon_type_market1 as ( -select distinct -t1.inst_code, -t1.is_core, -t4.market -from dragon_type t1 -left join cdw_dwd_dim_product_wide t2 -on t1.family_code = t2.prd_family_cd -left join dwd.dwd_td_imscode_azcode t3 -on t2.prd_brand_cd = t3.brandcode -left join pack_market t4 -on t3.ims_pack_cod = t4.pack_cod -where t4.market is not null -) ---按优先级取唯一值 -,dragon_type_market2 as ( -select distinct -inst_code, -is_core, -market, -row_number() over(partition by inst_code,market - order by case when is_core = 'CORE' then 1 - when is_core = 'EMERGING' then 2 - else 3 end asc) as RN -from dragon_type_market1 -) -,dragon_type_market as ( -select distinct -inst_code, -is_core, -market -from dragon_type_market2 -where RN = 1 -) ---综合前面几个表,得出dragon_flag -,dragon_flag1 as ( -select distinct -t0.inst_code, -t0.market, -case when t1.county_tier_desc in ('County','County level city') then 'County' - when t2.is_core is null or length(t2.is_core) = 0 then 'Others' - else t2.is_core -end as dragon_flag -from target_hp t0 -left join county t1 -on t0.inst_code = t1.inst_code -left join dragon_type_market t2 -on t0.inst_code = t2.inst_code -and t0.MARKET = t2.MARKET -) ---按优先级取唯一值 -,dragon_flag2 as ( -select inst_code, -market, -dragon_flag, -row_number() over(partition by inst_code,market - order by case when dragon_flag = 'CORE' then 1 - when dragon_flag = 'EMERGING' then 2 - when dragon_flag = 'County' then 3 - else 4 end asc) as RN -from dragon_flag1 -) -,dragon_flag as ( -select inst_code, -market, -dragon_flag -from dragon_flag2 -where RN = 1 -) - ---下面是为了把其他渠道并进来 -,other_data_source as ( -select explode(array('IQVIA-CHPA(Monthly)','XH Data(Quarterly)','EC(Monthly)','Retail(Quarterly)','CHC(Quarterly)','THC(Quarterly)','IQVIA-COUNTY(Quarterly)')) -) -,col as ( -select '' as inst_code, -'' as MARKET, -'' as is_target_hp, -'' as sub_channel, -'' as dragon_flag, -'' as ka_flag, -'' as target_ins_level -) - -,temp_1 as ( -select distinct -case when t1.inst_code is null or t1.inst_code = '' then 'ROC' - else t1.inst_code -end as inst_code, -t1.MARKET, -case when t2.inst_code is null then 'N' else 'Y' end as is_target_hp, -case when t2.channel = 'BU' and geo.county_tier_desc in ('County','County level city') then 'BU_County' - when t2.channel = 'BU' and geo.county_tier_desc in ('City-3b','City-4a','City-4b') then 'BU_Emerging' - when t2.channel = 'BU' and t3.dragon_flag = 'CORE' then 'BU_Core' - when t2.channel = 'BU' then 'BU_Emerging' - when t2.channel in ('Eagle','CHC','BBU_County') then t2.channel - when t2.inst_code is null then 'NON_TARGET' - else 'NA' -end as sub_channel, -case when t3.dragon_flag is null then 'NON_TARGET' - else t3.dragon_flag -end as dragon_flag, -case when t2.ka_flag is null then 'NON_TARGET' - else t2.ka_flag -end as ka_flag, -case when t2.target_ins_level is null then 'NON_TARGET' - else t2.target_ins_level -end as target_ins_level, -'AIA(Monthly)' as DATA_SOURCE -from sales t1 -left join target_hp t2 -on t1.inst_code = t2.inst_code -and t1.MARKET = t2.MARKET -left join dragon_flag t3 -on t1.inst_code = t3.inst_code -and t1.MARKET = t3.MARKET -left join dm.dm_td_institution inst -on t1.inst_code =inst.inst_code -left join dm.dm_td_geography geo -on inst.county_code = geo.geo_key -union all -select * -from col -cross join other_data_source -) -,sub_channel_rank as ( -select distinct SUB_CHANNELSTD,SUB_CHANNEL_ORDER -from dm.dm_td_sd_channel -) - - -select t1.*,NVL(t2.SUB_CHANNEL_ORDER,100) as SUB_CHANNEL_ORDER -from temp_1 t1 -left join sub_channel_rank t2 -on t1.sub_channel = t2.SUB_CHANNELSTD diff --git a/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql:Zone.Identifier b/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/11 dm_aia_targethp_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql b/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql deleted file mode 100644 index 0738500..0000000 --- a/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql +++ /dev/null @@ -1,643 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dwd_hospital_classification`').createOrReplaceTempView('cdw_dwd_dwd_hospital_classification') - --- COMMAND ---------- - ------------------------------------------------------------------------------------ ---修改时间:20241021 ---修改人:FanXujia ---修改内容: ---只取最新年-1 ~ 最新年范围内的,称为“2年共有”。增加 ------------------------------------------------------------------------------------ ---共有机构 -insert overwrite table dm.dm_aia_hp_flag -with max_year as ( -select -max(cast(year as int)) as max_year, -max(cast(year as int) - 1) as max_year_ly -from dwd.dwd_gnd_hospital_not_provided -) -,hp_flag as ( - select - distinct concat(t1.year, '-Y') as hp_his_flag, - case when length(t1.cpa_hospital_code) < 7 then right(concat('0000000',t1.cpa_hospital_code),7) else t1.cpa_hospital_code end as cpa_hospital_code - from - dwd.dwd_gnd_hospital_not_provided t1 - cross join max_year t2 - where cast(t1.year as int) >= t2.max_year_ly -) -,hp_flag2 as ( -SELECT - cpa_hospital_code, - CONCAT_WS(' ∩ ', SORT_ARRAY(COLLECT_LIST(hp_his_flag))) AS FLAG -FROM - hp_flag -GROUP BY - cpa_hospital_code -) -,inst_mapping as ( - -- select - -- distinct right(concat('0000000', org_cd), 7) org_cd, - -- ins_cd - -- from - -- dwd.dwd_gnd_hospitalmapping -select distinct -case when length(cpa_hospital_code) < 7 then right(concat('0000000',cpa_hospital_code),7) else cpa_hospital_code end as cpa_hospital_code, -ins_cd_nl as inst_code -from dwd.dwd_gnd_hospital_not_provided -) - -,ALL_INS as ( -select distinct inst_code -from dm.dm_ext_aia_sales -) - -,flag as ( - select distinct - coalesce(t2.inst_code,t1.cpa_hospital_code) as inst_code, - t1.flag as aia_hp_flag, - 'Y' as FLAG, -'AIA(Monthly)' as DATA_SOURCE - from hp_flag2 t1 - left join inst_mapping t2 on t1.cpa_hospital_code = t2.cpa_hospital_code - where - length(t1.flag) > 6 -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-CHPA(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'XH Data(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'EC(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'Retail(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'CHC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'THC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-COUNTY(Quarterly)' as DATA_SOURCE -) - -select t1.inst_code, -NVL(t2.aia_hp_flag,'') as aia_hp_flag, -NVL(t2.FLAG,'N') as FLAG, -'AIA(Monthly)' as DATA_SOURCE -from ALL_INS t1 -left join flag t2 -on t1.inst_code = t2.inst_code - - --- COMMAND ---------- - ------------------------------------------------------------------------------------ ---修改时间:20241021 ---修改人:FanXujia ---修改内容: ---只取最新年-1 ~ 最新年范围内的,称为“2年共有”。增加 ------------------------------------------------------------------------------------ ---共有机构 -insert overwrite table dm.dm_aia_hp_flag -with max_year as ( -select -max(cast(year as int)) as max_year, -max(cast(year as int) - 1) as max_year_ly -from dwd.dwd_gnd_hospital_not_provided -) -,hp_flag as ( - select - distinct concat(t1.year, '-Y') as hp_his_flag, - case when length(t1.cpa_hospital_code) < 7 then right(concat('0000000',t1.cpa_hospital_code),7) else t1.cpa_hospital_code end as cpa_hospital_code - from - dwd.dwd_gnd_hospital_not_provided t1 - cross join max_year t2 - where cast(t1.year as int) >= t2.max_year_ly -) -,hp_flag2 as ( -SELECT - cpa_hospital_code, - CONCAT_WS(' ∩ ', SORT_ARRAY(COLLECT_LIST(hp_his_flag))) AS FLAG -FROM - hp_flag -GROUP BY - cpa_hospital_code -) -,inst_mapping as ( - -- select - -- distinct right(concat('0000000', org_cd), 7) org_cd, - -- ins_cd - -- from - -- dwd.dwd_gnd_hospitalmapping -select distinct -case when length(cpa_hospital_code) < 7 then right(concat('0000000',cpa_hospital_code),7) else cpa_hospital_code end as cpa_hospital_code, -ins_cd_nl as inst_code -from dwd.dwd_gnd_hospital_not_provided -) - -,ALL_INS as ( -select distinct inst_code -from dm.dm_ext_aia_sales -) - -,flag as ( - select distinct - coalesce(t2.inst_code,t1.cpa_hospital_code) as inst_code, - t1.flag as aia_hp_flag, - 'Y' as FLAG, -'AIA(Monthly)' as DATA_SOURCE - from hp_flag2 t1 - left join inst_mapping t2 on t1.cpa_hospital_code = t2.cpa_hospital_code - where - length(t1.flag) > 6 -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-CHPA(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'XH Data(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'EC(Monthly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'Retail(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'CHC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'THC(Quarterly)' as DATA_SOURCE -union all -select '' as inst_code,'' as aia_hp_flag,'' as FLAG,'IQVIA-COUNTY(Quarterly)' as DATA_SOURCE -) - -select t1.inst_code, -NVL(t2.aia_hp_flag,'') as aia_hp_flag, -NVL(t2.FLAG,'N') as FLAG, -'AIA(Monthly)' as DATA_SOURCE -from ALL_INS t1 -left join flag t2 -on t1.inst_code = t2.inst_code - - --- COMMAND ---------- - ---连续取数机构 ----------------------------------------------------------------------------------------------------------------------- ---修改时间:20241029 ---修改人:FanXujia ---修改内容: ---根据事实表最新月,往前推12个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动一年有数 ---根据事实表最新月,往前推24个月(含最新月),按机构 + 年月粒度汇总,如果每个月销量都不等于0,这家机构称为:滚动两年有数 ---2022年没有销量为正常情况,判断时仅考虑2023年01月起销量是否等于0 ----------------------------------------------------------------------------------------------------------------------- -insert overwrite table dm.dm_aia_provided_flag -with max_ym as ( -select max(ym) as max_ym -from dm.dm_ext_aia_sales -) -,ym_range as ( -select max_ym, -case when max_ym <= '202412' then cast(right(max_ym,2) as int) - else cast(12 as int) -end ym_12m, -case when max_ym <= '202312' then '202401' - when right(max_ym,2) = '12' then concat(left(max_ym,4),'01') - else concat(cast(left(max_ym, 4) - 1 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) -end as ym_12m_before, -case when max_ym <= '202312' then cast(right(max_ym,2) as int) - when max_ym <= '202512' then cast(right(max_ym,2) as int) + 12 - else cast(24 as int) -end as ym_24m, -case when max_ym <= '202512' then '202401' - when right(max_ym,2) = '12' then concat(cast(left(max_ym,4) - 1 as int),'01') - else concat(cast(left(max_ym, 4) -2 as int),right(concat('0', cast(right(max_ym, 2) + 1 as int)), 2)) -end as ym_24m_before -from max_ym -) -,sales_1 as ( -select - inst_code, - ym -from - dm.dm_ext_aia_sales -group by - ym, - inst_code -having - sum(value) <> 0 -) -,sales_2 as ( -select - t1.inst_code, - t1.ym, - t2.max_ym, - t2.ym_12m, - t2.ym_12m_before, - t2.ym_24m, - t2.ym_24m_before -from sales_1 t1 -cross join ym_range t2 -) -,flag_12m as ( -select inst_code, -'滚动一年有数' as aia_provided_flag, -'AIA(Monthly)' as DATA_SOURCE -from sales_2 -where ym <= max_ym -and ym >= ym_12m_before -group by inst_code -having count(1) = (select ym_12m from ym_range) -) -,flag_24m as ( -select inst_code, -'滚动两年有数' as aia_provided_flag, -'AIA(Monthly)' as DATA_SOURCE -from sales_2 -where ym <= max_ym -and ym >= ym_24m_before -group by inst_code -having count(1) = (select ym_24m from ym_range) -) - -select inst_code, -aia_provided_flag, -DATA_SOURCE -from flag_12m -union all -select inst_code, -aia_provided_flag, -DATA_SOURCE -from flag_24m -union all -select '' as inst_code,'' as aia_provided_flag,'IQVIA-CHPA(Monthly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'XH Data(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'EC(Monthly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'Retail(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'CHC(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'THC(Quarterly)' as data_source -union all -select '' as inst_code,'' as aia_provided_flag,'IQVIA-COUNTY(Quarterly)' as data_source - - --- COMMAND ---------- - ---------------------------------------------------------------------------- ---修改时间:20241108 ---修改人:Fanxujia ---修改内容: ---for AIA Dashboard ---增加sub_channel,dragon_flag,ka_flag,target_ins_level字段 ---------------------------------------------------------------------------- ---------------------------------------------------------------------------- ---修改时间:20241209 ---修改人:Fanxujia ---修改内容: ---增加sub channel的排序 ---------------------------------------------------------------------------- ---目标医院 -insert overwrite table dm.dm_aia_targethp_flag --获取全部的机构 + 市场 -with sales as ( - select distinct t1.inst_code,t2.MARKET - from dm.dm_ext_aia_sales t1 - left join dm.dm_aia_pack_property t2 - on t1.pack_cod = t2.PACK_COD -) ---获取产品与市场的映射关系 -,pack_market as ( -select distinct -PACK_COD, -MARKET -from dm.dm_aia_pack_property -) ---辖区表,获取到KA_Flag、target_ins_level以及目标机构Flag(在辖区表里存在的就是目标机构) -,td_territory_inst as ( -select distinct -inst_code, -trty_code, -family_code, -ka_flag, -TARGET_LEVEL as target_ins_level -from dm.dm_td_sd_territory_indication --eagle的非重点医院同样加为目标机构 -where yyyymm in ( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) -and bu not in ('CUBE','KA') -and key_hp<>3 --chenwu 20250904 排除双考影响 -) ---汇报线表,获取到Channel,后续用于判断出sub_channel -,td_org as ( -select distinct -t1.mr_trty_code, -case when t1.bu_code in ('PC14','PC16','PC18','PC19') then 'BU' - when t1.bu_code = 'SC01' and t1.sub_bu_code = 'NA29' then sub_bu_name - when t1.bu_code = 'SC01' then 'BU' - when t1.bu_code <> 'SC01' and t2.bm_name = 'BCBH' then 'BU' - when t1.bu_code <> 'SC01' then t1.bu_name -end as channel -from dm.dm_td_org t1 -left join dws.dws_td_bu_active t2 -on t1.bu_name = t2.bu_name -where t1.yyyymm in ( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) -) ---Family粒度和Brand粒度的映射表 -,product_wide as ( -select distinct -prd_family_cd, -prd_brand_cd -from cdw_dwd_dim_product_wide -) ---内部Brand粒度与外部pack_cod的映射表 -,imscode_azcode as ( -select distinct -brandcode, -case when length(ims_pack_cod) < 12 and ims_pack_cod REGEXP '^[0-9]' then right(concat('00000000000',ims_pack_cod),12) else ims_pack_cod end as ims_pack_cod -from dwd.dwd_td_imscode_azcode -) ---综合上面的几个表,得到KA_flag、target_ins_level、channel、目标机构Flag -,target_hp_all as ( -select - distinct - t1.inst_code, - t1.ka_flag, - t1.target_ins_level, - t2.channel, - t5.MARKET -from - td_territory_inst t1 - inner join td_org t2 on t1.trty_code = t2.mr_trty_code - left join product_wide t3 on t3.prd_family_cd = t1.family_code - left join imscode_azcode t4 on t3.prd_brand_cd = t4.brandcode - left join pack_market t5 on t4.ims_pack_cod = t5.pack_cod -where t5.MARKET is not null -) ---target_hp_all里一个机构一个市场对应了多个属性,这里按优先级依次取唯一值 ---ka_flag -,ka_flag1 as ( -select distinct -inst_code, -MARKET, -ka_flag -from target_hp_all -) -,ka_flag2 as ( -select -inst_code, -MARKET, -ka_flag, -row_number() over(partition by inst_code,market - order by case when ka_flag = 'KA' then 1 - ELSE 2 end asc) as RN -from ka_flag1 -) -,ka_flag_final as ( -select -inst_code, -MARKET, -ka_flag -from ka_flag2 -where RN = 1 -) ---target_ins_level不取唯一值 ---加个hardcoding,ONC Market和ALL Market设置成NA -,target_ins_level1 as ( -select distinct -inst_code, -MARKET, -case when MARKET in ('AIA ALL Market','ONC Market') then 'NA' - else target_ins_level -end as target_ins_level -from target_hp_all -) -,target_ins_level_final as ( -select distinct -inst_code, -MARKET, -target_ins_level -from target_ins_level1 -) ---target_hp_all里一个机构一个市场对应了多个属性,这里按优先级依次取唯一值 ---Channel -,Channel1 as ( -select distinct -inst_code, -MARKET, -channel -from target_hp_all -) -,channel2 as ( -select -inst_code, -MARKET, -channel, -row_number() over(partition by inst_code,market - order by case when channel = 'BU' then 1 - when channel = 'BBU_County' then 2 - when channel = 'CHC' then 3 - when channel = 'Eagle' then 4 - ELSE 5 end asc) as RN -from channel1 -) -,channel_final as ( -select -inst_code, -MARKET, -channel -from channel2 -where RN = 1 -) ---确定唯一值后重新放一起 -,target_hp1 as ( -select distinct -inst_code, -MARKET -from target_hp_all -) -,target_hp as ( -select t1.inst_code, -t1.market, -t2.ka_flag, -t3.target_ins_level, -t4.channel -from target_hp1 t1 -left join ka_flag_final t2 -on t1.inst_code = t2.inst_code -and t1.market = t2.market -left join target_ins_level_final t3 -on t1.inst_code = t3.inst_code -and t1.market = t3.market -left join channel_final t4 -on t1.inst_code = t4.inst_code -and t1.market = t4.market -) - ---获取Dragon_type ---判断Dragon_type是否为County -,county as ( -select distinct inst_code,county_tier_desc -from dm.dm_td_institution -) ---判断另外2种 --- 20250825修改 -,dragon_type as ( -select src_hcc_code as inst_code, -src_prod_code as family_code, -max(is_core) is_core -from cdw_dwd_dwd_hospital_classification -where active_status = 1 -and src_sales_cycle = (select key_value from dm.dm_td_date_config where key_code = 'pfmc_cvh') -group by src_hcc_code, -src_prod_code -) ---将Family_code转为pack_cod -,dragon_type_market1 as ( -select distinct -t1.inst_code, -t1.is_core, -t4.market -from dragon_type t1 -left join cdw_dwd_dim_product_wide t2 -on t1.family_code = t2.prd_family_cd -left join dwd.dwd_td_imscode_azcode t3 -on t2.prd_brand_cd = t3.brandcode -left join pack_market t4 -on t3.ims_pack_cod = t4.pack_cod -where t4.market is not null -) ---按优先级取唯一值 -,dragon_type_market2 as ( -select distinct -inst_code, -is_core, -market, -row_number() over(partition by inst_code,market - order by case when is_core = 'CORE' then 1 - when is_core = 'EMERGING' then 2 - else 3 end asc) as RN -from dragon_type_market1 -) -,dragon_type_market as ( -select distinct -inst_code, -is_core, -market -from dragon_type_market2 -where RN = 1 -) ---综合前面几个表,得出dragon_flag -,dragon_flag1 as ( -select distinct -t0.inst_code, -t0.market, -case when t1.county_tier_desc in ('County','County level city') then 'County' - when t2.is_core is null or length(t2.is_core) = 0 then 'Others' - else t2.is_core -end as dragon_flag -from target_hp t0 -left join county t1 -on t0.inst_code = t1.inst_code -left join dragon_type_market t2 -on t0.inst_code = t2.inst_code -and t0.MARKET = t2.MARKET -) ---按优先级取唯一值 -,dragon_flag2 as ( -select inst_code, -market, -dragon_flag, -row_number() over(partition by inst_code,market - order by case when dragon_flag = 'CORE' then 1 - when dragon_flag = 'EMERGING' then 2 - when dragon_flag = 'County' then 3 - else 4 end asc) as RN -from dragon_flag1 -) -,dragon_flag as ( -select inst_code, -market, -dragon_flag -from dragon_flag2 -where RN = 1 -) - ---下面是为了把其他渠道并进来 -,other_data_source as ( -select explode(array('IQVIA-CHPA(Monthly)','XH Data(Quarterly)','EC(Monthly)','Retail(Quarterly)','CHC(Quarterly)','THC(Quarterly)','IQVIA-COUNTY(Quarterly)')) -) -,col as ( -select '' as inst_code, -'' as MARKET, -'' as is_target_hp, -'' as sub_channel, -'' as dragon_flag, -'' as ka_flag, -'' as target_ins_level -) - -,temp_1 as ( -select distinct -case when t1.inst_code is null or t1.inst_code = '' then 'ROC' - else t1.inst_code -end as inst_code, -t1.MARKET, -case when t2.inst_code is null then 'N' else 'Y' end as is_target_hp, -case when t2.channel = 'BU' and geo.county_tier_desc in ('County','County level city') then 'BU_County' - when t2.channel = 'BU' and geo.county_tier_desc in ('City-3b','City-4a','City-4b') then 'BU_Emerging' - when t2.channel = 'BU' and t3.dragon_flag = 'CORE' then 'BU_Core' - when t2.channel = 'BU' then 'BU_Emerging' - when t2.channel in ('Eagle','CHC','BBU_County') then t2.channel - when t2.inst_code is null then 'NON_TARGET' - else 'NA' -end as sub_channel, -case when t3.dragon_flag is null then 'NON_TARGET' - else t3.dragon_flag -end as dragon_flag, -case when t2.ka_flag is null then 'NON_TARGET' - else t2.ka_flag -end as ka_flag, -case when t2.target_ins_level is null then 'NON_TARGET' - else t2.target_ins_level -end as target_ins_level, -'AIA(Monthly)' as DATA_SOURCE -from sales t1 -left join target_hp t2 -on t1.inst_code = t2.inst_code -and t1.MARKET = t2.MARKET -left join dragon_flag t3 -on t1.inst_code = t3.inst_code -and t1.MARKET = t3.MARKET -left join dm.dm_td_institution inst -on t1.inst_code =inst.inst_code -left join dm.dm_td_geography geo -on inst.county_code = geo.geo_key -union all -select * -from col -cross join other_data_source -) -,sub_channel_rank as ( -select distinct SUB_CHANNELSTD,SUB_CHANNEL_ORDER -from dm.dm_td_sd_channel -) - - -select t1.*,NVL(t2.SUB_CHANNEL_ORDER,100) as SUB_CHANNEL_ORDER -from temp_1 t1 -left join sub_channel_rank t2 -on t1.sub_channel = t2.SUB_CHANNELSTD diff --git a/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql:Zone.Identifier b/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/AIA/z_03 dm_aia_flag_备份用.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/01 dm_chc_pack_property.sql b/EXTERNAL/CHC/01 dm_chc_pack_property.sql deleted file mode 100644 index 4484c53..0000000 --- a/EXTERNAL/CHC/01 dm_chc_pack_property.sql +++ /dev/null @@ -1,231 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE dm.dm_chc_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, --- countingunit 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 ---------- - -update dwd.dwd_gnd_ext_chc_pack_property -set iqvia_pack_code = if( iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',iqvia_pack_code),12),iqvia_pack_code) -,iqvia_prod_code = right(concat('000000000',iqvia_prod_code),9) - --- COMMAND ---------- - -create or replace temporary view dwd_pack_property -as -select distinct - iqvia_pack_code , - iqvia_prod_code , - pack_cod , - app1_cod , - app1_des , - app1_des_c , - app2_cod , - app2_des , - app2_des_c , - app3_cod , - app3_des , - app3_des_c , - atc1_cod , - atc1_des , - atc1_des_c , - atc2_cod , - atc2_des , - atc2_des_c , - atc3_cod , - atc3_des , - atc3_des_c , - atc4_cod , - atc4_des , - atc4_des_c , - bio_desc , - cmps_cod , - cmps_des , - cmps_des_c , - corp_cod , - corp_des , - corp_des_c , - edl_desc , - eth_otc_desc , - gene_orig_desc , - gqce_desc , - manu_cod , - manu_des , - manu_des_c , - mnfl_cod , - mnfl_des , - nrdl_desc , - pack_des , - stgh_des , - pack_lch , - paed_desc , - prod_des , - prod_des_c , - tcm_desc , - vbp_desc , - builtinarchivedate , - source_file_path , - source_file_name , - etl_insert_dt , - countingunit -from dwd.dwd_gnd_ext_chc_pack_property - --- COMMAND ---------- - --- create or replace table dm.dm_chc_pack_property --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_chc_pack_property' --- as -insert overwrite table dm.dm_chc_pack_property -WITH dedup_l AS ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY iqvia_pack_code ORDER BY iqvia_pack_code) AS rn - FROM dwd_pack_property - 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.countingunit, - 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 \ No newline at end of file diff --git a/EXTERNAL/CHC/01 dm_chc_pack_property.sql:Zone.Identifier b/EXTERNAL/CHC/01 dm_chc_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/01 dm_chc_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql b/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql deleted file mode 100644 index 8b96869..0000000 --- a/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql +++ /dev/null @@ -1,418 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_CHC_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RAW_DATA -AS -SELECT - CASE - WHEN SUBSTRING(YQ, 5, 2) = 'Q1' - THEN CONCAT (SUBSTRING(YQ, 1, 4), '03') - WHEN SUBSTRING(YQ, 5, 2) = 'Q2' - THEN CONCAT (SUBSTRING(YQ, 1, 4), '06') - WHEN SUBSTRING(YQ, 5, 2) = 'Q3' - THEN CONCAT (SUBSTRING(YQ, 1, 4), '09') - WHEN SUBSTRING(YQ, 5, 2) = 'Q4' - THEN CONCAT (SUBSTRING(YQ, 1, 4), '12') - ELSE YQ - END AS YQ, - CITY_C, - PACK_COD, - PROD_COD, - VALUE, - TOTALUNIT, - COUNTINGUNIT -FROM - DWD.DWD_GND_CHC_RAWDATA -WHERE - YEAR >= '2021' - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FILTER_YM -AS -SELECT - MAX(YQ) AS MAX_YYYYMM, - CONCAT(CAST(FLOOR(MAX(YQ)/100-1) AS STRING),'01') AS MIN_YYYYMM -FROM - RAW_DATA - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW CORP_DATA -AS -SELECT - PACK_COD, - CORP_COD, - CORP_DES -FROM - DM.DM_IMS_TD_PACK_PROPERTY -GROUP BY - PACK_COD, - CORP_COD, - CORP_DES - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW PACK_DATA -AS -SELECT - DISTINCT - IQVIA_PACK_CODE, - IQVIA_PROD_CODE, - PACK_COD, - APP1_COD, - APP1_DES, - APP1_DES_C, - APP2_COD, - APP2_DES, - APP2_DES_C, - APP3_COD, - APP3_DES, - APP3_DES_C, - ATC1_COD, - ATC1_DES, - ATC1_DES_C, - ATC2_COD, - ATC2_DES, - ATC2_DES_C, - ATC3_COD, - ATC3_DES, - ATC3_DES_C, - ATC4_COD, - ATC4_DES, - ATC4_DES_C, - BIO_DESC, - CMPS_COD, - CMPS_DES, - CMPS_DES_C, - CORP_COD, - CORP_DES, - CORP_DES_C, - EDL_DESC, - ETH_OTC_DESC, - GENE_ORIG_DESC, - GQCE_DESC, - MANU_COD, - MANU_DES, - MANU_DES_C, - MNFL_COD, - MNFL_DES, - NRDL_DESC, - PACK_DES, - STGH_DES, - PACK_LCH, - PAED_DESC, - PROD_DES, - PROD_DES_C, - TCM_DESC, - VBP_DESC, - BUILTINARCHIVEDATE, - SOURCE_FILE_PATH, - SOURCE_FILE_NAME, - ETL_INSERT_DT, - COUNTINGUNIT -FROM - DWD.DWD_GND_EXT_CHC_PACK_PROPERTY - --- COMMAND ---------- - ---CHC本身唯独表 存在CORP_COD以及 CORP_DES 与手工数据不一致的问题 -CREATE OR REPLACE TEMPORARY VIEW PACK_WIHT_CORP_DATA -AS -SELECT - T1.PACK_COD, - T1.IQVIA_PACK_CODE, - T1.COUNTINGUNIT, - COALESCE(T2.CORP_COD, T1.CORP_COD) AS CORP_COD, - COALESCE(T2.CORP_DES, T1.CORP_DES) AS CORP_DES -FROM - PACK_DATA T1 -LEFT JOIN - CORP_DATA T2 -ON - T1.IQVIA_PACK_CODE = T2.PACK_COD - --- COMMAND ---------- - ---GEO相关信息 在CHPA中没有 苏州、无锡、福州等数据,根据业务反馈,按照 CITY_C当作AUDIT_COD -CREATE OR REPLACE TEMPORARY VIEW DIM_EXCHC_GEO -AS -SELECT - T1.CITY_E, - CONCAT (T1.CITY_C, '市') AS CITY_C, - UPPER(NVL (T2.AUDIT_COD, T1.CITY_E)) AS AUDIT_COD -FROM - DWD.DWD_GND_EXT_CHC_GEO T1 -LEFT JOIN - DM.DM_IMS_TD_GEO T2 -ON - T1.CITY_E = T2.CITY - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_WIHT_PACK_CORP_GEO_DATA -AS -SELECT - T1.YQ, - T1.CITY_C, - T3.IQVIA_PACK_CODE AS PACK_COD, - T3.CORP_COD AS CORP_COD, - C.AUDIT_COD AS AUDIT_COD, - T1.PROD_COD, - T1.VALUE, - T1.TOTALUNIT, - T1.TOTALUNIT * NVL (T3.COUNTINGUNIT, 1) AS COUNTINGUNIT -FROM - RAW_DATA T1 -LEFT JOIN - PACK_WIHT_CORP_DATA T3 -ON - T1.PACK_COD = T3.PACK_COD -LEFT JOIN - DIM_EXCHC_GEO C -ON - T1.CITY_C = C.CITY_C - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_WIHT_LY -AS -SELECT - A.YQ, - A.AUDIT_COD, - A.PACK_COD, - A.CORP_COD, - SUM(A.VALUE) VALUE, - SUM(A.TOTALUNIT) TOTALUNIT, - SUM(A.COUNTINGUNIT) COUNTINGUNIT, - SUM(VALUE_LY) VALUE_LY, - SUM(TOTALUNIT_LY) TOTALUNIT_LY, - SUM(COUNTINGUNIT_LY) COUNTINGUNIT_LY -FROM - ( - SELECT - T1.YQ, - T1.AUDIT_COD, - T1.PACK_COD, - T1.CORP_COD, - T1.VALUE, - T1.TOTALUNIT, - T1.COUNTINGUNIT, - 0 VALUE_LY, - 0 TOTALUNIT_LY, - 0 COUNTINGUNIT_LY - FROM - RAW_DATA_WIHT_PACK_CORP_GEO_DATA T1 - UNION ALL - SELECT - CAST(T1.YQ + 100 AS INT), - T1.AUDIT_COD, - T1.PACK_COD, - T1.CORP_COD, - 0 VALUE, - 0 TOTALUNIT, - 0 COUNTINGUNIT, - T1.VALUE VALUE_LY, - T1.TOTALUNIT TOTALUNIT_LY, - T1.COUNTINGUNIT COUNTINGUNIT_LY - FROM - RAW_DATA_WIHT_PACK_CORP_GEO_DATA AS T1 - CROSS JOIN - FILTER_YM AS T2 - WHERE - T1.YQ + 100 <= T2.MAX_YYYYMM - ) A -GROUP BY - A.YQ, - A.AUDIT_COD, - A.PACK_COD, - A.CORP_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_FINAL -AS -SELECT - T1.YQ AS YYYYMM, - T1.AUDIT_COD, - T1.PACK_COD, - T1.CORP_COD, - SUM(TOTALUNIT) AS SALES_UNIT_CAL, -- TOTALUNIT, - SUM(TOTALUNIT_LY) AS SALES_UNIT_CAL_LY, --TOTALUNIT_LY, - SUM(VALUE) AS SALES_VALUE_CAL, --VALUE, - SUM(VALUE_LY) AS SALES_VALUE_CAL_LY, - SUM(COUNTINGUNIT) AS CONUTING_UNIT, --COUNTINGUNIT, - SUM(COUNTINGUNIT_LY) AS CONUTING_UNIT_LY, - 'CHC(Quarterly)' AS DATA_SOURCE -FROM - RAW_DATA_WIHT_LY T1 -GROUP BY - T1.YQ, - T1.AUDIT_COD, - T1.PACK_COD, - T1.CORP_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DM_TF_EXT_CHC_SALES AS -SELECT - A.YYYYMM, - A.PACK_COD AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'CHC(Quarterly)' DATA_SOURCE, - ------------------------------------- - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用E -------------------------------------- -FROM - RAW_DATA_FINAL A -WHERE - YYYYMM - >= ( - SELECT - CAST((LEFT(MAX(YYYYMM), 4) - 3) * 100 + 1 AS INT) - FROM - RAW_DATA_FINAL - ) - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_CHC_SALES ( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) - SELECT - YYYYMM, - NVL(NULLIF(PACK_CODE, ''), CONCAT('PACK_CODE_', DATA_SOURCE)) AS PACK_CODE, - NVL(NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT - FROM - DM_TF_EXT_CHC_SALES; \ No newline at end of file diff --git a/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql:Zone.Identifier b/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/02 DM_TF_EXT_CHC_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql b/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql deleted file mode 100644 index fe11e4c..0000000 --- a/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql +++ /dev/null @@ -1,147 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_PACK_PROPERTY --- ( --- -- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- -- MARKET STRING, --- -- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- -- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- -- CLASS STRING, --- -- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack_property'; - - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_PACK_PROPERTY -SELECT - -- MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - -- MARKET, - -- KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - -- AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - -- CLASS, - -- NULL AS MARKET_RATIO, - COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_CHC_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/03 DM_TD_EXT_CHC_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql b/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql deleted file mode 100644 index feabc38..0000000 --- a/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql +++ /dev/null @@ -1,327 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_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_chc_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market'; - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_chc_PACK2MARKET_KEYCOMPETITOR ( --- KEY_COMPETITOR STRING, --- MARKET STRING, --- PACK_CODE STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market_keycompetitor'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market_keycompetitor'; - --- COMMAND ---------- - --- CREATE or REPLACE TABLE DM.DM_TD_EXT_chc_PACK2MARKET_CLASS ( --- MARKET STRING, --- PACK_CODE STRING, --- CLASS STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market_class'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market_class'; - --- COMMAND ---------- - --- 使用 EXCEPT(集合差操作)简化逻辑 -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_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_CHC_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_CHC_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_CHC_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_CHC_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 ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_PACK2MARKET_CLASS -SELECT - /*+ BROADCAST(T2) */ - DISTINCT - T1.MARKET, - T1.PACK_CODE, - COALESCE( T2.CLASS, 'OTHERS') AS CLASS -FROM DM.DM_TD_EXT_CHC_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) \ No newline at end of file diff --git a/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/04 DM_TD_EXT_CHC_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql b/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql deleted file mode 100644 index cc48748..0000000 --- a/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_chc_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_CHC_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/05 DM_TD_EXT_CHC_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql b/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 31d5aa6..0000000 --- a/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_CHC_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/06 DM_TD_EXT_CHC_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql b/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 08e6199..0000000 --- a/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHC_MARKET_PACK_MAPPING - SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T4.CLASS, - T5.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_CHC_PACK2MARKET T1 - LEFT JOIN DM.DM_TD_EXT_CHC_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET - AND T1.PACK_CODE = T2.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_CHC_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET - AND T1.PACK_CODE = T3.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_CHC_PACK2MARKET_CLASS T4 - ON T1.PACK_CODE = T4.PACK_CODE - AND T1.MARKET = T4.MARKET - LEFT JOIN DM.DM_TD_EXT_CHC_PACK2MARKET_KEYCOMPETITOR T5 - ON T1.PACK_CODE = T5.PACK_CODE - AND T1.MARKET = T5.MARKET - WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHC/07 DM_TD_EXT_CHC_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql b/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql deleted file mode 100644 index ced8853..0000000 --- a/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql +++ /dev/null @@ -1,42 +0,0 @@ --- Databricks notebook source ---dwd to dws ---清洗数据的操作 - - ----处理宽维度表 202108 ---PRINT(GETDATE()) - ----ATC 处理成宽表 - -insert overwrite table dwd.dwd_ims_atc_hierarchy -SELECT * --into DIM_ATC_Hierarchy - FROM (SELECT Therapeutic_ID AS ATC1_ID, - Therapeutic_Code AS ATC1_CODE, - Therapeutic_Name AS ATC1_DES - FROM dwd.dwd_ims_td_therapeutic_class ATC - WHERE ATC. Therapeutic_Level = '1') ATC1 - - LEFT JOIN (SELECT Therapeutic_ID AS ATC2_ID, - Therapeutic_Code AS ATC2_CODE, - Therapeutic_Name AS ATC2_DES - FROM dwd.dwd_ims_td_therapeutic_class ATC - WHERE ATC. Therapeutic_Level = '2') ATC2 - ON ATC1. ATC1_CODE = - LEFT (ATC2. ATC2_CODE, 1) - - LEFT JOIN (SELECT Therapeutic_ID AS ATC3_ID, - Therapeutic_Code AS ATC3_CODE, - Therapeutic_Name AS ATC3_DES - FROM dwd.dwd_ims_td_therapeutic_class ATC - WHERE ATC. Therapeutic_Level = '3') ATC3 - ON ATC2. ATC2_CODE = - LEFT (ATC3. ATC3_CODE, 3) - - LEFT JOIN (SELECT Therapeutic_ID AS ATC4_ID, - Therapeutic_Code AS ATC4_CODE, - Therapeutic_Name AS ATC4_DES - FROM dwd.dwd_ims_td_therapeutic_class ATC - WHERE ATC. Therapeutic_Level = '4') ATC4 - ON ATC3. ATC3_CODE = - LEFT (ATC4. ATC4_CODE, 4) -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql:Zone.Identifier b/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01 dwd_ims_atc_hierarchy.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql b/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql deleted file mode 100644 index 8adc695..0000000 --- a/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql +++ /dev/null @@ -1,26 +0,0 @@ --- Databricks notebook source ---NFC 处理成宽表 -insert overwrite table dwd.dwd_ims_nfc_hierarchy -SELECT * - FROM (SELECT NewFormClass_ID as NFC1_ID, - NewFormClass_Code as NFC1_CODE, - NewFormClass_Name as NFC1_DES - FROM dwd.dwd_ims_td_new_form_class NFC - WHERE NewFormClass_Level = '1') NFC1 - - LEFT JOIN (SELECT NewFormClass_ID as NFC2_ID, - NewFormClass_Code as NFC2_CODE, - NewFormClass_Name as NFC2_DES - FROM dwd.dwd_ims_td_new_form_class NFC - WHERE NewFormClass_Level = '2') NFC2 - ON NFC1.NFC1_CODE = - LEFT (NFC2.NFC2_CODE, 1) - - LEFT JOIN (SELECT NewFormClass_ID as NFC3_ID, - NewFormClass_Code as NFC3_CODE, - NewFormClass_Name as NFC3_DES - FROM dwd.dwd_ims_td_new_form_class NFC - WHERE NewFormClass_Level = '3') NFC3 - ON NFC2.NFC2_CODE = - LEFT (NFC3.NFC3_CODE, 2) -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql:Zone.Identifier b/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01 dwd_ims_nfc_hierarchy.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql b/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql deleted file mode 100644 index 94e6cc3..0000000 --- a/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Databricks notebook source ------------------------------------------------------------------------------------------------------------------ ---修改时间:20240904 ---修改人:FanXujia ---修改内容: ---id为93的数,manufacturer_abbr不是SH/了,所以不能使用这个语句更新了。 ------------------------------------------------------------------------- ---MANU维度表,ManufacturerType_ID中存在为0的数据,关联不出对应的ManufacturerType ---经过检查,ManufacturerType_ID = 0 的数据,其下属子集或者本身为MNC,所以将其修改成2,让报告上能正常识别成MNC -UPDATE dwd.dwd_ims_td_manufacturer SET ManufacturerType_ID = 2 WHERE ManufacturerType_ID = 0; --- SH/的一行数据 中 / 为转义符,后面的数据不能有效识别,需要手动更新 --- update dwd.dwd_ims_td_manufacturer set manufacturer_abbr ='SH/' where manufacturer_id = '93'; --- update dwd.dwd_ims_td_manufacturer set corporation_id ='93' where manufacturer_id = '93'; --- update dwd.dwd_ims_td_manufacturer set corporation_code ='00221' where manufacturer_id = '93'; --- update dwd.dwd_ims_td_manufacturer set manufacturertype_id ='1' where manufacturer_id = '93'; ------------------------------------------------------------------------------------------------------------------ - ---处理manu跟corp的mapping关系 -insert overwrite table dwd.dwd_ims_td_manufacturer_corp -SELECT T1.*,T2.Corporation_Code AS CORP_MASTER_CODE,T2.Manufacturer_Abbr AS CORP_ABBR,T2.Manufacturer_Name AS CORP_DES -FROM dwd.dwd_ims_td_manufacturer T1 -LEFT JOIN dwd.dwd_ims_td_manufacturer T2 -ON T1.Corporation_Code = T2.Manufacturer_CODE -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql:Zone.Identifier b/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01 dwd_ims_td_manufacturer_corp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql b/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql deleted file mode 100644 index ab4da1a..0000000 --- a/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql +++ /dev/null @@ -1,89 +0,0 @@ --- Databricks notebook source - --------使用新的DIM表,生成PackProfile,保证后续的逻辑 --- 20260119 依赖前面 dwd.dwd_ims_nfc_hierarchy、dwd.dwd_ims_atc_hierarchy、dwd.dwd_ims_td_manufacturer_corp --- 20260119 依赖上面补0 dwd.dwd_gnd_ims_tblbrandtype - -insert overwrite table dwd.dwd_ims_td_pack_property -select DISTINCT -if( PACK.Pack_Code REGEXP '^[0-9]',right(concat('000000000000',PACK.Pack_Code),12),PACK.Pack_Code) as PACK_COD, --RIGHT(concat('0000000',PACK.Pack_Code),7) -PACK.Pack_Description AS PACK_DES, -PACK.STRENGTH AS STGH_DES, -concat('Y',LEFT(PACK.LAUNCHTIME,4),'M',RIGHT(PACK.LAUNCHTIME,2)) AS PACK_LCH, - -RIGHT(concat('000000000',PROD.Product_Code),9) AS PROD_COD, --RIGHT(concat('00000',PROD.Product_Code),5) -RIGHT(concat('000000',MOLE.MoleCompCode),6) AS CMPS_COD, -MOLE.MoleCompDesc AS CMPS_DES, - -ATCH.ATC1_CODE AS ATC1_COD, -ATCH.ATC2_CODE AS ATC2_COD, -ATCH.ATC3_CODE AS ATC3_COD, -ATCH.ATC4_CODE AS ATC4_COD, - -NFCH.NFC1_CODE AS APP1_COD, -NFCH.NFC2_CODE AS APP2_COD, -NFCH.NFC3_CODE AS APP3_COD, - -MOLE.BIO AS BIO_DESC, -MOLE.Gene_Orig AS GENE_ORIG_DESC, -MOLE.Rx_Flag AS ETH_OTC_DESC, -MOLE.NRDL AS NRDL_DESC, -MOLE.NRDL_Entry_Date, -MOLE.EDL AS EDL_DESC, -MOLE.TCMEX AS TCM_DESC, -MOLE.PAED AS PAED_DESC, -MOLE.GQCE AS GQCE_DESC, -MOLE.VBP AS VBP_DESC, -MANU.Manufacturer_Abbr AS MANU_COD, -MANU.Manufacturer_Name AS MANU_DES, -MANUT.ManufacturerType_CODE AS MNFL_COD, -MANUT.ManufacturerType_Name AS MNFL_DES, -MANU.CORP_ABBR AS CORP_COD, -MANU.CORP_DES AS CORP_DES, -BRANDTYPE.Brand_Type AS BrandType -from dwd.dwd_ims_td_pack PACK -LEFT JOIN dwd.dwd_ims_td_product PROD ON PACK.Product_ID = PROD.Product_ID -LEFT JOIN dwd.dwd_ims_td_new_form_class NFC ON PACK.NewFormClass_ID = NFC.NewFormClass_ID -LEFT JOIN dwd.dwd_ims_nfc_hierarchy NFCH ON NFC.NewFormClass_Code = NFCH.NFC3_CODE -LEFT JOIN dwd.dwd_ims_td_therapeutic_class ATC ON PACK.Therapeutic_ID = ATC.Therapeutic_ID -LEFT JOIN dwd.dwd_ims_atc_hierarchy ATCH ON ATC.Therapeutic_Code = ATCH.ATC4_CODE -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON PACK.Pack_ID = MOLE.Pack_ID -LEFT JOIN dwd.dwd_ims_td_manufacturer_corp MANU ON PROD.Manufacturer_ID = MANU.Manufacturer_ID -LEFT JOIN dwd.dwd_ims_td_manufacturertype MANUT ON MANU.ManufacturerType_ID = MANUT.ManufacturerType_ID -LEFT JOIN dwd.dwd_gnd_ims_tblbrandtype BRANDTYPE ON PACK.Pack_Code = BRANDTYPE.PACK_COD -; - -update dwd.dwd_ims_td_pack_property set CORP_COD ='' where CORP_COD is null ; -update dwd.dwd_ims_td_pack_property set STGH_DES ='' where STGH_DES is null ; - --- COMMAND ---------- - --- 20260119 修改 dwd.dwd_ims_td_pack_property 我感觉可以拉到前面去 --- 要调研下,为什么前面没有写,而在后面写。 ---Update AZ BRANDS SCOPE---MANU的页面显示 ----by Product&Pack add in 'Fluimucil, Broncho-vaxom, Ai Rui Zhuo', by AC 202103 -update dwd.dwd_ims_td_pack_property -set CORP_COD = 'A5Z', CORP_DES = 'ASTRAZENECA GROUP' -where PROD_COD in( - select - right(concat('0000000000',PROD_COD),9) as PROD_COD --right(concat('000000',PROD_COD),5) - from dwd.dwd_gnd_tbl_corp_change where corp_cod='A5Z') -or PACK_COD in( - select - if( PACK_COD REGEXP '^[0-9]',right(concat('000000000000',PACK_COD),12),PACK_COD) as PACK_COD --right(concat('000000',PACK_COD),7) - from dwd.dwd_gnd_tbl_corp_change where corp_cod='A5Z') --- where PROD_COD in ('97336','73148') OR PACK_COD = '0795918' -; ----by Product&Pack remove out tblAZScope.xlsx', by AC 202103 -update dwd.dwd_ims_td_pack_property -set CORP_COD = 'A5ZD', CORP_DES = 'AZDealed',MANU_COD = 'A5ZD' ,MANU_DES = 'AZDealed' -where PROD_COD in( - select - right(concat('0000000000',PROD_COD),9) as PROD_COD - from dwd.dwd_gnd_tbl_corp_change where corp_cod='A5ZD') -or PACK_COD in( - select - if( PACK_COD REGEXP '^[0-9]',right(concat('000000000000',PACK_COD),12),PACK_COD) as PACK_COD - from dwd.dwd_gnd_tbl_corp_change where corp_cod='A5ZD') --- where PROD_COD in ('02267','14691','58423','12754','06482','97266','14164') -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql:Zone.Identifier b/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01 dwd_ims_td_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01 dwd_update.sql b/EXTERNAL/CHPA/01 dwd_update.sql deleted file mode 100644 index 747aa69..0000000 --- a/EXTERNAL/CHPA/01 dwd_update.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Databricks notebook source ---对折算规则文件中的Pack,Mole code 补0 ---时间条件为空的,赋默认值 ---地理维度表增加KCT和ROC -UPDATE dwd.dwd_gnd_ims_tblBrandRatio -SET -PACK_COD = if( CAST(PACK_COD AS string) REGEXP '^[0-9]',right(concat('000000000000',CAST(PACK_COD AS string)),12),CAST(PACK_COD AS string)), -CMPS_COD = RIGHT(concat('000000',CAST(CMPS_COD AS string)),6), -StartTime = CASE WHEN StartTime IS NULL OR UPPER(StartTime)= 'ALL' THEN '190001' ELSE StartTime END, -EndTime = CASE WHEN EndTime IS NULL OR UPPER(EndTime)= 'ALL' THEN '209901' ELSE EndTime END -; - - --- COMMAND ---------- - --- 20260119 这个补0操作,可以放最前面,或者专门找个地方放。 -----确保Market和KeyCompetitor配置表中,Pack_Code,Product_Code,Molecule_Code 三个字段都已经补0 - -UPDATE dwd.dwd_gnd_ims_tblmarket ---20250428 chenwu iqivacode扩到12位,brandcode 扩到9位 -SET Pack_Code = if( Pack_Code REGEXP '^[0-9]',right(concat('000000000000',Pack_Code),12),Pack_Code) -,Product_Code = RIGHT(concat('000000000',Product_Code),9) --RIGHT(concat('00000',Product_Code),5) -,Molecule_Code = RIGHT(concat('000000',Molecule_Code),6) -; -UPDATE dwd.dwd_gnd_ims_tblkeycompetitor -SET Pack_Code = if( Pack_Code REGEXP '^[0-9]',right(concat('000000000000',Pack_Code),12),Pack_Code) -,Product_Code = RIGHT(concat('000000000',Product_Code),9) --RIGHT(concat('00000',Product_Code),5) -,Molecule_Code = RIGHT(concat('000000',Molecule_Code),6) -; -UPDATE dwd.dwd_gnd_ims_tblbrandtype -SET PACK_COD = if( PACK_COD REGEXP '^[0-9]',right(concat('000000000000',PACK_COD),12),PACK_COD) --RIGHT(concat('0000000',PACK_COD),7) -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/01 dwd_update.sql:Zone.Identifier b/EXTERNAL/CHPA/01 dwd_update.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01 dwd_update.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql b/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql deleted file mode 100644 index 30fdf6d..0000000 --- a/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql +++ /dev/null @@ -1,210 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ### 从blob读取csv文件作为chap法伯的事实表 - --- COMMAND ---------- - --- 源表:文件 --- 目标表:DWD.DWD_GND_PHARBERS_PROV_FACT - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC from datetime import datetime, timedelta --- MAGIC import pandas as pd - --- COMMAND ---------- - --- MAGIC %python --- MAGIC if ENVIRONMENT == PRD_ENVIRONMENT_VALUE: --- MAGIC factsales_file_path_template = "abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" --- MAGIC elif ENVIRONMENT == TEST_ENVIRONMENT_VALUE: --- MAGIC factsales_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # 计算时间得到当天的路径 --- MAGIC current_date = datetime.utcnow() + timedelta(hours=8) --- MAGIC date_path = current_date.strftime("%Y/%m/%d/") --- MAGIC base_path = factsales_file_path_template + date_path - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # 路径是否存在 --- MAGIC def path_exists(path): --- MAGIC try: --- MAGIC dbutils.fs.ls(path) --- MAGIC return True --- MAGIC except Exception as e: --- MAGIC if "java.io.FileNotFoundException" in str(e): --- MAGIC return False --- MAGIC else: --- MAGIC print(f"检查路径 {path} 时出错: {e}") --- MAGIC raise - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # 列出blob上的文件列表 --- MAGIC def list_file_name(path): --- MAGIC first_path_list = [i.path for i in dbutils.fs.ls(path)] --- MAGIC second_path_list = [dbutils.fs.ls(i)[0] for i in first_path_list ] --- MAGIC return second_path_list - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # 从blob下载文件到local --- MAGIC def download_file(file_path, local_path): --- MAGIC # dbutils.fs.cp(file_path, local_path.replace("/dbfs", "")) --- MAGIC dbutils.fs.cp(file_path, local_path) --- MAGIC print(f"已下载 {file_path} 到 {local_path}") --- MAGIC return local_path - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 获取路径下的文件名称 --- MAGIC - 并挑出符合条件的文件路径 - --- COMMAND ---------- - --- MAGIC %python --- MAGIC try: --- MAGIC if path_exists(base_path): --- MAGIC all_file_list = list_file_name(base_path) --- MAGIC # 生成df来筛选内容 --- MAGIC files_df = pd.DataFrame([{ --- MAGIC 'path':f.path, --- MAGIC 'modificationtime': f.modificationTime, --- MAGIC 'name': f.name --- MAGIC } for f in all_file_list]) --- MAGIC print(f"{base_path} 路径存在") --- MAGIC else: --- MAGIC print(f"{base_path} 路径不存在") --- MAGIC except Exception as e: --- MAGIC print(e) - --- COMMAND ---------- - --- MAGIC %python --- MAGIC try: --- MAGIC files_df = files_df.sort_values('modificationtime', ascending=False).drop_duplicates('name').sort_index() --- MAGIC files_df = files_df[files_df['name'].str.match(r'^Pharbers_PROV_Fact.*\.csv$')] --- MAGIC files_df --- MAGIC except Exception as e: --- MAGIC print(e) - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 读取文件内容 - --- COMMAND ---------- - --- MAGIC %python --- MAGIC import os - --- COMMAND ---------- - --- MAGIC %python --- MAGIC # 下载数据到local --- MAGIC try: --- MAGIC if files_df['path'].tolist(): --- MAGIC # 如果列表不为空 --- MAGIC df_all = [] --- MAGIC for file in files_df['path'].tolist(): --- MAGIC local_path = download_file(file, f"/Volumes/{NGBI_CATALOG}/tmp/volume_tmp/tmp/{os.path.basename(file)}") --- MAGIC file_df = (spark.read.option("header", "true").option("quote", '"').option("escape", '"').option("multiLine", "true").option("mode", "PERMISSIVE").csv(local_path)) --- MAGIC file_df = file_df.drop("TA",'Market') --- MAGIC print(f'已读取{local_path}') --- MAGIC df_all.append(file_df) --- MAGIC # df_combine = pd.concat(df_all) --- MAGIC df_ifexists = True --- MAGIC else: --- MAGIC print('没有符合条件的文件') --- MAGIC df_ifexists= False --- MAGIC except Exception as e: --- MAGIC print(e) - --- COMMAND ---------- - --- MAGIC %python --- MAGIC try: --- MAGIC if df_ifexists: # 如果不为空 --- MAGIC spark.sql(f"TRUNCATE table tmp.tmp_chpa_raw_data") --- MAGIC num = 1 --- MAGIC for i in df_all: --- MAGIC i.withColumnRenamed('IMS.药品ID','IMS_DRUG_ID') \ --- MAGIC .withColumnRenamed('是否法伯编码','IS_HOSP_CODE') \ --- MAGIC .withColumnRenamed('规格','SPEC') \ --- MAGIC .withColumnRenamed('转换比','CONVERSION_RATIO') \ --- MAGIC .withColumnRenamed('剂型','DOSAGE_FORM') \ --- MAGIC .withColumnRenamed('价格','PRICE') --- MAGIC # i.columns = ['area','city','yyyyqq','yyyymm','reimburse','prescription_source','prescription_dept_lv1','prescription_dept_lv2','prescription_dept_lv3','ATC','new_code','common_name','product_name','pack_des','PackSize','PackageType','nfc','manu_des','drug_delivery_route','prescription','sales_vol','sales_value'] #'h_level', --- MAGIC # sdf = spark.createDataFrame(i) --- MAGIC i.createOrReplaceTempView('fact_sales') --- MAGIC spark.sql(f"INSERT into tmp.tmp_chpa_raw_data SELECT * FROM fact_sales") --- MAGIC print(f'第{num}个') --- MAGIC num +=1 --- MAGIC except Exception as e: --- MAGIC print(e) - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 将读取到的dataframe写入表中 - --- COMMAND ---------- - --- 全量覆盖 -insert overwrite dwd.dwd_gnd_pharbers_prov_fact -select -year, -ym, -province_c, -ims_drug_id, -is_hosp_code, -prod_corp, -prod_cod, -pack_cod, -phcd, -prod_des, -cmps_des, -corp_des, -mnfl_cod, -prod_des_c, -cmps_c, -corp_des_c, -pack_des, -spec, -conversion_ratio, -dosage_form, -atc4_cod, -app1_cod, -app1_des, -app1_des_c, -app2_cod, -app2_des, -app2_des_c, -app3_cod, -app3_des, -app3_des_c, -vbp_batch, -vbp, -value, -totalunit, -countingunit, -price, -manu_des, -manu_des_c, -NULL AS source_file_path, -NULL AS source_file_name, -from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt -from tmp.tmp_chpa_raw_data \ No newline at end of file diff --git a/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql:Zone.Identifier b/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/01_FB_BLOB_TO_DWD.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql b/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql deleted file mode 100644 index 6e5fd50..0000000 --- a/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Databricks notebook source --- 20260119 地理数据 我感觉可以拉到前面去 ---地理维度信息 Audit --- 20260122 因为城市数据不再提供,改为硬编码省份数据. By Yusuo/Chenwu -INSERT OVERWRITE TABLE DWS.DWS_IMS_TD_GEO -SELECT - AUDIT_COD, - AUDIT_DES, - AUDIT_DES_C, - AUDIT_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - REGIONCENTER, - ETL_INSERT_DT, - ETL_UPDATE_DT -FROM - tmp.tmp_province_rawdata \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql:Zone.Identifier b/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 DWS_IMS_TD_GEO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql b/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql deleted file mode 100644 index 793a116..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql +++ /dev/null @@ -1,33 +0,0 @@ --- Databricks notebook source --- 源表:DWD.DWD_GND_IMS_TBLATC,DWD.DWD_IMS_ATC_HIERARCHY --- 目标表:DWS.DWS_IMS_TD_ATC_CN - --- COMMAND ---------- - ---ATC挂中文名 -insert overwrite table dws.dws_ims_td_atc_cn -SELECT DISTINCT - T1.ATC1_CODE AS ATC1_COD, - T1.ATC1_DES, - case when ATC1.ATC1_DES_C is null then T1.ATC1_DES else ATC1.ATC1_DES_C end AS ATC1_DES_C, - T1.ATC2_CODe AS ATC2_COD, - T1.ATC2_DES, - case when ATC2.ATC2_DES_C is null then T1.ATC2_DES else ATC2.ATC2_DES_C end AS ATC2_DES_C, - T1.ATC3_CODe AS ATC3_COD, - T1.ATC3_DES, - case when ATC3.ATC3_DES_C is null then T1.ATC3_DES else ATC3.ATC3_DES_C end AS ATC3_DES_C, - T1.ATC4_CODe AS ATC4_COD, - T1.ATC4_DES, - case when ATC4.ATC4_DES_C is null then T1.ATC4_DES else ATC4.ATC4_DES_C end AS ATC4_DES_C, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -FROM dwd.dwd_ims_ATC_Hierarchy T1 -LEFT JOIN (SELECT DISTINCT ATC4_COD,ATC4_DES_C FROM dwd.dwd_gnd_ims_tblATC) ATC4 -ON T1.ATC4_CODE = ATC4.ATC4_COD -LEFT JOIN (SELECT DISTINCT ATC3_COD,ATC3_DES_C FROM dwd.dwd_gnd_ims_tblATC) ATC3 -ON T1.ATC3_CODE = ATC3.ATC3_COD -LEFT JOIN (SELECT DISTINCT ATC2_COD,ATC2_DES_C FROM dwd.dwd_gnd_ims_tblATC) ATC2 -ON T1.ATC2_CODE = ATC2.ATC2_COD -LEFT JOIN (SELECT DISTINCT ATC1_COD,ATC1_DES_C FROM dwd.dwd_gnd_ims_tblATC) ATC1 -ON T1.ATC1_CODE = ATC1.ATC1_COD -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_atc_cn.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql b/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql deleted file mode 100644 index a6e967e..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql +++ /dev/null @@ -1,19 +0,0 @@ --- Databricks notebook source --- 20260119 CORP 公司名中文信息 我感觉可以拉到前面去 ---CORP 公司名中文信息 -insert overwrite table dws.dws_ims_td_corp_cn -SELECT DISTINCT T1.CORP_ABBR AS CORP_COD,T1.CORP_DES,T2.nameC AS CORP_DES_C, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -FROM dwd.dwd_ims_td_manufacturer_corp T1 -LEFT JOIN dwd.dwd_gnd_ims_tblmanucn T2 -ON T1.CORP_ABBR = T2.abbrev -WHERE CORP_ABBR IS NOT NULL -; - --- COMMAND ---------- - ---新增AZDealed部分的维度 -INSERT INTO dws.dws_ims_td_corp_cn SELECT 'A5ZD','AZDealed','AZDealed', - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8'); \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_corp_cn.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_date.sql b/EXTERNAL/CHPA/02 dws_ims_td_date.sql deleted file mode 100644 index 5f04aea..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_date.sql +++ /dev/null @@ -1,28 +0,0 @@ --- Databricks notebook source --- 依赖事实表 tmp.tmp_ims_tf_fact_sales; 所以一定要放后面。 ---基于Fact数据动态计算时间维度 最近五年 -insert overwrite table dws.dws_ims_td_date -select distinct -YM, -left(cast(YM as string),4) as YEAR, -right(cast(YM as string),2) as MONTH, -concat( - 'Q',quarter( - date( - concat( - left(cast(YM as string),4),'-',right(cast(YM as string),2),'-01' - )))) as QUARTER, -concat( - left(cast(YM as string),4),'Q',quarter( - date( - concat( - left(cast(YM as string),4),'-',right(cast(YM as string),2),'-01' - )))) as YQ, -case when YM=(select max(YM) from tmp.tmp_ims_tf_fact_sales) then 'R' else right(cast(YM as string),2) end as DATE_FLAG, -case when YM%100>6 then concat(left(cast(YM as string),4),'H2') else concat(left(cast(YM as string),4),'H1') end as HALF_YEAR, -from_utc_timestamp(current_timestamp(),'UTC+8'), -from_utc_timestamp(current_timestamp(),'UTC+8') -from tmp.tmp_ims_tf_fact_sales -where YM > (select max(YM)-900 from tmp.tmp_ims_tf_fact_sales) -order by YM desc -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_date.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_date.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_date.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql b/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql deleted file mode 100644 index 8f8a659..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql +++ /dev/null @@ -1,18 +0,0 @@ --- Databricks notebook source --- 20260119 MANU 生产商名中文信息 我感觉可以拉到前面去 ----MANU 生产商名中文信息 -insert overwrite table dws.dws_ims_td_manu_cn -SELECT DISTINCT T1.Manufacturer_Abbr AS MANU_COD,T1.Manufacturer_Name AS MANU_DES,T2.nameC AS MANU_DES_C, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -FROM dwd.dwd_ims_td_manufacturer_corp T1 -LEFT JOIN dwd.dwd_gnd_ims_tblmanucn T2 -ON T1.Manufacturer_Abbr = T2.abbrev -WHERE T1.Manufacturer_Abbr IS NOT NULL -; - --- COMMAND ---------- - -INSERT INTO dws.dws_ims_td_manu_cn SELECT 'A5ZD','AZDealed','AZDealed', - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8'); \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_manu_cn.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_market.sql b/EXTERNAL/CHPA/02 dws_ims_td_market.sql deleted file mode 100644 index 790a7aa..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_market.sql +++ /dev/null @@ -1,238 +0,0 @@ --- Databricks notebook source --- 20260119 依赖上面 dwd.dwd_ims_td_pack_property --- 20260119 依赖上面补0 dwd.dwd_ims_td_pack_property dwd.dwd_gnd_ims_tblmarket ------MARKET ---第一步: ---先处理 Extend_Market 和 NOT_IN_FLAG 都为空的数据,代表有明确定义得市场 -insert overwrite table tmp.tmp_ims_td_temp_market -select distinct t2.market,t1.*, -t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio -from dwd.dwd_ims_td_pack_property t1 -left join (select * from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NULL AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )) t2 -on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end -and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end -and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end -and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end -and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end -and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end -and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end -and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end -and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -and t1.PROD_COD = case when t2.Product_Code is null then t1.PROD_COD else t2.Product_Code end -and t1.PACK_COD = case when t2.Pack_Code is null then t1.PACK_COD else t2.Pack_Code end -and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end -and t1.CMPS_COD = case when t2.Molecule_Code is null then t1.CMPS_COD else t2.Molecule_Code end -where t2.market is not null -; - - - --- COMMAND ---------- - ---第二步: ---处理 Extend_Market 为空,并且 NOT_IN_FLAG 有值的数据,代表反选定义市场的规则 -insert overwrite table tmp.tmp_ims_td_temp_market_del -select distinct t2.market,t1.*,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio - from dwd.dwd_ims_td_pack_property t1 - left join (select * from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NULL AND NOT_IN_FLAG = '0' ) t2 - on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end - and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end - and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end - and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end - and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end - and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end - and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end - and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end - and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end - and t1.PROD_COD = case when t2.Product_Code is null then t1.PROD_COD else t2.Product_Code end - and t1.PACK_COD = case when t2.Pack_Code is null then t1.PACK_COD else t2.Pack_Code end - and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end - and t1.CMPS_COD = case when t2.Molecule_Code is null then t1.CMPS_COD else t2.Molecule_Code end - where t2.market is not null - ; - - --- COMMAND ---------- - ---!!!注意此段是反选的规则,故执行的是从已经定义好的TempMKT中删除数据 ---需要看TempMKT的字段结构,没有值的字段,在Value里面放个空值 -MERGE INTO tmp.tmp_ims_td_temp_market AS t1 -USING tmp.tmp_ims_td_temp_market_del AS t2 - on t1.ATC1_COD = t2.ATC1_COD - and t1.ATC2_COD = t2.ATC2_COD - and t1.ATC3_COD = t2.ATC3_COD - and t1.ATC4_COD = t2.ATC4_COD - and t1.APP1_COD = t2.APP1_COD - and t1.APP2_COD = t2.APP2_COD - and t1.APP3_COD = t2.APP3_COD - and t1.CORP_COD = t2.CORP_COD - and t1.MANU_COD = t2.MANU_COD - and t1.PROD_COD = t2.PROD_COD - and t1.PACK_COD = t2.PACK_COD - and t1.STGH_DES = t2.STGH_DES - and t1.CMPS_COD = t2.CMPS_COD - and t1.market = t2.market -WHEN MATCHED THEN DELETE -; - - --- COMMAND ---------- - ----第三步: ---处理 Extend_Market 有值得数据,用已有市场,定义新的市场,带上系数 -insert into tmp.tmp_ims_td_temp_market -select distinct -t2.Market, -t1.PACK_COD , -t1.PACK_DES , -t1.STGH_DES , -t1.PACK_LCH , -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 , -t2.BU, -t1.BrandType , -case when t2.Extend_Market_Ratio is null then '1' end AS Market_Ratio--市场的系数若没有维护,默认为1 -from tmp.tmp_ims_td_temp_market t1 -left join (select Market, BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NOT NULL) t2 on t1.Market=t2.Extend_Market -where t2.Market is not null -; - - --- COMMAND ---------- - ---将,市场的系数为空值的数据,初始化为1 -UPDATE tmp.tmp_ims_td_temp_market SET Market_Ratio = 1 WHERE Market_Ratio IS NULL; - --- COMMAND ---------- - --- 20260119 依赖 tmp.tmp_ims_td_temp_market --- 20260119 依赖上面补0 dwd.dwd_gnd_ims_tblkeycompetitor - ---KeyCompetitor部分 ---定义Key Competitor -insert overwrite table tmp.tmp_ims_td_temp_market_upd1 -select distinct t2.keycompetitor as Key_Competitor,t2.no,t2.no1,t1.* -from tmp.tmp_ims_td_temp_market t1 -left join ( - select - 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 NFC2_CODE IS NULL THEN 0 ELSE 1 END, - CASE WHEN NFC3_CODE IS NULL THEN 0 ELSE 1 END - ) AS no1,* from dwd.dwd_gnd_ims_tblkeycompetitor -)t2 - on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end - and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end - and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end - and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end - and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end - and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end - and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end - and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end - and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end - and t1.PROD_COD = case when t2.Product_Code is null then t1.PROD_COD else t2.Product_Code end - and t1.PACK_COD = case when t2.Pack_Code is null then t1.PACK_COD else t2.Pack_Code end - and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end - and t1.CMPS_COD = case when t2.Molecule_Code is null then t1.CMPS_COD else t2.Molecule_Code end - and t1.market = case when t2.market is null then t1.market else t2.market end -; - - --- COMMAND ---------- - ---删除被重复定义的Key Competitor,删除写入时间早的(No 小的)的对应行即可,保留No最大的一行即最新的规则 -insert overwrite table tmp.tmp_ims_td_temp_market_upd2 -select * from( - select row_number() over(partition by market,pack_cod,prod_cod order by no1 desc,no desc) as id,* - from tmp.tmp_ims_td_temp_market_upd1) where id>1 -; - - --- COMMAND ---------- - -MERGE INTO tmp.tmp_ims_td_temp_market_upd1 AS t1 -USING tmp.tmp_ims_td_temp_market_upd2 AS t2 - on t1.ATC1_COD = t2.ATC1_COD - and t1.ATC2_COD = t2.ATC2_COD - and t1.ATC3_COD = t2.ATC3_COD - and t1.ATC4_COD = t2.ATC4_COD - and t1.APP1_COD = t2.APP1_COD - and t1.APP2_COD = t2.APP2_COD - and t1.APP3_COD = t2.APP3_COD - and t1.CORP_COD = t2.CORP_COD - and t1.MANU_COD = t2.MANU_COD - and t1.PROD_COD = t2.PROD_COD - and t1.PACK_COD = t2.PACK_COD - and t1.STGH_DES = t2.STGH_DES - and t1.CMPS_COD = t2.CMPS_COD - and t1.market = t2.market - and t1.Key_Competitor = t2.Key_Competitor - and t1.no=t2.no -WHEN MATCHED THEN DELETE -; - - --- COMMAND ---------- - ---没有挂上KeyCompetitor的,更新为Others ,最后去掉No,写入临时表备用 -update tmp.tmp_ims_td_temp_market_upd1 set Key_Competitor = 'Others' where Key_Competitor is NULL; - - --- COMMAND ---------- - -insert overwrite table tmp.tmp_ims_td_temp_market_upd -select - Key_Competitor,market,PACK_COD,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,CMPS_COD,CMPS_DES, - 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,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,BrandType,bu,Market_Ratio -from tmp.tmp_ims_td_temp_market_upd1 -; - --- COMMAND ---------- - --- 20260119 市场维度信息 我感觉可以拉到前面去 ---市场维度信息 -insert overwrite table dws.dws_ims_td_market -select distinct market,PACK_COD,PACK_DES,STGH_DES,PACK_LCH,PROD_COD,CMPS_COD,CMPS_DES, - 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,MNFL_COD,MNFL_DES,CORP_COD,CORP_DES,BrandType,bu,Market_Ratio,Key_Competitor, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -from tmp.tmp_ims_td_temp_market_upd -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_market.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_market.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_market.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql b/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql deleted file mode 100644 index 1d3d034..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Databricks notebook source --- 20260119 市场&TA 关系信息 我感觉可以拉到前面去 ---市场&TA 关系信息 -insert overwrite table dws.dws_ims_td_market_ta -select * -from dwd.dwd_gnd_ims_tblmarket_ta_map -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_market_ta.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql b/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql deleted file mode 100644 index 6d29796..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql +++ /dev/null @@ -1,22 +0,0 @@ --- Databricks notebook source ---NFC挂中文名 -insert overwrite table dws.dws_ims_td_nfc_cn -SELECT DISTINCT T1.NFC1_CODE AS APP1_COD , - T1.NFC1_DES AS APP1_DES, - case when NFC1.APP1_DES_C is null then T1.NFC1_DES else NFC1.APP1_DES_C end AS APP1_DES_C, - T1.NFC2_CODE AS APP2_COD , - T1.NFC2_DES AS APP2_DES, - case when NFC2.APP2_DES_C is null then T1.NFC2_DES else NFC2.APP2_DES_C end AS APP2_DES_C, - T1.NFC3_CODE AS APP3_COD, - T1.NFC3_DES AS APP3_DES, - case when NFC3.APP3_DES_C is null then T1.NFC3_DES else NFC3.APP3_DES_C end AS APP3_DES_C, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -FROM dwd.dwd_ims_NFC_Hierarchy T1 -LEFT JOIN (SELECT DISTINCT APP3_COD,APP3_DES_C FROM dwd.dwd_gnd_ims_tblAPP) NFC3 -ON T1.NFC3_CODE = NFC3.APP3_COD -LEFT JOIN (SELECT DISTINCT APP2_COD,APP2_DES_C FROM dwd.dwd_gnd_ims_tblAPP) NFC2 -ON T1.NFC2_CODE = NFC2.APP2_COD -LEFT JOIN (SELECT DISTINCT APP1_COD,APP1_DES_C FROM dwd.dwd_gnd_ims_tblAPP) NFC1 -ON T1.NFC1_CODE = NFC1.APP1_COD -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_nfc_cn.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql b/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql deleted file mode 100644 index 72c9387..0000000 --- a/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql +++ /dev/null @@ -1,7 +0,0 @@ --- Databricks notebook source ---产品挂中文名 -insert overwrite table dws.dws_ims_td_prod_cn -SELECT distinct RIGHT(concat('0000000000',prodcode),9) AS PROD_COD,ename as PROD_DES,namec as PROD_DES_C, gene_name as CMPS_DES_C,1 AS RANK_TYPE, - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -FROM dwd.dwd_gnd_ims_tblprodcn \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql:Zone.Identifier b/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 dws_ims_td_prod_cn.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql b/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql deleted file mode 100644 index 43a24b6..0000000 --- a/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql +++ /dev/null @@ -1,32 +0,0 @@ --- Databricks notebook source --- DBTITLE 1,产品挂中文名 - - ---Product中文名字,若有超过5个CORP或者MANU生产,则将其报告上排序的优先级调低 -insert overwrite table tmp.tmp_ims_td_prod_tmp -SELECT DISTINCT PROD.PROD_COD - FROM dws.dws_ims_td_prod_cn PROD - LEFT JOIN dwd.dwd_ims_td_pack_property PACK - ON PROD.PROD_COD = PACK.PROD_COD - LEFT JOIN dws.dws_ims_td_corp_cn CORP - ON PACK.CORP_COD = CORP.CORP_COD - WHERE PROD.PROD_DES_C IN - ( - --先计算出超过10个厂家生产的Prod_CN - - --先计算出有多个厂家生产的Prod_CN - SELECT PROD.PROD_DES_C - FROM dwd.dwd_ims_td_pack_property PACK - LEFT JOIN dws.dws_ims_td_prod_cn PROD - ON PACK.PROD_COD = PROD.PROD_COD - GROUP BY PROD.PROD_DES_C - HAVING ( COUNT(DISTINCT CORP_DES) > 5 OR COUNT(DISTINCT MANU_DES) > 5 ) - AND PROD.PROD_DES_C IS NOT NULL - ); - - --- COMMAND ---------- - -UPDATE dws.dws_ims_td_prod_cn SET RANK_TYPE = 0 where PROD_COD in ( - SELECT DISTINCT PROD_COD FROM tmp.tmp_ims_td_prod_tmp - ); \ No newline at end of file diff --git a/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql:Zone.Identifier b/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 tmp_ims_td_prod_tmp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql b/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql deleted file mode 100644 index 42abc62..0000000 --- a/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql +++ /dev/null @@ -1,206 +0,0 @@ --- Databricks notebook source --- 20260130 临时方案,解决测试环境有NULL值问题 -create or replace temporary view dwd_ims_td_pack -as -select - distinct - pack_id, - pack_code -from dwd.dwd_ims_td_pack - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FACT_CHPA_SALES_TEMP_WITH_PREVIOUS -AS -SELECT - CAST(YM AS INT) AS YM, - CAST(YEAR AS INT) AS YEAR, - CAST(REPLACE(YM,YEAR,'') AS INT) AS MONTH, - CAST(VALUE AS DECIMAL(38,10)) AS VALUE, - CAST(COUNTINGUNIT AS DECIMAL(38,10)) AS COUNTINGUNIT, - CAST(TOTALUNIT AS DECIMAL(38,10)) AS TOTALUNIT, - PROVINCE_C, - PHCD, - conversion_ratio -FROM dwd.dwd_gnd_pharbers_prov_fact - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DIM_PROVINCE -AS -select - -- t2.geo_key , - t2.province_code, - CASE - WHEN - t2.province_name - IN ('上海','北京','天津','重庆') - THEN - CONCAT(t2.province_name,'市') - WHEN - t2.province_name - IN ('内蒙古','西藏') - THEN - CONCAT(t2.province_name,'自治区') - WHEN - t2.province_name = '宁夏' - THEN CONCAT(t2.province_name,'回族自治区') - WHEN - t2.province_name = '广西' - THEN CONCAT(t2.province_name,'壮族自治区') - WHEN - t2.province_name = '新疆' - THEN CONCAT(t2.province_name,'维吾尔自治区') - ELSE CONCAT(t2.province_name,'省') - END AS province_name -from dm.dm_td_geography t2 -where t2.geo_key = t2.province_code -and province_name not in ('台湾','澳门','香港') - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DIM_CHPA_PACK_INFO -AS -SELECT - PACK_COD, - MAX(IQVIA_PACK_CODE) AS IQVIA_PACK_CODE, - MAX(countingunit) as COUNTINGUNIT_RATIO -FROM - dwd.dwd_gnd_dept_pack_property -GROUP BY - PACK_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FACT_CHPA_SALES -AS -SELECT - YM, - YEAR, - REPLACE(YM,YEAR,'') AS MONTH, - T3.IQVIA_PACK_CODE AS PACK_CODE, - T2.PROVINCE_CODE AS AUDIT_COD, - VALUE AS MTH00LC, - 0 AS MTH00LCLY, - CASE WHEN T3.COUNTINGUNIT_RATIO IS NULL THEN TOTALUNIT*T1.conversion_ratio ELSE TOTALUNIT*T3.COUNTINGUNIT_RATIO END AS MTH00CN, - 0 AS MTH00CNLY, - TOTALUNIT AS MTH00UN, - 0 AS MTH00UNLY -FROM FACT_CHPA_SALES_TEMP_WITH_PREVIOUS AS T1 -LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME -LEFT JOIN DIM_CHPA_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD -UNION ALL -SELECT - CAST((YEAR+1)*100+REPLACE(YM,YEAR,'') AS INT) AS YM, - YEAR+1, - CAST(REPLACE(YM,YEAR,'') AS INT) AS MONTH, - T3.IQVIA_PACK_CODE AS PACK_CODE, - T2.PROVINCE_CODE AS AUDIT_COD, - 0 AS MTH00LC, - VALUE AS MTH00LCLY, - 0 AS MTH00CN, - CASE WHEN T3.COUNTINGUNIT_RATIO IS NULL THEN TOTALUNIT*T1.conversion_ratio ELSE TOTALUNIT*T3.COUNTINGUNIT_RATIO END AS MTH00CNLY, - 0 AS MTH00UN, - TOTALUNIT AS MTH00UNLY -FROM FACT_CHPA_SALES_TEMP_WITH_PREVIOUS AS T1 -LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME -LEFT JOIN DIM_CHPA_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD - --- COMMAND ---------- - --- 20260119 dwd.dwd_ims_td_pack、dwd.dwd_ims_tf_fact_sales 不依赖 ---删除最近五年的dim pack数据,将最新的dim pack写入 -delete from dws.dws_ims_td_pack_ym -where ym + 500 > - (select max(year * 100 + month) from dwd.dwd_ims_tf_fact_sales); -insert into dws.dws_ims_td_pack_ym -select - distinct ym, - pack_id, - pack_code, - from_utc_timestamp(current_timestamp(), 'UTC+8'), - from_utc_timestamp(current_timestamp(), 'UTC+8') -from - ( - select - distinct year * 100 + month as ym - from - dwd.dwd_ims_tf_fact_sales - where - year * 100 + month + 500 > ( - select max(year * 100 + month) from dwd.dwd_ims_tf_fact_sales - ) - ) full - -- join dwd.dwd_ims_td_pack - join dwd_ims_td_pack - ; - --- COMMAND ---------- - ---IMS 原始数据预处理 ---FACT SALES 处理 -insert overwrite table tmp.tmp_ims_tf_fact_sales -select distinct - FACT.YM,AUDIT.Audit_Code AS AUDIT_COD,FACT.Pack_Code AS PACK_COD, - sum(MTH00LC) as MTH00LC,sum(MTH00LCLY) as MTH00LCLY, - sum(MTH00CN) as MTH00CN,sum(MTH00CNLY) as MTH00CNLY, - sum(MTH00UN) as MTH00UN,sum(MTH00UNLY) as MTH00UNLY -from( - select - Year*100+Month as YM, - Year , - Month , - t2.pack_code , - Audit_ID , - SalesValue_LC as MTH00LC, - 0 as MTH00LCLY, - Counting_Unit as MTH00CN, - 0 as MTH00CNLY, - Sales_Unit as MTH00UN, - 0 as MTH00UNLY - from dwd.dwd_ims_tf_fact_sales t1 ---补充历史的PACK ID 和 PACK CODE的关联关系,带上YM将最新dim pack表full join 最近五年 - left join dws.dws_ims_td_pack_ym t2 on t1.Pack_ID=t2.pack_id and t1.Year*100+t1.Month=t2.ym - union all - select - (Year+1)*100+Month as YM, - Year+1 , - Month , - t2.pack_code , - Audit_ID , - 0 as MTH00LC, - SalesValue_LC as MTH00LCLY, - 0 as MTH00CN, - Counting_Unit as MTH00CNLY, - 0 as MTH00UN, - Sales_Unit as MTH00UNLY - from dwd.dwd_ims_tf_fact_sales t1 ---补充历史的PACK ID 和 PACK CODE的关联关系,带上YM将最新dim pack表full join 最近五年 - left join dws.dws_ims_td_pack_ym t2 on t1.Pack_ID=t2.pack_id and t1.Year*100+t1.Month=t2.ym -)FACT -LEFT JOIN dwd.dwd_ims_td_audit AUDIT -ON FACT.Audit_ID = AUDIT.Audit_ID -where FACT.YM<=(select max(Year*100+Month) from dwd.dwd_ims_tf_fact_sales) -----------20260320 chenwu CHPA的数据只保留202201之后的 -and FACT.YM>=202201 ----------- -AND AUDIT.Audit_Code = 'CHT' -group by FACT.YM,AUDIT.Audit_Code,FACT.Pack_Code - - - --- 20260120新增 --- 以前 全国和省份数据放在一起,现在全国是上面,省份是新的,单独放在下面。 -union all -select distinct - CAST(YM AS INT) AS YM, - AUDIT_COD,Pack_Code AS PACK_COD, - sum(MTH00LC) as MTH00LC,sum(MTH00LCLY) as MTH00LCLY, - sum(MTH00CN) as MTH00CN,sum(MTH00CNLY) as MTH00CNLY, - sum(MTH00UN) as MTH00UN,sum(MTH00UNLY) as MTH00UNLY -from - FACT_CHPA_SALES -where - YM<=(select max(YM) from dwd.dwd_gnd_pharbers_prov_fact) -group by YM,Audit_Cod,Pack_Code -; diff --git a/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql:Zone.Identifier b/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/02 tmp_ims_tf_fact_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 15b76e1..0000000 --- a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,160 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 0baca06..0000000 --- a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING - SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T4.CLASS, - T5.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_PACK2MARKET T1 - LEFT JOIN DM.DM_TD_EXT_CHPA_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET - AND T1.PACK_CODE = T2.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_CHPA_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET - AND T1.PACK_CODE = T3.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_CHPA_PACK2MARKET_CLASS T4 - ON T1.PACK_CODE = T4.PACK_CODE - AND T1.MARKET = T4.MARKET - LEFT JOIN DM.DM_TD_EXT_CHPA_PACK2MARKET_KEYCOMPETITOR T5 - ON T1.PACK_CODE = T5.PACK_CODE - AND T1.MARKET = T5.MARKET - WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql deleted file mode 100644 index ae0dad7..0000000 --- a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql deleted file mode 100644 index 77a1a0d..0000000 --- a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql +++ /dev/null @@ -1,327 +0,0 @@ --- 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) \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql deleted file mode 100644 index dd8b87d..0000000 --- a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql +++ /dev/null @@ -1,147 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_PACK_PROPERTY --- ( --- -- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- -- MARKET STRING, --- -- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- -- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- -- CLASS STRING, --- -- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_CHPA_PACK_PROPERTY -SELECT - -- MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - BIO_DESC, - GENE_ORIG_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - VBP_DESC_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - -- MARKET, - -- KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - -- AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - -- CLASS, - -- NULL AS MARKET_RATIO, - NULL AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_IMS_TD_PACK_PROPERTY -; \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TD_EXT_CHPA_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql b/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql deleted file mode 100644 index e8486b0..0000000 --- a/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql +++ /dev/null @@ -1,166 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_CHPA_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chpa_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chpa_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW CHPA_SALES AS - SELECT - A.YYYYMM, - A.PACK_COD AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'IQVIA-CHPA(Monthly)' DATA_SOURCE, - ------------------------------------- - SUM(SALES_UNIT_CAL) SALES_UNIT_CAL, - SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY, - SUM(SALES_VALUE_CAL) SALES_VALUE_CAL, - SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - SUM(CONUTING_UNIT) CONUTING_UNIT, - SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 - ------------------------------------- - FROM - DM.DM_IMS_TF_SALES A - where - A.YYYYMM >= '202201' - -- AND A.MARKET = 'IMS ALL Market' - GROUP BY - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_CHPA_SALES ( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) -SELECT - YYYYMM, - NVL ( - NULLIF(PACK_CODE, ''), - CONCAT ('PACK_CODE_', DATA_SOURCE) - ) AS PACK_CODE, - NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - CHPA_SALES; \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql:Zone.Identifier b/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 DM_TF_EXT_CHPA_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql b/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql deleted file mode 100644 index bf8d121..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql +++ /dev/null @@ -1,58 +0,0 @@ --- Databricks notebook source --- 源表:DWS.DWS_IMS_TD_DATE --- 目标表:DM.DM_IMS_TD_CALENDAR,DM.DM_IMS_S_DATE - --- COMMAND ---------- - ---DM 逻辑 ---DATE -INSERT OVERWRITE TABLE DM.DM_IMS_TD_CALENDAR ---当前年销量日期日历表缺少的用去年补全 -SELECT - CAST(YM+100 AS INT) AS YYYYMM, - CAST(YEAR+1 AS INT) AS YEAR, - MONTH, - QUARTER, - CONCAT(CAST(LEFT(YQ,4) AS INT)+1,QUARTER) AS YQ , - CAST(CONCAT(CAST(YEAR AS INT)+1,'-',MONTH,'-01') AS DATE) AS DAY_DATE, - CASE WHEN YM+100= (SELECT MAX(YM) FROM TMP.TMP_IMS_TF_FACT_SALES) THEN 'R' ELSE DATE_FLAG END, - CONCAT(CAST(LEFT(HALF_YEAR,4) AS INT)+1,RIGHT(HALF_YEAR,2)) AS HALF_YEAR, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') ETL_UPDATE_DT -FROM DWS.DWS_IMS_TD_DATE -WHERE YEAR+1=(SELECT MAX(YEAR) FROM DWS.DWS_IMS_TD_DATE) - ---前四年的日历表 -UNION ALL - -SELECT - CAST(YM AS INT) AS YYYYMM, - CAST(YEAR AS INT), - MONTH, - QUARTER, - YQ, - CAST(CONCAT(YEAR,'-',MONTH,'-01') AS DATE) AS DAY_DATE, - DATE_FLAG, - HALF_YEAR, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') ETL_UPDATE_DT -FROM DWS.DWS_IMS_TD_DATE -WHERE YEAR<(SELECT MAX(YEAR) FROM DWS.DWS_IMS_TD_DATE) - AND YEAR+9>(SELECT MAX(YEAR) FROM DWS.DWS_IMS_TD_DATE) - - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_IMS_S_DATE -SELECT - YYYYMM, - YEAR, - MONTH, - QUARTER, - YQ, - DAY_DATE, - DATE_FLAG, - HALF_YEAR, - ETL_INSERT_DT, - ETL_UPDATE_DT -FROM DM.DM_IMS_TD_CALENDAR \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_calendar.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_geo.sql b/EXTERNAL/CHPA/03 dm_ims_td_geo.sql deleted file mode 100644 index 051a1e4..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_geo.sql +++ /dev/null @@ -1,67 +0,0 @@ --- Databricks notebook source --- 源表:DM.DM_TD_GEOGRAPHY,DWS.DWS_IMS_TD_GEO --- 目标表:DM.DM_IMS_TD_GEO - --- COMMAND ---------- - --- 20260119 地理数据 我感觉可以拉到前面去 ---地理维度信息 AUDIT --- 20260122 因为城市数据不再提供,改为硬编码省份数据. BY YUSUO/CHENWU -INSERT OVERWRITE TABLE DWS.DWS_IMS_TD_GEO -SELECT - AUDIT_COD, - AUDIT_DES, - AUDIT_DES_C, - AUDIT_TYPE, - CITY_TIER, - AZ_CITY_TIER, - PROVINCE, - PROVINCE_C, - REGIONCENTER, - ETL_INSERT_DT, - ETL_UPDATE_DT -FROM - TMP.TMP_PROVINCE_RAWDATA - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DIM_PROVINCE -AS -SELECT - T2.PROVINCE_CODE, - CASE - WHEN T2.PROVINCE_NAME IN ('上海', '北京', '天津', '重庆') THEN CONCAT (T2.PROVINCE_NAME, '市') - WHEN T2.PROVINCE_NAME IN ('内蒙古', '西藏') THEN CONCAT (T2.PROVINCE_NAME, '自治区') - WHEN T2.PROVINCE_NAME = '宁夏' THEN CONCAT (T2.PROVINCE_NAME, '回族自治区') - WHEN T2.PROVINCE_NAME = '广西' THEN CONCAT (T2.PROVINCE_NAME, '壮族自治区') - WHEN T2.PROVINCE_NAME = '新疆' THEN CONCAT (T2.PROVINCE_NAME, '维吾尔自治区') - ELSE CONCAT (T2.PROVINCE_NAME, '省') - END AS PROVINCE_NAME -FROM - DM.DM_TD_GEOGRAPHY T2 -WHERE - T2.GEO_KEY = T2.PROVINCE_CODE - AND PROVINCE_NAME NOT IN ('台湾', '澳门', '香港') - --- COMMAND ---------- - ---DM 地理纬度表 -INSERT OVERWRITE TABLE DM.DM_IMS_TD_GEO -SELECT DISTINCT - T1.AUDIT_COD, - T1.AUDIT_DES AS CITY, - T1.AUDIT_DES_C AS CITY_C, - T1.AUDIT_TYPE AS CITY_TYPE, - T1.CITY_TIER, - T1.AZ_CITY_TIER, - T1.PROVINCE, - T1.PROVINCE_C, - T2.PROVINCE_CODE, - T2.PROVINCE_NAME AS CITY_MAP, - T2.PROVINCE_NAME, - T1.REGIONCENTER AS REGION_CENTER, - T1.ETL_INSERT_DT, - T1.ETL_UPDATE_DT -FROM - DWS.DWS_IMS_TD_GEO AS T1 - LEFT JOIN DIM_PROVINCE AS T2 ON T1.AUDIT_COD = T2.PROVINCE_CODE \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_geo.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_geo.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_geo.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql b/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql deleted file mode 100644 index 77447f0..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql +++ /dev/null @@ -1,35 +0,0 @@ --- Databricks notebook source --- 源表:DWD.DWD_TD_IMS_MARKET_TA_ORDER --- 目标表:DM.DM_IMS_TD_MARKET_PROPERTY - --- COMMAND ---------- - -update dwd.dwd_td_ims_market_ta_order -set - market = 'Pulmicort VBP Benchmark Market' -where - market = 'Pumicort VBP Benchmark Market' - --- COMMAND ---------- - ---dm market property 市场相关属性和market&ta 的排序 by qingli 20230425 -insert overwrite table dm.dm_ims_td_market_property -select - market_order, - bu as bu, - ta as ta_key, - case - when ta = 'ONC' then 'ONCO' - else ta - end as ta, - market as market_key, - case - when market = 'ONC Market' then 'ONCO Market' - else market - end as market, - null as svg, - ta_order, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - dwd.dwd_td_ims_market_ta_order \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_market_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_org.sql b/EXTERNAL/CHPA/03 dm_ims_td_org.sql deleted file mode 100644 index 7c873a6..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_org.sql +++ /dev/null @@ -1,615 +0,0 @@ --- Databricks notebook source --- 源表:DM.dm_td_org,dm.dm_td_territory_indication,dm.dm_td_date_config,dm.dm_ims_tf_sales --- 目标表:dm.dm_ims_td_org - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - -create or replace temporary view dm_td_org_tmp as -SELECT - org_key, - mr_trty_tag, - district_code, - rsm_name, - rc_name, - p2.region_name, - p2.rsd_kcode, - p2.rsd_name, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bu_code = 'PC12' then 'PC09' - else p2.bu_code - end bu_code, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bu_report = 'EC' THEN 'Retail' - ELSE p2.bu_report - end bu_report, - CASE - WHEN p2.yyyymm >= '202601' - and p2.sub_bu_code = 'NA27' then 'NA06' - else p2.sub_bu_code - end sub_bu_code, - CASE - WHEN p2.yyyymm >= '202601' - and p2.sub_bu_name = 'EC' then 'Retail' - else p2.sub_bu_name - end sub_bu_name, - CASE - WHEN p2.yyyymm >= '202601' - and p2.sub_bu_name_en = 'EC' then 'Retail' - else p2.sub_bu_name_en - end sub_bu_name_en, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bu_name = 'EC' then 'Retail' - else p2.bu_name - end bu_name, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bu_name_en = 'EC' then 'Retail' - else p2.bu_name_en - end bu_name_en, - CASE - WHEN p2.yyyymm >= '202601' - and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' - else p2.nsd_kcode - end nsd_kcode, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bu_name = 'EC' - and p2.nsd_name = 'Vacant' then '李白杨' - else p2.nsd_name - end nsd_name, - CASE - WHEN p2.yyyymm >= '202601' - and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' - else p2.nsd_trty_code - end nsd_trty_code, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' - else p2.bsd_kcode - end bsd_kcode, - CASE - WHEN p2.yyyymm >= '202601' - and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' - else p2.bsd_trty_code - end bsd_trty_code, - p2.rsm_kcode, - p2.rc_code, - p2.rc_name_en, - p2.region_code, - p2.region_name_en, - BU_CATEGORY, - yyyymm, - mr_trty_code, - mr_kcode, - dsm_trty_code, - rsm_trty_code, - dsm_kcode, - rsd_trty_code -FROM - DM.dm_td_org P2 - --- COMMAND ---------- - ---dm_org --使用和performance cvh 的org架构 --- insert overwrite table tmp.tmp_ims_td_org -create or replace temporary view tmp_ims_td_org as -select distinct - rsm_trty_code, - rsm_kcode, - case - when rsm_name = 'Vacant' then concat (rsm_trty_code, '_V') - else rsm_name - end as rsm_name, - rsd_trty_code, - rsd_kcode, - case - when rsd_name = 'Vacant' then concat (rsd_trty_code, '_V') - else rsd_name - end as rsd_name, - nsd_trty_code, - nsd_kcode, - case - when nsd_name = 'Vacant' then concat (nsd_trty_code, '_V') - else nsd_name - end as nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t3.market, - t2.province_code as ims_audit_cod, - 1 as ims_city_ratio -from - dm_td_org_tmp t1 - left join ( - select distinct - t1.yyyymm, - t1.trty_code, - t2.city_name, - -- 20260210 Yusuo ADD - t2.province_code, - t4.ims_prod_cod, - t4.ims_pack_cod - from - dm.dm_td_territory_indication t1 - left join dwd.dwd_td_institution t2 on t1.inst_code = t2.inst_code - left join cdw_dwd_dim_product_wide t3 on t3.prd_family_cd = t1.family_code - left join dwd.dwd_td_imscode_azcode t4 on t3.prd_brand_cd = t4.brandcode - where - t1.bu not in ('CUBE', 'KA') - ) t2 on t2.trty_code = t1.mr_trty_code - and t2.yyyymm = t1.yyyymm - left join dws.dws_ims_td_market t3 on t2.ims_pack_cod = t3.pack_cod - --使用和performance cvh 的org架构 -where - t1.yyyymm in ( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) - --- COMMAND ---------- - ---将还没有做出来AZ产品关系的market挂给所有的对应BU --- insert into tmp_ims_td_org -create or replace temporary view tmp_ims_td_org1 as -select distinct - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Non AZ Region' as region_code, - 'Non AZ Region' as region_name, - 'Non AZ Region' as region_name_en, - 'Non AZ Region' as rc_code, - 'Non AZ Region' as rc_name, - 'Non AZ Region' as rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - null as ims_pack_cod, - t2.market, - ims_audit_cod, - ims_city_ratio -from - tmp_ims_td_org t1 - left join ( - select distinct - t2.market, - t2.bu - from - tmp_ims_td_org t1 - right join dwd.dwd_td_ims_market_ta_order t2 on t1.market = t2.market - where - t1.market is null - and t2.market <> 'IMS ALL Market' - ) t2 on t1.bu_name_en = t2.bu -where - t2.market is not null - --- COMMAND ---------- - ---将所有的ROC的市场数据补全,同时根据市场找到对应BU --- insert into tmp_ims_td_org -create or replace temporary view tmp_ims_td_org2 as -select distinct - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - t2.bu_code, - t2.bu_name, - t2.bu_name_en, - t2.bu_category, - t2.sub_bu_code, - t2.sub_bu_name, - t2.sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t2.market, - t2.ims_audit_cod, - t2.ims_city_ratio -from - ( - select - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Other Low Tiers' as region_code, - 'Other Low Tiers' as region_name, - 'Other Low Tiers' as region_name_en, - 'Other Low Tiers' as rc_code, - 'Other Low Tiers' as rc_name, - 'Other Low Tiers' as rc_name_en, - 'Other Low Tiers' as city_name, - 'ROC' as audit_cod - ) t1 - full join ( - select distinct - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - market, - ims_city_ratio, - 'Other Low Tiers' as city_name, - 'ROC' as ims_audit_cod - from - tmp_ims_td_org1 - where - bu_code is not null - --有销量的ROC数据 - and concat (market, '_ROC') in ( - select distinct - concat(market,'_ROC' ) market_audit_key from - dm.dm_tf_ext_unionall_market_sales - where DATA_SOURCE = 'IQVIA-CHPA(Monthly)' and - audit_cod = 'ROC' - ) - ) t2 on t1.audit_cod = t2.ims_audit_cod - --- COMMAND ---------- - ---将所有未能挂上Org的市场数据补全,同时根据市场找到对应BU --- insert into tmp_ims_td_org -create or replace temporary view tmp_ims_td_org3 as -select distinct - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - t2.bu_code, - t2.bu_name, - t2.bu_name_en, - t2.bu_category, - t2.sub_bu_code, - t2.sub_bu_name, - t2.sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t2.market, - t2.ims_audit_cod, - t2.ims_city_ratio -from - ( - select - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Non AZ Region' as region_code, - 'Non AZ Region' as region_name, - 'Non AZ Region' as region_name_en, - 'Non AZ Region' as rc_code, - 'Non AZ Region' as rc_name, - 'Non AZ Region' as rc_name_en - ) t1 - full join ( - select distinct - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - -- 'ALL' as sub_bu_code,'ALL' as sub_bu_name,'ALL' as sub_bu_name_en, - t2.audit_cod as ims_audit_cod, - null as city_name, - t2.market, - ims_city_ratio - from - tmp_ims_td_org2 t1 - inner join ( - --筛选出挂不上Org的市场城市,同时又有销量的 - select distinct - t2.market, - t2.audit_cod, - t3.bu - from - tmp_ims_td_org2 t1 - right join ( - select distinct - audit_cod, - market - from - dm.dm_tf_ext_unionall_market_sales - where DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - ) t2 on concat (t1.market, '_', t1.ims_audit_cod) = concat (t2.market, '_', t2.audit_cod) - left join dwd.dwd_td_ims_market_ta_order t3 on t2.market = t3.market - where - concat (t1.market, '_', t1.ims_audit_cod) is null - and t2.market <> 'IMS ALL Market' - ) t2 on t1.bu_name_en = t2.bu - ) t2 -where - t2.bu_code is not null - --- COMMAND ---------- - -create or replace temporary view tmp_ims_td_org4 as -select - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - ims_pack_cod, - market, - ims_audit_cod, - ims_city_ratio -from - tmp_ims_td_org -union all -select - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - ims_pack_cod, - market, - ims_audit_cod, - ims_city_ratio -from - tmp_ims_td_org1 -union all -select - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - ims_pack_cod, - market, - ims_audit_cod, - ims_city_ratio -from - tmp_ims_td_org2 -union all -select - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - ims_pack_cod, - market, - ims_audit_cod, - ims_city_ratio -from - tmp_ims_td_org3 - --- COMMAND ---------- - -insert overwrite table dm.dm_ims_td_org -select distinct - concat (t1.market, '_', t2.audit_cod) as ORG_KEY, - t1.rsm_trty_code, - t1.rsm_kcode, - t1.rsm_name, - t1.rsd_trty_code, - t1.rsd_kcode, - t1.rsd_name, - t1.nsd_trty_code, - t1.nsd_kcode, - t1.nsd_name, - t1.region_code, - t1.region_name, - t1.region_name_en, - t1.rc_code, - t1.rc_name, - t1.rc_name_en, - t1.bu_code, - t1.bu_name, - t1.bu_name_en, - t1.bu_category, - t1.sub_bu_code, - t1.sub_bu_name, - t1.sub_bu_name_en, - t1.sub_bu_code as sub_bu_code_auth, --前端权限配置需要的字段 - t1.bu_code as bu_code_auth, --前端权限配置需要的字段 - t2.audit_cod, - t2.audit_des, - t2.audit_des_c, - t2.Province, - t2.Province_C, - t2.RegionCenter, - t1.market, - concat (t1.market, '_', t2.audit_cod) as market_audit_key, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp_ims_td_org4 t1 - left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod - --where t1.market is not null and t1.ims_audit_cod is not null - - /* 20260409 chenwu IMS ALL Market 不需要了 -union all -select distinct - concat ('IMS ALL Market_', t2.audit_cod) as ORG_KEY, - t1.rsm_trty_code, - t1.rsm_kcode, - t1.rsm_name, - t1.rsd_trty_code, - t1.rsd_kcode, - t1.rsd_name, - t1.nsd_trty_code, - t1.nsd_kcode, - t1.nsd_name, - t1.region_code, - t1.region_name, - t1.region_name_en, - t1.rc_code, - t1.rc_name, - t1.rc_name_en, - t1.bu_code, - t1.bu_name, - t1.bu_name_en, - t1.bu_category, - t1.sub_bu_code, - t1.sub_bu_name, - t1.sub_bu_name_en, - 'ALL' as sub_bu_code_auth, - 'ALL' as bu_code_auth, - t2.audit_cod, - t2.audit_des, - t2.audit_des_c, - t2.Province, - t2.Province_C, - t2.RegionCenter, - 'IMS ALL Market' as market, - concat ('IMS ALL Market_', t2.audit_cod) as market_audit_key, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp_ims_td_org4 t1 - left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod -where - t1.market is not null - and t1.ims_audit_cod is not null - */ \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_org.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_org.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_org.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql b/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql deleted file mode 100644 index 5fe746f..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql +++ /dev/null @@ -1,463 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - ---dm_org --使用和performance cvh 的org架构 -insert overwrite table tmp.tmp_ims_td_org_hvh -select distinct - t1.yyyymm, - dsm_trty_code, - dsm_kcode, - case - when dsm_name = 'Vacant' then concat (dsm_trty_code, '_V') - else dsm_name - end as dsm_name, - rsm_trty_code, - rsm_kcode, - case - when rsm_name = 'Vacant' then concat (rsm_trty_code, '_V') - else rsm_name - end as rsm_name, - rsd_trty_code, - rsd_kcode, - case - when rsd_name = 'Vacant' then concat (rsd_trty_code, '_V') - else rsd_name - end as rsd_name, - nsd_trty_code, - nsd_kcode, - case - when nsd_name = 'Vacant' then concat (nsd_trty_code, '_V') - else nsd_name - end as nsd_name, - district_code, - district_name, - district_name_en, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t3.market, - t2.province_code as ims_audit_cod, - --福厦泉 苏锡 珠三角 对应多个city的情况的拆分比 - -- 20260210 Yusuo Update - -- case when t4.ratio is null then 1 else t4.ratio end as ims_city_ratio - 1 as ims_city_ratio -from - dm.dm_td_org t1 - left join ( - select distinct - t1.yyyymm, - t1.trty_code, - t2.city_name, - t2.province_code, - t4.ims_prod_cod, - t4.ims_pack_cod - from - dm.dm_td_territory_indication t1 - left join dwd.dwd_td_institution t2 on t1.inst_code = t2.inst_code - left join cdw_dwd_dim_product_wide t3 on t3.prd_family_cd = t1.family_code - left join dwd.dwd_td_imscode_azcode t4 on t3.prd_brand_cd = t4.brandcode - where - t1.bu not in ('CUBE', 'KA') - ) t2 on t2.trty_code = t1.mr_trty_code - and t2.yyyymm = t1.yyyymm - left join dws.dws_ims_td_market t3 on t2.ims_pack_cod = t3.pack_cod - -- left join dws.dws_td_ims_city_mapping t4 on t2.city_name=concat(t4.city_c_d,'市') - --使用和performance cvh 的org架构 -where - left (t1.yyyymm, 4) in ( - select - left (key_value, 4) - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) - --- COMMAND ---------- - - --将还没有做出来AZ产品关系的market挂给所有的对应BU -insert into - tmp.tmp_ims_td_org_hvh -select distinct - t1.yyyymm, - 'Vacant' as dsm_trty_code, - 'Vacant' as dsm_kcode, - 'Vacant' as dsm_name, - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Non AZ Region' as district_code, - 'Non AZ Region' as district_name, - 'Non AZ Region' as district_name_en, - 'Non AZ Region' as region_code, - 'Non AZ Region' as region_name, - 'Non AZ Region' as region_name_en, - 'Non AZ Region' as rc_code, - 'Non AZ Region' as rc_name, - 'Non AZ Region' as rc_name_en, - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - city_name, - null as ims_pack_cod, - t2.market, - ims_audit_cod, - ims_city_ratio -from - tmp.tmp_ims_td_org_hvh t1 - left join ( - select distinct - t2.market, - t2.bu - from - tmp.tmp_ims_td_org_hvh t1 - right join dwd.dwd_td_ims_market_ta_order t2 on t1.market = t2.market - where - t1.market is null - and t2.market <> 'IMS ALL Market' - ) t2 on t1.bu_name_en = t2.bu -where - t2.market is not null - --- COMMAND ---------- - - --将所有的ROC的市场数据补全,同时根据市场找到对应BU -insert into - tmp.tmp_ims_td_org_hvh -select distinct - yyyymm, - dsm_trty_code, - dsm_kcode, - dsm_name, - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - district_code, - district_name, - district_name_en, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - t2.bu_code, - t2.bu_name, - t2.bu_name_en, - t2.bu_category, - t2.sub_bu_code, - t2.sub_bu_name, - t2.sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t2.market, - t2.ims_audit_cod, - t2.ims_city_ratio -from - ( - select - 'Vacant' as dsm_trty_code, - 'Vacant' as dsm_kcode, - 'Vacant' as dsm_name, - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Non AZ Region' as district_code, - 'Non AZ Region' as district_name, - 'Non AZ Region' as district_name_en, - 'Other Low Tiers' as region_code, - 'Other Low Tiers' as region_name, - 'Other Low Tiers' as region_name_en, - 'Other Low Tiers' as rc_code, - 'Other Low Tiers' as rc_name, - 'Other Low Tiers' as rc_name_en, - 'Other Low Tiers' as city_name, - 'ROC' as audit_cod - ) t1 - full join ( - select distinct - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - -- 'ALL' as sub_bu_code,'ALL' as sub_bu_name,'ALL' as sub_bu_name_en, - market, - ims_city_ratio, - yyyymm, - 'Other Low Tiers' as city_name, - 'ROC' as ims_audit_cod - from - tmp.tmp_ims_td_org_hvh - -- )t2 --on t1.bu=t2.bu_name_en - where - bu_code is not null - --有销量的ROC数据 - and concat (market, '_ROC') in ( - select distinct - market_audit_key - from - dm.dm_ims_tf_sales - where - audit_cod = 'ROC' - ) - ) t2 on t1.audit_cod = t2.ims_audit_cod - --- COMMAND ---------- - - --将所有未能挂上Org的市场数据补全,同时根据市场找到对应BU -insert into - tmp.tmp_ims_td_org_hvh -select distinct - yyyymm, - dsm_trty_code, - dsm_kcode, - dsm_name, - rsm_trty_code, - rsm_kcode, - rsm_name, - rsd_trty_code, - rsd_kcode, - rsd_name, - nsd_trty_code, - nsd_kcode, - nsd_name, - district_code, - district_name, - district_name_en, - region_code, - region_name, - region_name_en, - rc_code, - rc_name, - rc_name_en, - t2.bu_code, - t2.bu_name, - t2.bu_name_en, - t2.bu_category, - t2.sub_bu_code, - t2.sub_bu_name, - t2.sub_bu_name_en, - t2.city_name, - null as ims_pack_cod, - t2.market, - t2.ims_audit_cod, - t2.ims_city_ratio -from - ( - select - 'Vacant' as dsm_trty_code, - 'Vacant' as dsm_kcode, - 'Vacant' as dsm_name, - 'Vacant' as rsm_trty_code, - 'Vacant' as rsm_kcode, - 'Vacant' as rsm_name, - 'Vacant' as rsd_trty_code, - 'Vacant' as rsd_kcode, - 'Vacant' as rsd_name, - 'Vacant' as nsd_trty_code, - 'Vacant' as nsd_kcode, - 'Vacant' as nsd_name, - 'Non AZ Region' as district_code, - 'Non AZ Region' as district_name, - 'Non AZ Region' as district_name_en, - 'Non AZ Region' as region_code, - 'Non AZ Region' as region_name, - 'Non AZ Region' as region_name_en, - 'Non AZ Region' as rc_code, - 'Non AZ Region' as rc_name, - 'Non AZ Region' as rc_name_en - ) t1 - full join ( - select distinct - bu_code, - bu_name, - bu_name_en, - bu_category, - sub_bu_code, - sub_bu_name, - sub_bu_name_en, - -- 'ALL' as sub_bu_code,'ALL' as sub_bu_name,'ALL' as sub_bu_name_en, - t2.audit_cod as ims_audit_cod, - null as city_name, - t1.yyyymm, - t2.market, - ims_city_ratio - from - tmp.tmp_ims_td_org_hvh t1 - inner join ( - --筛选出挂不上Org的市场城市,同时又有销量的 - select distinct - t2.market, - t2.audit_cod, - t3.bu - from - tmp.tmp_ims_td_org_hvh t1 - right join ( - select distinct - audit_cod, - market - from - dm.dm_ims_tf_sales - ) t2 on concat (t1.market, '_', t1.ims_audit_cod) = concat (t2.market, '_', t2.audit_cod) - left join dwd.dwd_td_ims_market_ta_order t3 on t2.market = t3.market - where - concat (t1.market, '_', t1.ims_audit_cod) is null - and t2.market <> 'IMS ALL Market' - ) t2 on t1.bu_name_en = t2.bu - ) t2 -where - t2.bu_code is not null - --- COMMAND ---------- - - insert overwrite table dm.dm_ims_td_org_hvh -select distinct - t1.yyyymm, - concat ( - t1.market, - '_', - t2.audit_cod, - '_', - right (t1.yyyymm, 2) - ) as ORG_KEY, - t1.dsm_trty_code, - t1.dsm_kcode, - t1.dsm_name, - t1.rsm_trty_code, - t1.rsm_kcode, - t1.rsm_name, - t1.rsd_trty_code, - t1.rsd_kcode, - t1.rsd_name, - t1.nsd_trty_code, - t1.nsd_kcode, - t1.nsd_name, - t1.district_code, - t1.district_name, - t1.district_name_en, - t1.region_code, - t1.region_name, - t1.region_name_en, - t1.rc_code, - t1.rc_name, - t1.rc_name_en, - t1.bu_code, - t1.bu_name, - t1.bu_name_en, - t1.bu_category, - t1.sub_bu_code, - t1.sub_bu_name, - t1.sub_bu_name_en, - t1.sub_bu_code as sub_bu_code_auth, --前端权限配置需要的字段 - t1.bu_code as bu_code_auth, --前端权限配置需要的字段 - t2.audit_cod, - t2.audit_des, - t2.audit_des_c, - t2.Province, - t2.Province_C, - t2.RegionCenter, - t1.market, - concat (t1.market, '_', t2.audit_cod) as market_audit_key, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp.tmp_ims_td_org_hvh t1 - left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod - --where t1.market is not null and t1.ims_audit_cod is not null -union all -select distinct - t1.yyyymm, - concat ( - 'IMS ALL Market', - '_', - t2.audit_cod, - '_', - right (t1.yyyymm, 2) - ) as ORG_KEY, - t1.dsm_trty_code, - t1.dsm_kcode, - t1.dsm_name, - t1.rsm_trty_code, - t1.rsm_kcode, - t1.rsm_name, - t1.rsd_trty_code, - t1.rsd_kcode, - t1.rsd_name, - t1.nsd_trty_code, - t1.nsd_kcode, - t1.nsd_name, - t1.district_code, - t1.district_name, - t1.district_name_en, - t1.region_code, - t1.region_name, - t1.region_name_en, - t1.rc_code, - t1.rc_name, - t1.rc_name_en, - t1.bu_code, - t1.bu_name, - t1.bu_name_en, - t1.bu_category, - t1.sub_bu_code, - t1.sub_bu_name, - t1.sub_bu_name_en, - 'ALL' as sub_bu_code_auth, - 'ALL' as bu_code_auth, - t2.audit_cod, - t2.audit_des, - t2.audit_des_c, - t2.Province, - t2.Province_C, - t2.RegionCenter, - 'IMS ALL Market' as market, - concat ('IMS ALL Market_', t2.audit_cod) as market_audit_key, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp.tmp_ims_td_org_hvh t1 - left join dws.dws_ims_td_geo t2 on t1.ims_audit_cod = t2.audit_cod \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_org_hvh.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql b/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql deleted file mode 100644 index 9950825..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql +++ /dev/null @@ -1,1679 +0,0 @@ --- Databricks notebook source --- 源表:DWS.DWS_IMS_TD_ATC_CN,DWS.DWS_IMS_TD_NFC_CN,DWS.DWS_IMS_TD_CORP_CN,DWS.DWS_IMS_TD_MANU_CN,DWS.DWS_IMS_TD_PROD_CN,DWD.DWD_IMS_TD_MOLECULE,DWD.DWD_GND_IMS_TBLMARKET_TA_MAP,DWS.DWS_IMS_TD_MARKET,DWD.DWD_IMS_TD_PACK_PROPERTY,DWD.DWD_GND_DEPT_PACK_PROPERTY,DWD.DWD_GND_IMS_TBLMARKET,DWD.DWD_GND_IMS_TBLKEYCOMPETITOR,DWD.DWD_GND_TBLCLASS,TMP.TMP_IMS_TF_FACT_SALES,DWD.DWD_GND_IMS_TBLBRANDRATIO,DWS.DWS_IMS_TD_PACK_PROPERTY,DWS.DWS_IMS_TD_MARKET,TMP.TMP_IMS_TD_MARKET_RATIO1 --- 目标表:DWS.DWS_IMS_TD_PACK_PROPERTY,DM.DM_IMS_TD_PACK_PROPERTY,DWS.DWS_IMS_TD_MARKET,DWS.DWS_IMS_TD_MARKET_RATIO,TMP.TMP_IMS_TD_MARKET_RATIO1 - --- COMMAND ---------- - --- DBTITLE 1,DIM_ATC -CREATE OR REPLACE TEMPORARY VIEW DIM_ATC AS -SELECT DISTINCT - 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 -FROM - DWS.DWS_IMS_TD_ATC_CN - --- COMMAND ---------- - --- DBTITLE 1,DIM_NFC -CREATE OR REPLACE TEMPORARY VIEW DIM_NFC AS -SELECT DISTINCT - APP1_COD, - APP1_DES, - APP1_DES_C, - APP2_COD, - APP2_DES, - APP2_DES_C, - APP3_COD, - APP3_DES, - APP3_DES_C -FROM - DWS.DWS_IMS_TD_NFC_CN - --- COMMAND ---------- - --- DBTITLE 1,DIM_CORP - CREATE - OR REPLACE TEMPORARY VIEW DIM_CORP AS -SELECT DISTINCT - CORP_COD, - CORP_DES_CN -FROM - DWS.DWS_IMS_TD_CORP_CN - --- COMMAND ---------- - --- DBTITLE 1,DIM_MANU - CREATE - OR REPLACE TEMPORARY VIEW DIM_MANU AS -SELECT DISTINCT - MANU_COD, - MANU_DES_CN -FROM - DWS.DWS_IMS_TD_MANU_CN - --- COMMAND ---------- - --- DBTITLE 1,DIM_PROD - CREATE - OR REPLACE TEMPORARY VIEW DIM_PROD AS -SELECT DISTINCT - PROD_COD, - PROD_DES, - PROD_DES_C, - CMPS_DES_C -FROM - DWS.DWS_IMS_TD_PROD_CN - --- COMMAND ---------- - --- DBTITLE 1,DIM_MOLECULE - CREATE - OR REPLACE TEMPORARY VIEW DIM_MOLECULE AS -SELECT DISTINCT - MOLECULE_NAME, - FAMILY_CODE, - FAMILY_NAME -FROM - DWD.DWD_IMS_TD_MOLECULE - --- COMMAND ---------- - --- DBTITLE 1,DIM_MARKET_TA_MAPPING - CREATE - OR REPLACE TEMPORARY VIEW DIM_MARKET_TA_MAPPING AS -SELECT DISTINCT - MARKET, - TA -FROM - DWD.DWD_GND_IMS_TBLMARKET_TA_MAP - --- COMMAND ---------- - --- DBTITLE 1,DIM_MARKET - CREATE - OR REPLACE TEMPORARY VIEW DIM_MARKET AS -SELECT DISTINCT - PACK_COD, - PROD_COD, - MARKET, - KEY_COMPETITOR -FROM - DWS.DWS_IMS_TD_MARKET - --- COMMAND ---------- - --- DBTITLE 1,DIM_PACK_PROPERTY - CREATE - OR REPLACE TEMPORARY VIEW DIM_PACK_PROPERTY AS -SELECT DISTINCT - PROD_COD -FROM - DWD.DWD_IMS_TD_PACK_PROPERTY -WHERE - CORP_COD = 'A5Z' - --- COMMAND ---------- - --- CREATE or replace TABLE catalog_e2_ngbi_qas.dws.dws_ims_td_pack_property ( --- PACK_COD STRING, --- PACK_DES STRING, --- STGH_DES STRING, --- PACK_LCH STRING, --- Family_Code STRING, --- Family_Name STRING, --- PROD_COD STRING, --- PROD_DES STRING, --- PROD_DES_C STRING, --- CMPS_COD STRING, --- CMPS_DES STRING, --- CMPS_DES_C STRING, --- ATC1_COD STRING, --- ATC2_COD STRING, --- ATC3_COD STRING, --- ATC4_COD STRING, --- APP1_COD STRING, --- APP2_COD STRING, --- APP3_COD 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_V 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, --- atc1_des STRING, --- atc1_des_c STRING, --- atc2_des STRING, --- atc2_des_c STRING, --- atc3_des STRING, --- atc3_des_c STRING, --- atc4_des STRING, --- atc4_des_c STRING, --- app1_des STRING, --- app1_des_c STRING, --- app2_des STRING, --- app2_des_c STRING, --- app3_des STRING, --- app3_des_c STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_ims_td_pack_property' - --- COMMAND ---------- - --- DBTITLE 1,overwrite dws_ims_td_pack_property ---pack 属性表逻辑 -insert overwrite table dws.dws_ims_td_pack_property -select distinct - -- case - -- when dm.Market is null then concat ('Non Market_', dp.PACK_COD) - -- else concat (dm.Market, '_', dp.PACK_COD) - -- end as MARKET_PACK_KEY, - dp.PACK_COD, - dp.PACK_DES, - dp.STGH_DES, - dp.PACK_LCH, - dm1.Family_Code, - dm1.Family_Name, - dp.PROD_COD, - dp1.PROD_DES, - dp1.PROD_DES_C, - dp.CMPS_COD, - dp.CMPS_DES, - dp1.CMPS_DES_C as CMPS_DES_C, --20240530正式新增字段 - dp.ATC1_COD, - dp.ATC2_COD, - dp.ATC3_COD, - dp.ATC4_COD, - dp.APP1_COD, - dp.APP2_COD, - dp.APP3_COD, - dp.BIO_DESC, - dp.GENE_ORIG_DESC, - dp.ETH_OTC_DESC, - dp.NRDL_DESC, - dp.NRDL_Entry_Date, - dp.EDL_DESC, - dp.TCM_DESC, - dp.PAED_DESC, - dp.GQCE_DESC, - dp.VBP_DESC as VBP_DESC_V, --20240530正式新增字段 - CASE - WHEN dp.VBP_DESC IN ('VBP-IN', 'VBP-N/A') THEN 'VBP' - ELSE 'Non VBP' - END VBP_DESC, - dp.MANU_COD, - dp.MANU_DES, - manu.MANU_DES_CN as MANU_DES_C, --20240530正式新增字段 - case - when dp.MNFL_COD = 'L' then 'L' - else 'M' - end MNFL_COD, - case - when dp.MNFL_DES = 'Local' then 'LOCAL' - else 'MNC' - end MNFL_DES, - dp.CORP_COD, - dp.CORP_DES, - crop.CORP_DES_CN as CORP_DES_C, --20240530正式新增字段 - dp.BrandType, - -- case - -- when dm.Market is null then 'Non Market' - -- else dm.Market - -- end as MARKET, - -- NVL (dm.KEY_COMPETITOR, 'Others') KEY_COMPETITOR, - case - when ta.PROD_COD is not null then 'Y' - else 'N' - end as IS_AZ, - null as AZ_MAIN, - -- case - -- when dmt.TA is null then 'Others MKT' - -- else 'AZ Related MKT' - -- end as AZ_Related, - t2.atc1_des, - t2.atc1_des_c, - t3.atc2_des, - t3.atc2_des_c, - t4.atc3_des, - t4.atc3_des_c, - t5.atc4_des, - t5.atc4_des_c, - n1.app1_des, - n1.app1_des_c, - n2.app2_des, - n2.app2_des_c, - n3.app3_des, - n3.app3_des_c -from - dwd.dwd_ims_td_pack_property dp - -- left join DIM_MARKET AS dm on dp.PACK_COD = dm.PACK_COD - -- and dp.PROD_COD = dm.PROD_COD - --将AZ在卖的产品全部给打上AZ标签,包括其他公司在卖的产品 - left join DIM_PACK_PROPERTY AS ta on dp.prod_cod = ta.prod_cod - -- left join DIM_MARKET_TA_MAPPING AS dmt on dmt.Market = dm.Market - left join DIM_MOLECULE AS dm1 on dp.CMPS_DES = dm1.Molecule_Name - left join DIM_PROD dp1 on dp1.PROD_COD = dp.PROD_COD - left join ( - SELECT DISTINCT - ATC1_COD, - ATC1_DES, - ATC1_DES_C - FROM - DIM_ATC - ) AS t2 on dp.atc1_cod = t2.atc1_cod - left join ( - SELECT DISTINCT - ATC2_COD, - ATC2_DES, - ATC2_DES_C - FROM - DIM_ATC - ) AS t3 on dp.atc2_cod = t3.atc2_cod - left join ( - SELECT DISTINCT - ATC3_COD, - ATC3_DES, - ATC3_DES_C - FROM - DIM_ATC - ) AS t4 on dp.atc3_cod = t4.atc3_cod - left join ( - SELECT DISTINCT - ATC4_COD, - ATC4_DES, - ATC4_DES_C - FROM - DIM_ATC - ) t5 on dp.atc4_cod = t5.atc4_cod - left join ( - SELECT DISTINCT - APP1_COD, - APP1_DES, - APP1_DES_C - FROM - DIM_NFC - ) AS n1 on dp.app1_cod = n1.app1_cod - left join ( - SELECT DISTINCT - APP2_COD, - APP2_DES, - APP2_DES_C - FROM - DIM_NFC - ) AS n2 on dp.app2_cod = n2.app2_cod - left join ( - SELECT DISTINCT - APP3_COD, - APP3_DES, - APP3_DES_C - FROM - DIM_NFC - ) AS n3 on dp.app3_cod = n3.app3_cod - left join DIM_CORP AS crop on dp.CORP_COD = crop.CORP_COD --20240530正式新增字段CORP_DES_C - left join DIM_MANU AS manu on dp.MANU_COD = manu.MANU_COD --20240530正式新增字段MANU_DES_C -; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # FB数据 - --- COMMAND ---------- - --- DBTITLE 1,FB_RAW_DATA -CREATE -OR REPLACE TEMPORARY VIEW FB_RAW_DATA AS -select DISTINCT - IQVIA_PACK_CODE as PACK_COD, - IQVIA_PROD_CODE as PROD_COD, - PACK_COD as FB_PACK_COD, - APP1_COD, - APP1_DES, - APP1_DES_C, - APP2_COD, - APP2_DES, - APP2_DES_C, - APP3_COD, - APP3_DES, - APP3_DES_C, - ATC1_COD, - ATC1_DES, - ATC1_DES_C, - ATC2_COD, - ATC2_DES, - ATC2_DES_C, - ATC3_COD, - ATC3_DES, - ATC3_DES_C, - ATC4_COD, - ATC4_DES, - ATC4_DES_C, - BIO_DESC, - CMPS_COD, - CMPS_DES, - CMPS_DES_C, - CORP_COD, - CORP_DES, - CORP_DES_C, - EDL_DESC, - ETH_OTC_DESC, - GENE_ORIG_DESC, - GQCE_DESC, - MANU_COD, - MANU_DES, - MANU_DES_C, - MNFL_COD, - MNFL_DES, - NRDL_DESC, - PACK_DES, - STGH_DES, - PACK_LCH, - PAED_DESC, - PROD_DES, - PROD_DES_C, - TCM_DESC, - VBP_DESC, - COUNTINGUNIT, - NULL as NRDL_Entry_Date, - null as BrandType - ,null as Is_AZ - ,null as AZ_MAIN - ,null as AZ_Related - ,null as Family_Code - ,null as Family_Name -from - dwd.dwd_gnd_dept_pack_property - --- COMMAND ---------- - --- DBTITLE 1,FB_MARKET --- CREATE --- OR REPLACE TEMPORARY VIEW FB_MARKET AS --- -- select distinct --- -- CONCAT (t2.market, '_', t1.PACK_COD) AS MARKET_PACK_KEY, --- -- t2.market, --- -- CASE --- -- WHEN t2.extend_market_ratio IS NULL THEN '1' --- -- ELSE t2.extend_market_ratio --- -- END AS Market_Ratio, --- -- t1.* --- -- from --- -- ( --- select --- t1.iqvia_pack_code as PACK_COD, --- t1.PACK_DES, --- t1.STGH_DES, --- t1.PACK_LCH, --- null as Family_Code, --- null as Family_Name, --- t1.iqvia_prod_code as 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, --- null as 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, --- null as BrandType, --- null as IS_AZ, --- null as AZ_MAIN, --- null as AZ_Related, --- 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, --- countingunit, --- null as ETL_INSERT_DT, --- null as ETL_UPDATE_DT --- from --- FB_RAW_DATA t1 --- -- ) t1 --- -- left join ( --- -- select --- -- * --- -- from --- -- dwd.dwd_gnd_ims_tblmarket --- -- WHERE --- -- Extend_Market IS NULL --- -- AND ( --- -- NOT_IN_FLAG IS NULL --- -- or NOT_IN_FLAG = '1' --- -- ) --- -- ) t2 on COALESCE(t1.ATC1_COD, '') = case --- -- when t2.ATC1_Code is null then COALESCE(t1.ATC1_COD, '') --- -- else t2.ATC1_Code --- -- end --- -- and COALESCE(t1.ATC2_COD, '') = case --- -- when t2.ATC2_Code is null then COALESCE(t1.ATC2_COD, '') --- -- else t2.ATC2_Code --- -- end --- -- and COALESCE(t1.ATC3_COD, '') = case --- -- when t2.ATC3_Code is null then COALESCE(t1.ATC3_COD, '') --- -- else t2.ATC3_Code --- -- end --- -- and COALESCE(t1.ATC4_COD, '') = case --- -- when t2.ATC4_Code is null then COALESCE(t1.ATC4_COD, '') --- -- else t2.ATC4_Code --- -- end --- -- and COALESCE(t1.APP1_COD, '') = case --- -- when t2.NFC1_Code is null then COALESCE(t1.APP1_COD, '') --- -- else t2.NFC1_Code --- -- end --- -- and COALESCE(t1.APP2_COD, '') = case --- -- when t2.NFC2_Code is null then COALESCE(t1.APP2_COD, '') --- -- else t2.NFC2_Code --- -- end --- -- and COALESCE(t1.APP3_COD, '') = case --- -- when t2.NFC3_Code is null then COALESCE(t1.APP3_COD, '') --- -- else t2.NFC3_Code --- -- end --- -- and COALESCE(t1.CORP_COD, '') = case --- -- when t2.corporation_code is null then COALESCE(t1.CORP_COD, '') --- -- else t2.corporation_code --- -- end --- -- and COALESCE(t1.MANU_COD, '') = case --- -- when t2.Manufacturer_Code is null then COALESCE(t1.MANU_COD, '') --- -- else t2.Manufacturer_Code --- -- end --- -- and COALESCE(t1.PROD_COD, '') = case --- -- when t2.Product_Code is null then COALESCE(t1.PROD_COD, '') --- -- else t2.Product_Code --- -- end --- -- and COALESCE(t1.PACK_COD, '') = case --- -- when t2.Pack_Code is null then COALESCE(t1.PACK_COD, '') --- -- else t2.Pack_Code --- -- end --- -- and COALESCE(t1.STGH_DES, '') = case --- -- when t2.Strength is null then COALESCE(t1.STGH_DES, '') --- -- else t2.Strength --- -- end --- -- and COALESCE(t1.CMPS_COD, '') = case --- -- when t2.Molecule_Code is null then COALESCE(t1.CMPS_COD, '') --- -- else t2.Molecule_Code --- -- end --- -- left join ( --- -- select --- -- * --- -- from --- -- dwd.dwd_gnd_ims_tblmarket --- -- WHERE --- -- Extend_Market IS NULL --- -- AND NOT_IN_FLAG = '0' --- -- ) t3 on COALESCE(t1.ATC1_COD, '') = case --- -- when t3.ATC1_Code is null then COALESCE(t1.ATC1_COD, '') --- -- else t3.ATC1_Code --- -- end --- -- and COALESCE(t1.ATC2_COD, '') = case --- -- when t3.ATC2_Code is null then COALESCE(t1.ATC2_COD, '') --- -- else t3.ATC2_Code --- -- end --- -- and COALESCE(t1.ATC3_COD, '') = case --- -- when t3.ATC3_Code is null then COALESCE(t1.ATC3_COD, '') --- -- else t3.ATC3_Code --- -- end --- -- and COALESCE(t1.ATC4_COD, '') = case --- -- when t3.ATC4_Code is null then COALESCE(t1.ATC4_COD, '') --- -- else t3.ATC4_Code --- -- end --- -- and COALESCE(t1.APP1_COD, '') = case --- -- when t3.NFC1_Code is null then COALESCE(t1.APP1_COD, '') --- -- else t3.NFC1_Code --- -- end --- -- and COALESCE(t1.APP2_COD, '') = case --- -- when t3.NFC2_Code is null then COALESCE(t1.APP2_COD, '') --- -- else t3.NFC2_Code --- -- end --- -- and COALESCE(t1.APP3_COD, '') = case --- -- when t3.NFC3_Code is null then COALESCE(t1.APP3_COD, '') --- -- else t3.NFC3_Code --- -- end --- -- and COALESCE(t1.CORP_COD, '') = case --- -- when t3.corporation_code is null then COALESCE(t1.CORP_COD, '') --- -- else t3.corporation_code --- -- end --- -- and COALESCE(t1.MANU_COD, '') = case --- -- when t3.Manufacturer_Code is null then COALESCE(t1.MANU_COD, '') --- -- else t3.Manufacturer_Code --- -- end --- -- and COALESCE(t1.PROD_COD, '') = case --- -- when t3.Product_Code is null then COALESCE(t1.PROD_COD, '') --- -- else t3.Product_Code --- -- end --- -- and COALESCE(t1.PACK_COD, '') = case --- -- when t3.Pack_Code is null then COALESCE(t1.PACK_COD, '') --- -- else t3.Pack_Code --- -- end --- -- and COALESCE(t1.STGH_DES, '') = case --- -- when t3.Strength is null then COALESCE(t1.STGH_DES, '') --- -- else t3.Strength --- -- end --- -- and COALESCE(t1.CMPS_COD, '') = case --- -- when t3.Molecule_Code is null then COALESCE(t1.CMPS_COD, '') --- -- else t3.Molecule_Code --- -- end --- -- and t2.market = t3.market --- -- where --- -- t2.market is not null --- -- and t3.market is null - --- COMMAND ---------- - --- DBTITLE 1,FB_COMPETITOR --- CREATE --- OR REPLACE TEMPORARY VIEW FB_COMPETITOR AS --- --可以按照MARKET_PACK_KEY去重 --- select distinct --- upper(t2.keycompetitor) as Key_Competitor, --- t1.*, --- T2.NO1 --- from --- FB_MARKET t1 --- left join ( --- select --- 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 NFC2_CODE IS NULL THEN 0 --- ELSE 1 --- END, --- CASE --- WHEN NFC3_CODE IS NULL THEN 0 --- ELSE 1 --- END --- ) AS no1, --- * --- from --- dwd.dwd_gnd_ims_tblkeycompetitor --- ) t2 on COALESCE(t1.ATC1_COD, '') = case --- when t2.ATC1_Code is null then COALESCE(t1.ATC1_COD, '') --- else t2.ATC1_Code --- end --- and COALESCE(t1.ATC2_COD, '') = case --- when t2.ATC2_Code is null then COALESCE(t1.ATC2_COD, '') --- else t2.ATC2_Code --- end --- and COALESCE(t1.ATC3_COD, '') = case --- when t2.ATC3_Code is null then COALESCE(t1.ATC3_COD, '') --- else t2.ATC3_Code --- end --- and COALESCE(t1.ATC4_COD, '') = case --- when t2.ATC4_Code is null then COALESCE(t1.ATC4_COD, '') --- else t2.ATC4_Code --- end --- and COALESCE(t1.APP1_COD, '') = case --- when t2.NFC1_Code is null then COALESCE(t1.APP1_COD, '') --- else t2.NFC1_Code --- end --- and COALESCE(t1.APP2_COD, '') = case --- when t2.NFC2_Code is null then COALESCE(t1.APP2_COD, '') --- else t2.NFC2_Code --- end --- and COALESCE(t1.APP3_COD, '') = case --- when t2.NFC3_Code is null then COALESCE(t1.APP3_COD, '') --- else t2.NFC3_Code --- end --- and COALESCE(t1.CORP_COD, '') = case --- when t2.corporation_code is null then COALESCE(t1.CORP_COD, '') --- else t2.corporation_code --- end --- and COALESCE(t1.MANU_COD, '') = case --- when t2.Manufacturer_Code is null then COALESCE(t1.MANU_COD, '') --- else t2.Manufacturer_Code --- end --- and COALESCE(t1.PROD_COD, '') = case --- when t2.Product_Code is null then COALESCE(t1.PROD_COD, '') --- else t2.Product_Code --- end --- and COALESCE(t1.PACK_COD, '') = case --- when t2.Pack_Code is null then COALESCE(t1.PACK_COD, '') --- else t2.Pack_Code --- end --- and COALESCE(t1.STGH_DES, '') = case --- when t2.Strength is null then COALESCE(t1.STGH_DES, '') --- else t2.Strength --- end --- and COALESCE(t1.CMPS_COD, '') = case --- when t2.Molecule_Code is null then COALESCE(t1.CMPS_COD, '') --- else t2.Molecule_Code --- end --- and COALESCE(t1.market, '') = case --- when t2.market is null then COALESCE(t1.market, '') --- else t2.market --- end - --- COMMAND ---------- - --- DBTITLE 1,FB_COMPETITOR_FILTER --- -- 20260206 这里增加筛选条件,因为后面发现数据有重复 --- -- 和Chenwu沟通后,认为需要把no1这个开窗排序字段用上,而且在其他数据源,也需要用到 --- CREATE --- OR REPLACE TEMPORARY VIEW FB_COMPETITOR_FILTER AS --- select --- * --- from --- ( --- select --- *, --- row_number() over ( --- partition by --- PACK_COD, --- MARKET --- order by --- no1 desc --- ) as new_order --- FROM --- FB_COMPETITOR --- ) as new --- WHERE --- new.new_order = 1 - --- COMMAND ---------- - --- DBTITLE 1,FB_CLASS --- CREATE --- OR REPLACE TEMPORARY VIEW FB_CLASS AS --- select --- t1.*, --- t3.class --- from --- FB_COMPETITOR_FILTER t1 --- left join dwd.dwd_gnd_tblclass t3 on t1.market = ifnull (t3.market, t1.market) --- and t1.pack_cod = ifnull (t3.pack_code, t1.pack_cod) --- and t1.prod_cod = ifnull (t3.product_code, t1.prod_cod) --- and t1.cmps_cod = ifnull (t3.molecule_code, t1.cmps_cod) --- and t1.corp_cod = ifnull (t3.Corporation_code, t1.corp_cod) --- and t1.manu_cod = ifnull (t3.Manufacturer_Code, t1.manu_cod) --- and t1.ATC1_COD = ifnull (t3.ATC1_Code, t1.ATC1_COD) --- and t1.ATC2_COD = ifnull (t3.ATC2_Code, t1.ATC2_COD) --- and t1.ATC3_COD = ifnull (t3.ATC3_Code, t1.ATC3_COD) --- and t1.ATC4_COD = ifnull (t3.ATC4_Code, t1.ATC4_COD) --- and t1.APP1_COD = ifnull (t3.NFC1_Code, t1.APP1_COD) --- and t1.APP2_COD = ifnull (t3.NFC2_Code, t1.APP2_COD) --- and t1.APP3_COD = ifnull (t3.NFC3_Code, t1.APP3_COD) --- and t1.STGH_DES = ifnull (t3.Strength, t1.STGH_DES) - --- COMMAND ---------- - --- DBTITLE 1,CHPA_UNION_FB_DATA --- 20260201 新增 -CREATE -OR REPLACE TEMPORARY VIEW CHPA_UNION_FB_DATA AS -select distinct - -- t1.MARKET_PACK_KEY, - t1.PACK_COD, - t1.PACK_DES, - t1.STGH_DES, - t1.PACK_LCH, - t1.Family_Code, - t1.Family_Name, - t1.PROD_COD, - t1.PROD_DES, - t1.PROD_DES_C, - t1.CMPS_COD, - t1.CMPS_DES, - t1.CMPS_DES_C as 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_V as VBP_DESC_V, - t1.VBP_DESC, - t1.MANU_COD, - t1.MANU_DES, - t1.MANU_DES_C as MANU_DES_C, - t1.MNFL_COD, - t1.MNFL_DES, - t1.CORP_COD, - case - when t1.CORP_DES like '% GROUP%' then replace (t1.CORP_DES, ' GROUP', '') - else t1.CORP_DES - end CORP_DES, - t1.CORP_DES_C as CORP_DES_C, - t1.BrandType, - -- t1.MARKET, - -- upper(t1.KEY_COMPETITOR) as KEY_COMPETITOR, - t1.AZ_MAIN, - -- t1.AZ_Related, - 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 - -- ,t3.class -from - dws.dws_ims_td_pack_property t1 - -- left join dwd.dwd_gnd_tblclass t3 on t1.market = ifnull (t3.market, t1.market) - -- and t1.pack_cod = ifnull (t3.pack_code, t1.pack_cod) - -- and t1.prod_cod = ifnull (t3.product_code, t1.prod_cod) - -- and t1.cmps_cod = ifnull (t3.molecule_code, t1.cmps_cod) - -- and t1.corp_cod = ifnull (t3.Corporation_code, t1.corp_cod) - -- and t1.manu_cod = ifnull (t3.Manufacturer_Code, t1.manu_cod) - -- and t1.ATC1_COD = ifnull (t3.ATC1_Code, t1.ATC1_COD) - -- and t1.ATC2_COD = ifnull (t3.ATC2_Code, t1.ATC2_COD) - -- and t1.ATC3_COD = ifnull (t3.ATC3_Code, t1.ATC3_COD) - -- and t1.ATC4_COD = ifnull (t3.ATC4_Code, t1.ATC4_COD) - -- and t1.APP1_COD = ifnull (t3.NFC1_Code, t1.APP1_COD) - -- and t1.APP2_COD = ifnull (t3.NFC2_Code, t1.APP2_COD) - -- and t1.APP3_COD = ifnull (t3.NFC3_Code, t1.APP3_COD) - -- and t1.STGH_DES = ifnull (t3.Strength, t1.STGH_DES) -UNION ALL -select DISTINCT - -- 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 AS VBP_DESC_V, - VBP_DESC, - MANU_COD, - MANU_DES, - MANU_DES_C, - MNFL_COD, - MNFL_DES, - CORP_COD, - CORP_DES, - CORP_DES_C, - BrandType, - -- MARKET, - -- KEY_COMPETITOR, - 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 -from - FB_RAW_DATA as t -where - not EXISTS ( - select - 0 - from - dws.dws_ims_td_pack_property - where - PACK_COD = t.pack_cod - ) - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE catalog_e2_ngbi_qas.dm.dm_ims_td_pack_property ( --- PACK_COD STRING, --- PACK_DES STRING, --- STGH_DES STRING, --- PACK_LCH STRING, --- Family_Code STRING, --- Family_Name STRING, --- PROD_COD STRING, --- PROD_DES STRING, --- PROD_DES_C STRING, --- CMPS_COD STRING, --- CMPS_DES STRING, --- CMPS_DES_C STRING, --- ATC1_COD STRING, --- ATC2_COD STRING, --- ATC3_COD STRING, --- ATC4_COD STRING, --- APP1_COD STRING, --- APP2_COD STRING, --- APP3_COD 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_V 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, --- atc1_des STRING, --- atc1_des_c STRING, --- atc2_des STRING, --- atc2_des_c STRING, --- atc3_des STRING, --- atc3_des_c STRING, --- atc4_des STRING, --- atc4_des_c STRING, --- app1_des STRING, --- app1_des_c STRING, --- app2_des STRING, --- app2_des_c STRING, --- app3_des STRING, --- app3_des_c STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ims_td_pack_property' - --- COMMAND ---------- - --- DBTITLE 1,overwrite dm.dm_ims_td_pack_property -insert overwrite table dm.dm_ims_td_pack_property --- create or replace table dm.dm_ims_td_pack_property -select distinct - -- t1.MARKET_PACK_KEY, - t1.PACK_COD, - t1.PACK_DES, - t1.STGH_DES, - t1.PACK_LCH, - t1.Family_Code, - t1.Family_Name, - t1.PROD_COD, - t1.PROD_DES, - t1.PROD_DES_C, - t1.CMPS_COD, - t1.CMPS_DES, - t1.CMPS_DES_C as CMPS_DES_C, --20240530正式新增字段 - 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_V as VBP_DESC_V, --20240530正式新增字段 - t1.VBP_DESC, - t1.MANU_COD, - t1.MANU_DES, - t1.MANU_DES_C as MANU_DES_C, --20240530正式新增字段 - t1.MNFL_COD, - t1.MNFL_DES, - t1.CORP_COD, - case - when t1.CORP_DES like '% GROUP%' then replace (t1.CORP_DES, ' GROUP', '') - else t1.CORP_DES - end CORP_DES, - t1.CORP_DES_C as CORP_DES_C, --20240530正式新增字段 - t1.BrandType, - -- t1.MARKET, - --六大市场即AZ 市场的key competitor=All Brands(PROD_DES) - ------------------------------------------------------------------- - -- upper(t1.KEY_COMPETITOR) as KEY_COMPETITOR, - ifnull (t2.IS_AZ, 'N') as IS_AZ, - t1.AZ_MAIN, - -- t1.AZ_Related, - 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, - -- ifnull (t1.class, 'Others') as Class, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - CHPA_UNION_FB_DATA t1 - left join ( - select distinct - prod_cod, - prod_des, - 'Y' as IS_AZ - from - dws.dws_ims_td_pack_property - where - corp_cod = 'A5Z' - ) t2 on t1.prod_des = t2.prod_des --- where --- t1.market <> 'Non Market' --- --IMS ALL Market pack表属性补全 --- union all --- select distinct --- concat ('IMS ALL Market_', t1.PACK_COD) as MARKET_PACK_KEY, --- t1.PACK_COD, --- t1.PACK_DES, --- t1.STGH_DES, --- t1.PACK_LCH, --- t1.Family_Code, --- t1.Family_Name, --- t1.PROD_COD, --- t1.PROD_DES, --- t1.PROD_DES_C, --- t1.CMPS_COD, --- t1.CMPS_DES, --- t1.CMPS_DES_C as CMPS_DES_C, --20240530正式新增字段 --- 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_V as VBP_DESC_V, --20240530正式新增字段 --- t1.VBP_DESC, --- t1.MANU_COD, --- t1.MANU_DES, --- t1.MANU_DES_C as MANU_DES_C, --20240530正式新增字段 --- t1.MNFL_COD, --- t1.MNFL_DES, --- t1.CORP_COD, --- case --- when t1.CORP_DES like '% GROUP%' then replace (t1.CORP_DES, ' GROUP', '') --- else t1.CORP_DES --- end CORP_DES, --- t1.CORP_DES_C as CORP_DES_C, --20240530正式新增字段 --- t1.BrandType, --- 'IMS ALL Market' as MARKET, --- upper(t1.PROD_DES) as KEY_COMPETITOR, --- ifnull (t2.IS_AZ, 'N') as IS_AZ, --- null as AZ_MAIN, --- null as AZ_Related, --- 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, --- 'Others' as Class, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT --- from --- CHPA_UNION_FB_DATA t1 --- left join ( --- select distinct --- prod_cod, --- prod_des, --- 'Y' as IS_AZ --- from --- dws.dws_ims_td_pack_property --- where --- corp_cod = 'A5Z' --- ) t2 on t1.prod_des = t2.prod_des - --- COMMAND ---------- - --- create or replace table tmp.tmp_ext_chpa_pack_propetry -insert overwrite table tmp.tmp_ext_chpa_pack_propetry -select - PACK_COD, - max(PACK_DES) as PACK_DES, - max(STGH_DES) as STGH_DES, - max(PACK_LCH) as PACK_LCH, - max(Family_Code) as Family_Code, - max(Family_Name) as Family_Name, - 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, - max(VBP_DESC) 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, - null as AZ_Related, - 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 -from - dm.dm_ims_td_pack_property -group by - PACK_COD - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # market ratio PDOT CU - --- COMMAND ---------- - --- DBTITLE 1,UPDATE dws.dws_ims_td_market --- -- 补充 法伯部分的数据 --- insert into --- table dws.dws_ims_td_market --- with --- FB_MARKET_RATIO as ( --- select distinct --- market, --- PACK_COD, --- PACK_DES, --- STGH_DES, --- PACK_LCH, --- PROD_COD, --- CMPS_COD, --- CMPS_DES, --- 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, --- MNFL_COD, --- MNFL_DES, --- CORP_COD, --- CORP_DES, --- BrandType, --- null as bu, --- Market_Ratio, --- Key_Competitor, --- from_utc_timestamp (current_timestamp(), 'UTC+8'), --- from_utc_timestamp (current_timestamp(), 'UTC+8') --- from --- from --- FB_CLASS as t --- where --- not EXISTS ( --- select --- 0 --- from --- dws.dws_ims_td_pack_property --- where --- PACK_COD = t.pack_cod --- ) --- ) --- select --- * --- from --- FB_MARKET_RATIO - --- COMMAND ---------- - --- DBTITLE 1,overwrite dws.dws_ims_td_market_ratio --- --由于360中折算规则更加灵活,所以将市场的Ratio打开,分别对应三个不同的KPI字段 --- --此处会关联YM字段,原因是需要按照市场进行折算 --- --市场维度信息 挂上360中的折算规则 先用日期表做笛卡儿积,保证不同时间的规则可以关联上 --- insert overwrite table dws.dws_ims_td_market_ratio ( --- YM, --- MARKET, --- PACK_COD, --- PACK_DES, --- STGH_DES, --- PACK_LCH, --- PROD_COD, --- CMPS_COD, --- CMPS_DES, --- 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, --- MNFL_COD, --- MNFL_DES, --- CORP_COD, --- CORP_DES, --- BrandType, --- BU, --- Key_Competitor, --- Value_Market_Ratio, --- Unit_Market_Ratio, --- CountingUnit_Market_Ratio, --- PDOT_Market_Ratio, --- ETL_INSERT_DT, --- ETL_UPDATE_DT --- ) --- SELECT DISTINCT --- YM.YM, --- Market.MARKET, --- Market.PACK_COD, --- Market.PACK_DES, --- Market.STGH_DES, --- Market.PACK_LCH, --- Market.PROD_COD, --- Market.CMPS_COD, --- Market.CMPS_DES, --- Market.ATC1_COD, --- Market.ATC2_COD, --- Market.ATC3_COD, --- Market.ATC4_COD, --- Market.APP1_COD, --- Market.APP2_COD, --- Market.APP3_COD, --- Market.BIO_DESC, --- Market.GENE_ORIG_DESC, --- Market.ETH_OTC_DESC, --- Market.NRDL_DESC, --- Market.NRDL_Entry_Date, --- Market.EDL_DESC, --- Market.TCM_DESC, --- Market.PAED_DESC, --- Market.GQCE_DESC, --- Market.VBP_DESC, --- Market.MANU_COD, --- Market.MANU_DES, --- Market.MNFL_COD, --- Market.MNFL_DES, --- Market.CORP_COD, --- Market.CORP_DES, --- Market.BrandType, --- Market.BU, --- Market.Key_Competitor, --- Market.Market_Ratio AS Value_Market_Ratio, --- Market.Market_Ratio AS Unit_Market_Ratio, --- Market.Market_Ratio AS CountingUnit_Market_Ratio, --- Market.Market_Ratio AS PDOT_Market_Ratio, --- from_utc_timestamp (current_timestamp(), 'UTC+8'), --- from_utc_timestamp (current_timestamp(), 'UTC+8') --- FROM --- dws.dws_ims_td_market Market --- CROSS JOIN ( --- SELECT DISTINCT --- cast(YM as int) as YM --- FROM --- tmp.tmp_ims_tf_fact_sales --- ) YM --- -- WHERE YM.YM >= (SELECT MIN(cast(YM as int)) FROM dws.dws_ims_td_date) --- ; - --- COMMAND ---------- - --- DBTITLE 1,overwrite tmp.tmp_ims_td_market_ratio1 --- ----------------------------------------------------------------------------------------------------------------------------- --- --修改时间:20240820 --- --修改人:FanXujia --- --修改内容: --- --market_ratio的逻辑调整 --- --修改前:market_ratio(tblmarket) * ratio(tblbrandratio_pack) * ratio(tblbrandratio_MOLECULE) ,三者相乘得到最终的ratio --- --修改后:market_ratio(tblmarket) * ratio(优先取pack级别的ratio,没有pack级别的就取molecule级别的ratio),两者相乘得到最终的ratio --- ----------------------------------------------------------------------------------------------------------------------------- --- ---按照折算的Type,分三个类型的Ratio进行折算 VALUE,UNIT,COUNTINGUNIT --- insert overwrite table tmp.tmp_ims_td_market_ratio1 --- select distinct --- t1.YM, --- t1.MARKET, --- t1.PACK_COD, --- t1.PACK_DES, --- t1.STGH_DES, --- t1.PACK_LCH, --- 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.Key_Competitor, --- case --- when t2.ratio is not null then t1.Value_Market_Ratio * t2.ratio --- else t1.Value_Market_Ratio * nvl (t5.ratio, 1) --- end as Value_Market_Ratio, --- case --- when t3.ratio is not null then t1.Unit_Market_Ratio * t3.ratio --- else t1.Unit_Market_Ratio * nvl (t6.ratio, 1) --- end as Unit_Market_Ratio, --- case --- when t4.ratio is not null then t1.CountingUnit_Market_Ratio * t4.ratio --- else t1.CountingUnit_Market_Ratio * nvl (t7.ratio, 1) --- end as CountingUnit_Market_Ratio, --- t1.PDOT_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 --- dws.dws_ims_td_market_ratio t1 --- left join ( --VALUE--PACK --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'VALUE' --- and UPPER(Level) = 'PACK' --- ) t2 on t1.market = t2.market --- and t1.PACK_COD = t2.PACK_COD --- and t1.YM >= t2.starttime --- and t1.YM <= t2.endtime --- left join ( --UNIT--PACK --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'UNIT' --- and UPPER(Level) = 'PACK' --- ) t3 on t1.market = t3.market --- and t1.PACK_COD = t3.PACK_COD --- and t1.YM >= t3.starttime --- and t1.YM <= t3.endtime --- left join ( --COUNTINGUNIT--PACK --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'COUNTINGUNIT' --- and UPPER(Level) = 'PACK' --- ) t4 on t1.market = t4.market --- and t1.PACK_COD = t4.PACK_COD --- and t1.YM >= t4.starttime --- and t1.YM <= t4.endtime --- left join ( --VALUE--MOLECULE --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'VALUE' --- and UPPER(Level) = 'MOLECULE' --- ) t5 on t1.market = t5.market --- and t1.CMPS_COD = t5.CMPS_COD --- and t1.YM >= t5.starttime --- and t1.YM <= t5.endtime --- left join ( --UNIT--MOLECULE --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'UNIT' --- and UPPER(Level) = 'MOLECULE' --- ) t6 on t1.market = t6.market --- and t1.CMPS_COD = t6.CMPS_COD --- and t1.YM >= t6.starttime --- and t1.YM <= t6.endtime --- left join ( --COUNTINGUNIT--MOLECULE --- select distinct --- market, --- cmps_cod, --- cmps_des, --- pack_cod, --- pack_des, --- level, --- type, --- cast(ratio as float) as ratio, --- cast(starttime as int) starttime, --- cast(endtime as int) endtime --- from --- dwd.dwd_gnd_ims_tblbrandratio --- where --- UPPER(TYPE) = 'COUNTINGUNIT' --- and UPPER(Level) = 'MOLECULE' --- ) t7 on t1.market = t7.market --- and t1.CMPS_COD = t7.CMPS_COD --- and t1.YM >= t7.starttime --- and t1.YM <= t7.endtime; - --- COMMAND ---------- - --- DBTITLE 1,overwrite dws.dws_ims_td_market_ratio --- --看市场维度需要用到的Ratio 写入 DWS 备用 --- insert overwrite table dws.dws_ims_td_market_ratio ( --- YM, --- MARKET, --- PACK_COD, --- PACK_DES, --- STGH_DES, --- PACK_LCH, --- PROD_COD, --- CMPS_COD, --- CMPS_DES, --- 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, --- MNFL_COD, --- MNFL_DES, --- CORP_COD, --- CORP_DES, --- BrandType, --- BU, --- Key_Competitor, --- Value_Market_Ratio, --- Unit_Market_Ratio, --- CountingUnit_Market_Ratio, --- PDOT_Market_Ratio, --- ETL_INSERT_DT, --- ETL_UPDATE_DT --- ) --- select --- t1.YM, --- t1.MARKET, --- t1.PACK_COD, --- t1.PACK_DES, --- t1.STGH_DES, --- t1.PACK_LCH, --- 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.Key_Competitor, --- Value_Market_Ratio, --- Unit_Market_Ratio, --- CountingUnit_Market_Ratio, --- PDOT_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 --- tmp.tmp_ims_td_market_ratio1 t1 \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_td_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql b/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql deleted file mode 100644 index a089268..0000000 --- a/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql +++ /dev/null @@ -1,759 +0,0 @@ --- Databricks notebook source --- DBTITLE 1,建表SQL --- CREATE OR REPLACE TABLE dm.dm_ims_tf_sales ( --- YYYYMM STRING, --- DAY_DATE STRING, --- PACK_COD STRING, --- AUDIT_COD STRING, --- Related_flag STRING, --- ORG_KEY STRING, --- Market STRING, --- MARKET_PACK_KEY STRING, --- MARKET_AUDIT_KEY STRING, --- SALES_VALUE DECIMAL(30,10), --- SALES_VALUE_LY DECIMAL(30,10), --- SALES_VALUE_L2Y DECIMAL(30,10), --- SALES_UNIT DECIMAL(30,10), --- SALES_UNIT_LY DECIMAL(30,10), --- SALES_UNIT_L2Y DECIMAL(30,10), --- CONUTING_UNIT DECIMAL(30,10), --- CONUTING_UNIT_LY DECIMAL(30,10), --- CONUTING_UNIT_L2Y DECIMAL(30,10), --- PDOT DECIMAL(30,10), --- PDOT_LY DECIMAL(30,10), --- PDOT_L2Y DECIMAL(30,10), --- SALES_VALUE_CAL DECIMAL(30,10), --- SALES_VALUE_CAL_LY DECIMAL(30,10), --- SALES_UNIT_CAL DECIMAL(30,10), --- SALES_UNIT_CAL_LY DECIMAL(30,10), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ims_tf_sales'; - --- COMMAND ---------- - --- DBTITLE 1,tmp_ims_tf_fact_sales_l2y ---提前算好前端需要两年前的数据 --- tmp.tmp_ims_tf_fact_sales 整张表对应的notebook path:/Workspace/Users/kthc245@azc.partner.onmschina.cn/20251125Rebuild MA/rebuildMA/DWS/dws_ims_tbl -CREATE -OR REPLACE TEMPORARY VIEW tmp_ims_tf_fact_sales_l2y AS -select - YM, - AUDIT_COD, - PACK_COD, - sum(MTH00LC) as MTH00LC, - sum(MTH00LCLY) as MTH00LCLY, - sum(MTH00LCL2Y) as MTH00LCL2Y, - sum(MTH00CN) as MTH00CN, - sum(MTH00CNLY) as MTH00CNLY, - sum(MTH00CNL2Y) as MTH00CNL2Y, - sum(MTH00UN) as MTH00UN, - sum(MTH00UNLY) as MTH00UNLY, - sum(MTH00UNL2Y) as MTH00UNL2Y -from - ( - select - YM, - AUDIT_COD, - PACK_COD, - MTH00LC, - MTH00LCLY, - 0 as MTH00LCL2Y, - MTH00CN, - MTH00CNLY, - 0 as MTH00CNL2Y, - MTH00UN, - MTH00UNLY, - 0 as MTH00UNL2Y - from - tmp.tmp_ims_tf_fact_sales - union all - select - YM + 200 as YM, - AUDIT_COD, - PACK_COD, - 0 as MTH00LC, - 0 as MTH00LCLY, - MTH00LC as MTH00LCL2Y, - 0 as MTH00CN, - 0 as MTH00CNLY, - MTH00CN as MTH00CNL2Y, - 0 as MTH00UN, - 0 as MTH00UNLY, - MTH00UN as MTH00UNL2Y - from - tmp.tmp_ims_tf_fact_sales - where - YM + 200 in ( - select distinct - YM - from - tmp.tmp_ims_tf_fact_sales - ) - ) -group by - YM, - AUDIT_COD, - PACK_COD - --- COMMAND ---------- - - -- DBTITLE 1,tmp_ims_tf_sales_total - --提前算好需要IMS 折算的value和不折算的value - CREATE - OR REPLACE TEMPORARY VIEW tmp_ims_tf_sales_total AS --- select distinct --- t1.YM as YYYYMM, --- t1.PACK_COD, --- t1.AUDIT_COD, --- 'ALL' AS RELATE_FLAG, --- t1.AUDIT_COD as ORG_KEY, --- case --- when t2.market is null then 'Non Market' --- else t2.market --- end Market, --- case --- when t2.market is null then concat ('Non Market_', t1.pack_cod) --- else concat (t2.market, '_', t2.pack_cod) --- end as MARKET_PACK_KEY, --- case --- when t2.market is null then concat ('Non Market_', t1.audit_cod) --- else concat (t2.market, '_', t1.audit_cod) --- end as MARKET_AUDIT_KEY, --- t1.MTH00LC * ( --- case --- when t2.Value_Market_Ratio is null then 1 --- else t2.Value_Market_Ratio --- end --- ) as SALES_VALUE, --- t1.MTH00LCLY * ( --- case --- when t2.Value_Market_Ratio is null then 1 --- else t2.Value_Market_Ratio --- end --- ) as SALES_VALUE_LY, --- t1.MTH00LCL2Y * ( --- case --- when t2.Value_Market_Ratio is null then 1 --- else t2.Value_Market_Ratio --- end --- ) as SALES_VALUE_L2Y, --- t1.MTH00UN * ( --- case --- when t2.Unit_Market_Ratio is null then 1 --- else t2.Unit_Market_Ratio --- end --- ) as SALES_UNIT, --- t1.MTH00UNLY * ( --- case --- when t2.Unit_Market_Ratio is null then 1 --- else t2.Unit_Market_Ratio --- end --- ) as SALES_UNIT_LY, --- t1.MTH00UNL2Y * ( --- case --- when t2.Unit_Market_Ratio is null then 1 --- else t2.Unit_Market_Ratio --- end --- ) as SALES_UNIT_L2Y, --- t1.MTH00CN as CONUTING_UNIT, --- t1.MTH00CNLY as CONUTING_UNIT_LY, --- t1.MTH00CNL2Y as CONUTING_UNIT_L2Y, --- t1.MTH00CN * ( --- case --- when t2.CountingUnit_Market_Ratio is null then 1 --- else t2.CountingUnit_Market_Ratio --- end --- ) as PDOT, --- t1.MTH00CNLY * ( --- case --- when t2.CountingUnit_Market_Ratio is null then 1 --- else t2.CountingUnit_Market_Ratio --- end --- ) as PDOT_LY, --- t1.MTH00CNL2Y * ( --- case --- when t2.CountingUnit_Market_Ratio is null then 1 --- else t2.CountingUnit_Market_Ratio --- end --- ) as PDOT_L2Y, --- t1.MTH00LC as SALES_VALUE_CAL, --- t1.MTH00LCLY as SALES_VALUE_CAL_LY, --- t1.MTH00LCL2Y as SALES_VALUE_CAL_L2Y, --- t1.MTH00UN as SALES_UNIT_CAL, --- t1.MTH00UNLY as SALES_UNIT_CAL_LY, --- t1.MTH00UNL2Y as SALES_UNIT_CAL_L2Y, --- from_utc_timestamp (current_timestamp(), 'UTC+8') as ETL_INSERT_DT, --- from_utc_timestamp (current_timestamp(), 'UTC+8') as ETL_UPDATE_DT --- from --- tmp_ims_tf_fact_sales_l2y t1 --- left join ( --- select distinct --- YM, --- market, --- pack_cod, --- Value_Market_Ratio, --- Unit_Market_Ratio, --- CountingUnit_Market_Ratio --- from --- dws.dws_ims_td_market_ratio --- ) t2 on t1.pack_cod = t2.pack_cod --- and t1.YM = t2.YM --- where --- -- t1.YM in (select YYYYMM from dm.dm_ims_td_calendar)and --- t2.market is not null --- union all --- -- IMS ALL Market 为所有的IMS市场 不折算的数据的汇总,即不折算的所有市场的city粒度数据 -select distinct - t1.YM as YYYYMM, - t1.PACK_COD, - t1.AUDIT_COD, - -- 'ALL' AS RELATE_FLAG, - t1.AUDIT_COD as ORG_KEY, - -- 'IMS ALL Market' Market, - -- concat ('IMS ALL Market_', t1.pack_cod) as MARKET_PACK_KEY, - -- concat ('IMS ALL Market_', t1.audit_cod) as MARKET_AUDIT_KEY, - t1.MTH00LC SALES_VALUE, - t1.MTH00LCLY SALES_VALUE_LY, - t1.MTH00LCL2Y SALES_VALUE_L2Y, - t1.MTH00UN SALES_UNIT, - t1.MTH00UNLY SALES_UNIT_LY, - t1.MTH00UNL2Y SALES_UNIT_L2Y, - t1.MTH00CN CONUTING_UNIT, - t1.MTH00CNLY CONUTING_UNIT_LY, - t1.MTH00CNL2Y CONUTING_UNIT_L2Y, - t1.MTH00CN PDOT, - t1.MTH00CNLY PDOT_LY, - t1.MTH00CNL2Y PDOT_L2Y, - t1.MTH00LC SALES_VALUE_CAL, - t1.MTH00LCLY SALES_VALUE_CAL_LY, - t1.MTH00LCL2Y SALES_VALUE_CAL_L2Y, - t1.MTH00UN SALES_UNIT_CAL, - t1.MTH00UNLY SALES_UNIT_CAL_LY, - t1.MTH00UNL2Y SALES_UNIT_CAL_L2Y, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp_ims_tf_fact_sales_l2y t1 - -- where t1.YM in (select YYYYMM from dm.dm_ims_td_calendar) -; - --- COMMAND ---------- - --- DBTITLE 1,tmp_ims_tf_sales_tamarket --- --在原本的数据上加上AZ Related Market,此为AZ 相关的六大市场数据汇总 --- --以及年月日的日期格式标签 --- CREATE --- OR REPLACE TEMPORARY VIEW tmp_ims_tf_sales_tamarket AS --- select distinct --- YYYYMM, --- concat (left (YYYYMM, 4), '-', right (YYYYMM, 2), '-01') as DAY_DATE, --- PACK_COD, --- AUDIT_COD, --- RELATE_FLAG, --- ORG_KEY, --- Market, --- MARKET_PACK_KEY, --- MARKET_AUDIT_KEY, --- SALES_VALUE, --- SALES_VALUE_LY, --- SALES_VALUE_L2Y, --- SALES_UNIT, --- SALES_UNIT_LY, --- SALES_UNIT_L2Y, --- CONUTING_UNIT, --- CONUTING_UNIT_LY, --- CONUTING_UNIT_L2Y, --- PDOT, --- PDOT_LY, --- PDOT_L2Y, --- SALES_VALUE_CAL, --- SALES_VALUE_CAL_LY, --- SALES_VALUE_CAL_L2Y, --- SALES_UNIT_CAL, --- SALES_UNIT_CAL_LY, --- SALES_UNIT_CAL_L2Y, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT --- from --- tmp_ims_tf_sales_total - --- COMMAND ---------- - - -- DBTITLE 1,插入逻辑1-需保留 - -- dm.dm_ims_tf_sales_china 和 dm.dm_ims_tf_sales 区别就在于 audit_cod = 'CHT' 或者 t1.audit_cod <> 'CHT' - -- insert overwrite table dm.dm_ims_tf_sales_china - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod = 'CHT' and (sales_value<>0 or sales_value_ly<>0) and t1.market not in ('Primary Prevention Market-XZK','Iressa 1L TKI Market' ) - -- union all - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod = 'CHT' and (sales_value<>0 or sales_value_ly<>0) and t1.market in ('Primary Prevention Market-XZK','Iressa 1L TKI Market') - -- insert overwrite table dm.dm_ims_tf_sales - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod <> 'CHT' and t1.market not in ('Primary Prevention Market-XZK','Iressa 1L TKI Market')and (sales_value<>0 or sales_value_ly<>0) - -- union all - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod <> 'CHT' and t1.market in ('Primary Prevention Market-XZK','Iressa 1L TKI Market')and (sales_value<>0 or sales_value_ly<>0) - --- COMMAND ---------- - --- CREATE TABLE catalog_e2_ngbi_qas.dm.dm_ims_tf_sales_china ( --- YYYYMM INT, --- PACK_COD STRING, --- AUDIT_COD STRING, --- SALES_VALUE DECIMAL(38,10), --- SALES_VALUE_LY DECIMAL(38,10), --- SALES_VALUE_L2Y DECIMAL(38,10), --- SALES_UNIT DECIMAL(38,10), --- SALES_UNIT_LY DECIMAL(38,10), --- SALES_UNIT_L2Y DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- CONUTING_UNIT_L2Y DECIMAL(38,10), --- PDOT DECIMAL(38,10), --- PDOT_LY DECIMAL(38,10), --- PDOT_L2Y DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ims_tf_sales_china' - --- COMMAND ---------- - - -- DBTITLE 1,overwrite dm.dm_ims_tf_sales_china - --SALES - --CHINA CHPA数据 - -- t1.market not in ('Primary Prevention Market-XZK','Iressa 1L TKI Market') - -- ,CONUTING_UNIT - -- ,CONUTING_UNIT_LY - -- ,CONUTING_UNIT_L2Y - -- ,SALES_VALUE_CAL - -- ,SALES_VALUE_CAL_LY - -- ,SALES_UNIT_CAL - -- ,SALES_UNIT_CAL_LY - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod = 'CHT' and (sales_value<>0 or sales_value_ly<>0) and t1.market not in ('Primary Prevention Market-XZK','Iressa 1L TKI Market' ) - -- t1.market in ('Primary Prevention Market-XZK','Iressa 1L TKI Market') - -- PDOT as CONUTING_UNIT - -- ,PDOT_LY as CONUTING_UNIT_LY - -- ,PDOT_L2Y as CONUTING_UNIT_L2Y - -- ,SALES_VALUE as SALES_VALUE_CAL - -- ,SALES_VALUE_LY as SALES_VALUE_CAL_LY - -- ,SALES_UNIT as SALES_UNIT_CAL - -- ,SALES_UNIT_LY as SALES_UNIT_CAL_LY - -- from tmp_ims_tf_sales_tamarket t1 - -- where t1.audit_cod = 'CHT' and (sales_value<>0 or sales_value_ly<>0) and t1.market in ('Primary Prevention Market-XZK','Iressa 1L TKI Market') - -- create or replace table dm.dm_ims_tf_sales_china - insert overwrite table dm.dm_ims_tf_sales_china -select distinct - YYYYMM, - -- DAY_DATE, - PACK_COD, - AUDIT_COD, - -- RELATE_FLAG, - -- ORG_KEY, - -- Market, - -- MARKET_PACK_KEY, - -- MARKET_AUDIT_KEY, - SALES_VALUE, - SALES_VALUE_LY, - SALES_VALUE_L2Y, - SALES_UNIT, - SALES_UNIT_LY, - SALES_UNIT_L2Y, - CONUTING_UNIT, - CONUTING_UNIT_LY, - CONUTING_UNIT_L2Y, - PDOT, - PDOT_LY, - PDOT_L2Y, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp_ims_tf_sales_total t1 -where - t1.audit_cod = 'CHT' - and ( - sales_value <> 0 - or sales_value_ly <> 0 - ) - -- and t1.market not in ( - -- 'Primary Prevention Market-XZK', - -- 'Iressa 1L TKI Market' - -- ) --- union all --- select distinct --- YYYYMM, --- DAY_DATE, --- PACK_COD, --- AUDIT_COD, --- RELATE_FLAG, --- ORG_KEY, --- Market, --- MARKET_PACK_KEY, --- MARKET_AUDIT_KEY, --- SALES_VALUE, --- SALES_VALUE_LY, --- SALES_VALUE_L2Y, --- SALES_UNIT, --- SALES_UNIT_LY, --- SALES_UNIT_L2Y, --- PDOT as CONUTING_UNIT, --- PDOT_LY as CONUTING_UNIT_LY, --- PDOT_L2Y as CONUTING_UNIT_L2Y, --- PDOT, --- PDOT_LY, --- PDOT_L2Y, --- SALES_VALUE as SALES_VALUE_CAL, --- SALES_VALUE_LY as SALES_VALUE_CAL_LY, --- SALES_UNIT as SALES_UNIT_CAL, --- SALES_UNIT_LY as SALES_UNIT_CAL_LY, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT --- from --- tmp_ims_tf_sales_tamarket t1 --- where --- t1.audit_cod = 'CHT' --- and ( --- sales_value <> 0 --- or sales_value_ly <> 0 --- ) --- and t1.market in ( --- 'Primary Prevention Market-XZK', --- 'Iressa 1L TKI Market' --- ) - --- COMMAND ---------- - --- CREATE or REPLACE TABLE dm.dm_ims_tf_sales ( --- YYYYMM INT, --- PACK_COD STRING, --- AUDIT_COD STRING, --- SALES_VALUE DECIMAL(38,10), --- SALES_VALUE_LY DECIMAL(38,10), --- SALES_VALUE_L2Y DECIMAL(38,10), --- SALES_UNIT DECIMAL(38,10), --- SALES_UNIT_LY DECIMAL(38,10), --- SALES_UNIT_L2Y DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- CONUTING_UNIT_L2Y DECIMAL(38,10), --- PDOT DECIMAL(38,10), --- PDOT_LY DECIMAL(38,10), --- PDOT_L2Y DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ims_tf_sales' - --- COMMAND ---------- - - -- DBTITLE 1,overwrite dm.dm_ims_tf_sales - --SALES - --CITY - insert overwrite table dm.dm_ims_tf_sales -select distinct - YYYYMM, - -- DAY_DATE, - PACK_COD, - AUDIT_COD, - -- RELATE_FLAG, - -- ORG_KEY, - -- Market, - -- MARKET_PACK_KEY, - -- MARKET_AUDIT_KEY, - SALES_VALUE, - SALES_VALUE_LY, - SALES_VALUE_L2Y, - SALES_UNIT, - SALES_UNIT_LY, - SALES_UNIT_L2Y, - CONUTING_UNIT, - CONUTING_UNIT_LY, - CONUTING_UNIT_L2Y, - PDOT, - PDOT_LY, - PDOT_L2Y, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp_ims_tf_sales_total t1 -where - t1.audit_cod <> 'CHT' - -- and t1.market not in ( - -- 'Primary Prevention Market-XZK', - -- 'Iressa 1L TKI Market' - -- ) - and ( - sales_value <> 0 - or sales_value_ly <> 0 - ) --- union all --- --'Primary Prevention Market-XZK','Iressa 1L TKI Market' 两个市场特殊处理,所有的value都是折算过的 --- select distinct --- YYYYMM, --- DAY_DATE, --- PACK_COD, --- AUDIT_COD, --- RELATE_FLAG, --- ORG_KEY, --- Market, --- MARKET_PACK_KEY, --- MARKET_AUDIT_KEY, --- SALES_VALUE, --- SALES_VALUE_LY, --- SALES_VALUE_L2Y, --- SALES_UNIT, --- SALES_UNIT_LY, --- SALES_UNIT_L2Y, --- PDOT as CONUTING_UNIT, --- PDOT_LY as CONUTING_UNIT_LY, --- PDOT_L2Y as CONUTING_UNIT_L2Y, --- PDOT, --- PDOT_LY, --- PDOT_L2Y, --- SALES_VALUE as SALES_VALUE_CAL, --- SALES_VALUE_LY as SALES_VALUE_CAL_LY, --- SALES_UNIT as SALES_UNIT_CAL, --- SALES_UNIT_LY as SALES_UNIT_CAL_LY, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, --- from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT --- from --- tmp_ims_tf_sales_tamarket t1 --- where --- t1.audit_cod <> 'CHT' --- -- and t1.market in ( --- -- 'Primary Prevention Market-XZK', --- -- 'Iressa 1L TKI Market' --- -- ) --- -- and ( --- -- sales_value <> 0 --- -- or sales_value_ly <> 0 --- -- ) - --- COMMAND ---------- - - -- DBTITLE 1,插入逻辑2-需保留 - -- -- 关键词 - -- audit_cod <> 'CHT' -》 dm.dm_ims_tf_sales - -- audit_cod = 'CHT' -》dm.dm_ims_tf_sales_china - -- KCT 所有城市的IMS数据 基于 dm.dm_ims_tf_sales - -- ROC 其他城市的IMS数据计算 ROC = CHT-KCT - --- COMMAND ---------- - - -- DBTITLE 1,overwrite tmp.tmp_ims_tf_sales_kct - -- 所有城市汇总的IMS数据计算 KCT=sum(all city) - -- create or replace table tmp.tmp_ims_tf_sales_kct - insert overwrite table tmp.tmp_ims_tf_sales_kct -select - YYYYMM, - PACK_COD, - 'KCT' as AUDIT_COD, - -- Related_flag, - -- 'KCT' as ORG_KEY, - -- Market, - -- MARKET_PACK_KEY, - -- concat (Market, '_KCT') as MARKET_AUDIT_KEY, - sum(SALES_VALUE) as SALES_VALUE, - sum(SALES_VALUE_LY) as SALES_VALUE_LY, - sum(SALES_VALUE_L2Y) as SALES_VALUE_L2Y, - sum(SALES_UNIT) as SALES_UNIT, - sum(SALES_UNIT_LY) as SALES_UNIT_LY, - sum(SALES_UNIT_L2Y) as SALES_UNIT_L2Y, - sum(CONUTING_UNIT) as CONUTING_UNIT, - sum(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - sum(CONUTING_UNIT_L2Y) as CONUTING_UNIT_L2Y, - sum(PDOT) as PDOT, - sum(PDOT_LY) as PDOT_LY, - sum(PDOT_LY) as PDOT_L2Y, - sum(SALES_VALUE_CAL) as SALES_VALUE_CAL, - sum(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - sum(SALES_UNIT_CAL) as SALES_UNIT_CAL, - sum(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY -from - dm.dm_ims_tf_sales -group by - YYYYMM, - PACK_COD - -- Related_flag, - -- Market, - -- MARKET_PACK_KEY; - --- COMMAND ---------- - --- DBTITLE 1,overwrite tmp.tmp_ims_tf_sales_roc --- 其他城市的IMS数据计算 ROC=CHT-KCT -insert overwrite table tmp.tmp_ims_tf_sales_roc -WITH - DIM_YM_PACK_MARKT ( - SELECT - YYYYMM as CHINA_YYYYMM, - PACK_COD as CHINA_PACK_COD - -- ,CHINA_Market - from - dm.dm_ims_tf_sales_china - group by - YYYYMM, - PACK_COD - -- ,CHINA_Market - UNION - SELECT - YYYYMM, - PACK_COD - -- ,Market - from - tmp.tmp_ims_tf_sales_kct - group by - YYYYMM, - PACK_COD - -- ,Market - ), - CHPA_SALES ( - select - YYYYMM, - PACK_COD, - -- CHINA_Market, - sum(SALES_VALUE) as CHINA_SALES_VALUE, - sum(SALES_VALUE_LY) as CHINA_SALES_VALUE_LY, - sum(SALES_VALUE_L2Y) as CHINA_SALES_VALUE_L2Y, - sum(SALES_UNIT) as CHINA_SALES_UNIT, - sum(SALES_UNIT_LY) as CHINA_SALES_UNIT_LY, - sum(SALES_UNIT_L2Y) as CHINA_SALES_UNIT_L2Y, - sum(CONUTING_UNIT) as CHINA_CONUTING_UNIT, - sum(CONUTING_UNIT_LY) as CHINA_CONUTING_UNIT_LY, - sum(CONUTING_UNIT_L2Y) as CHINA_CONUTING_UNIT_L2Y, - sum(PDOT) as CHINA_PDOT, - sum(PDOT_LY) as CHINA_PDOT_LY, - sum(PDOT_L2Y) as CHINA_PDOT_L2Y, - sum(SALES_VALUE_CAL) as SALES_VALUE_CAL, - sum(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - sum(SALES_UNIT_CAL) as SALES_UNIT_CAL, - sum(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY - from - dm.dm_ims_tf_sales_china - group by - YYYYMM, - PACK_COD - -- ,CHINA_Market - ), - FABO_SALES ( - select - YYYYMM, - PACK_COD, - -- Market, - sum(SALES_VALUE) as SALES_VALUE, - sum(SALES_VALUE_LY) as SALES_VALUE_LY, - sum(SALES_VALUE_L2Y) as SALES_VALUE_L2Y, - sum(SALES_UNIT) as SALES_UNIT, - sum(SALES_UNIT_LY) as SALES_UNIT_LY, - sum(SALES_UNIT_L2Y) as SALES_UNIT_L2Y, - sum(CONUTING_UNIT) as CONUTING_UNIT, - sum(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - sum(CONUTING_UNIT_L2Y) as CONUTING_UNIT_L2Y, - sum(PDOT) as PDOT, - sum(PDOT_LY) as PDOT_LY, - sum(PDOT_L2Y) as PDOT_L2Y, - sum(SALES_VALUE_CAL) as SALES_VALUE_CAL, - sum(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - sum(SALES_UNIT_CAL) as SALES_UNIT_CAL, - sum(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY - from - tmp.tmp_ims_tf_sales_kct - group by - YYYYMM, - PACK_COD - -- ,Market - ) -SELECT - t1.CHINA_YYYYMM as YYYYMM, - t1.CHINA_PACK_COD as PACK_COD, - 'ROC' as AUDIT_COD, - -- null as Related_flag, - -- 'ROC' as ORG_KEY, - -- t1.CHINA_Market as Market, - -- concat (t1.CHINA_Market, '_', t1.china_pack_cod) as MARKET_PACK_KEY, - -- concat (t1.CHINA_Market, '_ROC') as MARKET_AUDIT_KEY, - nvl (t2.CHINA_SALES_VALUE, 0) - nvl (t3.SALES_VALUE, 0) as SALES_VALUE, - nvl (t2.CHINA_SALES_VALUE_LY, 0) - nvl (t3.SALES_VALUE_LY, 0) as SALES_VALUE_LY, - nvl (t2.CHINA_SALES_VALUE_L2Y, 0) - nvl (t3.SALES_VALUE_L2Y, 0) as SALES_VALUE_L2Y, - nvl (t2.CHINA_SALES_UNIT, 0) - nvl (t3.SALES_UNIT, 0) as SALES_UNIT, - nvl (t2.CHINA_SALES_UNIT_L2Y, 0) - nvl (t3.SALES_UNIT_L2Y, 0) as SALES_UNIT_LY, - nvl (t2.CHINA_SALES_UNIT_LY, 0) - nvl (t3.SALES_UNIT_LY, 0) as SALES_UNIT_L2Y, - nvl (t2.CHINA_CONUTING_UNIT, 0) - nvl (t3.CONUTING_UNIT, 0) as CONUTING_UNIT, - nvl (t2.CHINA_CONUTING_UNIT_LY, 0) - nvl (t3.CONUTING_UNIT_LY, 0) as CONUTING_UNIT_LY, - nvl (t2.CHINA_CONUTING_UNIT_L2Y, 0) - nvl (t3.CONUTING_UNIT_L2Y, 0) as CONUTING_UNIT_L2Y, - nvl (t2.CHINA_PDOT, 0) - nvl (t3.PDOT, 0) as PDOT, - nvl (t2.CHINA_PDOT_LY, 0) - nvl (t3.PDOT_LY, 0) as PDOT_LY, - nvl (t2.CHINA_PDOT_L2Y, 0) - nvl (t3.PDOT_L2Y, 0) as PDOT_L2Y, - nvl (t2.SALES_VALUE_CAL, 0) - nvl (t3.SALES_VALUE_CAL, 0) as SALES_VALUE_CAL, - nvl (t2.SALES_VALUE_CAL_LY, 0) - nvl (t3.SALES_VALUE_CAL_LY, 0) as SALES_VALUE_CAL_LY, - nvl (t2.SALES_UNIT_CAL, 0) - nvl (t3.SALES_UNIT_CAL, 0) as SALES_UNIT_CAL, - nvl (t2.SALES_UNIT_CAL_LY, 0) - nvl (t3.SALES_UNIT_CAL_LY, 0) as SALES_UNIT_CAL_LY -FROM - dim_ym_pack_markt t1 - LEFT JOIN chpa_sales t2 on - -- t1.china_market = t2.china_market and - t1.china_yyyymm = t2.yyyymm - and t1.china_pack_cod = t2.pack_cod - LEFT JOIN fabo_sales t3 on - -- t1.china_market = t3.market and - t1.china_yyyymm = t3.yyyymm - and t1.china_pack_cod = t3.pack_cod - --- COMMAND ---------- - - -- DBTITLE 1,insert into dm.dm_ims_tf_sales - --将ROC的数据写入dm.dm_ims_tf_sales -insert into - dm.dm_ims_tf_sales -select distinct - YYYYMM, - -- concat (left (YYYYMM, 4), '-', right (YYYYMM, 2), '-01') as DAY_DATE, - PACK_COD, - AUDIT_COD, - -- RELATED_FLAG, - -- ORG_KEY, - -- Market, - -- MARKET_PACK_KEY, - -- MARKET_AUDIT_KEY, - SALES_VALUE, - SALES_VALUE_LY, - SALES_VALUE_L2Y, - SALES_UNIT, - SALES_UNIT_LY, - SALES_UNIT_L2Y, - CONUTING_UNIT, - CONUTING_UNIT_LY, - CONUTING_UNIT_L2Y, - PDOT, - PDOT_LY, - PDOT_L2Y, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp (current_timestamp(), 'UTC+8') ETL_UPDATE_DT -from - tmp.tmp_ims_tf_sales_roc -where - sales_value <> 0 - or sales_value_ly <> 0; \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_ims_tf_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql b/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql deleted file mode 100644 index a18500f..0000000 --- a/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql +++ /dev/null @@ -1,14 +0,0 @@ --- Databricks notebook source --- 源表:DWD.DWD_GND_IMS_MARKET_DEFINITION --- 目标表:DM.DM_TD_CHPA_MARKET_DEFINITION - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_CHPA_MARKET_DEFINITION -SELECT - TA, - MARKET, - MARKET_DEFINITION_EN, - MARKET_DEFINITION_CN -FROM - DWD.DWD_GND_IMS_MARKET_DEFINITION; \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_td_chpa_market_definition.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql b/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql deleted file mode 100644 index 503ebd6..0000000 --- a/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- 源表:DWD.DWD_TD_IMS_CITY_MAPPING --- 目标表:DM.DM_TD_IMS_CITY_MAPPING,DWS.DWS_TD_GEOGRAPHY - --- COMMAND ---------- - ---dwd to dws ---ims city和标准城市名以及拆分比mapping表 -insert overwrite table dws.dws_td_ims_city_mapping -select distinct - audit_cod , - city_c , - city_c_d , - ratio , - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -from dwd.dwd_td_ims_city_mapping -; ---dws to dm -insert overwrite table dm.dm_td_ims_city_mapping -select distinct - audit_cod , - city_c , - city_c_d , - city_code, - ratio , - from_utc_timestamp(current_timestamp(),'UTC+8'), - from_utc_timestamp(current_timestamp(),'UTC+8') -from dws.dws_td_ims_city_mapping t1 -left join dws.dws_td_geography t2 on concat(t1.city_c_d,'市')=t2.city_name \ No newline at end of file diff --git a/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql:Zone.Identifier b/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/CHPA/03 dm_td_ims_city_mapping.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/03 ec_load_data.sql b/EXTERNAL/EC/03 ec_load_data.sql deleted file mode 100644 index f3c8c8d..0000000 --- a/EXTERNAL/EC/03 ec_load_data.sql +++ /dev/null @@ -1,1544 +0,0 @@ --- Databricks notebook source --- 有几张表发生了变化 --- tmp.tmp_ec_temp_market --- tmp.tmp_ec_temp_market_del --- dws.dws_zk_ec_pack_property - --- dm.dm_zk_ec_market_ratio - --- COMMAND ---------- - -insert overwrite table tmp.tmp_ec_temp_market -select distinct - b.iqvia_lineno , - if( nvl(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',nvl(b.iqvia_pack_code,0)),12),nvl(b.iqvia_pack_code,0)) as iqvia_pack_code,-- right(concat('0000000',nvl(b.iqvia_pack_code,0)),7) - right(concat('000000000',nvl(b.iqvia_prod_code,0)),9) as prod_cod ,-- right(concat('00000',nvl(b.iqvia_prod_code,0)),5) - b.iqvia_notes , - b.new_pack_flag , - b.is_exists_chpa , - right(concat('0000000',nvl(b.product_id,0)),7) as product_id, - b.prescription_nature , - b.medicine_type , - b.zk_medicine_tier1 , - b.zk_medicine_tier2 , - b.zk_medicine_tier3 , - b.zk_medicine_tier4 , - b.common_name , - b.dosage_form , - b.user_type , - b.category_name , - b.product_name , - b.brand_name , - b.zk_manu_des , - b.zk_corp_des , - b.zk_pack_des , - b.counting_unit_a , - b.dosage_unit_a , - b.unit_a , - b.app1_cod , - b.app1_des , - b.app1_des_c , - b.app2_cod , - b.app2_des , - b.app2_des_c , - b.app3_cod , - b.app3_des , - b.app3_des_c , - b.atc1_cod , - b.atc1_des , - b.atc1_des_c , - b.atc2_cod , - b.atc2_des , - b.atc2_des_c , - b.atc3_cod , - b.atc3_des , - b.atc3_des_c , - b.atc4_cod , - b.atc4_des , - b.atc4_des_c , - b.bio_desc , - right(concat('000000',nvl(b.cmps_cod,0 )),6) cmps_cod, - b.cmps_des , - b.cmps_des_c , - b.corp_cod , - b.corp_des , - b.corp_des_c , - b.edl_desc , - b.eth_otc_desc , - b.gene_orig_desc , - b.gqce_desc , - b.manu_cod , - b.manu_des , - b.manu_des_c , - b.mnfl_cod , - b.mnfl_des , - b.nrdl_desc , - b.pack_des , - b.stgh_des , - b.pack_lch , - b.paed_desc , - b.prod_des , - b.prod_des_c , - b.tcm_desc , - b.vbp_desc , - b.unit , - b.counting_unit , - b.dosage_unit , - nvl(mole.NRDL_Entry_Date,'') as NRDL_ENTRY_DATE, - tblmkt.Market, - tblmkt.bu, - nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio, - -- c.ta, - if(b.corp_des_c in ('阿斯利康制药集团'),'Y','N') as is_az -from dwd.dwd_gnd_ext_retail_pack_property as b -left join dwd.dwd_ims_td_pack_additional_attribute mole on b.iqvia_pack_code = mole.Pack_Code -left join ( - select - market,bu,atc1_code,atc2_code,atc3_code,atc4_code,nfc1_code,nfc2_code,nfc3_code,pack_code,pack_desc,strength,product_code,product_desc,molecule_code,molecule_desc,not_in_flag,extend_market,extend_market_ratio,corporation_code,corporation_desc,manufacturer_code,manufacturer_desc,zk_common_name,zk_product_id,zk_dosage_form - from dwd.dwd_gnd_ec_retail_tblmarket_rule - where extend_market is null and ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' ) -) tblmkt -on COALESCE(b.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then COALESCE(b.ATC1_COD,'') else tblmkt.ATC1_Code end - and COALESCE(b.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then COALESCE(b.ATC2_COD,'') else tblmkt.ATC2_Code end - and COALESCE(b.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then COALESCE(b.ATC3_COD,'') else tblmkt.ATC3_Code end - and COALESCE(b.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then COALESCE(b.ATC4_COD,'') else tblmkt.ATC4_Code end - and COALESCE(b.APP1_COD,'') = case when tblmkt.NFC1_Code is null then COALESCE(b.APP1_COD,'') else tblmkt.NFC1_Code end - and COALESCE(b.APP2_COD,'') = case when tblmkt.NFC2_Code is null then COALESCE(b.APP2_COD,'') else tblmkt.NFC2_Code end - and COALESCE(b.app3_cod,'') = case when tblmkt.NFC3_Code is null then COALESCE(b.app3_cod,'') else tblmkt.NFC3_Code end - and COALESCE(b.stgh_des,'') = case when tblmkt.Strength is null then COALESCE(b.stgh_des,'') else tblmkt.Strength end - and COALESCE(b.corp_cod,'') = case when tblmkt.Corporation_Code is null then COALESCE(b.corp_cod,'') else tblmkt.Corporation_Code end - and COALESCE(b.manu_cod,'') = case when tblmkt.Manufacturer_Code is null then COALESCE(b.manu_cod,'') else tblmkt.Manufacturer_Code end - and right(concat('0000000',nvl(b.product_id,0)),7 ) = case when tblmkt.zk_product_id is null then right(concat('0000000',nvl(b.product_id,0) ),7 ) else right(concat('0000000',tblmkt.zk_product_id),7) end - and right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) = case when tblmkt.Product_Code is null then right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) else right(concat('000000000', tblmkt.Product_Code),9) end - -- and right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) = case when tblmkt.Product_Code is null then right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) else right(concat('00000', tblmkt.Product_Code),5) end - and if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) = case when tblmkt.Pack_Code is null then if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]' ,right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) else if( tblmkt.Pack_Code REGEXP '^[0-9]', right(concat('000000000000',tblmkt.Pack_Code),12),tblmkt.Pack_Code) end - -- and right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) = case when tblmkt.Pack_Code is null then right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) else right(concat('0000000',tblmkt.Pack_Code),7) end - and right(concat('000000',COALESCE(b.CMPS_COD,0)),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',COALESCE(b.CMPS_COD,0)),6) else right(concat('000000',tblmkt.Molecule_Code),6) end --- left join dwd.dwd_gnd_ext_retail_dim_ta c --- on c.market = tblmkt.Market -where tblmkt.market is not null ; -insert overwrite table tmp.tmp_ec_temp_market_del -select - b.iqvia_lineno , - if( nvl(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',nvl(b.iqvia_pack_code,0)),12),nvl(b.iqvia_pack_code,0)) as iqvia_pack_code,-- right(concat('0000000',nvl(b.iqvia_pack_code,0)),7) - right(concat('000000000',nvl(b.iqvia_prod_code,0)),9) as prod_cod ,-- right(concat('00000',nvl(b.iqvia_prod_code,0)),5) - b.iqvia_notes , - b.new_pack_flag , - b.is_exists_chpa , - right(concat('0000000',nvl(b.product_id,0)),7) as product_id, - b.prescription_nature , - b.medicine_type , - b.zk_medicine_tier1 , - b.zk_medicine_tier2 , - b.zk_medicine_tier3 , - b.zk_medicine_tier4 , - b.common_name , - b.dosage_form , - b.user_type , - b.category_name , - b.product_name , - b.brand_name , - b.zk_manu_des , - b.zk_corp_des , - b.zk_pack_des , - b.counting_unit_a , - b.dosage_unit_a , - b.unit_a , - b.app1_cod , - b.app1_des , - b.app1_des_c , - b.app2_cod , - b.app2_des , - b.app2_des_c , - b.app3_cod , - b.app3_des , - b.app3_des_c , - b.atc1_cod , - b.atc1_des , - b.atc1_des_c , - b.atc2_cod , - b.atc2_des , - b.atc2_des_c , - b.atc3_cod , - b.atc3_des , - b.atc3_des_c , - b.atc4_cod , - b.atc4_des , - b.atc4_des_c , - b.bio_desc , - right(concat('000000',nvl(b.cmps_cod,0 )),6) cmps_cod, - b.cmps_des , - b.cmps_des_c , - b.corp_cod , - b.corp_des , - b.corp_des_c , - b.edl_desc , - b.eth_otc_desc , - b.gene_orig_desc , - b.gqce_desc , - b.manu_cod , - b.manu_des , - b.manu_des_c , - b.mnfl_cod , - b.mnfl_des , - b.nrdl_desc , - b.pack_des , - b.stgh_des , - b.pack_lch , - b.paed_desc , - b.prod_des , - b.prod_des_c , - b.tcm_desc , - b.vbp_desc , - b.unit , - b.counting_unit , - b.dosage_unit , - nvl(mole.NRDL_Entry_Date,'') as NRDL_ENTRY_DATE, - tblmkt.Market, - tblmkt.bu, - nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio, - -- c.ta, - if(b.corp_des_c in ('阿斯利康制药集团'),'Y','N') as is_az -from dwd.dwd_gnd_ext_retail_pack_property as b -left join dwd.dwd_ims_td_pack_additional_attribute mole on b.iqvia_pack_code = mole.Pack_Code -left join ( - select - market,bu,atc1_code,atc2_code,atc3_code,atc4_code,nfc1_code,nfc2_code,nfc3_code,pack_code,pack_desc,strength,product_code,product_desc,molecule_code,molecule_desc,not_in_flag,extend_market,extend_market_ratio,corporation_code,corporation_desc,manufacturer_code,manufacturer_desc,zk_common_name,zk_product_id,zk_dosage_form - from dwd.dwd_gnd_ec_retail_tblmarket_rule - where Extend_Market is null and NOT_IN_FLAG = '0' -) tblmkt -on COALESCE(b.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then COALESCE(b.ATC1_COD,'') else tblmkt.ATC1_Code end - and COALESCE(b.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then COALESCE(b.ATC2_COD,'') else tblmkt.ATC2_Code end - and COALESCE(b.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then COALESCE(b.ATC3_COD,'') else tblmkt.ATC3_Code end - and COALESCE(b.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then COALESCE(b.ATC4_COD,'') else tblmkt.ATC4_Code end - and COALESCE(b.APP1_COD,'') = case when tblmkt.NFC1_Code is null then COALESCE(b.APP1_COD,'') else tblmkt.NFC1_Code end - and COALESCE(b.APP2_COD,'') = case when tblmkt.NFC2_Code is null then COALESCE(b.APP2_COD,'') else tblmkt.NFC2_Code end - and COALESCE(b.app3_cod,'') = case when tblmkt.NFC3_Code is null then COALESCE(b.app3_cod,'') else tblmkt.NFC3_Code end - and COALESCE(b.stgh_des,'') = case when tblmkt.Strength is null then COALESCE(b.stgh_des,'') else tblmkt.Strength end - and COALESCE(b.corp_cod,'') = case when tblmkt.Corporation_Code is null then COALESCE(b.corp_cod,'') else tblmkt.Corporation_Code end - and COALESCE(b.manu_cod,'') = case when tblmkt.Manufacturer_Code is null then COALESCE(b.manu_cod,'') else tblmkt.Manufacturer_Code end - and right(concat('0000000',nvl(b.product_id,0)),7 ) = case when tblmkt.zk_product_id is null then right(concat('0000000',nvl(b.product_id,0) ),7 ) else right(concat('0000000',tblmkt.zk_product_id),7) end - and right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) = case when tblmkt.Product_Code is null then right(concat('000000000',COALESCE(b.iqvia_prod_code,0)),9) else right(concat('000000000', tblmkt.Product_Code),9) end - -- and right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) = case when tblmkt.Product_Code is null then right(concat('00000',COALESCE(b.iqvia_prod_code,0)),5) else right(concat('00000', tblmkt.Product_Code),5) end - and if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]',right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) = case when tblmkt.Pack_Code is null then if(COALESCE(b.iqvia_pack_code,0) REGEXP '^[0-9]' ,right(concat('000000000000',COALESCE(b.iqvia_pack_code,0)),12),COALESCE(b.iqvia_pack_code,0)) else if( tblmkt.Pack_Code REGEXP '^[0-9]', right(concat('000000000000',tblmkt.Pack_Code),12),tblmkt.Pack_Code) end - -- and right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) = case when tblmkt.Pack_Code is null then right(concat('0000000',COALESCE(b.iqvia_pack_code,0)),7) else right(concat('0000000',tblmkt.Pack_Code),7) end - and right(concat('000000',COALESCE(b.CMPS_COD,0)),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',COALESCE(b.CMPS_COD,0)),6) else right(concat('000000',tblmkt.Molecule_Code),6) end --- left join dwd.dwd_gnd_ext_retail_dim_ta c --- on c.market = tblmkt.Market -where tblmkt.market is not null ; - -MERGE INTO tmp.tmp_ec_temp_market AS t1 -USING tmp.tmp_ec_temp_market_del AS t2 - on COALESCE(t1.ATC1_COD,'') = COALESCE(t2.ATC1_COD,'') - and COALESCE(t1.ATC2_COD,'') = COALESCE(t2.ATC2_COD,'') - and COALESCE(t1.ATC3_COD,'') = COALESCE(t2.ATC3_COD,'') - and COALESCE(t1.ATC4_COD,'') = COALESCE(t2.ATC4_COD,'') - and COALESCE(t1.APP1_COD,'') = COALESCE(t2.APP1_COD,'') - and COALESCE(t1.APP2_COD,'') = COALESCE(t2.APP2_COD,'') - and COALESCE(t1.APP3_COD,'') = COALESCE(t2.APP3_COD,'') - and COALESCE(t1.CORP_COD,'') = COALESCE(t2.CORP_COD,'') - and COALESCE(t1.MANU_COD,'') = COALESCE(t2.MANU_COD,'') - and COALESCE(t1.PROD_COD,'') = COALESCE(t2.PROD_COD,'') - and COALESCE(t1.iqvia_pack_code,'') = COALESCE(t2.iqvia_pack_code,'') - and COALESCE(t1.STGH_DES,'') = COALESCE(t2.STGH_DES,'') - and COALESCE(t1.CMPS_COD,'') = COALESCE(t2.CMPS_COD,'') - and COALESCE(t1.market,'') = COALESCE(t2.market,'') -WHEN MATCHED THEN DELETE ; - - --- COMMAND ---------- - ---处理 Extend_Market 有值得数据,用已有市场,定义新的市场,带上系数 -insert into tmp.tmp_ec_temp_market -select -iqvia_lineno,iqvia_pack_code,prod_cod,iqvia_notes,new_pack_flag,is_exists_chpa,product_id,prescription_nature,medicine_type,zk_medicine_tier1,zk_medicine_tier2,zk_medicine_tier3,zk_medicine_tier4,common_name,dosage_form,user_type,category_name,product_name,brand_name,zk_manu_des,zk_corp_des,zk_pack_des,counting_unit_a,dosage_unit_a,unit_a,app1_cod,app1_des,app1_des_c,app2_cod,app2_des,app2_des_c,app3_cod,app3_des,app3_des_c,atc1_cod,atc1_des,atc1_des_c,atc2_cod,atc2_des,atc2_des_c,atc3_cod,atc3_des,atc3_des_c,atc4_cod,atc4_des,atc4_des_c,bio_desc,cmps_cod,cmps_des,cmps_des_c,corp_cod,corp_des,corp_des_c,edl_desc,eth_otc_desc,gene_orig_desc,gqce_desc,manu_cod,manu_des,manu_des_c,mnfl_cod,mnfl_des,nrdl_desc,pack_des,stgh_des,pack_lch,paed_desc,prod_des,prod_des_c,tcm_desc,vbp_desc,unit,counting_unit,dosage_unit,NRDL_ENTRY_DATE,t2.Market,t2.bu,nvl(t2.extend_market_ratio,1) as extend_market_ratio,is_az -from tmp.tmp_ec_temp_market t1 -left join (select Market,BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ec_retail_tblmarket_rule where Extend_Market is not null )t2 -on t1.Market = t2.Extend_Market -where t2.Market is not null - --- COMMAND ---------- - ------------事实表数据处理:获取counting_unit字段,给特殊字段补0,并对数据去重 -insert overwrite table tmp.tmp_ec_source -select - a.time as yyyymm, - right(concat('0000000',a.product_id),7) as pack_id, - if( b.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',b.iqvia_pack_code),12),b.iqvia_pack_code) as iqvia_pack_code, --right(concat('0000000',b.iqvia_pack_code),7) - a.platform, - a.store_name, - a.store_type, - sum(a.sales_amount) as sales_value, - sum(a.sales_qty) as sales_unit, - cast(sum(a.sales_qty*(b.counting_unit/coalesce(unit,1 ))) as decimal(30,10)) as counting_unit -from dwd.dwd_inc_gnd_ext_ec_nationnal_pack_union_all a -left join ( - select DISTINCT product_id,iqvia_pack_code,counting_unit,unit,prod_des_c - from dwd.dwd_gnd_ext_retail_pack_property) b -on right(concat('0000000',a.product_id),7) = right(concat('0000000',b.product_id),7) -group by - a.`time`,right(concat('0000000',a.product_id),7) - ,if( b.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',b.iqvia_pack_code),12),b.iqvia_pack_code) - ,a.platform,a.store_name - ,a.store_type - --- COMMAND ---------- - -insert overwrite table dws.dws_zk_ec_sales -select - t1.yyyymm,t1.pack_id,t1.iqvia_pack_code,t1.platform,t1.store_name,t1.store_type, - sum(sales_value) as sales_value, - sum(sales_unit) as sales_unit, - sum(counting_unit) as counting_unit -from tmp.tmp_ec_source t1 -group by - t1.yyyymm,t1.pack_id,t1.iqvia_pack_code,t1.platform,t1.store_name,t1.store_type - - --- COMMAND ---------- - --------------------------处理top_ta_corp数据 -insert overwrite table dws.dws_zk_ec_by_ta_top_corp -select - t1.yyyymm, - t1.ta, - t1.rank, - t1.corp_des, - t1.CORP_COD, - t1.platform, - t1.store_type, - sum(t1.sales_value) sales_value -from ( - select - a.ytd yyyymm, - a.ta, - a.rank, - a.corp_des, - b.CORP_COD, - a.platform, - a.store_type, - replace(a.sales_value,',','') as sales_value - from dwd.dwd_gnd_ec_ta_overview a - left join (select distinct ZK_Corp_C ,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total) b - on b.ZK_Corp_C = a.corp_des -) t1 -group by 1,2,3,4,5,6,7 - --- COMMAND ---------- - ------加工倒减的by_corp_by_ta_by_total表数据,获取去年数据 -insert overwrite table dws.dws_zk_ec_by_ta_top_corp -select - t1.yyyymm, - t1.ta, - t1.rank, - t1.corp_des, - t1.CORP_COD, - t1.platform, - t1.store_type, - sum(t1.sales_value) sales_value -from( - select - a.ytd yyyymm, - a.ta, - a.rank, - a.corp_des, - b.CORP_COD, - a.platform, - a.store_type, - replace(a.sales_value,',','') as sales_value - from dwd.dwd_gnd_ec_ta_overview a - left join (select distinct ZK_Corp_C ,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total) b - on b.ZK_Corp_C = a.corp_des -)t1 -group by 1,2,3,4,5,6,7 - --- COMMAND ---------- - -----倒减需要用到公司信息以及ta信息,加工配置表挂靠Corp、ta -insert overwrite table tmp.tmp_zk_ec_pack_property_corp -select distinct a.product_id,a.iqvia_pack_code,a.Market,ta.ta - ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod - ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des - ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c - ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod - ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des - ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -from (select DISTINCT product_id,iqvia_pack_code,Market,corp_cod,corp_des,corp_des_c,manu_cod,manu_des,manu_des_c,prod_cod from tmp.tmp_ec_temp_market) a -left join dwd.dwd_gnd_ext_retail_dim_ta ta -on a.Market = ta.market -left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b -on right(concat('000000000',A.prod_cod ),9)= b.prod_cod -left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c -on a.iqvia_pack_code = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d -on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e -On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - --- COMMAND ---------- - --------------------------------------------------------ec倒减------------------------------------------------------- ---注意事项: --- 只做了CV、CVRM、TA大数的倒减,其余TA没有做 ---cv倒减:关联加工好的配置表,获取ta信息进行倒减 -insert overwrite table tmp.tmp_dm_zk_ec_sales_cv_tmp -with cv_data as ( - select - t1.yyyymm, - t1.pack_id, - t1.iqvia_pack_code, - t1.platform, - t1.store_type, - t1.store_name, - t1.sales_value, - t1.sales_unit, - t1.counting_unit, - max(t2.ta) ta - from dws.dws_zk_ec_sales t1 - left join (select distinct iqvia_pack_code,ta from tmp.tmp_zk_ec_pack_property_corp) t2 - on t1.iqvia_pack_code = t2.iqvia_pack_code - where t2.ta = 'CV' - group by 1,2,3,4,5,6,7,8,9 -),cv_corp_data as ( ------------------------cv下的az 数据 - select - A.yyyymm, - A.pack_id, - A.iqvia_pack_code, - A.platform, - A.store_type, - A.store_name, - B.corp_cod, - A.sales_value, - A.sales_unit, - A.counting_unit, - A.ta - from cv_data A - inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B - on A.pack_id = B.product_id - where B.corp_cod = 'A5Z' - union all - -----------------------cv下的az others数据 - select - cv_az.yyyymm, - 'CV_AZ_OTHERS' as pack_id, - 'CV_AZ_OTHERS' as iqvia_pack_code, - cv_az.platform, - cv_az.store_type, - case when cv_az.store_type = '自营旗舰' then 'CV_AZ_OTHERS_SO' when cv_az.store_type = '第三方' then 'CV_AZ_OTHERS_POP' end store_name, - cv_az.corp_cod, - cv_az_total.sales_value - cv_az.sales_value as sales_value, - 0,0, - 'CV_AZ_OTHERS' as ta - from ( - select - A.yyyymm, - B.corp_cod, - A.platform, - case when A.store_type = '平台店' or A.store_type = '品牌店' then '自营旗舰' else A.store_type end store_type, - sum(A.sales_value) sales_value - from cv_data A - inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B - on A.pack_id = B.product_id - where B.corp_cod = 'A5Z' - group by 1,2,3,4 - )cv_az - left join( - select - yyyymm, - CORP_COD, - platform, - case when store_type = '三方' then '第三方' else store_type end store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where ta = 'CV' and CORP_COD = 'A5Z' - group by 1,2,3,4 - )cv_az_total - on cv_az.yyyymm = cv_az_total.yyyymm - and cv_az.corp_cod = cv_az_total.CORP_COD - and cv_az.platform = cv_az_total.platform - and cv_az.store_type = cv_az_total.store_type - union all - ---------------cv下的非az数据 - select - A.yyyymm, - A.pack_id, - A.iqvia_pack_code, - A.platform, - A.store_type, - A.store_name, - B.corp_cod, - A.sales_value, - A.sales_unit, - A.counting_unit, - A.ta - from cv_data A - inner join(select distinct iqvia_pack_code,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) B - on A.pack_id = B.product_id - where nvl(corp_cod,'') <>'A5Z' -) ------------------------所有cv 数据 -,all_cv_data as ( -select - yyyymm, - pack_id, - iqvia_pack_code, - platform, - store_type, - store_name, - corp_cod, - sales_value, - sales_unit, - counting_unit, - 'CV' flag, - ta -from cv_corp_data -union all ------------------------倒减出cv_others数据 -select - t1.yyyymm, - 'CV_OTHERS' as pack_id, - 'CV_OTHERS' as iqvia_pack_code, - t1.platform, - t1.store_type, - case when t1.store_type = '自营旗舰' then 'CV_OTHERS_SO' when t1.store_type = '第三方' then 'CV_OTHERS_POP' end store_name, - 'CV_OTHERS' as corp_cod, - t2.sales_value - t1.sales_value as sales_value, - 0,0, - 'CV' as flag, - 'CV_OTHERS' as ta -from( ------------------------所有的cv数据 - select - yyyymm, - platform, - case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, - sum(sales_value) sales_value - from cv_corp_data - group by 1,2,3 -)t1 -left join( ------------------------cv大数 - select - yyyymm, - platform, - case when store_type = '三方' then '第三方' else store_type end store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where ta = 'CV' and lower(rank) = 'total' - group by 1,2,3 -)t2 -on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type -),non_cv_all_data as ( - select - t1.yyyymm, - t1.pack_id, - t1.iqvia_pack_code, - t1.platform, - t1.store_type, - t1.store_name, - t2.corp_cod, - t1.sales_value, - t1.sales_unit, - t1.counting_unit, - case when t2.ta in ('DM','RD') then 'CVRM' else '' end flag, - max(t2.ta) ta - from dws.dws_zk_ec_sales t1 - left join (select distinct iqvia_pack_code,ta,corp_cod,product_id from tmp.tmp_zk_ec_pack_property_corp) t2 - on t1.pack_id = t2.product_id - where nvl(t2.TA,'') <> 'CV' - group by 1,2,3,4,5,6,7,8,9,10,11 -) -select * from all_cv_data -union -select * from non_cv_all_data --- select * from non_cv_all_data order by sales_value desc - - - --- COMMAND ---------- - ---cvrm倒减:关联加工好的配置表,获取ta信息进行倒减 -insert overwrite table tmp.tmp_dm_zk_ec_sales_cv_tmp2 -with all_data as ( -select - yyyymm, - pack_id, - iqvia_pack_code, - platform, - store_type, - store_name, - corp_cod, - sales_value, - sales_unit, - counting_unit, - flag -from tmp.tmp_dm_zk_ec_sales_cv_tmp -union all -select - t1.yyyymm, - 'CVRM_AZ_OTHERS' as pack_id, - 'CVRM_AZ_OTHERS' as iqvia_pack_code, - t1.platform, - t1.store_type, - case when t1.store_type = '自营旗舰' then 'CVRM_AZ_OTHERS_SO' when t1.store_type = '第三方' then 'CVRM_AZ_OTHERS_POP' end store_name, - t1.corp_cod, - t2.sales_value - t1.sales_value as sales_value, - 0,0, - 'CVRM' as flag -from( - select - yyyymm, - corp_cod, - platform, - case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, - sum(sales_value) sales_value - from tmp.tmp_dm_zk_ec_sales_cv_tmp - where corp_cod = 'A5Z' and flag in ('CV','CVRM') - group by 1,2,3,4 -)t1 -left join ( - select - yyyymm, - CORP_COD, - platform, - case when store_type = '三方' then '第三方' else store_type end store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where CORP_COD = 'A5Z' and ta = 'CVRM' - group by 1,2,3,4 -)t2 -on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type -) -select - yyyymm, - pack_id, - iqvia_pack_code, - platform, - store_type, - store_name, - corp_cod, - sales_value, - sales_unit, - counting_unit, - flag -from all_data -union all -select - t1.yyyymm, - 'CVRM_OTHERS' as pack_id, - 'CVRM_OTHERS' as iqvia_pack_code, - t1.platform, - t1.store_type, - case when t1.store_type = '自营旗舰' then 'CVRM_OTHERS_SO' when t1.store_type = '第三方' then 'CVRM_OTHERS_POP' end store_name, - 'CVRM_OTHERS' as corp_cod, - t2.sales_value - t1.sales_value as sales_value, - 0,0, - 'CVRM' flag -from ( - select - yyyymm, - platform, - case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, - sum(sales_value) sales_value - from all_data - where flag in ('CV','CVRM') - group by 1,2,3 -)t1 -left join( - select - yyyymm, - platform, - case when store_type = '三方' then '第三方' else store_type end store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where ta = 'CVRM' and lower(rank) = 'total' - group by 1,2,3 -)t2 -on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type - - - - - - --- COMMAND ---------- - ---ta倒减并写入事实表:根据加工好的倒减底表中ta字段信息获取ta总数,进行倒减 -insert overwrite table tmp.tmp_dm_zk_ec_sales -with all_data as ( -select distinct - yyyymm, - pack_id, - iqvia_pack_code, - platform, - store_type, - store_name, - corp_cod, - sales_value, - sales_unit, - counting_unit, - flag -from tmp.tmp_dm_zk_ec_sales_cv_tmp2 -union all -select - t1.yyyymm, - 'OTHERS_AZ_TA' as pack_id, - 'OTHERS_AZ_TA' as iqvia_pack_code, - t1.platform, - t1.store_type, - case when t1.store_type = '自营旗舰' then 'OTHERS_AZ_TA_SO' when t1.store_type = '第三方' then 'OTHERS_AZ_TA_POP' end store_name, - t1.corp_cod, - t2.sales_value - t1.sales_value as sales_value, - 0,0, - 'OTHERS_AZ_TA' as flag -from( - select - yyyymm, - corp_cod, - platform, - case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, - sum(sales_value) sales_value - from tmp.tmp_dm_zk_ec_sales_cv_tmp2 - where corp_cod = 'A5Z' - group by 1,2,3,4 -)t1 -left join ( - select - yyyymm, - platform, - store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where CORP_COD = 'A5Z' and ta = 'RX Total' - group by 1,2,3 -)t2 -on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type -),result as ( -select - yyyymm, - pack_id, - iqvia_pack_code, - platform, - store_type, - store_name, - corp_cod, - sales_value, - sales_unit, - counting_unit, - flag -from all_data -union all -select - t1.yyyymm, - 'OTHERS_TA' as pack_id, - 'OTHERS_TA' as iqvia_pack_code, - t1.platform, - t1.store_type, - case when t1.store_type = '自营旗舰' then 'OTHERS_TA_SO' when t1.store_type = '第三方' then 'OTHERS_TA_POP' end store_name, - 'OTHERS_TA' as corp_cod, - t2.sales_value - t1.sales_value as sales_value, - 0,0, - 'OTHERS_TA' as flag -from( - select - yyyymm, - platform, - case when store_type = '平台店' or store_type = '品牌店' then '自营旗舰' else store_type end store_type, - sum(sales_value) sales_value - from all_data - group by 1,2,3 -)t1 -left join( - select - yyyymm, - platform, - store_type, - sum(sales_value) sales_value - from dws.dws_zk_ec_by_ta_top_corp - where lower(rank) = 'total' and ta = 'RX Total' - group by 1,2,3 - )t2 -on t1.yyyymm = t2.yyyymm and t1.platform = t2.platform and t1.store_type = t2.store_type -) -select distinct - yyyymm, - pack_id, - iqvia_pack_code, - corp_cod, - 'ROC' as audit_cod, - platform, - case when store_type = '第三方' then 'POP' when store_type in ('平台店','品牌店','自营旗舰') then 'SO' end store_type, - store_name, - case when iqvia_pack_code like '%OTHERS%' then 0 else 1 end PACK_FLAG, - case when iqvia_pack_code like '%OTHERS%' then 0 else 1 end PROD_FLAG, - flag, - 'EC(Monthly)' DATA_SOURCE, - sum(sales_value) sales_value, - sum(sales_unit) sales_unit, - sum(counting_unit) counting_unit -from result -group by 1,2,3,4,5,6,7,8,9,10,11,12 - - - - - --- COMMAND ---------- - -insert overwrite table dm.dm_zk_ec_sales -select -yyyymm, -max(pack_id) as pack_id, -iqvia_pack_code, -corp_cod, -audit_cod, -platform, -store_type, -store_name, -max(PACK_FLAG) as PACK_FLAG, -max(PROD_FLAG) as PROD_FLAG, -max(flag) as flag, -DATA_SOURCE, -sum(sales_value) as sales_value, -sum(sales_value_ly) as sales_value_ly, -sum(sales_unit) as sales_unit, -sum(sales_unit_ly) as sales_unit_ly, -sum(counting_unit) as counting_unit, -sum(counting_unit_ly) as counting_unit_ly -from -( -select -yyyymm, -pack_id, -iqvia_pack_code, -corp_cod, -audit_cod, -platform, -store_type, -store_name, -PACK_FLAG, -PROD_FLAG, -flag, -DATA_SOURCE, -sales_value, -0 as sales_value_ly, -sales_unit, -0 as sales_unit_ly, -counting_unit, -0 as counting_unit_ly -from tmp.tmp_dm_zk_ec_sales -union all -select -cast(yyyymm + 100 as int) as yyyymm, -null as pack_id, -iqvia_pack_code, -corp_cod, -audit_cod, -platform, -store_type, -store_name, -case when upper(iqvia_pack_code) like '%OTHERS%' then 0 else 1 end as PACK_FLAG, -case when upper(iqvia_pack_code) like '%OTHERS%' then 0 else 1 end as PROD_FLAG, -'' as flag, -DATA_SOURCE, -0 as sales_value, -sales_value as sales_value_ly, -0 as sales_unit, -sales_unit as sales_unit_ly, -0 as counting_unit, -counting_unit as counting_unit_ly -from tmp.tmp_dm_zk_ec_sales -where cast(yyyymm + 100 as int) <= (select max(yyyymm) from tmp.tmp_dm_zk_ec_sales) -) t -group by yyyymm, -iqvia_pack_code, -corp_cod, -audit_cod, -platform, -store_type, -store_name, -DATA_SOURCE - --- COMMAND ---------- - -insert overwrite table dws.dws_zk_ec_pack_property -select - * - ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_update_dt -from tmp.tmp_ec_temp_market -union all -select -'' iqvia_lineno -,iqvia_pack_code as iqvia_pack_code -,'' prod_cod -,'' iqvia_notes -,'' new_pack_flag -,'' is_exists_chpa -,iqvia_pack_code as product_id -,'' prescription_nature -,'' medicine_type -,'' zk_medicine_tier1 -,'' zk_medicine_tier2 -,'' zk_medicine_tier3 -,'' zk_medicine_tier4 -,'' common_name -,'' dosage_form -,'' user_type -,'' category_name -,'' product_name -,'' brand_name -,'' zk_manu_des -,'' zk_corp_des -,'' zk_pack_des -,'' counting_unit_a -,'' dosage_unit_a -,'' unit_a -,'' app1_cod -,'' app1_des -,'' app1_des_c -,'' app2_cod -,'' app2_des -,'' app2_des_c -,'' app3_cod -,'' app3_des -,'' app3_des_c -,'' atc1_cod -,'' atc1_des -,'' atc1_des_c -,'' atc2_cod -,'' atc2_des -,'' atc2_des_c -,'' atc3_cod -,'' atc3_des -,'' atc3_des_c -,'' atc4_cod -,'' atc4_des -,'' atc4_des_c -,'' bio_desc -,'' cmps_cod -,'' cmps_des -,'' cmps_des_c -,corp_cod as 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 -,'Others' prod_des -,'Others' prod_des_c -,'' tcm_desc -,'' vbp_desc -,'' unit -,'' counting_unit -,'' dosage_unit -,'' NRDL_ENTRY_DATE -,'NON MARKET' Market -,'' bu -,1 extend_market_ratio -,case when iqvia_pack_code like '%AZ%' then 'Y' else 'N' end is_az -,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_insert_dt -,from_utc_timestamp(current_timestamp(),'UTC+8' ) etl_update_dt -from (select distinct iqvia_pack_code,corp_cod from dm.dm_zk_ec_sales where iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_ec_temp_market)) - - --- COMMAND ---------- - -insert overwrite table tmp.tmp_dm_zk_ec_pack_property -select -a.iqvia_lineno -,a.iqvia_pack_code -,a.prod_cod -,a.iqvia_notes -,a.new_pack_flag -,a.is_exists_chpa -,a.product_id -,a.prescription_nature -,a.medicine_type -,a.zk_medicine_tier1 -,a.zk_medicine_tier2 -,a.zk_medicine_tier3 -,a.zk_medicine_tier4 -,a.common_name -,a.dosage_form -,a.user_type -,a.category_name -,a.product_name -,a.brand_name -,a.zk_manu_des -,a.zk_corp_des -,a.zk_pack_des -,a.counting_unit_a -,a.dosage_unit_a -,a.unit_a -,a.app1_cod -,a.app1_des -,a.app1_des_c -,a.app2_cod -,a.app2_des -,a.app2_des_c -,a.app3_cod -,a.app3_des -,a.app3_des_c -,a.atc1_cod -,a.atc1_des -,a.atc1_des_c -,a.atc2_cod -,a.atc2_des -,a.atc2_des_c -,a.atc3_cod -,a.atc3_des -,a.atc3_des_c -,a.atc4_cod -,a.atc4_des -,a.atc4_des_c -,a.bio_desc -,a.cmps_cod -,a.cmps_des -,a.cmps_des_c -,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod -,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des -,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c -,a.edl_desc -,a.eth_otc_desc -,a.gene_orig_desc -,a.gqce_desc -,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod -,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des -,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -,a.mnfl_cod -,a.mnfl_des -,a.nrdl_desc -,a.pack_des -,a.stgh_des -,a.pack_lch -,a.paed_desc -,a.prod_des -,a.prod_des_c -,a.tcm_desc -,a.vbp_desc -,a.unit -,a.counting_unit -,a.dosage_unit -,a.NRDL_ENTRY_DATE -,a.Market -,a.bu -,a.extend_market_ratio -,a.is_az -from dws.dws_zk_ec_pack_property a -left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b -on right(concat('000000000',A.prod_cod ),9)= b.prod_cod -left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des,manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c -on a.iqvia_pack_code = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d -on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e -On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - --- COMMAND ---------- - -------将事实表倒减之后的维度信息补充到维度表里 -insert overwrite table dm.dm_zk_ec_pack_property -select - CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' - WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' - ELSE a.market - END ||'_'||a.iqvia_pack_code MARKET_PACK_KEY -,a.iqvia_lineno -,a.iqvia_pack_code -,a.prod_cod -,a.iqvia_notes -,a.new_pack_flag -,a.is_exists_chpa -,'' Family_Code -,'' Family_Name -,'' BrandType -,'' AZ_MAIN -,'' AZ_Related -,t5.KEY_COMPETITOR -,a.product_id -,a.prescription_nature -,a.medicine_type -,a.zk_medicine_tier1 -,a.zk_medicine_tier2 -,a.zk_medicine_tier3 -,a.zk_medicine_tier4 -,a.common_name -,a.dosage_form -,a.user_type -,a.category_name -,a.product_name -,a.brand_name -,a.zk_manu_des -,a.zk_corp_des -,a.zk_pack_des -,a.counting_unit_a -,a.dosage_unit_a -,a.unit_a -,a.app1_cod -,a.app1_des -,a.app1_des_c -,a.app2_cod -,a.app2_des -,a.app2_des_c -,a.app3_cod -,a.app3_des -,a.app3_des_c -,a.atc1_cod -,a.atc1_des -,a.atc1_des_c -,a.atc2_cod -,a.atc2_des -,a.atc2_des_c -,a.atc3_cod -,a.atc3_des -,a.atc3_des_c -,a.atc4_cod -,a.atc4_des -,a.atc4_des_c -,a.bio_desc -,a.cmps_cod -,a.cmps_des -,a.cmps_des_c -,CASE WHEN a.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' else a.CORP_COD END - corp_cod -,CASE - WHEN a.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' - WHEN a.corp_des like '%GROUP%' THEN replace(a.corp_des,' GROUP','') - else a.CORP_DES END corp_des -,CASE WHEN a.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' else a.CORP_DES_C END - CORP_DES_C -,a.edl_desc -,a.eth_otc_desc -,a.gene_orig_desc -,a.gqce_desc -,a.manu_cod -,a.manu_des -,a.manu_des_c -,a.mnfl_cod -,a.mnfl_des -,a.nrdl_desc -,a.pack_des -,a.stgh_des -,a.pack_lch -,a.paed_desc -,a.prod_des -,a.prod_des_c -,a.tcm_desc -,a.vbp_desc -,a.unit -,a.counting_unit -,a.dosage_unit -,a.NRDL_ENTRY_DATE -,CASE WHEN a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' - WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' - ELSE a.market - END market -,a.bu -,a.extend_market_ratio -,a.is_az -,nvl(b.class, 'Others') class -,CASE WHEN a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV' - ELSE c.ta - END TA -from tmp.tmp_dm_zk_ec_pack_property a -left join dwd.dwd_gnd_ext_retail_dim_ta c -on c.market = a.Market -left join dwd.dwd_gnd_tblclass b -on a.Market = case when b.market is null then a.Market else b.market end -and nvl(a.iqvia_pack_code,'') = case when b.pack_code is null then nvl(a.iqvia_pack_code,'') else b.pack_code end -and nvl(a.prod_cod,'') = case when b.product_code is null then nvl(a.prod_cod,'') else b.product_code end -and nvl(a.cmps_cod,'') = case when b.molecule_code is null then nvl(a.cmps_cod,'') else right(concat('000000',b.molecule_code),6) end -and nvl(a.corp_cod,'') = case when b.corporation_code is null then nvl(a.corp_cod,'') else b.corporation_code end -and nvl(a.manu_cod,'') = case when b.manufacturer_code is null then nvl(a.manu_cod,'') else b.manufacturer_code end -and nvl(a.app1_cod,'') = case when b.nfc1_code is null then nvl(a.app1_cod,'') else b.nfc1_code end -and nvl(a.app2_cod,'') = case when b.nfc2_code is null then nvl(a.app2_cod,'') else b.nfc2_code end -and nvl(a.app3_cod,'') = case when b.nfc3_code is null then nvl(a.app3_cod,'') else b.nfc3_code end -and nvl(a.atc1_cod,'') = case when b.atc1_code is null then nvl(a.atc1_cod,'') else b.atc1_code end -and nvl(a.atc2_cod,'') = case when b.atc2_code is null then nvl(a.atc2_cod,'') else b.atc2_code end -and nvl(a.atc3_cod,'') = case when b.atc3_code is null then nvl(a.atc3_cod,'') else b.atc3_code end -and nvl(a.atc4_cod,'') = case when b.atc4_code is null then nvl(a.atc4_cod,'') else b.atc4_code end -and nvl(a.stgh_des,'') = case when b.strength is null then nvl(a.stgh_des,'') else b.strength end -left join (select distinct MARKET,PACK_CODE as PACK_COD,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 -on a.market = t5.MARKET -and a.iqvia_pack_code = t5.PACK_COD - - - --- COMMAND ---------- - -insert overwrite table dm.dm_zk_ec_market_property -select distinct -iqvia_pack_code,market,ta -from dm.dm_zk_ec_pack_property - --- COMMAND ---------- - -insert overwrite table dm.dm_zk_ec_market_ratio -select distinct - concat(a.Market,'_',a.iqvia_pack_code) as market_pack_key, - a.iqvia_pack_code as pack_cod, - a.prod_des, - a.cmps_des, - a.corp_cod, - a.Market, - a.extend_market_ratio as value_market_ratio, - a.extend_market_ratio as unit_market_ratio, - coalesce( - case when c.ratio is null then a.extend_market_ratio*d.ratio - else a.extend_market_ratio*c.ratio end,1) as countingunit_market_ratio -from tmp.tmp_ec_temp_market a -left join (--pack - select - market, - cmps_cod, - cmps_des, - if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,--right(concat('0000000',pack_cod ),7) - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' -)c on a.Market = c.market and a.iqvia_pack_code = if( c.pack_cod REGEXP '^[0-9]',right(concat('000000000000',c.pack_cod),12),c.pack_cod)--right(concat('0000000',c.pack_cod),7) -left join(--molecule - select - market, - cmps_cod, - cmps_des, - if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,--right(concat('0000000',pack_cod ),7) - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' -)d on a.Market = d.market and a.cmps_cod = right(concat('000000',d.cmps_cod ),6) - --- COMMAND ---------- - -create or replace table dm.dm_zk_ec_geo -using delta as -select - 'ROC' as audit_cod, - '全国' as city_c, - 'national' as city_e, - '全国' as province_c, - 'national' as province_e; - --- COMMAND ---------- - ----------------------------------------将直取部分数据处理成KPI形式----------------------------------------- -insert overwrite table tmp.tmp_zk_ec_sales_kpi_tmp -select - b.CORP_COD, - '' as yyyymm, - a.ytd , - a.platform, - case when a.store_type = '三方' then '第三方' else a.store_type end store_type , - 'ROC' as geo_key, -'top_yoygr' as KPI_name, -a.yoy_gr as Kpi_val, -c.yoy_gr as Kpi_val_ly, -'' as str_kpi_val, -'' as str_kpi_val_ly, -'' as str_kpi_vol, -'' as str_kpi_vol_ly, -case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, -'' as ta -from dwd.dwd_gnd_ec_b2c_top10_drives_brand a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp = b.ZK_Corp_C -left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c -on a.corp = c.corp -and a.ytd = c.ytd + 100 -and a.platform = c.platform -and a.store_type = c.store_type --- where upper(a.rank) <> 'TTL MKT' -union all -select - b.CORP_COD, - '' as yyyymm, - a.ytd , - a.platform, - case when a.store_type = '三方' then '第三方' else a.store_type end store_type , - 'ROC' as geo_key, -'top1_brand_gr' as KPI_name, -a.top1_brand_gr as Kpi_val, -c.top1_brand_gr as Kpi_val_ly, -'' as str_kpi_val, -'' as str_kpi_val_ly, -'' as str_kpi_vol, -'' as str_kpi_vol_ly, -case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, -'' as ta -from dwd.dwd_gnd_ec_b2c_top10_drives_brand a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp = b.ZK_Corp_C -left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c -on a.corp = c.corp -and a.ytd = c.ytd + 100 -and a.platform = c.platform -and a.store_type = c.store_type --- where upper(a.rank) <> 'TTL MKT' -union all -select - b.CORP_COD, - '' as yyyymm, - a.ytd , - a.platform, - case when a.store_type = '三方' then '第三方' else a.store_type end store_type, - 'ROC' as geo_key, -'top1_brand_val' as KPI_name, -'' as Kpi_val, -'' as Kpi_val_ly, -a.top1_brand_val as str_kpi_val, -'' as str_kpi_val_ly, -'' as str_kpi_vol, -'' as str_kpi_vol_ly, -case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, -'' as ta -from dwd.dwd_gnd_ec_b2c_top10_drives_brand a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp = b.ZK_Corp_C --- where upper(a.rank) <> 'TTL MKT' -union all -select - b.CORP_COD, - '' as yyyymm, - a.ytd , - a.platform, - case when a.store_type = '三方' then '第三方' else a.store_type end store_type, - 'ROC' as geo_key, - 'incremental_brand' as KPI_name, - '' as Kpi_val, - '' as Kpi_val_ly, - a.growth_driver_brand_val as str_kpi_val, - '' as str_kpi_val_ly, - '' as str_kpi_vol, - '' as str_kpi_vol_ly, - case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, - '' as ta -from dwd.dwd_gnd_ec_b2c_top10_drives_brand a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp = b.ZK_Corp_C --- where upper(a.rank) <> 'TTL MKT' -union all -select - b.CORP_COD, - '' as yyyymm, - a.ytd , - a.platform, - case when a.store_type = '三方' then '第三方' else a.store_type end store_type, - 'ROC' as geo_key, - 'incremental_brand_gr' as KPI_name, - a.growth_driver_brand_gr as Kpi_val, - c.growth_driver_brand_gr as Kpi_val_ly, - '' as str_kpi_val, - '' as str_kpi_val_ly, - '' as str_kpi_vol, - '' as str_kpi_vol_ly, - case when upper(a.rank) = 'TTL MKT' then 'Y' else 'N' end total_flag, - '' as ta -from dwd.dwd_gnd_ec_b2c_top10_drives_brand a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp = b.ZK_Corp_C -left join dwd.dwd_gnd_ec_b2c_top10_drives_brand c -on a.corp = c.corp -and a.ytd = c.ytd + 100 -and a.platform = c.platform -and a.store_type = c.store_type --- where upper(a.rank) <> 'TTL MKT' -union all -select - b.CORP_COD, - a.ytd yyyymm, - '' as ytd, - a.platform, - a.store_type, - 'ROC' as geo_key, - 'top_corp_sales' as KPI_name, - replace(a.sales_value,',','' ) as Kpi_val, - replace(c.sales_value,',','' ) as Kpi_val_ly, - '' as str_kpi_val, - '' as str_kpi_val_ly, - '' as str_kpi_vol, - '' as str_kpi_vol_ly, - case when lower(a.rank) = 'total' then 'Y' else 'N' end total_flag, - a.ta -from dwd.dwd_gnd_ec_ta_overview a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp_des = b.ZK_Corp_C -left join dwd.dwd_gnd_ec_ta_overview c -on a.ytd = c.ytd + 100 -and a.corp_des = c.corp_des -and a.platform = c.platform -and a.store_type = c.store_type -and a.ta = c.ta --- where lower(a.rank) <> 'total' -union all -select distinct - b.CORP_COD, - '' yyyymm, - a.ytd as ytd, - a.platform, - a.store_type, - 'ROC' as geo_key, - 'top_rank' as KPI_name, - a.rank as Kpi_val, - '' as Kpi_val_ly, - '' as str_kpi_val, - '' as str_kpi_val_ly, - '' as str_kpi_vol, - '' as str_kpi_vol_ly, - case when lower(a.rank) = 'total' then 'Y' else 'N' end total_flag, - a.ta -from dwd.dwd_gnd_ec_ta_overview a -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total where (ZK_Corp_C = '东阳光' and ZK_Prod_C is null) or ZK_Corp_C != '东阳光') b -on a.corp_des = b.ZK_Corp_C --- where lower(a.rank) <> 'total' - - --- COMMAND ---------- - -insert overwrite table dm.dm_zk_ec_sales_kpi -select - case when total_flag = 'Y' then 'TTL MKT' else nvl(CORP_COD,'') end CORP_COD , - if(yyyymm <> '', nvl(yyyymm,''),nvl(ytd,'')) yyyymm, - if(ytd <> '', 'Y', 'N') ytd, - nvl(platform,'') as platform, - case when store_type = '自营旗舰' then 'SO' - when store_type = '第三方' then 'POP' else nvl(store_type,'') end store_type, - nvl(geo_key,'') as geo_key, - nvl(KPI_name,'') as KPI_name, - nvl(cast(Kpi_val as double),'') Kpi_val, - nvl(cast(Kpi_val_ly as double),'') Kpi_val_ly, - nvl(str_kpi_val,'') as str_kpi_val, - nvl(str_kpi_val_ly,'') as str_kpi_val_ly, - nvl(str_kpi_vol,'') as str_kpi_vol, - nvl(str_kpi_vol_ly,'') as str_kpi_vol_ly, - nvl(total_flag,'') as total_flag, - case when ta = 'NIAD' then 'DM' when ta = 'RX Total' then '' else nvl(ta,'') end ta -from tmp.tmp_zk_ec_sales_kpi_tmp - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## NIAD Date - --- COMMAND ---------- - --- 计算NIAD的时间是否比其他数据源先来数据 chenwu -CREATE OR REPLACE TABLE tmp.tmp_dm_td_ext_ec_niad_month as -WITH all_ec_data ( - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_hm_jd_2025before - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_hm_jd_2025after - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_hm_tm_2206after - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_hm_tm_2206before - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_gastritis_23after - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_gastritis_23before - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_re - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_dm_statins_xzk - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_dm_23before - UNION ALL - SELECT - MAX(TIME) month, - 'NIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_dm_23after - UNION ALL - SELECT - MAX(TIME) month, - 'NOTNIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_hm_tm_2403after - UNION ALL - SELECT - MAX(TIME) month, - 'NIAD' AS DATATYPE - FROM - dwd.dwd_gnd_ec_zkb2c_dm_26after -) -SELECT - MAX(t1.month) as NIAD_MONTH, - max(t2.month) OTHERS_MONTH -FROM - all_ec_data t1 - LEFT JOIN ( - SELECT - MAX(month) as month - FROM - all_ec_data - WHERE - datatype = 'NOTNIAD' - ) t2 -WHERE - t1.datatype = 'NIAD' - --- COMMAND ---------- - -select * from tmp.tmp_dm_td_ext_ec_niad_month \ No newline at end of file diff --git a/EXTERNAL/EC/03 ec_load_data.sql:Zone.Identifier b/EXTERNAL/EC/03 ec_load_data.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/03 ec_load_data.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql b/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql deleted file mode 100644 index f8f7276..0000000 --- a/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_PACK_PROPERTY --- ( --- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- MARKET STRING, --- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- CLASS STRING, --- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_EC_PACK_PROPERTY -SELECT - MARKET_PACK_KEY, - iqvia_pack_code AS PACK_CODE, - pack_des AS PACK_DESC, - stgh_des AS STGH_DESC, - pack_lch AS PACK_LCH, - Family_Code AS FAMILY_CODE, - Family_Name AS FAMILY_NAME, - prod_cod AS PROD_CODE, - prod_des AS PROD_DESC, - prod_des_c AS PROD_DESC_C, - cmps_cod AS CMPS_CODE, - cmps_des AS CMPS_DESC, - cmps_des_c AS CMPS_DESC_C, - atc1_cod AS ATC1_CODE, - atc2_cod AS ATC2_CODE, - atc3_cod AS ATC3_CODE, - atc4_cod AS ATC4_CODE, - app1_cod AS APP1_CODE, - app2_cod AS APP2_CODE, - app3_cod AS APP3_CODE, - bio_desc AS BIO_DESC, - gene_orig_desc AS GENE_ORIG_DESC, - eth_otc_desc AS ETH_OTC_DESC, - nrdl_desc AS NRDL_DESC, - NRDL_ENTRY_DATE, - edl_desc AS EDL_DESC, - tcm_desc AS TCM_DESC, - paed_desc AS PAED_DESC, - gqce_desc AS GQCE_DESC, - NULL AS VBP_DESC_V, - vbp_desc AS VBP_DESC, - manu_cod AS MANU_CODE, - manu_des AS MANU_DESC, - manu_des_c AS MANU_DESC_C, - mnfl_cod AS MNFL_CODE, - mnfl_des AS MNFL_DESC, - corp_cod AS CORP_CODE, - corp_des AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BrandType AS BRANDTYPE, - market AS MARKET, - KEY_COMPETITOR, - is_az AS IS_AZ, - AZ_MAIN, - AZ_Related AS AZ_RELATED, - atc1_des AS ATC1_DESC, - atc1_des_c AS ATC1_DESC_C, - atc2_des AS ATC2_DESC, - atc2_des_c AS ATC2_DESC_C, - atc3_des AS ATC3_DESC, - atc3_des_c AS ATC3_DESC_C, - atc4_des AS ATC4_DESC, - atc4_des_c AS ATC4_DESC_C, - app1_des AS APP1_DESC, - app1_des_c AS APP1_DESC_C, - app2_des AS APP2_DESC, - app2_des_c AS APP2_DESC_C, - app3_des AS APP3_DESC, - app3_des_c AS APP3_DESC_C, - class AS CLASS, - extend_market_ratio AS MARKET_RATIO, - counting_unit AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_ZK_EC_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/04 DM_TD_EXT_EC_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql b/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql deleted file mode 100644 index 01f4827..0000000 --- a/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql +++ /dev/null @@ -1,173 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_EC_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_ec_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_ec_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW EC_SALES -AS - SELECT - A.YYYYMM, - A.iqvia_pack_code AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'EC(Monthly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - A.PLATFORM AS PLATFORM_TYPE, - A.STORE_NAME, - A.STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_zk_ec_sales A - where - A.YYYYMM >= '202001' - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.PLATFORM, - A.STORE_NAME, - A.STORE_TYPE, - A.PACK_FLAG, - A.PROD_FLAG - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_EC_SALES -( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) -SELECT - YYYYMM, - NVL ( - NULLIF(PACK_CODE, ''), - CONCAT ('PACK_CODE_', DATA_SOURCE) - ) AS PACK_CODE, - NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - EC_SALES -; \ No newline at end of file diff --git a/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql:Zone.Identifier b/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/05 DM_TF_EXT_EC_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql b/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql deleted file mode 100644 index fcfd57a..0000000 --- a/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql +++ /dev/null @@ -1,208 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_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_ec_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack2market'; - --- COMMAND ---------- - --- 使用 EXCEPT(集合差操作)简化逻辑 -INSERT OVERWRITE TABLE DM.DM_TD_EXT_EC_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_EC_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_EC_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; \ No newline at end of file diff --git a/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/06 DM_TD_EXT_EC_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql b/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql deleted file mode 100644 index 6f846db..0000000 --- a/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_ec_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_EC_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_EC_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/07 DM_TD_EXT_EC_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql b/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql deleted file mode 100644 index aec4613..0000000 --- a/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_EC_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_EC_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/08 DM_TD_EXT_EC_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql b/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 1ee3ce6..0000000 --- a/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,62 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_EC_MARKET_PACK_MAPPING -SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T1.CLASS, - T1.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_EC_PACK_PROPERTY T1 -LEFT JOIN DM.DM_TD_EXT_EC_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE -LEFT JOIN DM.DM_TD_EXT_EC_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE -WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/09 DM_TD_EXT_EC_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/1 (ec)blob_to_dwd.sql b/EXTERNAL/EC/1 (ec)blob_to_dwd.sql deleted file mode 100644 index 0a8fe4b..0000000 --- a/EXTERNAL/EC/1 (ec)blob_to_dwd.sql +++ /dev/null @@ -1,103 +0,0 @@ --- Databricks notebook source --- MAGIC %python --- MAGIC import datetime --- MAGIC from pyspark.sql.functions import current_timestamp, expr, date_format --- MAGIC --- MAGIC # 计算当前日期 --- MAGIC current_date_utc = datetime.datetime.utcnow() --- MAGIC offset = datetime.timedelta(hours=8) --- MAGIC current_date = current_date_utc + offset --- MAGIC --- MAGIC today_path = "{:04d}/{:02d}/{:02d}/".format( --- MAGIC current_date.year, --- MAGIC current_date.month, --- MAGIC current_date.day, --- MAGIC ) --- MAGIC # 基础路径 --- MAGIC # 测试环境 --- MAGIC # base_path_0 = f"abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" --- MAGIC # 生产环境 --- MAGIC base_path_0 = f"abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" --- MAGIC base_path = base_path_0 + today_path --- MAGIC print(base_path) --- MAGIC --- MAGIC # 检查基础路径是否存在 --- MAGIC def check_path_exists(path): --- MAGIC try: --- MAGIC dbutils.fs.ls(path) --- MAGIC return True --- MAGIC except Exception as e: --- MAGIC return False --- MAGIC --- MAGIC if check_path_exists(base_path): --- MAGIC # 列出所有批次路径 --- MAGIC batch_paths = dbutils.fs.ls(base_path) --- MAGIC --- MAGIC # 从已存在的配置表中读取数据 --- MAGIC config_df = spark.table("dwd.dwd_gnd_ec_config_table") --- MAGIC --- MAGIC # 逐批处理 --- MAGIC for batch in batch_paths: --- MAGIC current_batch_number = int(batch.name.strip('/')) --- MAGIC # print(f"Checking batch {current_batch_number} at {batch.path}") --- MAGIC --- MAGIC files_in_batch = dbutils.fs.ls(batch.path) --- MAGIC --- MAGIC print("该批次中的文件:") --- MAGIC for file in files_in_batch: --- MAGIC print(file.name) --- MAGIC --- MAGIC for row in config_df.collect(): --- MAGIC file_name = row['file_name'].strip().lower() --- MAGIC table_name = row['table_name'] --- MAGIC --- MAGIC # 检查文件是否匹配 --- MAGIC matching_files = [f for f in files_in_batch if f.name.strip().lower() == file_name] --- MAGIC --- MAGIC for match in matching_files: --- MAGIC csv_file_path = batch.path + match.name --- MAGIC print(f"找到匹配的文件: {csv_file_path}") --- MAGIC --- MAGIC # 读取 CSV 文件 --- MAGIC df = spark.read.format("csv").option("header", "true").option("charset", "GBK").load(csv_file_path) --- MAGIC --- MAGIC # 对列进行重命名(假设所有文件的列名相同) --- MAGIC df = df.withColumnRenamed('时间(月度)', 'time') --- MAGIC df = df.withColumnRenamed('平台', 'platform') --- MAGIC df = df.withColumnRenamed('店铺名称', 'store_name') --- MAGIC df = df.withColumnRenamed('店铺类型', 'store_type') --- MAGIC df = df.withColumnRenamed('产品ID', 'product_id') --- MAGIC df = df.withColumnRenamed('品牌', 'brand_name') --- MAGIC df = df.withColumnRenamed('品名', 'category_name') --- MAGIC df = df.withColumnRenamed('商品名', 'product_name') --- MAGIC df = df.withColumnRenamed('通用名', 'common_name') --- MAGIC df = df.withColumnRenamed('厂家', 'factory') --- MAGIC df = df.withColumnRenamed('集团权益', 'group_interest') --- MAGIC df = df.withColumnRenamed('规格', 'specification') --- MAGIC df = df.withColumnRenamed('单件包装盒数', 'pcs_per_box') --- MAGIC df = df.withColumnRenamed('剂型', 'dosage') --- MAGIC df = df.withColumnRenamed('细分一', 'des1') --- MAGIC df = df.withColumnRenamed('细分二', 'des2') --- MAGIC df = df.withColumnRenamed('细分三', 'des3') --- MAGIC df = df.withColumnRenamed('细分四', 'des4') --- MAGIC df = df.withColumnRenamed('销售额', 'sales_amount') --- MAGIC df = df.withColumnRenamed('成交件数', 'sold_pcs') --- MAGIC df = df.withColumnRenamed('平均单价(元/件)', 'aup_pices') --- MAGIC df = df.withColumnRenamed('销售量(盒)', 'sales_qty') --- MAGIC df = df.withColumnRenamed('平均单价(元/盒)', 'aup_box') --- MAGIC df = df.withColumnRenamed('PROD_COD', 'PROD_COD') --- MAGIC df = df.withColumnRenamed('PACK_COD', 'PACK_COD') --- MAGIC df = df.withColumnRenamed('APP3_COD', 'APP3_COD') --- MAGIC df = df.withColumnRenamed('ATC4_COD', 'ATC4_COD') --- MAGIC --- MAGIC # 添加 'etl_insert_dt' 列,包含当前时间并加上 8 小时的时差 --- MAGIC df = df.withColumn('etl_insert_dt', date_format(expr("current_timestamp() + INTERVAL 8 HOURS"), 'yyyy-MM-dd HH:mm:ss')) --- MAGIC --- MAGIC # 将数据保存到目标表 --- MAGIC df.write.mode("overwrite").saveAsTable(table_name) --- MAGIC --- MAGIC print(f"数据已写入表 {table_name}") --- MAGIC else: --- MAGIC print("未找到批次或路径不存在。") --- MAGIC --- MAGIC diff --git a/EXTERNAL/EC/1 (ec)blob_to_dwd.sql:Zone.Identifier b/EXTERNAL/EC/1 (ec)blob_to_dwd.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/1 (ec)blob_to_dwd.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py b/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py deleted file mode 100644 index 1e6f75c..0000000 --- a/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py +++ /dev/null @@ -1,74 +0,0 @@ -# Databricks notebook source -from pyspark.sql.functions import lit -from pyspark.sql.utils import AnalysisException - -# pack数据自动接入 整合 -#获取配置表信息(表名、brand_flag -df = spark.sql(""" -SELECT DISTINCT table_name tab ,file_name brand_flag FROM dwd.dwd_gnd_ec_config_table -where type_name ='PACK' -""").collect() -# print(df) -def get_union_pack_data(df): - #初始化结果集 - union_query = None - # niad_pdot_unit需特殊赋值对应表名:tmp.tmp_inc_gnd_ext_retail_nataional_niad - # niad_pdot_unit_flag = 'tmp.tmp_inc_gnd_ext_retail_nataional_niad' - for table in df: - # 选择当前表名 - table_name = table['tab'] - if not table_name: - print("由于table_name为空,故跳过查询") - continue - # 获取对应brand表维度对应得 market 名称 - # brand_flag = str(table.brand_flag) - sql = f""" - select - t1.time, - t1.platform, - t1.store_name, - t1.store_type, - t1.product_id, - t1.brand_name, - t1.category_name, - t1.product_name, - t1.common_name, - t1.factory, - t1.group_interest, - t1.specification, - t1.pcs_per_box, - t1.dosage, - t1.des1, - t1.des2, - t1.des3, - t1.des4, - t1.sales_amount, - t1.sold_pcs, - t1.aup_pices, - t1.sales_qty, - t1.aup_box, - t1.PROD_COD, - t1.PACK_COD, - t1.APP3_COD, - t1.ATC4_COD, - t1.etl_insert_dt - from {table_name} t1 - """ - # 尝试读取数据,只有在表名非空时执行 - try: - current_query = spark.sql(sql) - except AnalysisException as e: - print(f"Error querying table {table_name}: {e}") - continue # 如果查询发生错误,跳过当前循环迭代 - #union 数据 - if union_query ==None: - union_query=current_query - else: - union_query = union_query.union(current_query) - #返回数据集 - return union_query -pack_result = get_union_pack_data(df) -if pack_result is not None: - pack_result.write.mode("overwrite").saveAsTable("dwd.dwd_inc_gnd_ext_ec_nationnal_pack_union_all") -else: - print("没有数据写入这张表里") diff --git a/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py:Zone.Identifier b/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/EC/2 dwd_inc_gnd_ext_ec_nationnal_pack_union_all.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql b/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql deleted file mode 100644 index 8c2c1af..0000000 --- a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql +++ /dev/null @@ -1,228 +0,0 @@ --- Databricks notebook source -create or replace temporary view brand_province_config -- brand配置表 -as -select upper(`brand`) as brand, `province` as province, datasource as data_source from dwd.dwd_gnd_merge_data_brand_province - --- COMMAND ---------- - -create or replace temporary view market_province_config --market 配置表 -as -select market, province, datasource as data_source from dwd.dwd_gnd_merge_data_brand_market - --- COMMAND ---------- - -insert overwrite dws.dws_external_merge_data_config_special --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_external_merge_data_config_special' --prd --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_external_merge_data_config_special' --test -with pack_and_brand ( --brand 转 pack - select - upper(brandnamee) brand_name - ,ims_pack_cod PACK_COD --取所有code带出market - from dwd.dwd_td_imscode_azcode - where ims_pack_cod is not null and startswith(ims_pack_cod,'0') - and upper(brandnamee) in (select brand from brand_province_config group by 1 )--取出在配置表中的pack - group by 1,2 - ) -,pack_to_market ( - select - a.PACK_COD - ,MARKET - from dm.dm_td_external_market_pack_mapping a - inner join pack_and_brand b on a.PACK_COD = b.pack_cod --取出配置表中的brand对应的 market - where DATA_SOURCE in ( 'AIA(Monthly)')--只取 AIA中的市场,chpa的市场太多 - and lower(a.MARKET) not like '%all market%' - and market not in ( - 'RE Extended Market' - ,'RE Market' - ,'RE Market (Global)' - ,'Pulmicort VBP Benchmark Market' - ,'Respules Market' - ) - group by 1,2 -) -,market_to_pack ( -- 获取上述market中所有的pack - select - market - ,pack_cod - from dm.dm_td_external_market_pack_mapping a - where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)')--AIA和chpa的市场 - and market in (select market from pack_to_market group by 1) - group by 1,2 -) -,province_to_audit ( - select - PROVINCE_C - ,AUDIT_COD - ,DATA_SOURCE - ,CASE WHEN DATA_SOURCE = 'AIA(Monthly)' THEN 'AIA' - WHEN DATA_SOURCE = 'IQVIA-CHPA(Monthly)' THEN 'CHPA' - ELSE NULL - END AS SOURCENAME - from dm.dm_td_external_geo - where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)') - group by 1,2,3 -) -,not_selected_datasource (--因为pack2market2pack 会导致部分大市场包含所有的pack,故用配置表再删除一些不需要配置数据源的 - select - a.ims_pack_cod PACK_COD --取所有code - ,b.province - from dwd.dwd_td_imscode_azcode a - inner join ( - select - UPPER(brand) as brand - ,province - from brand_province_config - where data_source = '/' - group by 1,2 - ) b - on upper(a.brandnamee) = upper(b.brand ) - where a.ims_pack_cod is not null and startswith(a.ims_pack_cod,'0') - group by 1,2 - union - select - pack_cod, - '天津' - from market_to_pack - where market= 'EGFR TKI Market' - group by 1 -) -select DATA_SOURCE,PACK_COD,AUDIT_COD -from not_selected_datasource a -left join province_to_audit b on a.province = b.province_c -group by 1,2,3 - --- COMMAND ---------- - -INSERT OVERWRITE dws.dws_external_merge_data_config --- create or replace table dws.dws_external_merge_data_config -/* -1通过brand找到pack,通过pack找到市场以市场下的所有pack -2通过province找到对应的省份或者机构,从而获取到audit_code -*/ -----pack -with pack_and_brand ( --brand 转 pack - select - upper(brandnamee) brand_name - ,ims_pack_cod PACK_COD --取所有code带出market - from dwd.dwd_td_imscode_azcode - where ims_pack_cod is not null and startswith(ims_pack_cod,'0') - and upper(brandnamee) in (select brand from brand_province_config group by 1 )--取出在配置表中的pack - group by 1,2 - ) - -,pack_to_market ( - select - a.PACK_COD - ,MARKET - from dm.dm_td_external_market_pack_mapping a - inner join pack_and_brand b on a.PACK_COD = b.pack_cod --取出配置表中的brand对应的 market - where DATA_SOURCE in ( 'AIA(Monthly)')--只取 AIA中的市场,chpa的市场太多 - and lower(a.MARKET) not like '%all market%' - and market not in ( - 'RE Extended Market' - ,'RE Market' - ,'RE Market (Global)' - ,'Pulmicort VBP Benchmark Market' - ,'Respules Market' - ) - group by 1,2 -) -,market_to_pack ( -- 获取上述market中所有的pack - select - market - ,pack_cod - from dm.dm_td_external_market_pack_mapping a - where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)')--AIA和chpa的市场 - and market in (select market from pack_to_market group by 1) - group by 1,2 -) -,province_to_audit ( - select - PROVINCE_C - ,AUDIT_COD - ,DATA_SOURCE - ,CASE WHEN DATA_SOURCE = 'AIA(Monthly)' THEN 'AIA' - WHEN DATA_SOURCE = 'IQVIA-CHPA(Monthly)' THEN 'CHPA' - ELSE NULL - END AS SOURCENAME - from dm.dm_td_external_geo - where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)') - group by 1,2,3 -) - -,pack_result as ( - select - D.pack_cod - ,E.audit_cod - ,A.province - ,A.data_source as SOURCENAME - ,E.data_source - from brand_province_config A - inner join pack_and_brand B on A.brand = B.brand_name - inner join pack_to_market C on B.pack_cod = C.pack_cod - inner join market_to_pack D on C.market = D.market - inner join province_to_audit E on A.province = E.province_c AND A.data_source = E.SOURCENAME - where A.data_source <> '/' - group by 1,2,3,4,5 - ) - - -----market -,config_market ( - select - market - from market_province_config - group by 1 -) -,market_to_pack_dtp ( - select - PACK_COD,MARKET - from dm.dm_td_external_market_pack_mapping - where DATA_SOURCE = 'DTP(Quarterly)' and PACK_COD in ( - select - PACK_COD - from dm.dm_tf_external_sales - where DTP_FLAG =1 - group by 1) -) -,final_market_to_pack (--获取需要转换market成pack的部分 -select PACK_COD,a.MARKET from market_to_pack a inner join config_market b on a.market = b.market -union -select PACK_COD,a.MARKET from market_to_pack_dtp a inner join config_market b on a.market = b.market -) - -----market -,market_result as ( - select - B.pack_cod - ,C.AUDIT_COD - ,A.province - ,A.data_source as SOURCENAME - ,C.DATA_SOURCE - from market_province_config a - left join final_market_to_pack B on A.market = B.market - left join province_to_audit C on A.province = C.province_c AND A.data_source = C.SOURCENAME - where a.data_source <> '/' AND C.AUDIT_COD IS not NULL - group by 1,2,3,4,5) -,need_to_be_changed( --算出不在pack 中的pack code,替换成 market中的pack code 的配置信息 - select - pack_cod,AUDIT_COD,DATA_SOURCE,sourcename - from market_result - where pack_cod in (select pack_cod from pack_result group by 1) -) - ---最终写入表 - -select - pack_cod,AUDIT_COD,DATA_SOURCE,sourcename, 'pack' CONFIG_DATASOURCE -from pack_result -union ALL - -select - pack_cod,AUDIT_COD,DATA_SOURCE,sourcename, 'market' CONFIG_DATASOURCE -from pack_result -where pack_cod not in (select pack_cod from need_to_be_changed group by 1) -union all -select - pack_cod,AUDIT_COD,DATA_SOURCE,sourcename, 'market' CONFIG_DATASOURCE -from need_to_be_changed diff --git a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql:Zone.Identifier b/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bkp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql b/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql deleted file mode 100644 index cb2d080..0000000 --- a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql +++ /dev/null @@ -1,213 +0,0 @@ --- Databricks notebook source --- create or replace table dws.dws_td_ext_merge_data_config --- ( --- market string, --- audit_cod string, --- province string, --- sourcename string, --- data_source string --- ) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dws_td_ext_merge_data_config'; --- -- 上面是生产环境location,下面是测试环境location --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dws_td_ext_merge_data_config'; - --- COMMAND ---------- - -create or replace temporary view brand_province_config -- brand配置表 -as -select upper(`brand`) as brand, `province` as province, datasource as data_source from dwd.dwd_gnd_merge_data_brand_province - --- COMMAND ---------- - -create or replace temporary view market_province_config --market 配置表 -as -select market, province, datasource as data_source from dwd.dwd_gnd_merge_data_brand_market - --- COMMAND ---------- - --- -- insert overwrite dws.dws_td_ext_merge_data_config_special --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_external_merge_data_config_special' --prd --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_external_merge_data_config_special' --test --- with pack_and_brand ( --brand 转 pack --- select --- upper(brandnamee) brand_name --- ,ims_pack_cod PACK_COD --取所有code带出market --- from dwd.dwd_td_imscode_azcode --- where ims_pack_cod is not null and startswith(ims_pack_cod,'0') --- and upper(brandnamee) in (select brand from brand_province_config group by 1 )--取出在配置表中的pack --- group by 1,2 --- ) --- ,pack_to_market ( --- select --- a.PACK_CODE --- ,MARKET --- from dm.dm_td_ext_unionall_market_pack_mapping a --- inner join pack_and_brand b on a.PACK_CODE = b.pack_cod --取出配置表中的brand对应的 market --- where a.DATASOURCE in ( 'AIA(Monthly)')--只取 AIA中的市场,chpa的市场太多 --- and lower(a.MARKET) not like '%all market%' --- and market not in ( --- 'RE Extended Market' --- ,'RE Market' --- ,'RE Market (Global)' --- ,'Pulmicort VBP Benchmark Market' --- ,'Respules Market' --- ) --- group by 1,2 --- ) --- -- ,market_to_pack ( -- 获取上述market中所有的pack --- -- select --- -- market --- -- ,pack_cod --- -- from dm.dm_td_external_market_pack_mapping a --- -- where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)')--AIA和chpa的市场 --- -- and market in (select market from pack_to_market group by 1) --- -- group by 1,2 --- -- ) --- ,province_to_audit ( --- select --- PROVINCE_C --- ,AUDIT_COD --- ,DATA_SOURCE --- ,CASE WHEN DATA_SOURCE = 'AIA(Monthly)' THEN 'AIA' --- WHEN DATA_SOURCE = 'IQVIA-CHPA(Monthly)' THEN 'CHPA' --- ELSE NULL --- END AS SOURCENAME --- from dm.dm_td_external_geo --- where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)') --- group by 1,2,3 --- ) --- ,not_selected_datasource (--因为pack2market2pack 会导致部分大市场包含所有的pack,故用配置表再删除一些不需要配置数据源的 --- select --- a.ims_pack_cod PACK_COD --取所有code --- ,b.province --- from dwd.dwd_td_imscode_azcode a --- inner join ( --- select --- UPPER(brand) as brand --- ,province --- from brand_province_config --- where data_source = '/' --- group by 1,2 --- ) b --- on upper(a.brandnamee) = upper(b.brand ) --- where a.ims_pack_cod is not null and startswith(a.ims_pack_cod,'0') --- group by 1,2 --- union --- select --- pack_cod, --- '天津' --- from market_to_pack --- where market= 'EGFR TKI Market' --- group by 1 --- ) --- select DATA_SOURCE,PACK_COD,AUDIT_COD --- from not_selected_datasource a --- left join province_to_audit b on a.province = b.province_c --- group by 1,2,3 - --- COMMAND ---------- - -INSERT OVERWRITE dws.dws_td_ext_merge_data_config --- create or replace table dws.dws_td_ext_merge_data_config --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_td_ext_merge_data_config' --test -/* -1通过brand找到pack,通过pack找到市场以市场下的所有pack -2通过province找到对应的省份或者机构,从而获取到audit_code -*/ -----pack -with pack_and_brand ( --brand 转 pack - select - upper(brandnamee) brand_name - ,ims_pack_cod PACK_COD --取所有code带出market - from dwd.dwd_td_imscode_azcode - where ims_pack_cod is not null and startswith(ims_pack_cod,'0') - and upper(brandnamee) in (select brand from brand_province_config group by 1 )--取出在配置表中的pack - group by 1,2 - ) - -,pack_to_market ( - select - a.PACK_CODE, - MARKET - from dm.dm_td_ext_unionall_market_pack_mapping a - inner join pack_and_brand b on a.PACK_CODE = b.pack_cod --取出配置表中的brand对应的 market - where a.DATASOURCE in ( 'AIA(Monthly)')--只取 AIA中的市场,chpa的市场太多 - and lower(a.MARKET) not like '%all market%' - and market not in ( - 'RE Extended Market' - ,'RE Market' - ,'RE Market (Global)' - ,'Pulmicort VBP Benchmark Market' - ,'Respules Market' - ) - group by 1,2 -) -,province_to_audit ( - select - PROVINCE_C - ,AUDIT_COD - ,DATA_SOURCE - ,CASE WHEN DATA_SOURCE = 'AIA(Monthly)' THEN 'AIA' - WHEN DATA_SOURCE = 'IQVIA-CHPA(Monthly)' THEN 'CHPA' - ELSE NULL - END AS SOURCENAME - from dm.dm_td_external_geo - where DATA_SOURCE in ( 'AIA(Monthly)','IQVIA-CHPA(Monthly)') - group by 1,2,3 -) - -,pack_result as ( - select - C.market - ,E.audit_cod - ,A.province - ,A.data_source as SOURCENAME - ,E.data_source - from brand_province_config A - inner join pack_and_brand B on A.brand = B.brand_name - inner join pack_to_market C on B.pack_cod = C.pack_code - -- inner join market_to_pack D on C.market = D.market - inner join province_to_audit E on A.province = E.province_c AND A.data_source = E.SOURCENAME - where A.data_source <> '/' - group by 1,2,3,4,5 - ) - ----- MARKET PART - -,market_result as ( - select - A.MARKET - ,C.AUDIT_COD - ,A.province - ,A.data_source as SOURCENAME - ,C.DATA_SOURCE - from market_province_config a - -- left join final_market_to_pack B on A.market = B.market - left join province_to_audit C on A.province = C.province_c AND A.data_source = C.SOURCENAME - where a.data_source <> '/' AND C.AUDIT_COD IS not NULL - group by 1,2,3,4,5) - - -----最终结果 -select -market, -audit_cod, -province, -sourcename, -data_source - FROM pack_result - where market NOT in ( - select - market - from market_province_config - group by 1 -) -union all -select -market, -audit_cod, -province, -sourcename, -data_source - FROM market_result diff --git a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql:Zone.Identifier b/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Merged_Data/Merged_Data_Config_table_bymonth.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql b/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql deleted file mode 100644 index 7bc0611..0000000 --- a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql +++ /dev/null @@ -1,124 +0,0 @@ --- Databricks notebook source --- create or replace table dm.dm_tf_exteranl_sales_merged_data_dtp_others -insert overwrite table dm.dm_tf_exteranl_sales_merged_data_dtp_others -with all_egfr_pack as ( - select * from DM.dm_td_external_market_pack_mapping - where DATA_SOURCE = 'DTP(Quarterly)' and MARKET = 'EGFR TKI Market' -) -,4brand as ( - select * from all_egfr_pack - where PROD_DES_C in ('阿美乐','泰瑞沙','凯美纳','艾弗沙') -) -,otherbrand as ( - select PACK_COD from all_egfr_pack - where PACK_COD not in ( select PACK_COD from `4brand` group by 1) - group by 1 -) - - --- -- 直取表 cu - dtp4brand 的 cu = otherbrand 的cu -,dirct_cu as ( - select - yyyymm - ,replace(audit_key,'DTP(Quarterly)','') audit_cod - ,cast(pdot_counting_unit as decimal ) pdot_counting_unit - ,cast(pdot_counting_unit_ly as decimal ) pdot_counting_unit_ly - from dm.dm_tf_external_retail_special a - where yyyymm >=202401 -) - --先 4个brand 的 cu 和 value -,fact_sales_dtp_4brand( -select -YYYYMM,AUDIT_COD -,sum(cast( CONUTING_UNIT*PDOT_MARKET_RATIO as decimal)) CONUTING_UNIT -,sum(cast( CONUTING_UNIT_LY*PDOT_MARKET_RATIO as decimal)) CONUTING_UNIT_LY -from dm.dm_tf_external_sales t1 -inner join 4brand t2 on t1.PACK_COD = t2.PACK_COD -where t1.DATA_SOURCE = 'DTP(Quarterly)' -and DTP_FLAG = 1 -and YYYYMM >=202401 -group by -YYYYMM,AUDIT_COD ) - --- 其他产品 的 cu 和 value -,fact_sales_dtp_other( -select -YYYYMM -,"DTPOTHERS" PACK_COD -,"DTPOTHERS" CORP_COD -,AUDIT_COD -,'' as PLATFORM_TYPE -,'' as STORE_NAME -,'' as STORE_TYPE -,'' as REGION_TYPE -,1 as PACK_FLAG -,2 as PROD_FLAG -,1 as DTP_FLAG -,sum(SALES_UNIT_CAL) SALES_UNIT_CAL -,sum(SALES_UNIT_CAL_LY) SALES_UNIT_CAL_LY -,sum(SALES_VALUE_CAL) SALES_VALUE_CAL -,sum(SALES_VALUE_CAL_LY) SALES_VALUE_CAL_LY -,sum(CONUTING_UNIT) CONUTING_UNIT -,sum(CONUTING_UNIT_LY) CONUTING_UNIT_LY -,'DTP(Quarterly)' as DATA_SOURCE -,'' as inst_code -,'' as cmps_flag -,'' as dept_name -,'' as prescription -,'' as prescription_ly -,'' as new_code -,'' as area -,'' as h_level -,'' as reimburse -,'' as reimburse_type -,'' as prescription_source -from dm.dm_tf_external_sales -where DTP_FLAG = 1 -and PACK_COD in (select PACK_COD from otherbrand) --其他部分 -and DATA_SOURCE = 'DTP(Quarterly)' -and YYYYMM >=202401 -group by -YYYYMM,AUDIT_COD) - -select -T0.YYYYMM -,t0.PACK_COD -,t0.CORP_COD -,t0.AUDIT_COD -,t0.PLATFORM_TYPE -,t0.STORE_NAME -,t0.STORE_TYPE -,t0.REGION_TYPE -,t0.PACK_FLAG -,t0.PROD_FLAG -,t0.DTP_FLAG -,t0.SALES_UNIT_CAL -,t0.SALES_UNIT_CAL_LY -,t0.SALES_VALUE_CAL -,t0.SALES_VALUE_CAL_LY -,t1.CONUTING_UNIT -,t1.CONUTING_UNIT_LY -,t0.DATA_SOURCE -,t0.inst_code -,t0.cmps_flag -,t0.dept_name -,t0.prescription -,t0.prescription_ly -,t0.new_code -,t0.area -,t0.h_level -,t0.reimburse -,t0.reimburse_type -,t0.prescription_source -from fact_sales_dtp_other t0 -left join ( -select -t1.yyyymm -,t1.audit_cod -,t1.pdot_counting_unit - t2.conuting_unit as CONUTING_UNIT -,t1.pdot_counting_unit_ly - t2.conuting_unit_ly as CONUTING_UNIT_LY -from dirct_cu t1 -left join fact_sales_dtp_4brand t2 on t1.yyyymm = t2.yyyymm and t1.audit_cod = t2.audit_cod -) t1 -on t0.audit_cod = t1.audit_cod and t0.yyyymm = t1.yyyymm --- select * from fact_sales_dtp_4brand \ No newline at end of file diff --git a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql:Zone.Identifier b/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bkp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql b/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql deleted file mode 100644 index 28771e8..0000000 --- a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql +++ /dev/null @@ -1,289 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE dm.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_COD STRING, --- CORP_COD STRING, --- AUDIT_COD STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(21,0), --- CONUTING_UNIT_LY DECIMAL(21,0), --- PDOT DECIMAL(21,0), --- PDOT_LY DECIMAL(21,0), --- DATA_SOURCE STRING, --- inst_code STRING, --- cmps_flag STRING, --- dept_name STRING, --- prescription STRING, --- prescription_ly STRING, --- new_code STRING, --- area STRING, --- h_level STRING, --- reimburse STRING, --- reimburse_type STRING, --- prescription_source STRING) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth'; --- -- 上面是生产环境location,下面是测试环境location --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth'; - - --- COMMAND ---------- - --- 这个jupyter核心逻辑是 --- 直接 cu - 4brand cu = other cu --- 其中 维度部分,通过DM.DM_TF_EXT_UNIONALL_SALES innerjoin other --- 其中 度量部分,通过 直接cu - 4brand cu - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RETAIL_DTP -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'DTP(Quarterly)' and t1.DTP_FLAG=1 --- and YYYYMM >=202501 - --- COMMAND ---------- - --- 所有的pack_code -create or replace temporary view all_egfr_pack -as -select MARKET,PACK_CODE from DM.DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING -where MARKET = 'EGFR TKI Market' -group by MARKET,PACK_CODE - - --- COMMAND ---------- - --- 4brand pack_code -create or replace temporary view 4brand -as -select - MARKET, - PACK_CODE -from - all_egfr_pack -where - pack_code IN - ( - SELECT - PACK_CODE - FROM - dm.dm_td_ext_retail_DTP_pack_property - WHERE - PROD_DESC_C in ('阿美乐','泰瑞沙','凯美纳','艾弗沙') - group BY - PACK_CODE - ) - - --- COMMAND ---------- - -create or replace temporary view otherbrand -as -select - PACK_CODE -from - all_egfr_pack -where - PACK_CODE not in ( select PACK_CODE from `4brand` group by PACK_CODE) -group by - PACK_CODE - - --- COMMAND ---------- - --- 这里是 直接 cu -create or replace temporary view dirct_cu -as - select - yyyymm, - replace(audit_key,'DTP(Quarterly)','') audit_cod, - cast(pdot_counting_unit as decimal ) pdot_counting_unit, - cast(pdot_counting_unit_ly as decimal ) pdot_counting_unit_ly - from dm.dm_tf_external_retail_special a - where yyyymm >=202401 - --- COMMAND ---------- - --- 这里是获取 4brand 的度量值部分 -create or replace temporary view fact_sales_dtp_4brand -as -select -YYYYMM, -AUDIT_CODE AS AUDIT_COD -,sum(PDOT) CONUTING_UNIT -,sum(PDOT_LY) CONUTING_UNIT_LY -,MAX(t2.MARKET) as MARKET -from RETAIL_DTP t1 -inner join 4brand t2 on t1.PACK_CODE = t2.PACK_CODE -where t1.DATA_SOURCE = 'DTP(Quarterly)' -and t1.MARKET = 'EGFR TKI Market' -and DTP_FLAG = 1 -and YYYYMM >=202401 -group by -YYYYMM,AUDIT_COD - - --- COMMAND ---------- - --- 这里是获取 other 的维度值部分 -create or replace temporary view fact_sales_dtp_other -as -select -YYYYMM -,"DTPOTHERS" PACK_COD -,"DTPOTHERS" CORP_COD -,AUDIT_CODE AS AUDIT_COD -,'' as PLATFORM_TYPE -,'' as STORE_NAME -,'' as STORE_TYPE -,'' as REGION_TYPE -,1 as PACK_FLAG -,2 as PROD_FLAG -,1 as DTP_FLAG -,sum(SALES_UNIT_CAL) SALES_UNIT_CAL -,sum(SALES_UNIT_CAL_LY) SALES_UNIT_CAL_LY -,sum(SALES_VALUE_CAL) SALES_VALUE_CAL -,sum(SALES_VALUE_CAL_LY) SALES_VALUE_CAL_LY -,sum(CONUTING_UNIT) CONUTING_UNIT -,sum(CONUTING_UNIT_LY) CONUTING_UNIT_LY -,'DTP(Quarterly)' as DATA_SOURCE -,'' as inst_code -,'' as cmps_flag -,'' as dept_name -,'' as prescription -,'' as prescription_ly -,'' as new_code -,'' as area -,'' as h_level -,'' as reimburse -,'' as reimburse_type -,'' as prescription_source -from DM.DM_TF_EXT_UNIONALL_SALES -where DTP_FLAG = 1 -and PACK_CODE in (select PACK_CODe from otherbrand) --其他部分 -and DATA_SOURCE = 'DTP(Quarterly)' -and YYYYMM >=202401 -group by -YYYYMM,AUDIT_CODE - - --- COMMAND ---------- - --- create or replace table dm.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth -insert overwrite table dm.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth -select -t1.MARKET -,'OTHERS' as KEY_COMPETITOR -,'Others' as CLASS -,T0.YYYYMM -,t0.PACK_COD -,t0.CORP_COD -,t0.AUDIT_COD -,t0.PLATFORM_TYPE -,t0.STORE_NAME -,t0.STORE_TYPE -,t0.REGION_TYPE -,t0.PACK_FLAG -,t0.PROD_FLAG -,t0.DTP_FLAG -,t0.SALES_UNIT_CAL -,t0.SALES_UNIT_CAL_LY -,t0.SALES_VALUE_CAL -,t0.SALES_VALUE_CAL_LY -,t1.CONUTING_UNIT -,t1.CONUTING_UNIT_LY -,t1.CONUTING_UNIT as pdot -,t1.CONUTING_UNIT_LY as pdot_ly -,t0.DATA_SOURCE -,t0.inst_code -,t0.cmps_flag -,t0.dept_name -,t0.prescription -,t0.prescription_ly -,t0.new_code -,t0.area -,t0.h_level -,t0.reimburse -,t0.reimburse_type -,t0.prescription_source -from fact_sales_dtp_other t0 -left join ( -select -t1.yyyymm -,t1.audit_cod -,t1.pdot_counting_unit - t2.conuting_unit as CONUTING_UNIT -,t1.pdot_counting_unit_ly - t2.conuting_unit_ly as CONUTING_UNIT_LY -,t2.market -from dirct_cu t1 -left join fact_sales_dtp_4brand t2 on t1.yyyymm = t2.yyyymm and t1.audit_cod = t2.audit_cod -) t1 -on t0.audit_cod = t1.audit_cod and t0.yyyymm = t1.yyyymm --- select * from fact_sales_dtp_4brand \ No newline at end of file diff --git a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql:Zone.Identifier b/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Merged_Data/dm_tf_exteranl_sales_merged_data_dtp_others_bymonth_bkp.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql deleted file mode 100644 index 7daeefe..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql +++ /dev/null @@ -1,461 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_org'; - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - ---------------------------------------------------------------------------------------- ---修改时间:20241105 ---修改人:Fanxujia ---修改内容: ---for AIA Dashboard,新增NSD、RSD、RSM、DSM、MR、TEAM等信息 ---仅AIA渠道的数据增加值,其他渠道都为空 ---------------------------------------------------------------------------------------- ----------------------------------------------------AIA------------------------------------------------------------------------------ ---AIA参考CHPA -------所有BU能看AIA - ---从销量表取到全部的机构、市场组合 -with ALL_AUDIT_Market as ( -select distinct NVL(t1.AUDIT_COD,'ROC') AUDIT_COD, -NVL(t2.market,'ALL Market') market -from dm.dm_ext_aia_sales t1 -left join dm.dm_td_ext_aia_market_pack_mapping t2 -on t1.pack_cod = t2.PACK_CODE -) -,pack_market as ( -select distinct PACK_CODE AS PACK_COD,market -from dm.dm_td_ext_aia_market_pack_mapping -) - ---获取城市与大区中心的mapping -,EXTERNAL_GEO as ( -select distinct -concat(city_c, '市') as city_c, -REGION_CENTER -from DM.DM_TD_EXTERNAL_GEO_TEMP -where DATA_SOURCE = 'AIA(Monthly)' -) ---CVH架构月 -,CVH_YM as ( -select key_value as yyyymm -from dm.dm_td_date_config -where key_code = 'pfmc_cvh' -) ---org表 -,org as ( -select distinct -t1.yyyymm, -t1.bu_category, -t1.bu_code, -t1.bu_name_en, -t1.sub_bu_code, -t1.sub_bu_name, -t1.REGION_CODE, -t1.region_name, -t1.rc_code, -t1.rc_name, -t1.district_name as team, -t1.mr_trty_code, -t1.nsd_kcode, -case when t1.nsd_name = 'Vacant' then t1.nsd_kcode else t1.nsd_name end as nsd_name, -t1.rsd_kcode, -case when t1.rsd_name = 'Vacant' then t1.rsd_kcode else t1.rsd_name end as rsd_name, -t1.rsm_kcode, -case when t1.rsm_name = 'Vacant' then t1.rsm_kcode else t1.rsm_name end as rsm_name, -t1.dsm_kcode, -case when t1.dsm_name = 'Vacant' then t1.dsm_kcode else t1.dsm_name end as dsm_name, -t1.mr_kcode, -case when t1.mr_name = 'Vacant' then t1.mr_kcode else t1.mr_name end as mr_name -from dm_td_org_temp t1 -inner join CVH_YM t2 -on t1.yyyymm = t2.yyyymm -) ---territory表 -,territory as ( -select distinct -t1.yyyymm, -t1.trty_code, -t1.inst_code, -t1.family_code -from dm.dm_td_sd_territory_indication t1 -inner join CVH_YM t2 -on t1.yyyymm = t2.yyyymm -where t1.bu not in ('CUBE','KA') -and ((t1.key_hp in (2) and t1.bu <> 'Retail' and t1.trty_code <>'Eagle') or t1.key_hp = 1)--chenwu 20250904 排除双考影响 -) ---将内部的Family_code转为外部的pack_cod -,inst_pack_previous as ( -select distinct -t1.yyyymm, -t1.trty_code, -t1.inst_code, -t2.city_name, -t5.market, -case when t2.area_code = 'SOUTH' then 'South' - when t2.area_code = 'WEST' then 'West' - when t2.area_code = 'CENTRAL' then 'Central' - when t2.area_code = 'NORTH' then 'North' - when t2.area_code = 'EAST' then 'East' -end as REGION_CENTER -from territory t1 -left join dwd.dwd_td_institution t2 -on t1.inst_code = t2.inst_code -left join cdw_dwd_dim_product_wide t3 -on t1.family_code = t3.prd_family_cd -left join dwd.dwd_td_imscode_azcode t4 -on t3.prd_brand_cd = t4.brandcode -left join pack_market t5 -on t4.ims_pack_cod = t5.PACK_COD -) -/* -20251207 Chenwu 把可定的架构复制到立普妥上,直接替换市场 'Atorvastatin Market' = 'Rosuvastatin Market' -*/ -,inst_pack as ( - select - yyyymm, - trty_code, - inst_code, - city_name, - market, - REGION_CENTER - from inst_pack_previous - union all - select - yyyymm, - trty_code, - inst_code, - city_name, - 'Atorvastatin Market' market, - REGION_CENTER - from inst_pack_previous - where market = 'Rosuvastatin Market' -) - ---------------------------------------------------------------------------------------- ---修改时间:20250220 ---修改人:Zhu chenwu ---修改内容: ---原本存在部分Eagel的机构和市场没有挂上架构,针对于没有挂上的部分,用dws.dws_td_eg_cityterritory中的city 和family的关系对应到市场挂上架构。 -----------------------------------------------m----------------------------------------- -,eagle_trty as -(---eagle的city 和 family 对应的 trtycode取数据时,如果city和family对应的trtycode 有多个,以p12,p11,p11为准,取第一个。 - select SP_TRTY_CD,CITY_CD,FAMILY_CD from ( - select * - ,row_number() over (partition by CITY_CD,FAMILY_CD order by PROJECT_CD desc) as num - from ( - select SP_TRTY_CD,CITY_CD,FAMILY_CD,PROJECT_CD from dws.dws_td_eg_cityterritory t1 - inner join CVH_YM t2 - on t1.YM = t2.yyyymm - where SP_TRTY_CD not in (select distinct trty_code from dm.dm_td_sd_territory_indication where bu = 'Eagle') - and PROJECT_CD in (select distinct project_code from DWS.dws_td_eg_project_instype WHERE ins_type='医院') - and cast(nvl(SALES_RATE,0) as decimal(20,6))<>'0.000000' - group by 1,2,3,4 - ) -) where num = 1 -) -,family_mapping as (--family和brand的mapping - select prd_family_cd,prd_brand_cd from cdw_dwd_dim_product_wide - group by 1,2 -) -,packcode_mapping as (--pack 和 brand的mapping - select brandcode,ims_pack_cod from dwd.dwd_td_imscode_azcode - group by 1,2 -) -,geo_mapping as (--city的中文 - select city_code,city_name from dm.dm_td_geography - group by 1,2 -) -,eagle_mapping (--eagle表中city和family所对应的 岗位编码 -select SP_TRTY_CD,city_name,market from ( - select - t1.SP_TRTY_CD - -- ,t1.FAMILY_CD - -- ,t3.prd_brand_cd - ,t4.ims_pack_cod - ,t5.city_name - from eagle_trty t1 - left join family_mapping t3 - on t1.FAMILY_CD = t3.prd_family_cd --转换family 成 brand - left join packcode_mapping t4 - on t3.prd_brand_cd = t4.brandcode - left join geo_mapping t5 - on t1.CITY_CD = t5.city_code) A -inner join pack_market B on A.ims_pack_cod = B.PACK_COD -group by 1,2,3 -) - -,audit_geo as (--audit的城市信息 -select AUDIT_COD,max(CITY_C) as city_c from DM.DM_TD_EXTERNAL_GEO -where DATA_SOURCE = 'AIA(Monthly)' -group by 1) - -,eagle_trty_with_city as ( --eagle中 挂上 部分机构归不到eagle的,按eagle的城市+品牌挂上 -select -t0.AUDIT_COD,t0.market -,t10.city_c -,eagle_mapping.SP_TRTY_CD from ALL_AUDIT_Market t0 -left join audit_geo t10 on t0.AUDIT_COD = t10.AUDIT_COD -left join eagle_mapping on eagle_mapping.city_name = t10.city_c and eagle_mapping.market = t0.market -where eagle_mapping.SP_TRTY_CD is not null -group by 1,2,3,4) - -insert overwrite dm.DM_TD_EXT_AIA_ORG ( - REGION_CODE, - region_name_en, - rc_code, - rc_name_en, - RegionCenter, - AUDIT_COD, - MARKET, - bu_category, - bu_name_en, - sub_bu_name, - sub_bu_code_auth, - bu_code_auth, - DATA_SOURCE, - REGION_RATIO, - RSM_Name, - RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME - ) - -SELECT distinct - COALESCE(t2.REGION_CODE,t6.REGION_CODE,'ROC') as REGION_CODE, - COALESCE(t2.region_name,t6.region_name,'ROC') as region_name_en, - COALESCE(t2.rc_code,t6.rc_code,'ROC') as rc_code, - COALESCE(t2.rc_name,t6.rc_name,'ROC') as rc_name_en, - COALESCE(t1.REGION_CENTER,t4.REGION_CENTER,t7.REGION_CENTER,'') as RegionCenter, - t0.AUDIT_COD, - t0.MARKET, - COALESCE(t2.bu_category,t6.bu_category,'') as bu_category, - COALESCE(t2.bu_name_en,t6.bu_name_en,'') as bu_name_en, - COALESCE(t2.sub_bu_name,t6.sub_bu_name,'') as sub_bu_name, - COALESCE(t2.sub_bu_code,t6.sub_bu_code,'') as sub_bu_code_auth, - concat(COALESCE(t2.bu_code,t6.bu_code,''),'AIA(Monthly)') as bu_code_auth, - 'AIA(Monthly)' as DATA_SOURCE, - 1 REGION_RATIO, - COALESCE(t2.rsm_name,t6.rsm_name,'Vacant') as rsm_name, - COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as RC_Name, - COALESCE(t2.team,t6.team,'ROC') as team, - COALESCE(t2.mr_trty_code,t6.mr_trty_code,'Vacant') as mr_trty_code, - COALESCE(t2.nsd_kcode,t6.nsd_kcode,'Vacant') as nsd_kcode, - COALESCE(t2.nsd_name,t6.nsd_name,'Vacant') as nsd_name, - COALESCE(t2.rsd_kcode,t6.rsd_kcode,'Vacant') as rsd_kcode, - COALESCE(t2.rsd_name,t6.rsd_name,'Vacant') as rsd_name, - COALESCE(t2.rsm_kcode,t6.rsm_kcode,'Vacant') as rsm_kcode, - COALESCE(t2.dsm_kcode,t6.dsm_kcode,'Vacant') as dsm_kcode, - COALESCE(t2.dsm_name,t6.dsm_name,'Vacant') as dsm_name, - COALESCE(t2.mr_kcode,t6.mr_kcode,'Vacant') as mr_kcode, - COALESCE(t2.mr_name,t6.mr_name,'Vacant') as mr_name --- ,t5.SP_TRTY_CD -from ALL_AUDIT_Market t0 -left join inst_pack t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -left join org t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -left join EXTERNAL_GEO t4 -on t1.city_name = t4.city_c - -left join eagle_trty_with_city t5 -on t0.AUDIT_COD = t5.AUDIT_COD -and t0.market = t5.market and t1.inst_code is null -left join org t6 -on t5.SP_TRTY_CD = t6.mr_trty_code -left join EXTERNAL_GEO t7 -on t5.city_c = t7.city_c - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_AIA_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) -insert into table dm.DM_TD_EXT_AIA_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'AIA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_AIA_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_AIA_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql deleted file mode 100644 index 507257d..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql +++ /dev/null @@ -1,239 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_org'; - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - -----------------------------------------------------CHC------------------------------------------------------------------------------ ------------只有chc的人能看chc -insert overwrite dm.DM_TD_EXT_CHC_ORG -(REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -SELECT DISTINCT T1.REGION_CODE,T1.region_name,T1.rc_code,T1.rc_name,T4.REGION_CENTER RegionCenter,T4.AUDIT_COD,T3.MARKET,T1.bu_category,T1.bu_name_en,T1.sub_bu_name,T1.sub_bu_code sub_bu_code_auth,concat(T1.bu_code,'CHC(Quarterly)') bu_code_auth,T4.DATA_SOURCE,1 REGION_RATIO,t1.RSM_Name,t1.rsd_name, -'' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -from dm_td_org_temp t1 -left join( - select distinct - t1.yyyymm, - t1.trty_code, - t2.city_name, - t4.ims_prod_cod, - t4.ims_pack_cod - from dm.dm_td_sd_territory_indication t1 - left join dwd.dwd_td_institution t2 on t1.inst_code=t2.inst_code - left join cdw_dwd_dim_product_wide t3 on t3.prd_family_cd=t1.family_code - left join dwd.dwd_td_imscode_azcode t4 on t3.prd_brand_cd=t4.brandcode - where t1.bu not in ('CUBE','KA') - and t1.key_hp<>3 --chenwu 20250904 排除双考影响 -)t2 on t2.trty_code= t1.mr_trty_code and t2.yyyymm=t1.yyyymm -left join dws.dws_ims_td_market t3 on t2.ims_pack_cod=t3.pack_cod -left join DM.dm_td_external_geo_temp T4 on t2.city_name=concat(t4.city_c,'市') AND T4.DATA_SOURCE = 'CHC(Quarterly)' ---使用和performance cvh 的org架构 -where t1.yyyymm in( - select key_value from dm.dm_td_date_config where key_code='pfmc_cvh') - and t3.market is not null and t4.audit_cod is not null and t1.bu_name_en = 'CHC' - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_CHC_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.DM_TD_EXT_CHC_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'CHC(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_CHC_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_CHC_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql deleted file mode 100644 index a5a7c5b..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql +++ /dev/null @@ -1,237 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_org'; - --- COMMAND ---------- - -----------------------------------------------------chpa------------------------------------------------------------------------------ -------所有BU能看CHPA -insert overwrite DM.DM_TD_EXT_CHPA_ORG ( - REGION_CODE, - region_name_en, - rc_code, - rc_name_en, - RegionCenter, - AUDIT_COD, - MARKET, - bu_category, - bu_name_en, - sub_bu_name, - sub_bu_code_auth, - bu_code_auth, - DATA_SOURCE, - REGION_RATIO, - RSM_Name, - RC_Name, - TEAM, - MR_TRTY_CODE, - NSD_KCODE, - NSD_NAME, - RSD_KCODE, - RSD_NAME, - RSM_KCODE, - DSM_KCODE, - DSM_NAME, - MR_KCODE, - MR_NAME - ) -SELECT DISTINCT -CASE WHEN bu_category IN ('All Channel','EC') then 'ROC' - when REGION_CODE IN ('Other Low Tiers', 'Non AZ Region') THEN 'ROC' - ELSE REGION_CODE - END REGION_CODE, -CASE WHEN bu_category IN ('All Channel','EC') then 'ROC' - when region_name IN ('Other Low Tiers', 'Non AZ Region') THEN 'ROC' - ELSE region_name - END region_name, -CASE WHEN bu_category IN ('All Channel','EC') then 'ROC' - when rc_code IN ('Other Low Tiers', 'Non AZ Region') THEN 'ROC' - ELSE rc_code - END rc_code, -CASE WHEN bu_category IN ('All Channel','EC') then 'ROC' - when rc_name IN ('Other Low Tiers', 'Non AZ Region') THEN 'ROC' - ELSE rc_name - END rc_name, - RegionCenter, - AUDIT_COD, - MARKET, - bu_category, - bu_name_en, - sub_bu_name, - sub_bu_code_auth, - concat(bu_code_auth, 'IQVIA-CHPA(Monthly)') bu_code_auth, - 'IQVIA-CHPA(Monthly)' DATA_SOURCE, - 1 REGION_RATIO, - rsm_name, - rsd_name, - '' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -FROM - DM.DM_ims_TD_ORG -WHERE - MARKET <> 'IMS ALL Market' - and AUDIT_COD is not null - and ORG_KEY is not null ---AND bu_category NOT IN ('All Channel','EC') - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_CHPA_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.DM_TD_EXT_CHPA_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_CHPA_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_CHPA_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql deleted file mode 100644 index 34aa704..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql +++ /dev/null @@ -1,220 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_org'; - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - -----------------------------------------------------county------------------------------------------------------------------------------ ------------------------除了Eagle、CHC、Retail、EC的人都能看 -insert overwrite table DM.DM_TD_EXT_COUNTY_ORG -(REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -SELECT DISTINCT '' REGION_CODE,'' region_name_en,'' rc_code,'' rc_name_en,'' RegionCenter,A.AUDIT_COD,B.MARKET,C.bu_category,C.bu_name_en,C.sub_bu_name,C.sub_bu_code sub_bu_code_auth,concat(c.bu_code,'IQVIA-COUNTY(Quarterly)') bu_code_auth,A.DATA_SOURCE,1 REGION_RATIO,'','', -'' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -FROM DM.dm_tf_external_sales A -INNER JOIN DM.dm_td_external_market_pack_mapping B ON A.PACK_COD = B.PACK_COD -AND A.DATA_SOURCE = B.DATA_SOURCE -INNER JOIN -( - SELECT DISTINCT '' bu_code,'' sub_bu_code,'' sub_bu_name,'' bu_category,'' bu_name_en -----------目前权限控制到BU,因此需要BU有值。 - FROM dm_td_org_temp C - WHERE C.yyyymm = (select key_value from dm.dm_td_date_config where key_code='pfmc_cvh') - AND C.BU_NAME_EN NOT IN ('Eagle','CHC','EC','Retail') -) C -WHERE A.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_COUNTY_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.DM_TD_EXT_COUNTY_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,DM_TD_EXT_CHPA_ORG ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_COUNTY_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_COUNTY_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql deleted file mode 100644 index aa37223..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql +++ /dev/null @@ -1,219 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_org'; - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - -----------------------------------------------------------EC---------------------------------------------------------- -insert overwrite dm.DM_TD_EXT_EC_ORG( - REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -SELECT DISTINCT '' REGION_CODE,'' region_name_en,'' rc_code,'' rc_name_en,'' RegionCenter,A.AUDIT_COD,B.MARKET,C.bu_category,C.bu_name_en,C.sub_bu_name,C.sub_bu_code sub_bu_code_auth,concat(c.bu_code,'EC(Monthly)') bu_code_auth,A.DATA_SOURCE,1 REGION_RATIO,'','', -'' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -FROM DM.dm_tf_external_sales A -INNER JOIN DM.dm_td_external_market_pack_mapping B ON A.PACK_COD = B.PACK_COD -AND A.DATA_SOURCE = B.DATA_SOURCE -INNER JOIN -( - SELECT DISTINCT '' bu_code,'' sub_bu_code,'' sub_bu_name,'' bu_category,'' bu_name_en - FROM dm_td_org_temp C - WHERE C.yyyymm = (select key_value from dm.dm_td_date_config where key_code='pfmc_cvh') - AND C.BU_NAME_EN = 'Eagle' -) C -WHERE A.DATA_SOURCE = 'EC(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_EC_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.DM_TD_EXT_EC_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'EC(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_EC_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_EC_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql deleted file mode 100644 index 0eaa4ea..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql +++ /dev/null @@ -1,409 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_org'; - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 -WHERE rc_name NOT LIKE '%B2C%' - --- COMMAND ---------- - -----------------------------------------------------Retail----------------------------------------------------------------------- -insert overwrite DM.DM_TD_EXT_RETAIL_ORG -(REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -with -market_ta ( - select - MARKET,case when TA = 'ONCO' then 'OBU' else 'Retail' end as subbu - from dm.dm_td_external_market_ta - where DATA_SOURCE = 'Retail(Quarterly)' - group by 1,2 -) - -,pack_market as ( -select distinct a.pack_cod,a.market,b.subbu - from dm.dm_td_external_market_pack_mapping a -left join market_ta b on a.MARKET = b.market -where data_source = 'Retail(Quarterly)' -) -,external_geo as ( -select distinct province_c,audit_cod,REGION_CENTER -from dm.dm_td_external_geo_temp -where DATA_SOURCE = 'Retail(Quarterly)' -) -,YM_CVH as ( -select key_value from dm.dm_td_date_config - where key_code = 'pfmc_cvh' -) -,td_org as ( -select distinct -REGION_CODE, -region_name, -rc_code, -rc_name, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code, -bu_code, -RSM_Name, -rsd_name, -mr_trty_code, -rsm_trty_code -from dm_td_org_temp t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -) -,territory as ( -select distinct -trty_code, -inst_code, -family_code, -bu -from dm.dm_td_sd_territory_indication t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -where bu in ('Retail') --20260320 chenwu Retail数据源的架构,去掉OBU,只保留Retail -and t1.key_hp<>3 --chenwu 20250904 排除双考影响 -) -,province_market as ( -select t1.trty_code, -t2.province_name, -t5.market -from territory t1 -left join dwd.dwd_td_institution t2 -on t1.inst_code = t2.inst_code -left join cdw_dwd_dim_product_wide t3 -on t1.family_code = t3.prd_family_cd -left join dwd.dwd_td_imscode_azcode t4 -on t3.prd_brand_cd = t4.brandcode -left join pack_market t5 -on t4.ims_pack_cod = t5.pack_cod -where t1.bu=t5.subbu -) - - -SELECT - DISTINCT t1.REGION_CODE REGION_CODE, - t1.region_name, - t1.rc_code, - t1.rc_name, - t3.REGION_CENTER RegionCenter, - t3.AUDIT_COD, - t2.MARKET, - t1.bu_category, - t1.bu_name_en, - t1.sub_bu_name, - t1.sub_bu_code sub_bu_code_auth, - concat(t1.bu_code, 'Retail(Quarterly)') bu_code_auth, - 'Retail(Quarterly)' as DATA_SOURCE, - 1 REGION_RATIO, - t1.RSM_Name, - t1.rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -from td_org t1 -inner join province_market t2 -on t1.mr_trty_code = t2.trty_code -inner join external_geo t3 on t2.province_name = t3.province_c -where t2.market is not null - and t3.audit_cod is not null -union all -SELECT DISTINCT - 'ROC' as REGION_CODE, - 'ROC' as region_name_en, - 'ROC' as rc_code, - 'ROC' as rc_name_en, - 'Other Low Tiers' as RegionCenter, - 'ROC' AUDIT_COD, - t2.MARKET, - 'All Channel' as bu_category, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as bu_name_en, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_name, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_code_auth, - 'Retail(Quarterly)' as bu_code_auth, - 'Retail(Quarterly)' as DATA_SOURCE, - 1 as REGION_RATIO, - 'Vacant' as RSM_Name, - 'Vacant' as rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -FROM pack_market t2 ---特殊处理部分 -union all -SELECT - DISTINCT t1.REGION_CODE REGION_CODE, - t1.region_name, - t1.rc_code, - t1.rc_name, - t3.REGION_CENTER RegionCenter, - t3.AUDIT_COD, - "Atorvastatin Market" as MARKET, - t1.bu_category, - t1.bu_name_en, - t1.sub_bu_name, - t1.sub_bu_code sub_bu_code_auth, - concat(t1.bu_code, 'Retail(Quarterly)') bu_code_auth, - 'Retail(Quarterly)' as DATA_SOURCE, - 1 REGION_RATIO, - t1.RSM_Name, - t1.rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -from td_org t1 -inner join province_market t2 -on t1.mr_trty_code = t2.trty_code -inner join external_geo t3 on t2.province_name = t3.province_c -where t2.market is not null - and t3.audit_cod is not null - and t2.market = 'Rosuvastatin Market' - --- COMMAND ---------- - --- DBTITLE 1,DTP -----------------------------------------------------Retail----------------------------------------------------------------------- -insert into DM.DM_TD_EXT_RETAIL_ORG -(REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -with -market_ta ( - select - MARKET,case when TA = 'ONCO' then 'OBU' else 'Retail' end as subbu - from dm.dm_td_external_market_ta - where DATA_SOURCE = 'DTP(Quarterly)' - group by 1,2 -) - -,pack_market as ( -select distinct a.pack_cod,a.market,b.subbu - from dm.dm_td_external_market_pack_mapping a -left join market_ta b on a.MARKET = b.market -where data_source = 'DTP(Quarterly)' -) -,external_geo as ( -select distinct province_c,audit_cod,REGION_CENTER -from dm.dm_td_external_geo_temp -where DATA_SOURCE = 'DTP(Quarterly)' -) -,YM_CVH as ( -select key_value from dm.dm_td_date_config - where key_code = 'pfmc_cvh' -) -,td_org as ( -select distinct -REGION_CODE, -region_name, -rc_code, -rc_name, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code, -bu_code, -RSM_Name, -rsd_name, -mr_trty_code, -rsm_trty_code -from dm_td_org_temp t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -) -,territory as ( -select distinct -trty_code, -inst_code, -family_code, -bu -from dm.dm_td_sd_territory_indication t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -where bu in ('OBU','RIN') --20260320 chenwu DTP数据源的架构,只保留OBU和RIN -and t1.key_hp<>3 --chenwu 20250904 排除双考影响 -) -,province_market as ( -select t1.trty_code, -t2.province_name, -t5.market -from territory t1 -left join dwd.dwd_td_institution t2 -on t1.inst_code = t2.inst_code -left join cdw_dwd_dim_product_wide t3 -on t1.family_code = t3.prd_family_cd -left join dwd.dwd_td_imscode_azcode t4 -on t3.prd_brand_cd = t4.brandcode -left join pack_market t5 -on t4.ims_pack_cod = t5.pack_cod -where t1.bu=t5.subbu -) - - -SELECT - DISTINCT t1.REGION_CODE REGION_CODE, - t1.region_name, - t1.rc_code, - t1.rc_name, - t3.REGION_CENTER RegionCenter, - t3.AUDIT_COD, - t2.MARKET, - t1.bu_category, - t1.bu_name_en, - t1.sub_bu_name, - t1.sub_bu_code sub_bu_code_auth, - concat(t1.bu_code, 'DTP(Quarterly)') bu_code_auth, - 'DTP(Quarterly)' as DATA_SOURCE, - 1 REGION_RATIO, - t1.RSM_Name, - t1.rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -from td_org t1 -inner join province_market t2 -on t1.mr_trty_code = t2.trty_code -inner join external_geo t3 on t2.province_name = t3.province_c -where t2.market is not null - and t3.audit_cod is not null -union all -SELECT DISTINCT - 'ROC' as REGION_CODE, - 'ROC' as region_name_en, - 'ROC' as rc_code, - 'ROC' as rc_name_en, - 'Other Low Tiers' as RegionCenter, - 'ROC' AUDIT_COD, - t2.MARKET, - 'All Channel' as bu_category, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as bu_name_en, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_name, - CASE WHEN T2.subbu = 'OBU' THEN 'OBU' ELSE 'Retail' END as sub_bu_code_auth, - 'DTP(Quarterly)' as bu_code_auth, - 'DTP(Quarterly)' as DATA_SOURCE, - 1 as REGION_RATIO, - 'Vacant' as RSM_Name, - 'Vacant' as rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -FROM pack_market t2 \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_RETAIL_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql deleted file mode 100644 index 5768fab..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql +++ /dev/null @@ -1,344 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_org'; - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - ------------------------------------------------------------------------------------------------------- ---修改时间:20241113 ---修改人:Fanxujia ---修改内容: ---THC增加省份数据,因此增加架构数据。只需要Eagle的架构 ------------------------------------------------------------------------------------------------------- -----------------------------------------------------THC------------------------------------------------------------------------------ ---------只有eagle的人能看THC -insert overwrite dm.DM_TD_EXT_THC_ORG -(REGION_CODE,region_name_en,rc_code,rc_name_en,RegionCenter,AUDIT_COD,MARKET,bu_category,bu_name_en,sub_bu_name,sub_bu_code_auth,bu_code_auth,DATA_SOURCE,REGION_RATIO,RSM_Name,RC_Name, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -with pack_market as ( -select distinct pack_cod,market - from dm.dm_td_external_market_pack_mapping -where data_source = 'THC(Quarterly)' -) -,external_geo as ( -select distinct province_c,audit_cod,REGION_CENTER -from dm.dm_td_external_geo_temp -where DATA_SOURCE = 'THC(Quarterly)' -) -,YM_CVH as ( -select key_value from dm.dm_td_date_config - where key_code = 'pfmc_cvh' -) -,td_org as ( -select distinct -REGION_CODE, -region_name, -rc_code, -rc_name, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code, -bu_code, -RSM_Name, -rsd_name, -mr_trty_code, -rsm_trty_code -from dm_td_org_temp t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -) -,territory as ( -select distinct -trty_code, -inst_code, -family_code -from dm.dm_td_sd_territory_indication t1 -inner join YM_CVH t2 -on t1.yyyymm = t2.key_value -where bu = 'Eagle' -and t1.key_hp<>3 --chenwu 20250904 排除双考影响 -) -,province_market as ( -select t1.trty_code, -t2.province_name, -t5.market -from territory t1 -left join dwd.dwd_td_institution t2 -on t1.inst_code = t2.inst_code -left join cdw_dwd_dim_product_wide t3 -on t1.family_code = t3.prd_family_cd -left join dwd.dwd_td_imscode_azcode t4 -on t3.prd_brand_cd = t4.brandcode -left join pack_market t5 -on t4.ims_pack_cod = t5.pack_cod -) -,national_sales as ( -select distinct -PACK_COD, -AUDIT_COD -from DM.dm_tf_external_sales_thc -where DATA_SOURCE = 'THC(Quarterly)' -) - -SELECT - DISTINCT t1.REGION_CODE, - t1.region_name, - t1.rc_code, - t1.rc_name, - t3.REGION_CENTER RegionCenter, - t3.AUDIT_COD, - t2.MARKET, - t1.bu_category, - t1.bu_name_en, - t1.sub_bu_name, - t1.sub_bu_code sub_bu_code_auth, - concat(t1.bu_code, 'THC(Quarterly)') bu_code_auth, - 'THC(Quarterly)' as DATA_SOURCE, - 1 REGION_RATIO, - t1.RSM_Name, - t1.rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -from td_org t1 -inner join province_market t2 -on t1.mr_trty_code = t2.trty_code -inner join external_geo t3 on t2.province_name = t3.province_c -where t2.market is not null - and t3.audit_cod is not null -union all -SELECT DISTINCT - '' as REGION_CODE, - '' as region_name_en, - '' as rc_code, - '' as rc_name_en, - '' as RegionCenter, - t1.AUDIT_COD, - t2.MARKET, - '' as bu_category, - '' as bu_name_en, - '' as sub_bu_name, - '' as sub_bu_code_auth, - 'THC(Quarterly)' as bu_code_auth, - 'THC(Quarterly)' as DATA_SOURCE, - 1 as REGION_RATIO, - '' as RSM_Name, - '' as rsd_name, - '' as TEAM, - '' as MR_TRTY_CODE, - '' as NSD_KCODE, - '' as NSD_NAME, - '' as RSD_KCODE, - '' as RSD_NAME, - '' as RSM_KCODE, - '' as DSM_KCODE, - '' as DSM_NAME, - '' as MR_KCODE, - '' as MR_NAME -FROM national_sales t1 -INNER JOIN pack_market t2 -ON t1.PACK_COD = t2.PACK_COD - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_THC_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.DM_TD_EXT_THC_ORG -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'THC(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.DM_TD_EXT_THC_ORG as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_THC_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql b/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql deleted file mode 100644 index 249342e..0000000 --- a/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql +++ /dev/null @@ -1,283 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_ORG ( --- REGION_CODE STRING, --- REGION_NAME_EN STRING, --- RSM_NAME STRING, --- RC_CODE STRING, --- RC_NAME_EN STRING, --- RC_NAME STRING, --- REGIONCENTER STRING, --- AUDIT_COD STRING, --- MARKET STRING, --- BU_CATEGORY STRING, --- BU_NAME_EN STRING, --- SUB_BU_NAME STRING, --- SUB_BU_CODE_AUTH STRING, --- BU_CODE_AUTH STRING, --- DATA_SOURCE STRING, --- REGION_RATIO FLOAT, --- TEAM STRING, --- MR_TRTY_CODE STRING, --- NSD_KCODE STRING, --- NSD_NAME STRING, --- RSD_KCODE STRING, --- RSD_NAME STRING, --- RSM_KCODE STRING, --- DSM_KCODE STRING, --- DSM_NAME STRING, --- MR_KCODE STRING, --- MR_NAME STRING) --- USING delta --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_org'; - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - --- 20260130 由于DM.dm_td_org数据需要转换,新增这个CELL。 -create or replace temporary view dm_td_org_temp -as -SELECT org_key,mr_trty_tag,district_code,rsm_name,rc_name,p2.region_name,p2.rsd_kcode,p2.rsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_code = 'PC12' then 'PC09' else p2.bu_code end bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_report = 'EC' THEN 'Retail' ELSE p2.bu_report end bu_report - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_code = 'NA27' then 'NA06' else p2.sub_bu_code end sub_bu_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name = 'EC' then 'Retail' else p2.sub_bu_name end sub_bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.sub_bu_name_en = 'EC' then 'Retail' else p2.sub_bu_name_en end sub_bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC' then 'Retail' else p2.bu_name end bu_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name_en = 'EC' then 'Retail' else p2.bu_name_en end bu_name_en - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_kcode = 'ND_EC0001_V' then 'KSGX559' else p2.nsd_kcode end nsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bu_name = 'EC'and p2.nsd_name = 'Vacant' then '李白杨' else p2.nsd_name end nsd_name - ,CASE WHEN p2.yyyymm >= '202601' and p2.nsd_trty_code = 'ND_EC0001' then 'ND_RT0001' else p2.nsd_trty_code end nsd_trty_code - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_kcode = 'VP_EC0001_V' then 'VP_RT0001_V' else p2.bsd_kcode end bsd_kcode - ,CASE WHEN p2.yyyymm >= '202601' and p2.bsd_trty_code = 'VP_EC0001' then 'VP_RT0001' else p2.bsd_trty_code end bsd_trty_code - ,mr_kcode,dsm_trty_code,rsm_trty_code,dsm_kcode,rsd_trty_code - ,district_name,dsm_name,mr_name,yyyymm,mr_trty_code,REGION_CODE,rc_code,bu_category,rsm_kcode -FROM DM.dm_td_org P2 - --- COMMAND ---------- - ----------------------------------------------------XIEHE------------------------------------------------------------------------------ ---XIEHE参考CHPA -------所有BU能看XIEHE -insert overwrite dm.dm_td_ext_xiehe_org ( - REGION_CODE, - region_name_en, - rc_code, - rc_name_en, - RegionCenter, - AUDIT_COD, - MARKET, - bu_category, - bu_name_en, - sub_bu_name, - sub_bu_code_auth, - bu_code_auth, - DATA_SOURCE, - REGION_RATIO, - RSM_Name, - RC_Name, - TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME - ) -SELECT - DISTINCT t1.REGION_CODE, - t1.region_name, - t1.rc_code, - t1.rc_name, - t4.REGION_CENTER RegionCenter, - t4.AUDIT_COD, - t3.MARKET, - t1.bu_category, - t1.bu_name_en, - t1.sub_bu_name, - t1.sub_bu_code sub_bu_code_auth, - concat(t1.bu_code, 'XH Data(Quarterly)') bu_code_auth, - 'XH Data(Quarterly)' DATA_SOURCE, - 1 REGION_RATIO, - t1.RSM_Name, - t1.rsd_name, - '' as TEAM, -'' as MR_TRTY_CODE, -'' as NSD_KCODE, -'' as NSD_NAME, -'' as RSD_KCODE, -'' as RSD_NAME, -'' as RSM_KCODE, -'' as DSM_KCODE, -'' as DSM_NAME, -'' as MR_KCODE, -'' as MR_NAME -from - dm_td_org_temp t1 - left join( - select - distinct A.yyyymm, - A.trty_code, - B.city_name, - D.ims_prod_cod, - D.ims_pack_cod - from - dm.dm_td_sd_territory_indication A - left join dwd.dwd_td_institution B on A.inst_code = B.inst_code - left join cdw_dwd_dim_product_wide C on C.prd_family_cd = A.family_code - left join dwd.dwd_td_imscode_azcode D on C.prd_brand_cd = D.brandcode - where A.bu not in ('CUBE','KA') - and A.key_hp<>3 --chenwu 20250904 排除双考影响 - ) t2 on t2.trty_code = t1.mr_trty_code - and t2.yyyymm = t1.yyyymm - left join dws.dws_ims_td_market t3 on t2.ims_pack_cod = t3.pack_cod - left join DM.DM_TD_EXTERNAL_GEO_TEMP t4 on t2.city_name = concat(t4.city_c, '市') - AND t4.DATA_SOURCE = 'XH Data(Quarterly)' ---使用和performance cvh 的org架构 -where - t1.yyyymm in( - select - key_value - from - dm.dm_td_date_config - where - key_code = 'pfmc_cvh' - ) - and t3.market is not null - and t4.audit_cod is not null - --- COMMAND ---------- - --- DBTITLE 1,add ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分audit_cod在事实表有销量,但是在维度表没有这个audit_cod,导致销量缺失。 ---因此需要从事实表补全这部分audit_cod -with sales as ( -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales -union -select distinct PACK_COD,AUDIT_COD,DATA_SOURCE from dm.dm_tf_external_sales_thc -) -,market_pack as ( -select distinct PACK_COD,MARKET,DATA_SOURCE from dm.dm_td_external_market_pack_mapping -) -,org as ( -select distinct AUDIT_COD,MARKET,DATA_SOURCE from dm.DM_TD_EXT_XIEHE_ORG -) -,tmp_org as ( -select distinct a.AUDIT_COD,b.MARKET,a.DATA_SOURCE -from sales a -left join market_pack b on a.PACK_COD = b.PACK_COD and a.DATA_SOURCE = b.DATA_SOURCE -left join org c on a.DATA_SOURCE = c.DATA_SOURCE and a.AUDIT_COD = c.AUDIT_COD and b.MARKET = c.MARKET -where C.AUDIT_COD IS NULL -) - -insert into table dm.dm_td_ext_xiehe_org -( -REGION_CODE, -region_name_en, -RSM_Name, -rc_code, -rc_name_en, -RC_Name, -RegionCenter, -AUDIT_COD, -MARKET, -bu_category, -bu_name_en, -sub_bu_name, -sub_bu_code_auth, -bu_code_auth, -DATA_SOURCE, -REGION_RATIO, -TEAM, -MR_TRTY_CODE, -NSD_KCODE, -NSD_NAME, -RSD_KCODE, -RSD_NAME, -RSM_KCODE, -DSM_KCODE, -DSM_NAME, -MR_KCODE, -MR_NAME -) -select -'ROC' as REGION_CODE, -'ROC' as region_name_en, -'Vacant' as RSM_Name, -'ROC' as rc_code, -'ROC' as rc_name_en, -'Vacant' as RC_Name, -null as RegionCenter, -AUDIT_COD, -MARKET, -null as bu_category, -null as bu_name_en, -null as sub_bu_name, -null as sub_bu_code_auth, -DATA_SOURCE as bu_code_auth, -DATA_SOURCE, -1 as REGION_RATIO, -'ROC' as TEAM, -'Vacant' as MR_TRTY_CODE, -'Vacant' as NSD_KCODE, -'Vacant' as NSD_NAME, -'Vacant' as RSD_KCODE, -'Vacant' as RSD_NAME, -'Vacant' as RSM_KCODE, -'Vacant' as DSM_KCODE, -'Vacant' as DSM_NAME, -'Vacant' as MR_KCODE, -'Vacant' as MR_NAME -from tmp_org -where DATA_SOURCE = 'XH Data(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,hidden_market ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.dm_td_ext_xiehe_org as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE \ No newline at end of file diff --git a/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql:Zone.Identifier b/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/ORG/DM_TD_EXT_XIEHE_ORG.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/OTHERS/01 dm_td_report_url.sql b/EXTERNAL/OTHERS/01 dm_td_report_url.sql deleted file mode 100644 index 1768417..0000000 --- a/EXTERNAL/OTHERS/01 dm_td_report_url.sql +++ /dev/null @@ -1,11 +0,0 @@ --- Databricks notebook source ----------------------------------------------------------- ---修改时间:20241213 ---修改人:Fanxujia ---修改内容: ---新增配置表,里面是MA报告以及AIA报告的url链接,用于PBI上做跳转的链接 ----------------------------------------------------------- -insert overwrite table dm.dm_td_report_url -(ReportName,URL) -select reportname,url -from dwd.dwd_gnd_ims_ma_aia_redirection diff --git a/EXTERNAL/OTHERS/01 dm_td_report_url.sql:Zone.Identifier b/EXTERNAL/OTHERS/01 dm_td_report_url.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/OTHERS/01 dm_td_report_url.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql b/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql deleted file mode 100644 index 31909d3..0000000 --- a/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql +++ /dev/null @@ -1,110 +0,0 @@ --- Databricks notebook source --- DBTITLE 1,DDL语句定义表 --- CREATE OR REPLACE TABLE dwd.dwd_ext_email_warning ( --- data_source STRING COMMENT '数据源名称', --- max_data STRING COMMENT '数据源最新的日期,YYYYMM格式', --- record_date STRING COMMENT '记录数据的日期', --- etl_timestamp TIMESTAMP COMMENT 'ETL运行时间') --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWD/dwd_ext_email_warning' --- ; --- CREATE OR REPLACE TABLE dws.dws_ext_email_warning ( --- data_source STRING COMMENT '数据源名称', --- max_data STRING COMMENT '数据源最新的日期,YYYYMM格式', --- if_update INT COMMENT '0代表没有更新,1代表更新过数据源', --- etl_timestamp TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_ext_email_warning' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### dwd层 - --- COMMAND ---------- - --- DBTITLE 1,删除今天的数据并插入最新数据 -delete from dwd.dwd_ext_email_warning -where record_date = date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd');--删除今天的输入记录 - -insert into dwd.dwd_ext_email_warning -select - data_source - ,max(yyyymm) max_data --数据源最大日期 - ,date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd') record_date - ,from_utc_timestamp( current_timestamp,'UTC+8') etl_timestamp -from dm.dm_tf_ext_unionall_sales -group by DATA_SOURCE - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### dws层 - --- COMMAND ---------- - --- DBTITLE 1,计算出各数据是否更新了数据 -create or replace temporary view temp_datasource_update_info as -/* -1 获取今天日期的各数据源的记录情况 -2 获取今天之前的上一个周期记录情况 -3 今天日期的数据源最新数据月份 与 上一个周期的数据源最新数据月份 是否相等 -*/ -with -today_record_date ( - select - data_source - ,max_data - ,record_date - from dwd.dwd_ext_email_warning - where record_date = date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd') --取今天的数据 -) -,previous_record_date ( - select - data_source - ,max_data - ,record_date - from - ( - select - data_source - ,max_data - ,record_date - ,row_number() over( partition by data_source order by record_date desc ) num - from dwd.dwd_ext_email_warning - where record_date <> date_format( from_utc_timestamp( current_timestamp,'UTC+8'),'yyyy-MM-dd') - ) - where num = 1 -) -select - t1.data_source - ,t1.max_data - ,case when t1.max_data = t2.max_data then 0 else 1 end as if_update - ,from_utc_timestamp( current_timestamp,'UTC+8') etl_timestamp -from today_record_date t1 -inner join previous_record_date t2 on t1.data_source = t2.data_source - - --- COMMAND ---------- - --- DBTITLE 1,写入dws层 -INSERT OVERWRITE dws.dws_ext_email_warning -select - data_source - ,max_data - ,if_update - ,etl_timestamp -from temp_datasource_update_info - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### ads层 - --- COMMAND ---------- - --- select --- data_source --- ,max_data --- ,if_update --- from dws.dws_ext_email_warning \ No newline at end of file diff --git a/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql:Zone.Identifier b/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/OTHERS/02 dws_ext_email_warning.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/OTHERS/external_triggered_email.py b/EXTERNAL/OTHERS/external_triggered_email.py deleted file mode 100644 index 65fb817..0000000 --- a/EXTERNAL/OTHERS/external_triggered_email.py +++ /dev/null @@ -1,42 +0,0 @@ -# Databricks notebook source -import base64 -import time -import urllib.parse -import requests -from Crypto.Cipher import AES -from Crypto.Util.Padding import pad - -# === 配置区 === -# Spring Boot 服务端的密钥(Base64编码) -SECRET_KEY_BASE64 = "qkLkLHPnqNfJ5d3X6DgLpw==" -# 接口地址 -# https://mdcuat.astrazeneca.cn/earth/app/mail/task/ma/check -# https://mdc.astrazeneca.cn/earth/app/mail/task/ma/check -API_URL = "https://mdc.astrazeneca.cn/earth/app/mail/task/ma/check" - -# === AES 加密函数 === -def generate_aes_token(secret_key_base64: str) -> str: - # Hutool 的 SecureUtil.aes() 默认是 AES/ECB/PKCS5Padding - secret_key = base64.b64decode(secret_key_base64) - cipher = AES.new(secret_key, AES.MODE_ECB) - - # 加密当前时间戳(毫秒) - timestamp = str(int(time.time() * 1000)) - encrypted = cipher.encrypt(pad(timestamp.encode("utf-8"), AES.block_size)) - - # 输出 Base64 编码的 token - return base64.b64encode(encrypted).decode("utf-8") - -# === 调用接口 === -def call_check_api(): - token = generate_aes_token(SECRET_KEY_BASE64) - encoded_token = urllib.parse.quote(token) - url = f"{API_URL}?token={encoded_token}" - - print(f"请求URL: {url}") - response = requests.get(url) - print("响应状态码:", response.status_code) - print("响应内容:", response.text) - -if __name__ == "__main__": - call_check_api() \ No newline at end of file diff --git a/EXTERNAL/OTHERS/external_triggered_email.py:Zone.Identifier b/EXTERNAL/OTHERS/external_triggered_email.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/OTHERS/external_triggered_email.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/01 load_tmp_data.py b/EXTERNAL/Retail/01 load_tmp_data.py deleted file mode 100644 index 4b9817a..0000000 --- a/EXTERNAL/Retail/01 load_tmp_data.py +++ /dev/null @@ -1,617 +0,0 @@ -# Databricks notebook source -### constant -LEVEL_TA_CV = 'CV' -LEVLE_TA_RE = 'RE' -LEVEL_TA_RE2 = 'RE2' -LEVEL_TA_GI = 'GI' -LEVEL_TA_DM = 'DM' -LEVEL_TA_RD = 'RD' - -LEVEL_MARKET_HTN = '高血压用药' -LEVEL_MARKET_STATIN_XZK = '他汀类+血脂康' -LEVEL_MARKET_BRILINTA = 'Brilinta Market' -LEVEL_MARKET_COPD = '小儿咳喘' -LEVEL_MARKET_AAGSA_PPI_ORAL = '慢性胃炎、胃溃疡' -LEVEL_MARKET_ATOMIZER = '慢性阻塞性肺疾病' -LEVEL_MARKET_NIAD = 'NIAD' -LEVEL_MARKET_RD = 'RD Market' - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: load rawdata to tmp table - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: load rawdata to tmp table - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.1 load brand data to tmp.tmp_retail_brand_rawdata -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_brand_rawdata -# MAGIC -# MAGIC select -# MAGIC type, -# MAGIC ta, -# MAGIC market, -# MAGIC zk_brand_category, -# MAGIC zk_common_name, -# MAGIC zk_manu_des, -# MAGIC rc_name_en, -# MAGIC province_city, -# MAGIC quarter, -# MAGIC ytd, -# MAGIC '', -# MAGIC sales_value * 1000000, -# MAGIC sales_volume * 1000000 -# MAGIC from dwd.dwd_gnd_ext_zk_brand -# MAGIC where ranked_by = 'value' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.1 load from dwd.dwd_gnd_ext_retail_htn (pack-CV-高血压-化学药-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'CV', -# MAGIC '高血压用药', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_htn -# MAGIC --------------------------------- *hard_code* --------------------------------------- -# MAGIC -- 多达一、天一宁、others、氨氯地平阿托伐他汀钙 数据在 高血压和他汀血脂康里面重复, -# MAGIC -- 只需要取一份,优先取有拆分比例的 -# MAGIC -- 对应的product_id 分别是:'-356','5258049','5852881','9167744','9526959','9167556','9279325','8533952' -# MAGIC -- 或者使用条件:zk_common_name <> '氨氯地平阿托伐他汀钙' -# MAGIC where zk_common_name <> '氨氯地平阿托伐他汀钙' -# MAGIC --------------------------------- *hard_code* --------------------------------------- - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.2 load from dwd.dwd_gnd_ext_retail_statin_xzk (pack-CV-他汀类+血脂康-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'CV', -# MAGIC '他汀类+血脂康', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_statin_xzk - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.3 load from dwd.dwd_gnd_ext_retail_nataional_oap (pack-CV-抗血栓2通用名-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'CV', -# MAGIC 'Brilinta Market', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_nataional_oap - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.4 load from dwd.dwd_gnd_ext_retail_anti_asthma_copd (pack-RE-慢阻肺-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC --------------2024----------- -# MAGIC --'RE', -# MAGIC --'慢性阻塞性肺疾病', -# MAGIC --------------2025----------- -# MAGIC 'RE2', -# MAGIC '小儿咳喘', -# MAGIC ----------------------------- -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_anti_asthma_copd - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.5 load from dwd.dwd_gnd_ext_retail_aagsa_ppi_oral (pack-GI-慢性胃炎胃溃疡-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null as pack_code, -# MAGIC null as molecule_code, -# MAGIC null as molecule_desc, -# MAGIC null as product_code, -# MAGIC null as product_desc, -# MAGIC 'GI' as level_ta, -# MAGIC '慢性胃炎、胃溃疡' as level_market, -# MAGIC null as level_molecule, -# MAGIC null as level_brand, -# MAGIC null as ratio_val, -# MAGIC null as ratio_vol, -# MAGIC 0 as data_flag, -# MAGIC null as brand_flag -# MAGIC from dwd.dwd_gnd_ext_retail_aagsa_ppi_oral - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.6 load from dwd.dwd_gnd_ext_retail_atomizer (pack-雾化器-全国&县域数据.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'RE', -# MAGIC '慢性阻塞性肺疾病', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_atomizer -# MAGIC ------------------------------ *hard_code* ------------------------------------------ -# MAGIC -- 24年关于 RE-慢性阻塞性肺疾病的PACK数据,额外买了“雾化器”的24省数据 -# MAGIC -- 所以这里只取24省明细数据,全国的数已经在“pack-GI-慢性胃炎胃溃疡-全国.xlsx”中取过了 -# MAGIC -- 25年就直接取全部数据 -# MAGIC -- where zk_region <> '全国' -# MAGIC ------------------------------ *hard_code* ------------------------------------------ - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.7 load from dwd.dwd_gnd_ext_retail_nataional_niad (pack-DM-口服降糖化学药.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'DM', -# MAGIC 'NIAD', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_nataional_niad - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.8 load from dwd.dwd_gnd_ext_retail_nataional_rd (pack-RD-肾科-全国.xlsx) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC ------------------------------ *hard_code* ------------------------------------------ -# MAGIC -- 剔除利尿剂数据 -# MAGIC with tmp_exclusion as ( -# MAGIC select distinct product_id -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC where lower(atc2_cod) = 'c03' -# MAGIC ) -# MAGIC ------------------------------ *hard_code* ------------------------------------------ -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'RD', -# MAGIC 'RD Market', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_nataional_rd a -# MAGIC where not exists ( -# MAGIC select * from tmp_exclusion b -# MAGIC where case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end = b.product_id -# MAGIC ) -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# MAGIC -- 1.2.9 load from dwd.dwd_gnd_ext_retail_metoprolol_tartrat (pack-CV-酒石酸美托洛尔.xlsx) -# MAGIC -- 2024年采买了酒石酸美托洛尔的PACK数据,2025年未采买 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC --insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# MAGIC zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC month, -# MAGIC quarter, -# MAGIC replace(price,',','' ), -# MAGIC replace(sales_unit,',','' ), -# MAGIC replace(sales_value,',','' ), -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 'CV', -# MAGIC '高血压用药', -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0, -# MAGIC null -# MAGIC from dwd.dwd_gnd_ext_retail_metoprolol_tartrat a -# MAGIC ------------------------------ *hard_code* ------------------------------------------ -# MAGIC -- 24年关于 CV-高血压的PACK数据,额外买了“酒石酸美托洛尔”的24省数据 -# MAGIC -- 所以这里只取24省明细数据,全国的数已经在“pack-CV-高血压-化学药-全国.xlsx”中取过了 -# MAGIC where zk_region <> '全国' -# MAGIC ------------------------------ *hard_code* ------------------------------------------ - -# COMMAND ---------- - -# %sql -# 20260302 chenwu取消此段运行,小儿咳喘模版暂不使用。Fasenra Market数据由DTP RAW DATA上传 -# ------------------------------------------------------------------------------------- -# -- STEP-1: load rawdata to tmp table -# -- 1.2 load brand data to tmp.tmp_retail_pack_rawdata -# -- 1.2.10 load from dwd.dwd_gnd_ext_retail_asthma (pack-手动补充) -# -- 手动补充的小儿咳喘的数据,这些数据无需拆分 -# ------------------------------------------------------------------------------------- -# insert into table tmp.tmp_retail_pack_rawdata - -# select -# case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as product_id, -# zk_product_id, -# zk_region, -# zk_rx_otc, -# zk_medicine_type, -# zk_medicine_tier1, -# zk_medicine_tier2, -# zk_medicine_tier3, -# zk_medicine_tier4, -# zk_common_name, -# zk_dosage_form, -# zk_user_type, -# zk_category_name, -# zk_product_name, -# zk_brand_name, -# zk_manu_des, -# zk_corp_des, -# zk_pack_des, -# month, -# quarter, -# price, -# sales_unit, -# sales_value, -# digital_spread_rate, -# weighted_spread_rate, -# counting_unit, -# null, -# null, -# null, -# null, -# null, -# 'RE_NO_SPLIT', -# '小儿咳喘', -# null, -# null, -# null, -# null, -# 0, -# null -# from dwd.dwd_gnd_ext_retail_asthma - -# COMMAND ---------- - -############################################################END############################################################## \ No newline at end of file diff --git a/EXTERNAL/Retail/01 load_tmp_data.py:Zone.Identifier b/EXTERNAL/Retail/01 load_tmp_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/01 load_tmp_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/02 split_brand_data.py b/EXTERNAL/Retail/02 split_brand_data.py deleted file mode 100644 index beb3ee3..0000000 --- a/EXTERNAL/Retail/02 split_brand_data.py +++ /dev/null @@ -1,672 +0,0 @@ -# Databricks notebook source -### constant -DATA_TYPE_MARKET = 'MARKET' -DATA_TYPE_MOLECULE = 'MOLECULE' -DATA_TYPE_BRAND = 'BRAND' -DATA_TYPE_MULTI_MARKET = 'MULTI_MARKET' -DATA_TYPE_MULTI_MOLECULE = 'MULTI_MOLECULE' -DATA_TYPE_MULTI_BRAND = 'MULTI_BRAND' -DATA_TYPE_DUPLICATE = 'DUPLICATE' -DATA_TYPE_HEDGE_TA = 'HEDGE_TA' -DATA_TYPE_HEDGE_MARKET = 'HEDGE_MARKET' -DATA_TYPE_HEDGE_MOLECULE = 'HEDGE_MOLECULE' -DATA_TYPE_HEDGE_BRAND = 'HEDGE_BRAND' - -DATA_FLAG_RAW = 0 ### final pack_flag = 1 -DATA_FLAG_SUB = 1 ### final pack_flag = 2 -DATA_FLAG_ADD = 2 ### final pack_flag = 2 -DATA_FLAG_RATIO = 3 ### final pack_flag = 2 -DATA_FLAG_AVG = 4 ### final pack_flag = 2 ### The current version is not in use -DATA_FLAG_HEDGE = 5 ### final pack_flag = 2 -BRAND_FLAG_NATIVE = 1 ### final brand_flag = 1 -BRAND_FLAG_CALCULATE = 2 ### final brand_flag = 2 -BRAND_FLAG_NONE = 3 ### final brand_flag = 2 - -DATA_OTHER_TA = 'OTHER_TA' -DATA_OTHER_MARKET = 'OTHER_MARKET' -DATA_OTHER_MOLECULE = 'OTHER_MOLECULE' -DATA_OTHER_BRAND = 'OTHER_BRAND' -DATA_AREA_TYPE_ROC = 'ROC' -DATA_LABEL_AREA_ALL = '全国' - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: load data to tmp table -### STEP-2: substract data from level market to brand -### STEP-3: accumulate data from level brand to market -### STEP-4: calculate brand ratio - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: load data to tmp table - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.1 load LEVEL_MARKET data to tmp.tmp_retail_level_market -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table tmp.tmp_retail_level_market -# MAGIC -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'MARKET' -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.2 load LEVEL_MOLECULE data to tmp.tmp_retail_level_molecule -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_level_molecule -# MAGIC -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC b.level_molecule, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'MOLECULE' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.3 load LEVEL_BRAND(BRAND & MULTI_BRAND) data to tmp.tmp_retail_level_brand -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_level_brand -# MAGIC -# MAGIC with exploded_data as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC ifnull(common_name,'' ) as common_name, -# MAGIC level, -# MAGIC split(level_ta,',') array_ta, -# MAGIC split(level_market,',') array_market, -# MAGIC split(level_molecule,',') array_molecule, -# MAGIC split(level_brand,',') array_brand -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where level like '%MULTI_BRAND%' -# MAGIC ), tmp_config as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC common_name, -# MAGIC level, -# MAGIC array_ta[idx] as level_ta, -# MAGIC array_market[idx] as level_market, -# MAGIC array_molecule[idx] as level_molecule, -# MAGIC array_brand[idx] as level_brand -# MAGIC from exploded_data -# MAGIC lateral view posexplode(array_ta) AS idx, split_ta -# MAGIC ) -# MAGIC ----------------brand data--------------------- -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC b.level_molecule, -# MAGIC b.level_brand, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'BRAND' -# MAGIC -# MAGIC union all -# MAGIC ----------------multi brand data--------------------- -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC b.level_molecule, -# MAGIC b.level_brand, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join tmp_config b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.4 append HEDGE_TA data to every level -# MAGIC -- 1.4.1 append HEDGE_MARKET data to LEVEL_MARKET -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_hedge as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC 0 - sum(a.sales_val) as hedge_val, -# MAGIC 0 - sum(a.sales_vol) as hedge_vol -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level like '%HEDGE_TA%' -# MAGIC group by a.quarter,a.province_city -# MAGIC ) -# MAGIC -# MAGIC insert into tmp.tmp_retail_level_market -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC 'HEDGE_TA', -# MAGIC 'HEDGE_MARKET', -# MAGIC hedge_val, -# MAGIC hedge_vol, -# MAGIC 5 -# MAGIC from tmp_hedge - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.4 append HEDGE_TA data to every level -# MAGIC -- 1.4.2 append HEDGE_MOLECULE data to LEVEL_MOLECULE -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_hedge as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC 0 - sum(a.sales_val) as hedge_val, -# MAGIC 0 - sum(a.sales_vol) as hedge_vol -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level like '%HEDGE_TA%' -# MAGIC group by a.quarter,a.province_city -# MAGIC ) -# MAGIC insert into tmp.tmp_retail_level_molecule -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC 'HEDGE_TA', -# MAGIC 'HEDGE_MARKET', -# MAGIC 'HEDGE_MOLECULE', -# MAGIC hedge_val, -# MAGIC hedge_vol, -# MAGIC 5 -# MAGIC from tmp_hedge - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.4 append HEDGE_TA data to every level -# MAGIC -- 1.4.3 append HEDGE_BRAND data to LEVEL_BRAND -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_hedge as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC 0 - sum(a.sales_val) as hedge_val, -# MAGIC 0 - sum(a.sales_vol) as hedge_vol -# MAGIC from tmp.tmp_retail_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level like '%HEDGE_TA%' -# MAGIC group by a.quarter,a.province_city -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_level_brand -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC 'HEDGE_TA', -# MAGIC 'HEDGE_MARKET', -# MAGIC 'HEDGE_MOLECULE', -# MAGIC 'HEDGE_BRAND', -# MAGIC hedge_val, -# MAGIC hedge_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 5 -# MAGIC from tmp_hedge - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.5 load data from pack, balance level_brand -# MAGIC -- add regional data that is included in the pack but not in the brand -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_pack_to_brand as ( -# MAGIC select distinct a.quarter,a.level_ta,a.level_market, c.cmps_des_c,c.prod_des_c,a.product_id -# MAGIC from tmp.tmp_retail_pack_rawdata a -# MAGIC inner join dwd.dwd_gnd_ext_retail_pack_property c -# MAGIC on a.product_id = c.product_id -# MAGIC where exists ( -# MAGIC select distinct b.level_ta, b.level_market -# MAGIC from dwd.dwd_gnd_retail_split_automatic b -# MAGIC where b.level_ta is not null -# MAGIC and a.level_ta = b.level_ta -# MAGIC and a.level_market = b.level_market -# MAGIC ) and a.data_flag = 0 -# MAGIC and a.zk_regin <> '全国' -# MAGIC order by a.quarter,a.level_ta,a.level_market, c.cmps_des_c,c.prod_des_c -# MAGIC ), tmp_pack_sum as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.zk_regin, -# MAGIC a.level_ta, -# MAGIC a.level_market, -# MAGIC b.cmps_des_c as molecule_desc, -# MAGIC nvl(b.prod_des_c,concat(b.cmps_des_c,'_OTHER_PROD')) as product_desc, -# MAGIC sum(a.sales_value) as sales_val, -# MAGIC round(sum(a.sales_unit * (c.counting_unit/ coalesce(c.unit,1)) ) ,4) as sales_vol -# MAGIC from tmp.tmp_retail_pack_rawdata a -# MAGIC inner join tmp_pack_to_brand b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.level_ta = b.level_ta -# MAGIC and a.level_market = b.level_market -# MAGIC and a.product_id = b.product_id -# MAGIC inner join dwd.dwd_gnd_ext_retail_pack_property c -# MAGIC on a.product_id = c.product_id -# MAGIC where a.data_flag = 0 and zk_regin <> 'ROC' -# MAGIC group by a.quarter, a.zk_regin,a.level_ta,a.level_market,b.cmps_des_c,b.prod_des_c -# MAGIC order by a.quarter,a.zk_regin,a.level_ta -# MAGIC ), tmp_brand as ( -# MAGIC select * from tmp.tmp_retail_level_brand where data_flag = 0 -# MAGIC ),tmp_final as ( -# MAGIC select -# MAGIC a.*, -# MAGIC null as ratio_val, -# MAGIC null as ratio_vol, -# MAGIC null as total_val, -# MAGIC null as total_vol, -# MAGIC 0 as data_flag --从pack聚合出来的brand数据,也是真实的原生数据 -# MAGIC from tmp_pack_sum a -# MAGIC where not exists ( -# MAGIC select 1 from tmp_brand b -# MAGIC where a.quarter = b.quarter -# MAGIC and a.zk_regin = b.province_city -# MAGIC and a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and a.molecule_desc = b.molecule -# MAGIC and a.product_desc = b.brand -# MAGIC ) -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_level_brand -# MAGIC select * from tmp_final - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: substract data from level market to brand - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: substract data from level market to brand -# MAGIC -- 2.1 substract level market data and add 'OTHER_MOLECULE' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_aggregate_market as ( -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_level_molecule -# MAGIC group by quarter, province_city , ta ,market -# MAGIC ),tmp_molecule as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.sales_val - ifnull(b.sales_val, 0) as sales_val, -# MAGIC a.sales_vol - ifnull(b.sales_vol, 0) as sales_vol -# MAGIC from tmp.tmp_retail_level_market a -# MAGIC left join tmp_aggregate_market b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC ) -# MAGIC -# MAGIC -------append OTHER_MOLECULE to tmp.tmp_retail_level_molecule -# MAGIC insert into tmp.tmp_retail_level_molecule -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC 'OTHER_MOLECULE', -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 1 -# MAGIC from tmp_molecule -# MAGIC where sales_val > 0 or sales_vol > 0 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: substract data from level market to brand -# MAGIC -- 2.2 substract level molecule data and add 'OTHER_BRAND' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_aggregate_molecule as ( -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_level_brand -# MAGIC group by quarter,province_city ,ta ,market,molecule -# MAGIC ),tmp_brand as ( -# MAGIC select -# MAGIC a.quarter, -# MAGIC a.province_city, -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.molecule, -# MAGIC a.sales_val - ifnull(b.sales_val, 0) as sales_val, -# MAGIC a.sales_vol - ifnull(b.sales_vol, 0) as sales_vol -# MAGIC from tmp.tmp_retail_level_molecule a -# MAGIC left join tmp_aggregate_molecule b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC ) -# MAGIC -# MAGIC -------append OTHER_BRAND to tmp.tmp_retail_level_brand -# MAGIC insert into tmp.tmp_retail_level_brand -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC 'OTHER_BRAND', -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 1 -# MAGIC from tmp_brand -# MAGIC where sales_val > 0 or sales_vol > 0 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-3: accumulate data from level brand to market - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND' & 'OTHER_MOLECULE' data -# MAGIC -- 3.1.1 accumulate level molecule data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_aggregate_molecule as ( -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_level_brand -# MAGIC group by quarter,province_city ,ta ,market,molecule -# MAGIC ), tmp_append_molecule as ( -# MAGIC select a.* -# MAGIC from tmp_aggregate_molecule a -# MAGIC where not exists ( -# MAGIC select 1 -# MAGIC from tmp.tmp_retail_level_molecule b -# MAGIC where a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC ) -# MAGIC ) -# MAGIC -------append level molecule data accumulate from level brand -# MAGIC insert into tmp.tmp_retail_level_molecule -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 2 -# MAGIC from tmp_append_molecule - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND'& 'OTHER_MOLECULE' data -# MAGIC -- 3.1.2 balance 'OTHER_MOLECULE' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC merge into tmp.tmp_retail_level_molecule a -# MAGIC using( -# MAGIC select * from tmp.tmp_retail_level_molecule -# MAGIC where data_flag = 2 -# MAGIC ) as b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = 'OTHER_MOLECULE' -# MAGIC and a.data_flag = 1 -# MAGIC when matched then -# MAGIC update set -# MAGIC a.sales_val = a.sales_val - b.sales_val, -# MAGIC a.sales_vol = a.sales_vol - b.sales_vol -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND'& 'OTHER_MOLECULE' data -# MAGIC -- 3.1.3 balance 'OTHER_BRAND' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC merge into tmp.tmp_retail_level_brand a -# MAGIC using( -# MAGIC select * from tmp.tmp_retail_level_molecule -# MAGIC where data_flag = 2 -# MAGIC ) as b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = 'OTHER_MOLECULE' -# MAGIC and a.brand = 'OTHER_BRAND' -# MAGIC and a.data_flag = 1 -# MAGIC when matched then -# MAGIC update set -# MAGIC a.sales_val = a.sales_val - b.sales_val, -# MAGIC a.sales_vol = a.sales_vol - b.sales_vol - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.2 accumulate level market data and balance 'OTHER_MOLECULE' data -# MAGIC -- 3.2.1 accumulate level market data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_aggregate_market as ( -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_level_molecule -# MAGIC group by quarter,province_city ,ta ,market -# MAGIC ), tmp_append_market as ( -# MAGIC select a.* -# MAGIC from tmp_aggregate_market a -# MAGIC where not exists ( -# MAGIC select 1 -# MAGIC from tmp.tmp_retail_level_market b -# MAGIC where a.quarter = b.quarter -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC ) -# MAGIC ) -# MAGIC -------append level market data accumulate from level molecule -# MAGIC insert into tmp.tmp_retail_level_market -# MAGIC select -# MAGIC quarter, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 2 -# MAGIC from tmp_append_market - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.2 accumulate level market data and balance 'OTHER_MOLECULE' data -# MAGIC -- 3.2.2 balance 'OTHER_MOLECULE' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC ---------not using in this case, beacuse level ta has no data------------------------ -# MAGIC --merge into tmp.tmp_retail_level_market a -# MAGIC --using( -# MAGIC -- select * from tmp.tmp_retail_level_molecule -# MAGIC -- where data_flag = 2 -# MAGIC --) as b -# MAGIC --on a.quarter = b.quarter -# MAGIC --and a.province_city = b.province_city -# MAGIC --and a.ta = b.ta -# MAGIC --and a.market = 'OTHER_MARKET' -# MAGIC --and a.data_flag = 1 -# MAGIC --when matched then -# MAGIC -- update set -# MAGIC -- a.sales_val = a.sales_val - b.sales_val, -# MAGIC -- a.sales_vol = a.sales_vol - b.sales_vol - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-4: calculate brand ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: calculate brand ratio -# MAGIC -- update total_val&total_vol and ratio_val&ratio_vol -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC merge into tmp.tmp_retail_level_brand a -# MAGIC using( -# MAGIC select * from tmp.tmp_retail_level_brand -# MAGIC where province_city = '全国' -# MAGIC ) as b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC and a.brand = b.brand -# MAGIC when matched then -# MAGIC update set -# MAGIC a.total_val = b.sales_val, -# MAGIC a.total_vol = b.sales_vol, -# MAGIC a.ratio_val = round(a.sales_val/b.sales_val,10), -# MAGIC a.ratio_vol = round(a.sales_vol/b.sales_vol,10) - -# COMMAND ---------- - -############################################################END############################################################## \ No newline at end of file diff --git a/EXTERNAL/Retail/02 split_brand_data.py:Zone.Identifier b/EXTERNAL/Retail/02 split_brand_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/02 split_brand_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/03 split_pack_data.py b/EXTERNAL/Retail/03 split_pack_data.py deleted file mode 100644 index 8471db8..0000000 --- a/EXTERNAL/Retail/03 split_pack_data.py +++ /dev/null @@ -1,1200 +0,0 @@ -# Databricks notebook source -### constant -DATA_TYPE_MARKET = 'MARKET' -DATA_TYPE_MOLECULE = 'MOLECULE' -DATA_TYPE_BRAND = 'BRAND' -DATA_TYPE_MULTI_MARKET = 'MULTI_MARKET' -DATA_TYPE_MULTI_MOLECULE = 'MULTI_MOLECULE' -DATA_TYPE_MULTI_BRAND = 'MULTI_BRAND' -DATA_TYPE_DUPLICATE = 'DUPLICATE' -DATA_TYPE_HEDGE_TA = 'HEDGE_TA' -DATA_TYPE_HEDGE_MARKET = 'HEDGE_MARKET' -DATA_TYPE_HEDGE_MOLECULE = 'HEDGE_MOLECULE' -DATA_TYPE_HEDGE_BRAND = 'HEDGE_BRAND' - -DATA_FLAG_RAW = 0 ### final pack_flag = 1 -DATA_FLAG_SUB = 1 ### final pack_flag = 2 -DATA_FLAG_ADD = 2 ### final pack_flag = 2 -DATA_FLAG_RATIO = 3 ### final pack_flag = 2 -DATA_FLAG_AVG = 4 ### final pack_flag = 2 -DATA_FLAG_HEDGE = 5 ### final pack_flag = 2 -BRAND_FLAG_NATIVE = 1 ### final brand_flag = 1 -BRAND_FLAG_CALCULATE = 2 ### final brand_flag = 2 -BRAND_FLAG_NONE = 3 ### final brand_flag = 2 -BRAND_FLAG_PACK = 4 ### final brand_flag = 1 - -DATA_OTHER_TA = 'OTHER_TA' -DATA_OTHER_MARKET = 'OTHER_MARKET' -DATA_OTHER_MOLECULE = 'OTHER_MOLECULE' -DATA_OTHER_BRAND = 'OTHER_BRAND' -DATA_AREA_TYPE_ROC = 'ROC' -DATA_LABEL_AREA_ALL = '全国' - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: generate product_id&level relationship mapping table -### STEP-2: split regional data by brand ratio when there is no regional data and there is a brand ratio -### STEP-3: substract ROC data - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: generate product_id&level relationship mapping table - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.1 generate mapping table -# MAGIC -- use two dwd table: -# MAGIC -- use dwd.dwd_gnd_ext_retail_pack_property to find the relationship with product_id & brand -# MAGIC -- use dwd.dwd_inc_gnd_retail_b2c_label_total to find the brand with suffix label ,such as 胶囊、颗粒 (可威-胶囊/可威-颗粒) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_pack_property as ( -# MAGIC --------------------------------------------------------------- -# MAGIC -- 以数字开头的iqvia_pack_code调整为12位(以字母开头的不变),不足位数补0 -# MAGIC -- iqvia_prod_code调整为9位,不足位数补0 -# MAGIC select -# MAGIC 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, -# MAGIC case when length(iqvia_prod_code) < 9 then right(concat('000000000',iqvia_prod_code),9) else iqvia_prod_code end as iqvia_prod_code, -# MAGIC product_id, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC corp_cod, -# MAGIC app1_cod, -# MAGIC app2_cod, -# MAGIC app3_cod -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ), tmp_b2c_label_total as ( -# MAGIC select -# MAGIC case when length(IQVIA_PROD_CODE) < 9 then right(concat('000000000',IQVIA_PROD_CODE),9) else IQVIA_PROD_CODE end as IQVIA_PROD_CODE, -# MAGIC ZK_Prod_C, -# MAGIC APP1_COD, -# MAGIC APP2_COD, -# MAGIC APP3_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total -# MAGIC --------------------------------------------------------------- -# MAGIC ), tmp_suffix_brand as ( -# MAGIC select distinct split(brand,'-')[0] -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where brand like '%-%' -# MAGIC ), tmp_mapping as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.product_id as product_id, -# MAGIC a.iqvia_pack_code as pack_code, -# MAGIC a.cmps_des as molecule_code, -# MAGIC a.cmps_des_c as molecule_name, -# MAGIC ifnull(a.prod_des, concat(a.cmps_des,'_OTHER_PROD')) as product_code, -# MAGIC ifnull(a.prod_des_c, concat(a.cmps_des_c,'_OTHER_PROD')) as product_name, -# MAGIC a.corp_cod -# MAGIC from tmp_pack_property a -# MAGIC where a.prod_des_c not in (select * from tmp_suffix_brand) -# MAGIC or a.prod_des_c is null -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC a.product_id as product_id, -# MAGIC a.iqvia_pack_code as pack_code, -# MAGIC a.cmps_des as molecule_code, -# MAGIC a.cmps_des_c as molecule_name, -# MAGIC a.prod_des as product_code, -# MAGIC ifnull(b.ZK_Prod_C, a.prod_des_c) as product_name, -# MAGIC a.corp_cod -# MAGIC from tmp_pack_property a -# MAGIC left join tmp_b2c_label_total b -# MAGIC on a.iqvia_prod_code = b.IQVIA_PROD_CODE -# MAGIC and a.app1_cod = b.APP1_COD -# MAGIC and a.app2_cod = b.APP2_COD -# MAGIC and a.app3_cod = b.APP3_COD -# MAGIC where a.prod_des_c in (select * from tmp_suffix_brand) -# MAGIC ), tmp_pack as ( -# MAGIC select -# MAGIC distinct -# MAGIC product_id, -# MAGIC zk_product_id, -# MAGIC level_ta, -# MAGIC level_market -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC ), tmp_pack_mapping as( -# MAGIC select -# MAGIC p.level_ta, -# MAGIC p.level_market, -# MAGIC p.product_id, -# MAGIC p.zk_product_id, -# MAGIC m.pack_code, -# MAGIC m.molecule_code, -# MAGIC m.molecule_name, -# MAGIC m.product_code, -# MAGIC m.product_name, -# MAGIC m.corp_cod -# MAGIC from tmp_pack p -# MAGIC inner join tmp_mapping m -# MAGIC on p.product_id = m.product_id -# MAGIC ), tmp_level as ( -# MAGIC select -# MAGIC distinct -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC brand -# MAGIC from tmp.tmp_retail_level_brand -# MAGIC order by ta,market,molecule,brand -# MAGIC ), tmp_molecule_brand as ( -# MAGIC -----------------------ta matched & market matched & molecule matched & brand matched -------------- -# MAGIC select -# MAGIC a.*,b.*,1 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and (a.molecule_name = b.molecule or b.molecule <> 'OTHER_MOLECULE') -- 新增自定义非OTHER_MOLECULE -# MAGIC and a.product_name = b.brand -# MAGIC ), tmp_other_brand as ( -# MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE & brand matched----------------- -# MAGIC select -# MAGIC a.*,b.*,1 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and b.molecule = 'OTHER_MOLECULE' -# MAGIC and a.product_name = b.brand -# MAGIC where a.product_id not in ( -# MAGIC select distinct product_id from tmp_molecule_brand -# MAGIC ) -# MAGIC ), tmp_molecule_other as( -# MAGIC -----------------------ta matched & market matched & molecule matched & OTHER_BRAND---------------- -# MAGIC select -# MAGIC a.*,b.*,2 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and a.molecule_name = b.molecule -# MAGIC and b.brand = 'OTHER_BRAND' -# MAGIC where a.product_id not in ( -# MAGIC select distinct product_id from tmp_molecule_brand -# MAGIC union all -# MAGIC select distinct product_id from tmp_other_brand -# MAGIC ) -# MAGIC ), tmp_other_other as ( -# MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE& OTHER_BRAND--------------------- -# MAGIC select -# MAGIC a.*,b.*,2 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and b.molecule = 'OTHER_MOLECULE' -# MAGIC and b.brand = 'OTHER_BRAND' -# MAGIC where a.product_id not in ( -# MAGIC select distinct product_id from tmp_molecule_brand -# MAGIC union all -# MAGIC select distinct product_id from tmp_other_brand -# MAGIC union all -# MAGIC select distinct product_id from tmp_molecule_other -# MAGIC ) -# MAGIC ), tmp_brand_mapping as ( -# MAGIC select * from tmp_molecule_brand -# MAGIC union all -# MAGIC select * from tmp_other_brand -# MAGIC union all -# MAGIC select * from tmp_molecule_other -# MAGIC union all -# MAGIC select * from tmp_other_other -# MAGIC ) -# MAGIC -# MAGIC ------------------------- generate product_id&level relationship mapping table------------------------ -# MAGIC insert overwrite table tmp.tmp_retail_pack_mapping -# MAGIC -# MAGIC select -# MAGIC product_id, -# MAGIC zk_product_id, -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC molecule as level_molecule, -# MAGIC brand as level_brand, -# MAGIC pack_code, -# MAGIC molecule_code, -# MAGIC molecule_name, -# MAGIC product_code, -# MAGIC product_name, -# MAGIC brand_flag, -# MAGIC corp_cod -# MAGIC from tmp_brand_mapping - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.1 generate mapping table -# MAGIC -- 1.1.2 update special case 'GI-慢性胃炎、胃溃疡-其他拉唑类' -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC UPDATE tmp.tmp_retail_pack_mapping -# MAGIC SET level_molecule = '其他拉唑类' -# MAGIC where level_ta = 'GI' -# MAGIC and level_market = '慢性胃炎、胃溃疡' -# MAGIC and level_molecule = 'OTHER_MOLECULE' -# MAGIC and level_brand = 'OTHER_BRAND' -# MAGIC and molecule_desc like '%拉唑%' -# MAGIC --and product_id in ( -# MAGIC -- select product_id -# MAGIC -- from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC -- where cmps_cod IN ('001658','002782','008617','001051','001853','008467') -# MAGIC --) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.1 generate mapping table -# MAGIC -- 1.1.3 获取market信息,产品重新归属 -# MAGIC -- 1.1.3.1 B2C标签表整合关联tblmarket 表,获取market 信息, 更新tmp.tmp_zk_retail_pack_property -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_pack_property -# MAGIC with tmp_pack_property as ( -# MAGIC select -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & prod_code -# MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(iqvia_pack_code)),12) -# MAGIC else trim(iqvia_pack_code) -# MAGIC end as new_iqvia_pack_code, -# MAGIC case when length(iqvia_prod_code) < 9 then right(concat('000000000',iqvia_prod_code),9) else iqvia_prod_code end as new_iqvia_prod_code, -# MAGIC ------------------------------------------------------------------- -# MAGIC * -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ), tmp_pack_additional_attribute as ( -# MAGIC select -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code -# MAGIC case when length(trim(Pack_Code)) < 12 and trim(Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(Pack_Code)),12) -# MAGIC else trim(Pack_Code) -# MAGIC end as new_pack_code, -# MAGIC ------------------------------------------------------------------- -# MAGIC * -# MAGIC from dwd.dwd_ims_td_pack_additional_attribute -# MAGIC ), tmp_tblmarket as ( -# MAGIC select -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & prod_code -# MAGIC case when length(trim(pack_code)) < 12 and trim(pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_code)),12) -# MAGIC else trim(pack_code) -# MAGIC end as new_pack_code, -# MAGIC case when length(Product_Code) < 9 then right(concat('000000000',Product_Code),9) else Product_Code end as new_prod_code, -# MAGIC ------------------------------------------------------------------- -# MAGIC * -# MAGIC from dwd.dwd_gnd_ext_retail_tblmarket -# MAGIC ), tmp1 as ( -# MAGIC -# MAGIC select distinct -# MAGIC prod.iqvia_lineno -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & prod_code -# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code -# MAGIC ,prod.new_iqvia_prod_code as PROD_COD -# MAGIC ------------------------------------------------------------------- -# MAGIC ,prod.iqvia_notes -# MAGIC ,prod.new_pack_flag -# MAGIC ,prod.is_exists_chpa -# MAGIC ,prod.product_id -# MAGIC ,prod.prescription_nature -# MAGIC ,prod.medicine_type -# MAGIC ,prod.zk_medicine_tier1 -# MAGIC ,prod.zk_medicine_tier2 -# MAGIC ,prod.zk_medicine_tier3 -# MAGIC ,prod.zk_medicine_tier4 -# MAGIC ,prod.common_name -# MAGIC ,prod.dosage_form -# MAGIC ,prod.user_type -# MAGIC ,prod.category_name -# MAGIC ,prod.product_name -# MAGIC ,prod.brand_name -# MAGIC ,prod.zk_manu_des -# MAGIC ,prod.zk_corp_des -# MAGIC ,prod.zk_pack_des -# MAGIC ,prod.counting_unit_a -# MAGIC ,prod.dosage_unit_a -# MAGIC ,prod.unit_a -# MAGIC ,prod.app1_cod -# MAGIC ,prod.app1_des -# MAGIC ,prod.app1_des_c -# MAGIC ,prod.app2_cod -# MAGIC ,prod.app2_des -# MAGIC ,prod.app2_des_c -# MAGIC ,prod.app3_cod -# MAGIC ,prod.app3_des -# MAGIC ,prod.app3_des_c -# MAGIC ,prod.atc1_cod -# MAGIC ,prod.atc1_des -# MAGIC ,prod.atc1_des_c -# MAGIC ,prod.atc2_cod -# MAGIC ,prod.atc2_des -# MAGIC ,prod.atc2_des_c -# MAGIC ,prod.atc3_cod -# MAGIC ,prod.atc3_des -# MAGIC ,prod.atc3_des_c -# MAGIC ,prod.atc4_cod -# MAGIC ,prod.atc4_des -# MAGIC ,prod.atc4_des_c -# MAGIC ,prod.bio_desc -# MAGIC ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod -# MAGIC ,prod.cmps_des -# MAGIC ,prod.cmps_des_c -# MAGIC ,prod.corp_cod -# MAGIC ,prod.corp_des -# MAGIC ,prod.corp_des_c -# MAGIC ,prod.edl_desc -# MAGIC ,prod.eth_otc_desc -# MAGIC ,prod.gene_orig_desc -# MAGIC ,prod.gqce_desc -# MAGIC ,prod.manu_cod -# MAGIC ,prod.manu_des -# MAGIC ,prod.manu_des_c -# MAGIC ,prod.mnfl_cod -# MAGIC ,prod.mnfl_des -# MAGIC ,prod.nrdl_desc -# MAGIC ,prod.pack_des -# MAGIC ,prod.stgh_des -# MAGIC ,prod.pack_lch -# MAGIC ,prod.paed_desc -# MAGIC ,prod.prod_des -# MAGIC ,prod.prod_des_c -# MAGIC ,prod.tcm_desc -# MAGIC ,prod.vbp_desc -# MAGIC ,prod.unit -# MAGIC ,prod.counting_unit -# MAGIC ,prod.dosage_unit -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,tblmkt.market -# MAGIC ,tblmkt.bu -# MAGIC ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio -# MAGIC from tmp_pack_property prod -# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC left join ( -# MAGIC select market -# MAGIC ,bu -# MAGIC ,atc1_code -# MAGIC ,atc2_code -# MAGIC ,atc3_code -# MAGIC ,atc4_code -# MAGIC ,nfc1_code -# MAGIC ,nfc2_code -# MAGIC ,nfc3_code -# MAGIC ,Molecule_Code -# MAGIC ,zk_common_name -# MAGIC ,extend_market_ratio -# MAGIC ,zk_product_id -# MAGIC ,zk_dosage_form -# MAGIC ------------------------------------- -# MAGIC ,new_pack_code as pack_code -# MAGIC ,new_prod_code as Product_Code -# MAGIC ------------------------------------- -# MAGIC ,not_in_flag -# MAGIC ,extend_market -# MAGIC from tmp_tblmarket -# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end)) -# MAGIC where 1=1 -# MAGIC and Extend_Market IS NULL -# MAGIC AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' ) -# MAGIC ) tblmkt -# MAGIC on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end -# MAGIC and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end -# MAGIC and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end -# MAGIC and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end -# MAGIC and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end -# MAGIC and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end -# MAGIC and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end -# MAGIC -------------------------------------------------------------------------------------- -# MAGIC and nvl(prod.new_iqvia_prod_code, 0) = case when tblmkt.Product_Code is null then nvl(prod.new_iqvia_prod_code,0 ) else tblmkt.Product_Code end -# MAGIC and nvl(prod.new_iqvia_pack_code, 0) = case when tblmkt.Pack_Code is null then nvl(prod.new_iqvia_pack_code,0 ) else tblmkt.Pack_Code end -# MAGIC -------------------------------------------------------------------------------------- -# MAGIC and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end -# MAGIC where tblmkt.market is not null -# MAGIC ) -# MAGIC , tmp2 as ( -# MAGIC select distinct -# MAGIC prod.iqvia_lineno -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & prod_code -# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code -# MAGIC ,prod.new_iqvia_prod_code as PROD_COD -# MAGIC ------------------------------------------------------------------- -# MAGIC ,prod.iqvia_notes -# MAGIC ,prod.new_pack_flag -# MAGIC ,prod.is_exists_chpa -# MAGIC ,prod.product_id -# MAGIC ,prod.prescription_nature -# MAGIC ,prod.medicine_type -# MAGIC ,prod.zk_medicine_tier1 -# MAGIC ,prod.zk_medicine_tier2 -# MAGIC ,prod.zk_medicine_tier3 -# MAGIC ,prod.zk_medicine_tier4 -# MAGIC ,prod.common_name -# MAGIC ,prod.dosage_form -# MAGIC ,prod.user_type -# MAGIC ,prod.category_name -# MAGIC ,prod.product_name -# MAGIC ,prod.brand_name -# MAGIC ,prod.zk_manu_des -# MAGIC ,prod.zk_corp_des -# MAGIC ,prod.zk_pack_des -# MAGIC ,prod.counting_unit_a -# MAGIC ,prod.dosage_unit_a -# MAGIC ,prod.unit_a -# MAGIC ,prod.app1_cod -# MAGIC ,prod.app1_des -# MAGIC ,prod.app1_des_c -# MAGIC ,prod.app2_cod -# MAGIC ,prod.app2_des -# MAGIC ,prod.app2_des_c -# MAGIC ,prod.app3_cod -# MAGIC ,prod.app3_des -# MAGIC ,prod.app3_des_c -# MAGIC ,prod.atc1_cod -# MAGIC ,prod.atc1_des -# MAGIC ,prod.atc1_des_c -# MAGIC ,prod.atc2_cod -# MAGIC ,prod.atc2_des -# MAGIC ,prod.atc2_des_c -# MAGIC ,prod.atc3_cod -# MAGIC ,prod.atc3_des -# MAGIC ,prod.atc3_des_c -# MAGIC ,prod.atc4_cod -# MAGIC ,prod.atc4_des -# MAGIC ,prod.atc4_des_c -# MAGIC ,prod.bio_desc -# MAGIC ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod -# MAGIC ,prod.cmps_des -# MAGIC ,prod.cmps_des_c -# MAGIC ,prod.corp_cod -# MAGIC ,prod.corp_des -# MAGIC ,prod.corp_des_c -# MAGIC ,prod.edl_desc -# MAGIC ,prod.eth_otc_desc -# MAGIC ,prod.gene_orig_desc -# MAGIC ,prod.gqce_desc -# MAGIC ,prod.manu_cod -# MAGIC ,prod.manu_des -# MAGIC ,prod.manu_des_c -# MAGIC ,prod.mnfl_cod -# MAGIC ,prod.mnfl_des -# MAGIC ,prod.nrdl_desc -# MAGIC ,prod.pack_des -# MAGIC ,prod.stgh_des -# MAGIC ,prod.pack_lch -# MAGIC ,prod.paed_desc -# MAGIC ,prod.prod_des -# MAGIC ,prod.prod_des_c -# MAGIC ,prod.tcm_desc -# MAGIC ,prod.vbp_desc -# MAGIC ,prod.unit -# MAGIC ,prod.counting_unit -# MAGIC ,prod.dosage_unit -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,tblmkt.market -# MAGIC ,tblmkt.bu -# MAGIC ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio -# MAGIC ,1 as f_flag -# MAGIC from tmp_pack_property prod -# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC left join ( -# MAGIC select market -# MAGIC ,bu -# MAGIC ,atc1_code -# MAGIC ,atc2_code -# MAGIC ,atc3_code -# MAGIC ,atc4_code -# MAGIC ,nfc1_code -# MAGIC ,nfc2_code -# MAGIC ,nfc3_code -# MAGIC ,Molecule_Code -# MAGIC ,zk_common_name -# MAGIC ,extend_market_ratio -# MAGIC ,zk_product_id -# MAGIC ,zk_dosage_form -# MAGIC ------------------------------------- -# MAGIC ,new_pack_code as pack_code -# MAGIC ,new_prod_code as Product_Code -# MAGIC ------------------------------------- -# MAGIC ,not_in_flag -# MAGIC ,extend_market -# MAGIC from tmp_tblmarket -# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end)) -# MAGIC where 1=1 -# MAGIC and Extend_Market IS NULL and NOT_IN_FLAG ='0' -# MAGIC -# MAGIC )tblmkt -# MAGIC on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end -# MAGIC and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end -# MAGIC and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end -# MAGIC and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end -# MAGIC and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end -# MAGIC and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end -# MAGIC and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end -# MAGIC -------------------------------------------------------------------------------------- -# MAGIC and nvl(prod.new_iqvia_prod_code, 0) = case when tblmkt.Product_Code is null then nvl(prod.new_iqvia_prod_code,0 ) else tblmkt.Product_Code end -# MAGIC and nvl(prod.new_iqvia_pack_code, 0) = case when tblmkt.Pack_Code is null then nvl(prod.new_iqvia_pack_code,0 ) else tblmkt.Pack_Code end -# MAGIC -------------------------------------------------------------------------------------- -# MAGIC and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end -# MAGIC where tblmkt.market is not null -# MAGIC -# MAGIC ) -# MAGIC , tmp3 as ( -# MAGIC select distinct -# MAGIC tmp1.iqvia_lineno -# MAGIC ,tmp1.iqvia_pack_code -# MAGIC ,tmp1.PROD_COD -# MAGIC ,tmp1.iqvia_notes -# MAGIC ,tmp1.new_pack_flag -# MAGIC ,tmp1.is_exists_chpa -# MAGIC ,tmp1.product_id -# MAGIC ,tmp1.prescription_nature -# MAGIC ,tmp1.medicine_type -# MAGIC ,tmp1.zk_medicine_tier1 -# MAGIC ,tmp1.zk_medicine_tier2 -# MAGIC ,tmp1.zk_medicine_tier3 -# MAGIC ,tmp1.zk_medicine_tier4 -# MAGIC ,tmp1.common_name -# MAGIC ,tmp1.dosage_form -# MAGIC ,tmp1.user_type -# MAGIC ,tmp1.category_name -# MAGIC ,tmp1.product_name -# MAGIC ,tmp1.brand_name -# MAGIC ,tmp1.zk_manu_des -# MAGIC ,tmp1.zk_corp_des -# MAGIC ,tmp1.zk_pack_des -# MAGIC ,tmp1.counting_unit_a -# MAGIC ,tmp1.dosage_unit_a -# MAGIC ,tmp1.unit_a -# MAGIC ,tmp1.app1_cod -# MAGIC ,tmp1.app1_des -# MAGIC ,tmp1.app1_des_c -# MAGIC ,tmp1.app2_cod -# MAGIC ,tmp1.app2_des -# MAGIC ,tmp1.app2_des_c -# MAGIC ,tmp1.app3_cod -# MAGIC ,tmp1.app3_des -# MAGIC ,tmp1.app3_des_c -# MAGIC ,tmp1.atc1_cod -# MAGIC ,tmp1.atc1_des -# MAGIC ,tmp1.atc1_des_c -# MAGIC ,tmp1.atc2_cod -# MAGIC ,tmp1.atc2_des -# MAGIC ,tmp1.atc2_des_c -# MAGIC ,tmp1.atc3_cod -# MAGIC ,tmp1.atc3_des -# MAGIC ,tmp1.atc3_des_c -# MAGIC ,tmp1.atc4_cod -# MAGIC ,tmp1.atc4_des -# MAGIC ,tmp1.atc4_des_c -# MAGIC ,tmp1.bio_desc -# MAGIC ,tmp1.cmps_cod -# MAGIC ,tmp1.cmps_des -# MAGIC ,tmp1.cmps_des_c -# MAGIC ,tmp1.corp_cod -# MAGIC ,tmp1.corp_des -# MAGIC ,tmp1.corp_des_c -# MAGIC ,tmp1.edl_desc -# MAGIC ,tmp1.eth_otc_desc -# MAGIC ,tmp1.gene_orig_desc -# MAGIC ,tmp1.gqce_desc -# MAGIC ,tmp1.manu_cod -# MAGIC ,tmp1.manu_des -# MAGIC ,tmp1.manu_des_c -# MAGIC ,tmp1.mnfl_cod -# MAGIC ,tmp1.mnfl_des -# MAGIC ,tmp1.nrdl_desc -# MAGIC ,tmp1.pack_des -# MAGIC ,tmp1.stgh_des -# MAGIC ,tmp1.pack_lch -# MAGIC ,tmp1.paed_desc -# MAGIC ,tmp1.prod_des -# MAGIC ,tmp1.prod_des_c -# MAGIC ,tmp1.tcm_desc -# MAGIC ,tmp1.vbp_desc -# MAGIC ,tmp1.unit -# MAGIC ,tmp1.counting_unit -# MAGIC ,tmp1.dosage_unit -# MAGIC ,tmp1.NRDL_ENTRY_DATE -# MAGIC ,tmp1.market -# MAGIC ,nvl(t2.bu,tmp1.bu) as bu -# MAGIC ,tmp1.extend_market_ratio -# MAGIC ,IF(tmp1.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az -# MAGIC from tmp1 left join tmp2 -# MAGIC on nvl(tmp1.ATC1_COD,'') = nvl(tmp2.ATC1_COD,'') -# MAGIC and nvl(tmp1.ATC2_COD,'') = nvl(tmp2.ATC2_COD,'') -# MAGIC and nvl(tmp1.ATC3_COD,'') = nvl(tmp2.ATC3_COD,'') -# MAGIC and nvl(tmp1.ATC4_COD,'') = nvl(tmp2.ATC4_COD,'') -# MAGIC and nvl(tmp1.APP1_COD,'') = nvl(tmp2.APP1_COD,'') -# MAGIC and nvl(tmp1.APP2_COD,'') = nvl(tmp2.APP2_COD,'') -# MAGIC and nvl(tmp1.APP3_COD,'') = nvl(tmp2.APP3_COD,'') -# MAGIC and nvl(tmp1.PROD_COD,'') = nvl(tmp2.PROD_COD,'') -# MAGIC and nvl(tmp1.iqvia_pack_code,'') = nvl(tmp2.iqvia_pack_code,'') -# MAGIC and nvl(tmp1.common_name ,'') = nvl(tmp2.common_name ,'') -# MAGIC and nvl(tmp1.product_id,'') = nvl(tmp2.product_id,'') -# MAGIC and nvl(tmp1.dosage_form ,'') = nvl(tmp2.dosage_form ,'') -# MAGIC and nvl(tmp1.CMPS_COD,'') = nvl(tmp2.CMPS_COD,'') -# MAGIC and nvl(tmp1.market ,'') = nvl(tmp2.market ,'') -# MAGIC left join (select Market, BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ext_retail_tblmarket -# MAGIC -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') and Extend_Market IS NOT NULL -# MAGIC -- )or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end) -# MAGIC where Extend_Market IS NOT NULL -# MAGIC ) t2 on tmp1.Market=t2.Extend_Market -# MAGIC where NVL(tmp2.f_flag,0) !=1 -# MAGIC -# MAGIC ) -# MAGIC -# MAGIC -- 合并所有市场数据 -# MAGIC select -# MAGIC * -# MAGIC from tmp3 -# MAGIC --没有匹配上的给默认市场:Non AZ Retail Related Market -# MAGIC union all -# MAGIC select -# MAGIC prod.iqvia_lineno -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & prod_code -# MAGIC ,prod.new_iqvia_pack_code as iqvia_pack_code -# MAGIC ,prod.new_iqvia_prod_code as PROD_COD -# MAGIC ------------------------------------------------------------------- -# MAGIC ,prod.iqvia_notes -# MAGIC ,prod.new_pack_flag -# MAGIC ,prod.is_exists_chpa -# MAGIC ,prod.product_id -# MAGIC ,prod.prescription_nature -# MAGIC ,prod.medicine_type -# MAGIC ,prod.zk_medicine_tier1 -# MAGIC ,prod.zk_medicine_tier2 -# MAGIC ,prod.zk_medicine_tier3 -# MAGIC ,prod.zk_medicine_tier4 -# MAGIC ,prod.common_name -# MAGIC ,prod.dosage_form -# MAGIC ,prod.user_type -# MAGIC ,prod.category_name -# MAGIC ,prod.product_name -# MAGIC ,prod.brand_name -# MAGIC ,prod.zk_manu_des -# MAGIC ,prod.zk_corp_des -# MAGIC ,prod.zk_pack_des -# MAGIC ,prod.counting_unit_a -# MAGIC ,prod.dosage_unit_a -# MAGIC ,prod.unit_a -# MAGIC ,prod.app1_cod -# MAGIC ,prod.app1_des -# MAGIC ,prod.app1_des_c -# MAGIC ,prod.app2_cod -# MAGIC ,prod.app2_des -# MAGIC ,prod.app2_des_c -# MAGIC ,prod.app3_cod -# MAGIC ,prod.app3_des -# MAGIC ,prod.app3_des_c -# MAGIC ,prod.atc1_cod -# MAGIC ,prod.atc1_des -# MAGIC ,prod.atc1_des_c -# MAGIC ,prod.atc2_cod -# MAGIC ,prod.atc2_des -# MAGIC ,prod.atc2_des_c -# MAGIC ,prod.atc3_cod -# MAGIC ,prod.atc3_des -# MAGIC ,prod.atc3_des_c -# MAGIC ,prod.atc4_cod -# MAGIC ,prod.atc4_des -# MAGIC ,prod.atc4_des_c -# MAGIC ,prod.bio_desc -# MAGIC ,right(concat('00000',nvl(prod.cmps_cod,0 )),6) cmps_cod -# MAGIC ,prod.cmps_des -# MAGIC ,prod.cmps_des_c -# MAGIC ,prod.corp_cod -# MAGIC ,prod.corp_des -# MAGIC ,prod.corp_des_c -# MAGIC ,prod.edl_desc -# MAGIC ,prod.eth_otc_desc -# MAGIC ,prod.gene_orig_desc -# MAGIC ,prod.gqce_desc -# MAGIC ,prod.manu_cod -# MAGIC ,prod.manu_des -# MAGIC ,prod.manu_des_c -# MAGIC ,prod.mnfl_cod -# MAGIC ,prod.mnfl_des -# MAGIC ,prod.nrdl_desc -# MAGIC ,prod.pack_des -# MAGIC ,prod.stgh_des -# MAGIC ,prod.pack_lch -# MAGIC ,prod.paed_desc -# MAGIC ,prod.prod_des -# MAGIC ,prod.prod_des_c -# MAGIC ,prod.tcm_desc -# MAGIC ,prod.vbp_desc -# MAGIC ,prod.unit -# MAGIC ,prod.counting_unit -# MAGIC ,prod.dosage_unit -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,'Non AZ Retail Related Market' as market -# MAGIC ,tmp3.bu -# MAGIC ,nvl(tmp3.extend_market_ratio,1) as extend_market_ratio -# MAGIC ,IF(PROD.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az -# MAGIC from tmp_pack_property prod -# MAGIC left join tmp3 on prod.product_id = tmp3.product_id -# MAGIC LEFT JOIN tmp_pack_additional_attribute MOLE -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC ON prod.new_iqvia_pack_code = MOLE.new_pack_code -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC where tmp3.product_id is null - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.1 generate mapping table -# MAGIC -- 1.1.3 获取market信息,产品重新归属 -# MAGIC -- 1.1.3.2 对配置表的pack 对应公司、分子式 根据 dwd_gnd_tbl_corp_change 表进行产品重新归属 -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_pack_property_corp -# MAGIC select distinct a.iqvia_pack_code -# MAGIC ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod -# MAGIC ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des -# MAGIC ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c -# MAGIC ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod -# MAGIC ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des -# MAGIC ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -# MAGIC from ( -# MAGIC select -# MAGIC DISTINCT -# MAGIC iqvia_pack_code, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC right(concat('000000',manu_cod),6 ) manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC prod_cod -# MAGIC from tmp.tmp_zk_retail_pack_property -# MAGIC ) a -# MAGIC left join ( -# MAGIC select -# MAGIC ---------------------------------------------- -# MAGIC -- format prod_cod -# MAGIC case when length(prod_cod) < 9 then right(concat('000000000',prod_cod),9) else prod_cod end as prod_cod, -# MAGIC ---------------------------------------------- -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC right(concat('000000',manu_cod),6 ) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change where pack_cod is null -# MAGIC ) b on a.prod_cod = b.prod_cod -# MAGIC left join ( -# MAGIC select -# MAGIC ---------------------------------------------- -# MAGIC -- format pack_cod -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' then right(concat('000000000000',trim(pack_cod)),12) else trim(pack_cod) end as pack_cod, -# MAGIC ---------------------------------------------- -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC right(concat('000000',manu_cod),6 ) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change -# MAGIC where pack_cod is not null -# MAGIC ) c on a.iqvia_pack_code = c.pack_cod -# MAGIC left join ( -# MAGIC select distinct corp_cod,corp_des_c -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -# MAGIC Left join ( -# MAGIC select distinct right(concat('000000',manu_cod),6 ) manu_cod,manu_des,manu_des_c -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.1 generate mapping table -# MAGIC -- 1.1.4 update special case 'CV-其他美托洛尔' -# MAGIC -- “酒石酸美托洛尔”和“琥珀酸美托洛尔”以及部分others分子式标准名都为“美托洛尔” -# MAGIC -- 这里需要根据市场把“酒石酸美托洛尔”以及这部分others区分出来,不能应用“琥珀酸美托洛尔”即level_molecule为“美托洛尔”的拆分比例 -# MAGIC -- 区分方式为取market为非“Metoprolol Succinate Market”即非“酒石酸美托洛尔市场”的pack_code -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC UPDATE tmp.tmp_retail_pack_mapping -# MAGIC SET -# MAGIC level_molecule = '其他美托洛尔', -# MAGIC brand_flag = 3 -# MAGIC where level_ta = 'CV' -# MAGIC and level_market = '高血压用药' -# MAGIC and level_molecule = '美托洛尔' -# MAGIC and pack_code not in ( -# MAGIC select distinct iqvia_pack_code -# MAGIC from tmp.tmp_zk_retail_pack_property -# MAGIC where market = 'Metoprolol Succinate Market' -# MAGIC ) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.2 update the pack data extra column in tmp.tmp_retail_pack_rawdata when pack data has mapping -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC merge into tmp.tmp_retail_pack_rawdata a -# MAGIC using( -# MAGIC select * from tmp.tmp_retail_pack_mapping -# MAGIC ) as b -# MAGIC on a.product_id = b.product_id -# MAGIC and a.level_ta = b.level_ta -# MAGIC and a.level_market = b.level_market -# MAGIC when matched then -# MAGIC update set -# MAGIC a.pack_code = b.pack_code, -# MAGIC a.molecule_code = b.molecule_code, -# MAGIC a.molecule_desc = b.molecule_desc, -# MAGIC a.product_code = b.product_code, -# MAGIC a.product_desc = b.product_desc, -# MAGIC a.level_molecule = b.level_molecule, -# MAGIC a.level_brand = b.level_brand, -# MAGIC a.brand_flag = b.brand_flag - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.3 update the pack data extra column in tmp.tmp_retail_pack_rawdata when pack data without mapping -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_pack_property as ( -# MAGIC --------------------------------------------------------------- -# MAGIC -- 以数字开头的iqvia_pack_code调整为12位(以字母开头的不变),不足位数补0 -# MAGIC -- iqvia_prod_code调整为9位,不足位数补0 -# MAGIC select -# MAGIC 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, -# MAGIC case when length(iqvia_prod_code) < 9 then right(concat('000000000',iqvia_prod_code),9) else iqvia_prod_code end as iqvia_prod_code, -# MAGIC product_id, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC corp_cod, -# MAGIC app1_cod, -# MAGIC app2_cod, -# MAGIC app3_cod -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ), tmp_b2c_label_total as ( -# MAGIC select -# MAGIC case when length(IQVIA_PROD_CODE) < 9 then right(concat('000000000',IQVIA_PROD_CODE),9) else IQVIA_PROD_CODE end as IQVIA_PROD_CODE, -# MAGIC ZK_Prod_C, -# MAGIC APP1_COD, -# MAGIC APP2_COD, -# MAGIC APP3_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total -# MAGIC --------------------------------------------------------------- -# MAGIC ), tmp_suffix_brand as ( -# MAGIC select distinct split(brand,'-')[0] -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where brand like '%-%' -# MAGIC ), tmp_mapping as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.product_id as product_id, -# MAGIC a.iqvia_pack_code as pack_code, -# MAGIC a.cmps_des as molecule_code, -# MAGIC a.cmps_des_c as molecule_name, -# MAGIC ifnull(a.prod_des, concat(a.cmps_des,'_OTHER_PROD')) as product_code, -# MAGIC ifnull(a.prod_des_c, concat(a.cmps_des_c,'_OTHER_PROD')) as product_name -# MAGIC from tmp_pack_property a -# MAGIC where a.prod_des_c not in (select * from tmp_suffix_brand) -# MAGIC or a.prod_des_c is null -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC a.product_id as product_id, -# MAGIC a.iqvia_pack_code as pack_code, -# MAGIC a.cmps_des as molecule_code, -# MAGIC a.cmps_des_c as molecule_name, -# MAGIC a.prod_des as product_code, -# MAGIC ifnull(b.ZK_Prod_C, a.prod_des_c) as product_name -# MAGIC from tmp_pack_property a -# MAGIC left join tmp_b2c_label_total b -# MAGIC on a.iqvia_prod_code = b.IQVIA_PROD_CODE -# MAGIC and a.app1_cod = b.APP1_COD -# MAGIC and a.app2_cod = b.APP2_COD -# MAGIC and a.app3_cod = b.APP3_COD -# MAGIC where a.prod_des_c in (select * from tmp_suffix_brand) -# MAGIC ) -# MAGIC -# MAGIC merge into tmp.tmp_retail_pack_rawdata a -# MAGIC using( -# MAGIC select * from tmp_mapping -# MAGIC ) as b -# MAGIC on a.product_id = b.product_id -# MAGIC and a.pack_code is null -# MAGIC when matched then -# MAGIC update set -# MAGIC a.pack_code = b.pack_code, -# MAGIC a.molecule_code = b.molecule_code, -# MAGIC a.molecule_desc = b.molecule_name, -# MAGIC a.product_code = b.product_code, -# MAGIC a.product_desc = b.product_name, -# MAGIC a.brand_flag = 3 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.4 update the pack data brand flag to '1' which pack has regional data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC quarter, -# MAGIC product_id, -# MAGIC pack_code -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC where zk_regin <> '全国' -# MAGIC ) -# MAGIC -# MAGIC merge into tmp.tmp_retail_pack_rawdata a -# MAGIC using( -# MAGIC select * from tmp_has_regional_data -# MAGIC ) as b -# MAGIC on a.quarter = b.quarter -# MAGIC and a.product_id = b.product_id -# MAGIC and a.pack_code = b.pack_code -# MAGIC when matched then -# MAGIC update set -# MAGIC a.brand_flag = 1 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: generate product_id&level relationship mapping table -# MAGIC -- 1.5 delete non GI data -# MAGIC -- “TA=GI”的数据,只取market为'Antacid anti GI swelling agent+PPI Oral'的数 -# MAGIC -- 非“TA=GI“的数据,无限制 -# MAGIC -- 此处筛选并移除TA为GI,但并未在此市场出现的数据 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC delete from tmp.tmp_retail_pack_rawdata a -# MAGIC where a.level_ta = 'GI' -# MAGIC and a.pack_code not in ( -# MAGIC select distinct iqvia_pack_code -# MAGIC from tmp.tmp_zk_retail_pack_property -# MAGIC where market = 'Antacid anti GI swelling agent+PPI Oral' -# MAGIC ) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: split regional data by brand ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: split regional data by brand ratio when there is no regional data and there is a brand ratio -# MAGIC -- only split the pack data with brand ratio and without regional pack data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC quarter, -# MAGIC product_id -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC where zk_regin <> '全国' -# MAGIC ), tmp_has_brand_ratio as ( -# MAGIC select -# MAGIC distinct -# MAGIC b.product_id -# MAGIC from tmp.tmp_retail_level_brand a -# MAGIC inner join tmp.tmp_retail_pack_mapping b -# MAGIC on a.ta = b.level_ta -# MAGIC and a.market = b.level_market -# MAGIC and a.molecule = b.level_molecule -# MAGIC and a.brand = b.level_brand -# MAGIC ), tmp_pack_rawdata as ( -# MAGIC select * -# MAGIC from tmp.tmp_retail_pack_rawdata a -# MAGIC where not exists( -# MAGIC select b.quarter,b.product_id from tmp_has_regional_data b -# MAGIC where a.quarter = b.quarter -# MAGIC and a.product_id = b.product_id -# MAGIC ) and exists( -# MAGIC select c.product_id from tmp_has_brand_ratio c -# MAGIC where a.product_id = c.product_id -# MAGIC ) -# MAGIC ) -# MAGIC ----------------------------- append split regional data ---------------------------- -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC c.product_id, -# MAGIC c.zk_product_id, -# MAGIC a.province_city, -# MAGIC c.zk_rx_otc, -# MAGIC c.zk_medicine_type, -# MAGIC c.zk_medicine_tier1, -# MAGIC c.zk_medicine_tier2, -# MAGIC c.zk_medicine_tier3, -# MAGIC c.zk_medicine_tier4, -# MAGIC c.zk_common_name, -# MAGIC c.zk_dosage_form, -# MAGIC c.zk_user_type, -# MAGIC c.zk_category_name, -# MAGIC c.zk_product_name, -# MAGIC c.zk_brand_name, -# MAGIC c.zk_manu_des, -# MAGIC c.zk_corp_des, -# MAGIC c.zk_pack_des, -# MAGIC c.month, -# MAGIC c.quarter, -# MAGIC c.price, -# MAGIC round(c.sales_unit * a.ratio_vol ,10) as sales_unit, -# MAGIC round(c.sales_value * a.ratio_val ,10) as sales_value, -# MAGIC c.digital_spread_rate, -# MAGIC c.weighted_spread_rate, -# MAGIC c.counting_unit, -# MAGIC c.pack_code, -# MAGIC c.molecule_code, -# MAGIC c.molecule_desc, -# MAGIC c.product_code, -# MAGIC c.product_desc, -# MAGIC c.level_ta, -# MAGIC c.level_market, -# MAGIC c.level_molecule, -# MAGIC c.level_brand, -# MAGIC a.ratio_val, -# MAGIC a.ratio_vol, -# MAGIC 3 as data_flag, -# MAGIC b.brand_flag -# MAGIC from tmp.tmp_retail_level_brand a -# MAGIC inner join tmp.tmp_retail_pack_mapping b -# MAGIC on a.ta = b.level_ta -# MAGIC and a.market = b.level_market -# MAGIC and a.molecule = b.level_molecule -# MAGIC and a.brand = b.level_brand -# MAGIC inner join tmp_pack_rawdata c -# MAGIC on c.product_id = b.product_id -# MAGIC and c.quarter = a.quarter -# MAGIC where a.province_city <> '全国' -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-3: substract ROC data - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: substract ROC data -# MAGIC -- if there is regional pack data or splited regional pack data, ROC = '全国' - 'sum regional data' -# MAGIC -- if there is not regional pack data, ROC = '全国' -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_area_group as ( -# MAGIC select -# MAGIC product_id, -# MAGIC quarter, -# MAGIC month, -# MAGIC sum(sales_unit) as sales_unit, -# MAGIC sum(sales_value) as sales_value -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC where zk_regin <> '全国' -# MAGIC group by product_id,quarter,month -# MAGIC ), tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC quarter, -# MAGIC product_id -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC where zk_regin <> '全国' -# MAGIC and data_flag = 0 -# MAGIC ) -# MAGIC -# MAGIC ----------------------------- append ROC data ------------------------------------------ -# MAGIC insert into table tmp.tmp_retail_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC a.product_id, -# MAGIC a.zk_product_id, -# MAGIC 'ROC', -# MAGIC a.zk_rx_otc, -# MAGIC a.zk_medicine_type, -# MAGIC a.zk_medicine_tier1, -# MAGIC a.zk_medicine_tier2, -# MAGIC a.zk_medicine_tier3, -# MAGIC a.zk_medicine_tier4, -# MAGIC a.zk_common_name, -# MAGIC a.zk_dosage_form, -# MAGIC a.zk_user_type, -# MAGIC a.zk_category_name, -# MAGIC a.zk_product_name, -# MAGIC a.zk_brand_name, -# MAGIC a.zk_manu_des, -# MAGIC a.zk_corp_des, -# MAGIC a.zk_pack_des, -# MAGIC a.month, -# MAGIC a.quarter, -# MAGIC a.price, -# MAGIC a.sales_unit - ifnull(b.sales_unit,0) as sales_unit, -# MAGIC a.sales_value - ifnull(b.sales_value,0) as sales_value, -# MAGIC a.digital_spread_rate, -# MAGIC a.weighted_spread_rate, -# MAGIC a.counting_unit, -# MAGIC a.pack_code, -# MAGIC a.molecule_code, -# MAGIC a.molecule_desc, -# MAGIC a.product_code, -# MAGIC a.product_desc, -# MAGIC a.level_ta, -# MAGIC a.level_market, -# MAGIC a.level_molecule, -# MAGIC a.level_brand, -# MAGIC a.ratio_val, -# MAGIC a.ratio_vol, -# MAGIC ------------------------------------------------------------------------------- -# MAGIC -- 有省份pack的数(包括无品牌数据的数)计算出来的ROC所对应的pack_flag,也需要是1-原始值,不能是2-拆分的值 -# MAGIC -- 所以这里针对这类有省份数据的ROC数据,data_flag赋值为0-原始值,其他的仍为1-倒减值 -# MAGIC case when c.product_id is not null then 0 else 1 end as data_flag, -# MAGIC ------------------------------------------------------------------------------- -# MAGIC a.brand_flag -# MAGIC from tmp.tmp_retail_pack_rawdata a -# MAGIC inner join tmp_area_group b -# MAGIC on a.product_id = b.product_id -# MAGIC and a.quarter = b.quarter -# MAGIC and nvl(a.month,'') = nvl(b.month,'') -# MAGIC left join tmp_has_regional_data c -# MAGIC on a.quarter = c.quarter -# MAGIC and a.product_id = c.product_id -# MAGIC where a.zk_regin = '全国' - -# COMMAND ---------- - -############################################################END############################################################## \ No newline at end of file diff --git a/EXTERNAL/Retail/03 split_pack_data.py:Zone.Identifier b/EXTERNAL/Retail/03 split_pack_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/03 split_pack_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/04 map_to_dws_table.py b/EXTERNAL/Retail/04 map_to_dws_table.py deleted file mode 100644 index ee7751a..0000000 --- a/EXTERNAL/Retail/04 map_to_dws_table.py +++ /dev/null @@ -1,209 +0,0 @@ -# Databricks notebook source -############################################################START############################################################## -### STEP-1: insert splited pack data into tmp final table: tmp_retail_final_sales - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: insert splited pack data into tmp final table -# MAGIC -- insert into tmp_retail_final_sales -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_pack as ( -# MAGIC select -# MAGIC ------------------------------------------------------ -# MAGIC -- 有月度数据使用月度数据,无月度数据用季度数据去转 -# MAGIC nvl( -# MAGIC a.month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(a.quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(a.quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(a.quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(a.quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(a.quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) as YYYYMM, -# MAGIC ------------------------------------------------------ -# MAGIC a.pack_code as iqvia_pack_code, -# MAGIC a.product_id as zk_product_id, -# MAGIC case when a.product_desc <> 'others' then a.product_desc else null end as prod_des_c, -# MAGIC case when a.product_desc <> 'others' then a.product_desc else concat('Others_', a.molecule_desc) end as PROD_MAPPING, -# MAGIC a.zk_regin as province_city, -# MAGIC a.level_market as market, -# MAGIC a.sales_value, -# MAGIC a.sales_unit, -# MAGIC ------------------------------------------------------ -# MAGIC -- counting_unit取值逻辑: -# MAGIC -- 不能直接取原始pack文件表中的值,改为取pack_property表中counting_unit / unit的值 -# MAGIC a.sales_unit * (b.counting_unit/ coalesce(b.unit,1)) as counting_unit, -# MAGIC ------------------------------------------------------ -# MAGIC case when data_flag = 0 then 1 else 2 end as pack_flag, -# MAGIC case when brand_flag = 1 then 1 else 2 end as brand_flag -# MAGIC from tmp.tmp_retail_pack_rawdata a -# MAGIC left join dwd.dwd_gnd_ext_retail_pack_property b -# MAGIC on a.product_id = b.product_id -# MAGIC ), tmp_has_roc as ( -# MAGIC select -# MAGIC product_id, -# MAGIC quarter, -# MAGIC ------------------------------------------------------ -# MAGIC -- 有月度数据使用月度数据,无月度数据用季度数据去转 -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) as month, -# MAGIC ------------------------------------------------------ -# MAGIC pack_code -# MAGIC from tmp.tmp_retail_pack_rawdata -# MAGIC where zk_regin = 'ROC' -# MAGIC ), tmp_pack_this_year_with_roc as ( -# MAGIC select -# MAGIC * -# MAGIC from tmp_pack a -# MAGIC where exists( -# MAGIC select * from tmp_has_roc b -# MAGIC where a.YYYYMM = b.month -# MAGIC and a.iqvia_pack_code = b.pack_code -# MAGIC and a.zk_product_id = b.product_id -# MAGIC ) and a.province_city <> '全国' -# MAGIC ), tmp_pack_next_year_with_roc as ( -# MAGIC select -# MAGIC cast(YYYYMM + 100 as int) as YYYYMM, -# MAGIC iqvia_pack_code, -# MAGIC zk_product_id, -# MAGIC prod_des_c, -# MAGIC PROD_MAPPING, -# MAGIC province_city, -# MAGIC market, -# MAGIC sales_value as sales_value_ly, -# MAGIC sales_unit as sales_unit_ly, -# MAGIC counting_unit as counting_unit_ly, -# MAGIC pack_flag, -# MAGIC brand_flag -# MAGIC from tmp_pack a -# MAGIC where YYYYMM + 100 <= (select max(YYYYMM) from tmp_pack) -# MAGIC and exists( -# MAGIC select * from tmp_has_roc b -# MAGIC where a.YYYYMM = b.month -# MAGIC and a.iqvia_pack_code = b.pack_code -# MAGIC and a.zk_product_id = b.product_id -# MAGIC ) and a.province_city <> '全国' -# MAGIC -# MAGIC ), tmp_pack_this_year_without_roc as ( -# MAGIC select -# MAGIC * -# MAGIC from tmp_pack a -# MAGIC where not exists( -# MAGIC select * from tmp_has_roc b -# MAGIC where a.YYYYMM = b.month -# MAGIC and a.iqvia_pack_code = b.pack_code -# MAGIC and a.zk_product_id = b.product_id -# MAGIC ) -# MAGIC ), tmp_pack_next_year_without_roc as ( -# MAGIC select -# MAGIC cast(YYYYMM + 100 as int) as YYYYMM, -# MAGIC iqvia_pack_code, -# MAGIC zk_product_id, -# MAGIC prod_des_c, -# MAGIC PROD_MAPPING, -# MAGIC province_city, -# MAGIC market, -# MAGIC sales_value as sales_value_ly, -# MAGIC sales_unit as sales_unit_ly, -# MAGIC counting_unit as counting_unit_ly, -# MAGIC pack_flag, -# MAGIC brand_flag -# MAGIC from tmp_pack a -# MAGIC where YYYYMM + 100 <= (select max(YYYYMM) from tmp_pack) -# MAGIC and not exists( -# MAGIC select * from tmp_has_roc b -# MAGIC where a.YYYYMM = b.month -# MAGIC and a.iqvia_pack_code = b.pack_code -# MAGIC and a.zk_product_id = b.product_id -# MAGIC ) -# MAGIC ), tmp_final_sales as ( -# MAGIC select -# MAGIC ifnull(a.yyyymm, b.yyyymm) as yyyymm, -# MAGIC ifnull(a.iqvia_pack_code, b.iqvia_pack_code) as iqvia_pack_code, -# MAGIC ifnull(a.zk_product_id, b.zk_product_id) as zk_product_id, -# MAGIC ifnull(a.prod_des_c, b.prod_des_c) as prod_des_c, -# MAGIC ifnull(a.PROD_MAPPING, b.PROD_MAPPING) as PROD_MAPPING, -# MAGIC ifnull(a.province_city, b.province_city) as province_city, -# MAGIC ifnull(a.market, b.market) as market, -# MAGIC ifnull(a.sales_value, 0) as sales_value, -# MAGIC ifnull(a.sales_unit, 0) as sales_unit, -# MAGIC ifnull(a.counting_unit, 0) as counting_unit, -# MAGIC ifnull(a.pack_flag, b.pack_flag) as pack_flag, -# MAGIC ifnull(a.brand_flag,b.brand_flag ) as brand_flag, -# MAGIC ifnull(b.sales_value_ly, 0) as sales_value_ly, -# MAGIC ifnull(b.sales_unit_ly, 0) as sales_unit_ly, -# MAGIC ifnull(b.counting_unit_ly, 0) as counting_unit_ly -# MAGIC from tmp_pack_this_year_with_roc a -# MAGIC full outer join tmp_pack_next_year_with_roc b -# MAGIC on a.YYYYMM = b.YYYYMM -# MAGIC and a.iqvia_pack_code = b.iqvia_pack_code -# MAGIC and a.zk_product_id = b.zk_product_id -# MAGIC and a.province_city = b.province_city -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC ifnull(c.yyyymm, d.yyyymm) as yyyymm, -# MAGIC ifnull(c.iqvia_pack_code, d.iqvia_pack_code) as iqvia_pack_code, -# MAGIC ifnull(c.zk_product_id, d.zk_product_id) as zk_product_id, -# MAGIC ifnull(c.prod_des_c, d.prod_des_c) as prod_des_c, -# MAGIC ifnull(c.PROD_MAPPING, d.PROD_MAPPING) as PROD_MAPPING, -# MAGIC 'ROC' as province_city, -# MAGIC ifnull(c.market, d.market) as market, -# MAGIC ifnull(c.sales_value, 0) as sales_value, -# MAGIC ifnull(c.sales_unit, 0) as sales_unit, -# MAGIC ifnull(c.counting_unit, 0) as counting_unit, -# MAGIC --ifnull(c.pack_flag, d.pack_flag) as pack_flag, -# MAGIC 2 as pack_flag, -- 此类没有拆分比例,且pack只有全国的数,pack_flag固定为2 -# MAGIC ifnull(c.brand_flag,d.brand_flag ) as brand_flag, -# MAGIC ifnull(d.sales_value_ly, 0) as sales_value_ly, -# MAGIC ifnull(d.sales_unit_ly, 0) as sales_unit_ly, -# MAGIC ifnull(d.counting_unit_ly, 0) as counting_unit_ly -# MAGIC from tmp_pack_this_year_without_roc c -# MAGIC full outer join tmp_pack_next_year_without_roc d -# MAGIC on c.YYYYMM = d.YYYYMM -# MAGIC and c.iqvia_pack_code = d.iqvia_pack_code -# MAGIC and c.zk_product_id = d.zk_product_id -# MAGIC and c.province_city = d.province_city -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table tmp.tmp_retail_final_sales -# MAGIC -# MAGIC select -# MAGIC yyyymm, -# MAGIC iqvia_pack_code, -# MAGIC zk_product_id, -# MAGIC prod_des_c, -# MAGIC PROD_MAPPING, -# MAGIC province_city, -# MAGIC market, -# MAGIC sales_value, -# MAGIC sales_value_ly, -# MAGIC sales_unit, -# MAGIC sales_unit_ly, -# MAGIC counting_unit, -# MAGIC counting_unit_ly, -# MAGIC pack_flag, -# MAGIC brand_flag -# MAGIC from tmp_final_sales -# MAGIC order by yyyymm - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/04 map_to_dws_table.py:Zone.Identifier b/EXTERNAL/Retail/04 map_to_dws_table.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/04 map_to_dws_table.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/05 load_dtp_temp_data.py b/EXTERNAL/Retail/05 load_dtp_temp_data.py deleted file mode 100644 index a86f8a3..0000000 --- a/EXTERNAL/Retail/05 load_dtp_temp_data.py +++ /dev/null @@ -1,158 +0,0 @@ -# Databricks notebook source -# MAGIC %sql -# MAGIC -- CREATE or REPLACE TABLE tmp.tmp_retail_dtp_pack_rawdata ( -# MAGIC -- -- product_id STRING, -# MAGIC -- iqvia_pack_code string, -# MAGIC -- -- region_type STRING, -# MAGIC -- year STRING, -# MAGIC -- time STRING, -# MAGIC -- -- higher_level_region STRING, -# MAGIC -- region STRING, -# MAGIC -- -- prescription_nature STRING, -# MAGIC -- -- medicine_attribute STRING, -# MAGIC -- -- dosage_form STRING, -# MAGIC -- -- object STRING, -# MAGIC -- -- zk_classify1 STRING, -# MAGIC -- -- zk_classify2 STRING, -# MAGIC -- -- zk_classify3 STRING, -# MAGIC -- target_points STRING, -# MAGIC -- -- common_name STRING, -# MAGIC -- -- brand_name STRING, -# MAGIC -- -- product_name STRING, -# MAGIC -- -- category_name STRING, -# MAGIC -- -- pack_des STRING, -# MAGIC -- counting_unit DECIMAL(20,8), -# MAGIC -- -- factory STRING, -# MAGIC -- -- corp_des STRING, -# MAGIC -- average_price DECIMAL(20,8), -# MAGIC -- sales_amount DECIMAL(20,8), -# MAGIC -- sales_volume DECIMAL(20,8), -# MAGIC -- counting_units_obversion DECIMAL(20,8), -# MAGIC -- pack_code STRING, -# MAGIC -- molecule_code STRING, -# MAGIC -- molecule_desc STRING, -# MAGIC -- product_code STRING, -# MAGIC -- product_desc STRING, -# MAGIC -- level_ta STRING, -# MAGIC -- level_market STRING, -# MAGIC -- level_molecule STRING, -# MAGIC -- level_brand STRING, -# MAGIC -- ratio_val DECIMAL(20,10), -# MAGIC -- ratio_vol DECIMAL(20,10), -# MAGIC -- data_flag INT, -# MAGIC -- brand_flag INT) -# MAGIC -- USING delta -# MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_retail_dtp_pack_rawdata' -# MAGIC -- ; - -# COMMAND ---------- - -### constant -LEVEL_TA_ONC = 'ONC' -LEVEL_MARKET_EGFR_TKI = 'EGFR TKI' - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-2: load rawdata to tmp table - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: load rawdata to tmp table - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.1 load brand data to tmp_retail_dtp_brand_rawdata -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_dtp_brand_rawdata -# MAGIC -# MAGIC select -# MAGIC type, -# MAGIC 'ONC' as ta, -# MAGIC market, -# MAGIC zk_brand_category, -# MAGIC zk_common_name, -# MAGIC zk_manu_des, -# MAGIC rc_name_en, -# MAGIC province_city, -# MAGIC yyyymm, -# MAGIC ytd, -# MAGIC sales_value, -# MAGIC sales_volume, -# MAGIC price, -# MAGIC pdot_counting_unit -# MAGIC from dwd.dwd_gnd_ext_dtp_zk_brand -# MAGIC where ranked_by = 'value' -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load rawdata to tmp table -# MAGIC -- 1.2 load brand data to tmp_retail_dtp_pack_rawdata -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_dtp_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC -- dtp_raw_data.product_id, -# MAGIC dtp_pack_data.iqvia_pack_code, -# MAGIC -- dtp_raw_data.region_type, -# MAGIC dtp_raw_data.year, -# MAGIC dtp_raw_data.time, -# MAGIC -- dtp_raw_data.higher_level_region, -# MAGIC dtp_raw_data.region, -# MAGIC -- dtp_raw_data.prescription_nature, -# MAGIC -- dtp_raw_data.medicine_attribute, -# MAGIC -- dtp_raw_data.dosage_form, -# MAGIC -- dtp_raw_data.object, -# MAGIC -- dtp_raw_data.zk_classify1, -# MAGIC -- dtp_raw_data.zk_classify2, -# MAGIC -- dtp_raw_data.zk_classify3, -# MAGIC dtp_raw_data.target_points, -# MAGIC -- dtp_raw_data.common_name, -# MAGIC -- dtp_raw_data.brand_name, -# MAGIC -- dtp_raw_data.product_name, -# MAGIC -- dtp_raw_data.category_name, -# MAGIC -------------------------* hard_code *------------------------- -# MAGIC -- 针对pack_des这个字段,pack原始表使用的是'*',但手工表pack_properity使用的是'x' -# MAGIC -- 而pack_des字段与关联出pack_code有关,缺少此字段会导致关联失败,所以要手动消除差异 -# MAGIC -- replace(dtp_raw_data.pack_des,'*','x'), -# MAGIC -------------------------* hard_code *------------------------- -# MAGIC max(dtp_raw_data.counting_unit) counting_unit, -# MAGIC -- dtp_raw_data.factory, -# MAGIC -- dtp_raw_data.corp_des, -# MAGIC max(dtp_raw_data.average_price) average_price, -# MAGIC sum(dtp_raw_data.sales_amount) sales_amount, -# MAGIC sum(dtp_raw_data.sales_volume) sales_volume, -# MAGIC max(dtp_raw_data.counting_units_obversion) counting_units_obversion, -# MAGIC null as pack_code, -# MAGIC null as molecule_code, -# MAGIC null as molecule_desc, -# MAGIC null as product_code, -# MAGIC null as product_desc, -# MAGIC 'ONC' as level_ta, -# MAGIC null as level_market, --- 此pack原始表文件中存在多个市场,后续通过关联更新 -# MAGIC null as level_molecule, -# MAGIC null as level_brand, -# MAGIC null as ratio_val, -# MAGIC null as ratio_vol, -# MAGIC 0 as data_flag, -# MAGIC null as brand_flag -# MAGIC from dwd.dwd_gnd_ext_retail_dtp_datasource as dtp_raw_data -# MAGIC left join dwd.dwd_gnd_ext_dtp_pack_property as dtp_pack_data -# MAGIC on dtp_raw_data.product_id = dtp_pack_data.product_id -# MAGIC group by -# MAGIC dtp_pack_data.iqvia_pack_code, -# MAGIC dtp_raw_data.year, -# MAGIC dtp_raw_data.time, -# MAGIC dtp_raw_data.region, -# MAGIC dtp_raw_data.target_points - -# COMMAND ---------- - -############################################################END############################################################## \ No newline at end of file diff --git a/EXTERNAL/Retail/05 load_dtp_temp_data.py:Zone.Identifier b/EXTERNAL/Retail/05 load_dtp_temp_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/05 load_dtp_temp_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/06 split_dtp_brand_data.py b/EXTERNAL/Retail/06 split_dtp_brand_data.py deleted file mode 100644 index 4a7d599..0000000 --- a/EXTERNAL/Retail/06 split_dtp_brand_data.py +++ /dev/null @@ -1,421 +0,0 @@ -# Databricks notebook source -### constant -DATA_TYPE_MARKET = 'MARKET' -DATA_TYPE_MOLECULE = 'MOLECULE' -DATA_TYPE_BRAND = 'BRAND' -DATA_TYPE_MULTI_MARKET = 'MULTI_MARKET' -DATA_TYPE_MULTI_MOLECULE = 'MULTI_MOLECULE' -DATA_TYPE_MULTI_BRAND = 'MULTI_BRAND' -DATA_TYPE_DUPLICATE = 'DUPLICATE' -DATA_TYPE_HEDGE_TA = 'HEDGE_TA' -DATA_TYPE_HEDGE_MARKET = 'HEDGE_MARKET' -DATA_TYPE_HEDGE_MOLECULE = 'HEDGE_MOLECULE' -DATA_TYPE_HEDGE_BRAND = 'HEDGE_BRAND' - -DATA_FLAG_RAW = 0 -DATA_FLAG_SUB = 1 -DATA_FLAG_ADD = 2 -DATA_FLAG_RATIO = 3 -DATA_FLAG_AVG = 4 -DATA_FLAG_HEDGE = 5 - -DATA_OTHER_TA = 'OTHER_TA' -DATA_OTHER_MARKET = 'OTHER_MARKET' -DATA_OTHER_MOLECULE = 'OTHER_MOLECULE' -DATA_OTHER_BRAND = 'OTHER_BRAND' -DATA_AREA_TYPE_ROC = 'ROC' -DATA_LABEL_AREA_ALL = '全国' - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: load data to tmp table -### STEP-2: substract data from level market to brand -### STEP-3: accumulate data from level brand to market - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: load data to tmp table - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.1 load LEVEL_MARKET data to tmp.tmp_retail_dtp_level_market -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_dtp_level_market -# MAGIC -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_dtp_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'MARKET' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.2 load LEVEL_MOLECULE data to tmp.tmp_retail_dtp_level_molecule -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_dtp_level_molecule -# MAGIC -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC b.level_molecule, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_dtp_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'MOLECULE' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: load data to tmp table -# MAGIC -- 1.3 load LEVEL_BRAND data to tmp.tmp_retail_dtp_level_brand -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_retail_dtp_level_brand -# MAGIC -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.province_city, -# MAGIC b.level_ta, -# MAGIC b.level_market, -# MAGIC b.level_molecule, -# MAGIC b.level_brand, -# MAGIC a.sales_val, -# MAGIC a.sales_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 0 -# MAGIC from tmp.tmp_retail_dtp_brand_rawdata a -# MAGIC inner join dwd.dwd_gnd_retail_split_automatic b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.brand_category = b.brand -# MAGIC and ifnull(a.common_name, '') = ifnull(b.common_name, '') -# MAGIC where b.level = 'BRAND' - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: substract data from level market to brand - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: substract data from level market to brand -# MAGIC -- 2.1 substract level market data and add 'OTHER_MOLECULE' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_aggregate_market as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_molecule -# MAGIC group by yyyymm, province_city , ta ,market -# MAGIC ),tmp_molecule as ( -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.province_city, -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.sales_val - ifnull(b.sales_val, 0) as sales_val, -# MAGIC a.sales_vol - ifnull(b.sales_vol, 0) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_market a -# MAGIC left join tmp_aggregate_market b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC ) -# MAGIC -# MAGIC -------append OTHER_MOLECULE to tmp.tmp_retail_dtp_level_molecule -# MAGIC insert into tmp.tmp_retail_dtp_level_molecule -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC 'OTHER_MOLECULE', -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 1 -# MAGIC from tmp_molecule -# MAGIC where sales_val > 0 or sales_vol > 0 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: substract data from level market to brand -# MAGIC -- 2.2 substract level molecule data and add 'OTHER_BRAND' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_aggregate_molecule as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_brand -# MAGIC group by yyyymm,province_city ,ta ,market,molecule -# MAGIC ),tmp_brand as ( -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.province_city, -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.molecule, -# MAGIC a.sales_val - ifnull(b.sales_val, 0) as sales_val, -# MAGIC a.sales_vol - ifnull(b.sales_vol, 0) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_molecule a -# MAGIC left join tmp_aggregate_molecule b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC ) -# MAGIC -# MAGIC -------append OTHER_BRAND to tmp.tmp_retail_dtp_level_brand -# MAGIC insert into tmp.tmp_retail_dtp_level_brand -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC 'OTHER_BRAND', -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC null, -# MAGIC 1 -# MAGIC from tmp_brand -# MAGIC where sales_val > 0 or sales_vol > 0 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-3: accumulate data from level brand to market - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND' & 'OTHER_MOLECULE' data -# MAGIC -- 3.1.1 accumulate level molecule data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_aggregate_molecule as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_brand -# MAGIC group by yyyymm,province_city ,ta ,market,molecule -# MAGIC ), tmp_append_molecule as ( -# MAGIC select a.* -# MAGIC from tmp_aggregate_molecule a -# MAGIC where not exists ( -# MAGIC select 1 -# MAGIC from tmp.tmp_retail_dtp_level_molecule b -# MAGIC where a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC ) -# MAGIC ) -# MAGIC -------append level molecule data accumulate from level brand -# MAGIC insert into tmp.tmp_retail_dtp_level_molecule -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 2 -# MAGIC from tmp_append_molecule - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND'& 'OTHER_MOLECULE' data -# MAGIC -- 3.1.2 balance 'OTHER_MOLECULE' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC merge into tmp.tmp_retail_dtp_level_molecule a -# MAGIC using( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_molecule -# MAGIC where data_flag = 2 -# MAGIC group by yyyymm,province_city,ta,market -# MAGIC ) as b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = 'OTHER_MOLECULE' -# MAGIC and a.data_flag = 1 -# MAGIC when matched then -# MAGIC update set -# MAGIC a.sales_val = a.sales_val - b.sales_val, -# MAGIC a.sales_vol = a.sales_vol - b.sales_vol -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.1 accumulate level molecule data and balance 'OTHER_BRAND'& 'OTHER_MOLECULE' data -# MAGIC -- 3.1.3 balance 'OTHER_BRAND' data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC merge into tmp.tmp_retail_dtp_level_brand a -# MAGIC using( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_molecule -# MAGIC where data_flag = 2 -# MAGIC group by yyyymm,province_city,ta,market -# MAGIC ) as b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = 'OTHER_MOLECULE' -# MAGIC and a.brand = 'OTHER_BRAND' -# MAGIC and a.data_flag = 1 -# MAGIC when matched then -# MAGIC update set -# MAGIC a.sales_val = a.sales_val - b.sales_val, -# MAGIC a.sales_vol = a.sales_vol - b.sales_vol - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: accumulate data from level brand to market -# MAGIC -- 3.2 accumulate level market data and balance 'OTHER_MOLECULE' data -# MAGIC -- 3.2.1 accumulate level market data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_aggregate_market as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sum(sales_val) as sales_val, -# MAGIC sum(sales_vol) as sales_vol -# MAGIC from tmp.tmp_retail_dtp_level_molecule -# MAGIC group by yyyymm,province_city ,ta ,market -# MAGIC ), tmp_append_market as ( -# MAGIC select a.* -# MAGIC from tmp_aggregate_market a -# MAGIC where not exists ( -# MAGIC select 1 -# MAGIC from tmp.tmp_retail_dtp_level_market b -# MAGIC where a.yyyymm = b.yyyymm -# MAGIC and a.province_city = b.province_city -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC ) -# MAGIC ) -# MAGIC -------append level market data accumulate from level molecule -# MAGIC insert into tmp.tmp_retail_dtp_level_market -# MAGIC select -# MAGIC yyyymm, -# MAGIC province_city, -# MAGIC ta, -# MAGIC market, -# MAGIC sales_val, -# MAGIC sales_vol, -# MAGIC 2 -# MAGIC from tmp_append_market - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-4: calculate brand ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: calculate brand ratio -# MAGIC -- update total_val&total_vol and ratio_val&ratio_vol -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC merge into tmp.tmp_retail_dtp_level_brand a -# MAGIC using( -# MAGIC select * from tmp.tmp_retail_dtp_level_brand -# MAGIC where province_city = '全国' -# MAGIC ) as b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.molecule = b.molecule -# MAGIC and a.brand = b.brand -# MAGIC when matched then -# MAGIC update set -# MAGIC a.total_val = b.sales_val, -# MAGIC a.total_vol = b.sales_vol, -# MAGIC a.ratio_val = round(a.sales_val/b.sales_val,10), -# MAGIC a.ratio_vol = round(a.sales_vol/b.sales_vol,10) - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/06 split_dtp_brand_data.py:Zone.Identifier b/EXTERNAL/Retail/06 split_dtp_brand_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/06 split_dtp_brand_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/07 split_dtp_pack_data.py b/EXTERNAL/Retail/07 split_dtp_pack_data.py deleted file mode 100644 index 9b342e1..0000000 --- a/EXTERNAL/Retail/07 split_dtp_pack_data.py +++ /dev/null @@ -1,1107 +0,0 @@ -# Databricks notebook source -# MAGIC %sql -# MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market ( -# MAGIC -- -- product_id STRING, -# MAGIC -- -- region_type STRING, -# MAGIC -- -- higher_level_region STRING, -# MAGIC -- market STRING, -# MAGIC -- iqvia_pack_code STRING, -# MAGIC -- iqvia_prod_code STRING, -# MAGIC -- iqvia_notes STRING, -# MAGIC -- new_pack_flag STRING, -# MAGIC -- is_exists_chpa STRING, -# MAGIC -- -- prescription_nature STRING, -# MAGIC -- -- common_name STRING, -# MAGIC -- -- dosage_form STRING, -# MAGIC -- -- category_name STRING, -# MAGIC -- -- product_name STRING, -# MAGIC -- -- brand_name STRING, -# MAGIC -- -- zk_corp_des STRING, -# MAGIC -- -- zk_pack_des STRING, -# MAGIC -- -- counting_unit_a STRING, -# MAGIC -- app1_cod STRING, -# MAGIC -- app1_des STRING, -# MAGIC -- app1_des_c STRING, -# MAGIC -- app2_cod STRING, -# MAGIC -- app2_des STRING, -# MAGIC -- app2_des_c STRING, -# MAGIC -- app3_cod STRING, -# MAGIC -- app3_des STRING, -# MAGIC -- app3_des_c STRING, -# MAGIC -- atc1_cod STRING, -# MAGIC -- atc1_des STRING, -# MAGIC -- atc1_des_c STRING, -# MAGIC -- atc2_cod STRING, -# MAGIC -- atc2_des STRING, -# MAGIC -- atc2_des_c STRING, -# MAGIC -- atc3_cod STRING, -# MAGIC -- atc3_des STRING, -# MAGIC -- atc3_des_c STRING, -# MAGIC -- atc4_cod STRING, -# MAGIC -- atc4_des STRING, -# MAGIC -- atc4_des_c STRING, -# MAGIC -- bio_desc STRING, -# MAGIC -- cmps_cod STRING, -# MAGIC -- cmps_des STRING, -# MAGIC -- cmps_des_c STRING, -# MAGIC -- corp_cod STRING, -# MAGIC -- corp_des STRING, -# MAGIC -- corp_des_c STRING, -# MAGIC -- edl_desc STRING, -# MAGIC -- eth_otc_desc STRING, -# MAGIC -- gene_orig_desc STRING, -# MAGIC -- gqce_desc STRING, -# MAGIC -- manu_cod STRING, -# MAGIC -- manu_des STRING, -# MAGIC -- manu_des_c STRING, -# MAGIC -- mnfl_cod STRING, -# MAGIC -- mnfl_des STRING, -# MAGIC -- nrdl_desc STRING, -# MAGIC -- pack_des STRING, -# MAGIC -- stgh_des STRING, -# MAGIC -- pack_lch STRING, -# MAGIC -- paed_desc STRING, -# MAGIC -- prod_des STRING, -# MAGIC -- prod_des_c STRING, -# MAGIC -- tcm_desc STRING, -# MAGIC -- vbp_desc STRING, -# MAGIC -- unit STRING, -# MAGIC -- counting_unit STRING, -# MAGIC -- dosage_unit STRING, -# MAGIC -- NRDL_ENTRY_DATE STRING, -# MAGIC -- bu STRING, -# MAGIC -- Market_Ratio STRING) -# MAGIC -- USING delta -# MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market' -# MAGIC -- ; - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market_del ( -# MAGIC -- -- product_id STRING, -# MAGIC -- -- region_type STRING, -# MAGIC -- -- higher_level_region STRING, -# MAGIC -- market STRING, -# MAGIC -- iqvia_pack_code STRING, -# MAGIC -- iqvia_prod_code STRING, -# MAGIC -- iqvia_notes STRING, -# MAGIC -- new_pack_flag STRING, -# MAGIC -- is_exists_chpa STRING, -# MAGIC -- -- prescription_nature STRING, -# MAGIC -- -- common_name STRING, -# MAGIC -- -- dosage_form STRING, -# MAGIC -- -- category_name STRING, -# MAGIC -- -- product_name STRING, -# MAGIC -- -- brand_name STRING, -# MAGIC -- -- zk_corp_des STRING, -# MAGIC -- -- zk_pack_des STRING, -# MAGIC -- -- counting_unit_a STRING, -# MAGIC -- app1_cod STRING, -# MAGIC -- app1_des STRING, -# MAGIC -- app1_des_c STRING, -# MAGIC -- app2_cod STRING, -# MAGIC -- app2_des STRING, -# MAGIC -- app2_des_c STRING, -# MAGIC -- app3_cod STRING, -# MAGIC -- app3_des STRING, -# MAGIC -- app3_des_c STRING, -# MAGIC -- atc1_cod STRING, -# MAGIC -- atc1_des STRING, -# MAGIC -- atc1_des_c STRING, -# MAGIC -- atc2_cod STRING, -# MAGIC -- atc2_des STRING, -# MAGIC -- atc2_des_c STRING, -# MAGIC -- atc3_cod STRING, -# MAGIC -- atc3_des STRING, -# MAGIC -- atc3_des_c STRING, -# MAGIC -- atc4_cod STRING, -# MAGIC -- atc4_des STRING, -# MAGIC -- atc4_des_c STRING, -# MAGIC -- bio_desc STRING, -# MAGIC -- cmps_cod STRING, -# MAGIC -- cmps_des STRING, -# MAGIC -- cmps_des_c STRING, -# MAGIC -- corp_cod STRING, -# MAGIC -- corp_des STRING, -# MAGIC -- corp_des_c STRING, -# MAGIC -- edl_desc STRING, -# MAGIC -- eth_otc_desc STRING, -# MAGIC -- gene_orig_desc STRING, -# MAGIC -- gqce_desc STRING, -# MAGIC -- manu_cod STRING, -# MAGIC -- manu_des STRING, -# MAGIC -- manu_des_c STRING, -# MAGIC -- mnfl_cod STRING, -# MAGIC -- mnfl_des STRING, -# MAGIC -- nrdl_desc STRING, -# MAGIC -- pack_des STRING, -# MAGIC -- stgh_des STRING, -# MAGIC -- pack_lch STRING, -# MAGIC -- paed_desc STRING, -# MAGIC -- prod_des STRING, -# MAGIC -- prod_des_c STRING, -# MAGIC -- tcm_desc STRING, -# MAGIC -- vbp_desc STRING, -# MAGIC -- unit STRING, -# MAGIC -- counting_unit STRING, -# MAGIC -- dosage_unit STRING, -# MAGIC -- NRDL_ENTRY_DATE STRING, -# MAGIC -- bu STRING, -# MAGIC -- Market_Ratio STRING) -# MAGIC -- USING delta -# MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market_del' -# MAGIC -- ; - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -- CREATE OR REPLACE TABLE tmp.tmp_zk_retail_dtp_market_corp ( -# MAGIC -- -- product_id STRING, -# MAGIC -- -- region_type STRING, -# MAGIC -- -- higher_level_region STRING, -# MAGIC -- market STRING, -# MAGIC -- iqvia_pack_code STRING, -# MAGIC -- iqvia_prod_code STRING, -# MAGIC -- iqvia_notes STRING, -# MAGIC -- new_pack_flag STRING, -# MAGIC -- is_exists_chpa STRING, -# MAGIC -- -- prescription_nature STRING, -# MAGIC -- -- common_name STRING, -# MAGIC -- -- dosage_form STRING, -# MAGIC -- -- category_name STRING, -# MAGIC -- -- product_name STRING, -# MAGIC -- -- brand_name STRING, -# MAGIC -- -- zk_corp_des STRING, -# MAGIC -- -- zk_pack_des STRING, -# MAGIC -- -- counting_unit_a STRING, -# MAGIC -- app1_cod STRING, -# MAGIC -- app1_des STRING, -# MAGIC -- app1_des_c STRING, -# MAGIC -- app2_cod STRING, -# MAGIC -- app2_des STRING, -# MAGIC -- app2_des_c STRING, -# MAGIC -- app3_cod STRING, -# MAGIC -- app3_des STRING, -# MAGIC -- app3_des_c STRING, -# MAGIC -- atc1_cod STRING, -# MAGIC -- atc1_des STRING, -# MAGIC -- atc1_des_c STRING, -# MAGIC -- atc2_cod STRING, -# MAGIC -- atc2_des STRING, -# MAGIC -- atc2_des_c STRING, -# MAGIC -- atc3_cod STRING, -# MAGIC -- atc3_des STRING, -# MAGIC -- atc3_des_c STRING, -# MAGIC -- atc4_cod STRING, -# MAGIC -- atc4_des STRING, -# MAGIC -- atc4_des_c STRING, -# MAGIC -- bio_desc STRING, -# MAGIC -- cmps_cod STRING, -# MAGIC -- cmps_des STRING, -# MAGIC -- cmps_des_c STRING, -# MAGIC -- corp_cod STRING, -# MAGIC -- corp_des STRING, -# MAGIC -- corp_des_c STRING, -# MAGIC -- edl_desc STRING, -# MAGIC -- eth_otc_desc STRING, -# MAGIC -- gene_orig_desc STRING, -# MAGIC -- gqce_desc STRING, -# MAGIC -- manu_cod STRING, -# MAGIC -- manu_des STRING, -# MAGIC -- manu_des_c STRING, -# MAGIC -- mnfl_cod STRING, -# MAGIC -- mnfl_des STRING, -# MAGIC -- nrdl_desc STRING, -# MAGIC -- pack_des STRING, -# MAGIC -- stgh_des STRING, -# MAGIC -- pack_lch STRING, -# MAGIC -- paed_desc STRING, -# MAGIC -- prod_des STRING, -# MAGIC -- prod_des_c STRING, -# MAGIC -- tcm_desc STRING, -# MAGIC -- vbp_desc STRING, -# MAGIC -- unit STRING, -# MAGIC -- counting_unit STRING, -# MAGIC -- dosage_unit STRING, -# MAGIC -- NRDL_ENTRY_DATE STRING, -# MAGIC -- bu STRING, -# MAGIC -- Market_Ratio STRING) -# MAGIC -- USING delta -# MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_zk_retail_dtp_market_corp' -# MAGIC -- ; - -# COMMAND ---------- - -### constant -DATA_TYPE_MARKET = 'MARKET' -DATA_TYPE_MOLECULE = 'MOLECULE' -DATA_TYPE_BRAND = 'BRAND' -DATA_TYPE_MULTI_MARKET = 'MULTI_MARKET' -DATA_TYPE_MULTI_MOLECULE = 'MULTI_MOLECULE' -DATA_TYPE_MULTI_BRAND = 'MULTI_BRAND' -DATA_TYPE_DUPLICATE = 'DUPLICATE' -DATA_TYPE_HEDGE_TA = 'HEDGE_TA' -DATA_TYPE_HEDGE_MARKET = 'HEDGE_MARKET' -DATA_TYPE_HEDGE_MOLECULE = 'HEDGE_MOLECULE' -DATA_TYPE_HEDGE_BRAND = 'HEDGE_BRAND' - -DATA_FLAG_RAW = 0 ### final pack_flag = 0 -DATA_FLAG_SUB = 1 ### final pack_flag = 1 -DATA_FLAG_ADD = 2 ### final pack_flag = 1 -DATA_FLAG_RATIO = 3 ### final pack_flag = 1 -DATA_FLAG_AVG = 4 ### final pack_flag = 1 -DATA_FLAG_HEDGE = 5 ### final pack_flag = 1 -BRAND_FLAG_NATIVE = 1 ### final brand_flag = 1 -BRAND_FLAG_CALCULATE = 2 ### final brand_flag = 2 -BRAND_FLAG_NONE = 3 ### final brand_flag = 2 - -DATA_OTHER_TA = 'OTHER_TA' -DATA_OTHER_MARKET = 'OTHER_MARKET' -DATA_OTHER_MOLECULE = 'OTHER_MOLECULE' -DATA_OTHER_BRAND = 'OTHER_BRAND' -DATA_AREA_TYPE_ROC = 'ROC' -DATA_LABEL_AREA_ALL = '全国' - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: dtp 维度表处理 - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: dtp 维度表处理 -### STEP-2: update the pack data extra column -### STEP-3: split regional data by brand ratio when there is no regional data and there is a brand ratio -### STEP-4: substract ROC data - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: dtp 维度表处理 -# MAGIC -- 1.1 先处理 Extend_Market 和 NOT_IN_FLAG 都为空的数据,代表有明确定义得市场 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market -# MAGIC select -# MAGIC distinct -# MAGIC -- t1.region_type -# MAGIC -- ,t1.higher_level_region -# MAGIC -- t1.product_id, -# MAGIC t2.market -# MAGIC ,case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) else trim(t1.iqvia_pack_code) end as iqvia_pack_code -# MAGIC ,case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end as iqvia_prod_code -# MAGIC ,t1.iqvia_notes -# MAGIC ,t1.new_pack_flag -# MAGIC ,t1.is_exists_chpa -# MAGIC -- ,t1.prescription_nature -# MAGIC -- ,t1.common_name -# MAGIC -- ,t1.dosage_form -# MAGIC -- ,t1.category_name -# MAGIC -- ,t1.product_name -# MAGIC -- ,t1.brand_name -# MAGIC -- ,t1.zk_corp_des -# MAGIC -- ,t1.zk_pack_des -# MAGIC -- ,t1.counting_unit_a -# MAGIC ,t1.app1_cod -# MAGIC ,t1.app1_des -# MAGIC ,t1.app1_des_c -# MAGIC ,t1.app2_cod -# MAGIC ,t1.app2_des -# MAGIC ,t1.app2_des_c -# MAGIC ,t1.app3_cod -# MAGIC ,t1.app3_des -# MAGIC ,t1.app3_des_c -# MAGIC ,t1.atc1_cod -# MAGIC ,t1.atc1_des -# MAGIC ,t1.atc1_des_c -# MAGIC ,t1.atc2_cod -# MAGIC ,t1.atc2_des -# MAGIC ,t1.atc2_des_c -# MAGIC ,t1.atc3_cod -# MAGIC ,t1.atc3_des -# MAGIC ,t1.atc3_des_c -# MAGIC ,t1.atc4_cod -# MAGIC ,t1.atc4_des -# MAGIC ,t1.atc4_des_c -# MAGIC ,t1.bio_desc -# MAGIC , right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod -# MAGIC ,t1.cmps_des -# MAGIC ,t1.cmps_des_c -# MAGIC ,t1.corp_cod -# MAGIC ,t1.corp_des -# MAGIC ,t1.corp_des_c -# MAGIC ,t1.edl_desc -# MAGIC ,t1.eth_otc_desc -# MAGIC ,t1.gene_orig_desc -# MAGIC ,t1.gqce_desc -# MAGIC ,t1.manu_cod -# MAGIC ,t1.manu_des -# MAGIC ,t1.manu_des_c -# MAGIC ,t1.mnfl_cod -# MAGIC ,t1.mnfl_des -# MAGIC ,t1.nrdl_desc -# MAGIC ,t1.pack_des -# MAGIC ,t1.stgh_des -# MAGIC ,t1.pack_lch -# MAGIC ,t1.paed_desc -# MAGIC ,t1.prod_des -# MAGIC ,t1.prod_des_c -# MAGIC ,t1.tcm_desc -# MAGIC ,t1.vbp_desc -# MAGIC ,t1.unit -# MAGIC ,t1.counting_unit -# MAGIC ,t1.dosage_unit -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio -# MAGIC from dwd.dwd_gnd_ext_dtp_pack_property t1 -# MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC ON -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC = -# MAGIC case when length(trim(MOLE.Pack_Code)) < 12 and trim(MOLE.Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(MOLE.Pack_Code)),12) -# MAGIC else trim(MOLE.Pack_Code) -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC left join (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )) t2 -# MAGIC -- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) -# MAGIC on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end -# MAGIC and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end -# MAGIC and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end -# MAGIC and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end -# MAGIC and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end -# MAGIC and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end -# MAGIC and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end -# MAGIC and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end -# MAGIC and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_prod_code -# MAGIC and -# MAGIC case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end -# MAGIC = -# MAGIC case when t2.Product_Code is null -# MAGIC then case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end -# MAGIC else case when length(t2.Product_Code) < 9 then right(concat('000000000',t2.Product_Code),9) else t2.Product_Code end -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC and -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC = -# MAGIC case when t2.Pack_Code is null -# MAGIC then -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC else -# MAGIC case when length(trim(t2.Pack_Code)) < 12 and trim(t2.Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t2.Pack_Code)),12) -# MAGIC else trim(t2.Pack_Code) -# MAGIC end -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC and nvl(t1.STGH_DES,'') = case when t2.Strength is null then nvl(t1.STGH_DES,'') else t2.Strength end -# MAGIC and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end -# MAGIC where t2.market is not null -# MAGIC ; -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: dtp 维度表处理 -# MAGIC -- 1.2 反选规则 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market_del -# MAGIC select -# MAGIC distinct -# MAGIC -- t1.region_type -# MAGIC -- ,t1.higher_level_region -# MAGIC -- t1.product_id, -# MAGIC t2.market -# MAGIC ,case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) else trim(t1.iqvia_pack_code) end as iqvia_pack_code -# MAGIC ,case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end as iqvia_prod_code -# MAGIC ,t1.iqvia_notes -# MAGIC ,t1.new_pack_flag -# MAGIC ,t1.is_exists_chpa -# MAGIC -- ,t1.prescription_nature -# MAGIC -- ,t1.common_name -# MAGIC -- ,t1.dosage_form -# MAGIC -- ,t1.category_name -# MAGIC -- ,t1.product_name -# MAGIC -- ,t1.brand_name -# MAGIC -- ,t1.zk_corp_des -# MAGIC -- ,t1.zk_pack_des -# MAGIC -- ,t1.counting_unit_a -# MAGIC ,t1.app1_cod -# MAGIC ,t1.app1_des -# MAGIC ,t1.app1_des_c -# MAGIC ,t1.app2_cod -# MAGIC ,t1.app2_des -# MAGIC ,t1.app2_des_c -# MAGIC ,t1.app3_cod -# MAGIC ,t1.app3_des -# MAGIC ,t1.app3_des_c -# MAGIC ,t1.atc1_cod -# MAGIC ,t1.atc1_des -# MAGIC ,t1.atc1_des_c -# MAGIC ,t1.atc2_cod -# MAGIC ,t1.atc2_des -# MAGIC ,t1.atc2_des_c -# MAGIC ,t1.atc3_cod -# MAGIC ,t1.atc3_des -# MAGIC ,t1.atc3_des_c -# MAGIC ,t1.atc4_cod -# MAGIC ,t1.atc4_des -# MAGIC ,t1.atc4_des_c -# MAGIC ,t1.bio_desc -# MAGIC , right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod -# MAGIC ,t1.cmps_des -# MAGIC ,t1.cmps_des_c -# MAGIC ,t1.corp_cod -# MAGIC ,t1.corp_des -# MAGIC ,t1.corp_des_c -# MAGIC ,t1.edl_desc -# MAGIC ,t1.eth_otc_desc -# MAGIC ,t1.gene_orig_desc -# MAGIC ,t1.gqce_desc -# MAGIC ,t1.manu_cod -# MAGIC ,t1.manu_des -# MAGIC ,t1.manu_des_c -# MAGIC ,t1.mnfl_cod -# MAGIC ,t1.mnfl_des -# MAGIC ,t1.nrdl_desc -# MAGIC ,t1.pack_des -# MAGIC ,t1.stgh_des -# MAGIC ,t1.pack_lch -# MAGIC ,t1.paed_desc -# MAGIC ,t1.prod_des -# MAGIC ,t1.prod_des_c -# MAGIC ,t1.tcm_desc -# MAGIC ,t1.vbp_desc -# MAGIC ,t1.unit -# MAGIC ,t1.counting_unit -# MAGIC ,t1.dosage_unit -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio -# MAGIC from dwd.dwd_gnd_ext_dtp_pack_property t1 -# MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC ON -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC = -# MAGIC case when length(trim(MOLE.Pack_Code)) < 12 and trim(MOLE.Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(MOLE.Pack_Code)),12) -# MAGIC else trim(MOLE.Pack_Code) -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC left join (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND NOT_IN_FLAG = '0' ) t2 -# MAGIC -- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) -# MAGIC on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end -# MAGIC and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end -# MAGIC and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end -# MAGIC and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end -# MAGIC and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end -# MAGIC and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end -# MAGIC and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end -# MAGIC and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end -# MAGIC and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_prod_code -# MAGIC and -# MAGIC case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end -# MAGIC = -# MAGIC case when t2.Product_Code is null -# MAGIC then case when length(t1.iqvia_prod_code) < 9 then right(concat('000000000',t1.iqvia_prod_code),9) else t1.iqvia_prod_code end -# MAGIC else case when length(t2.Product_Code) < 9 then right(concat('000000000',t2.Product_Code),9) else t2.Product_Code end -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC and -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC = -# MAGIC case when t2.Pack_Code is null -# MAGIC then -# MAGIC case when length(trim(t1.iqvia_pack_code)) < 12 and trim(t1.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t1.iqvia_pack_code)),12) -# MAGIC else trim(t1.iqvia_pack_code) -# MAGIC end -# MAGIC else -# MAGIC case when length(trim(t2.Pack_Code)) < 12 and trim(t2.Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t2.Pack_Code)),12) -# MAGIC else trim(t2.Pack_Code) -# MAGIC end -# MAGIC end -# MAGIC ---------------------------------------------------------------------------------- -# MAGIC and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end -# MAGIC and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end -# MAGIC where t2.market is not null - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: dtp 维度表处理 -# MAGIC -- 1.3 !!!注意此段是反选的规则,故执行的是从已经定义好的TempMKT中删除数据 -# MAGIC -------需要看TempMKT的字段结构,没有值的字段,在Value里面放个空值 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC MERGE INTO tmp.tmp_zk_retail_dtp_market AS t1 -# MAGIC USING tmp.tmp_zk_retail_dtp_market_del AS t2 -# MAGIC on t1.ATC1_COD = t2.ATC1_COD -# MAGIC and t1.ATC2_COD = t2.ATC2_COD -# MAGIC and t1.ATC3_COD = t2.ATC3_COD -# MAGIC and t1.ATC4_COD = t2.ATC4_COD -# MAGIC and t1.APP1_COD = t2.APP1_COD -# MAGIC and t1.APP2_COD = t2.APP2_COD -# MAGIC and t1.APP3_COD = t2.APP3_COD -# MAGIC and t1.CORP_COD = t2.CORP_COD -# MAGIC and t1.MANU_COD = t2.MANU_COD -# MAGIC and t1.iqvia_prod_code = t2.iqvia_prod_code -# MAGIC and t1.iqvia_pack_code = t2.iqvia_pack_code -# MAGIC and t1.STGH_DES = t2.STGH_DES -# MAGIC and t1.CMPS_COD = t2.CMPS_COD -# MAGIC and t1.market = t2.market -# MAGIC WHEN MATCHED THEN DELETE -# MAGIC ; - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: dtp 维度表处理 -# MAGIC -- 1.4 将产品对应的公司重新归属 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_dtp_market_corp -# MAGIC select -# MAGIC -- A.region_type -# MAGIC -- ,A.higher_level_region -# MAGIC -- A.product_id, -# MAGIC A.market -# MAGIC ,A.iqvia_pack_code -# MAGIC ,A.iqvia_prod_code -# MAGIC ,A.iqvia_notes -# MAGIC ,A.new_pack_flag -# MAGIC ,A.is_exists_chpa -# MAGIC -- ,A.prescription_nature -# MAGIC -- ,A.common_name -# MAGIC -- ,A.dosage_form -# MAGIC -- ,A.category_name -# MAGIC -- ,A.product_name -# MAGIC -- ,A.brand_name -# MAGIC -- ,A.zk_corp_des -# MAGIC -- ,A.zk_pack_des -# MAGIC -- ,A.counting_unit_a -# MAGIC ,A.app1_cod -# MAGIC ,A.app1_des -# MAGIC ,A.app1_des_c -# MAGIC ,A.app2_cod -# MAGIC ,A.app2_des -# MAGIC ,A.app2_des_c -# MAGIC ,A.app3_cod -# MAGIC ,A.app3_des -# MAGIC ,A.app3_des_c -# MAGIC ,A.atc1_cod -# MAGIC ,A.atc1_des -# MAGIC ,A.atc1_des_c -# MAGIC ,A.atc2_cod -# MAGIC ,A.atc2_des -# MAGIC ,A.atc2_des_c -# MAGIC ,A.atc3_cod -# MAGIC ,A.atc3_des -# MAGIC ,A.atc3_des_c -# MAGIC ,A.atc4_cod -# MAGIC ,A.atc4_des -# MAGIC ,A.atc4_des_c -# MAGIC ,A.bio_desc -# MAGIC ,A.cmps_cod -# MAGIC ,A.cmps_des -# MAGIC ,A.cmps_des_c -# MAGIC ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod -# MAGIC ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des -# MAGIC ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c -# MAGIC ,A.edl_desc -# MAGIC ,A.eth_otc_desc -# MAGIC ,A.gene_orig_desc -# MAGIC ,A.gqce_desc -# MAGIC ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod -# MAGIC ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des -# MAGIC ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -# MAGIC ,A.mnfl_cod -# MAGIC ,A.mnfl_des -# MAGIC ,A.nrdl_desc -# MAGIC ,A.pack_des -# MAGIC ,A.stgh_des -# MAGIC ,A.pack_lch -# MAGIC ,A.paed_desc -# MAGIC ,A.prod_des -# MAGIC ,A.prod_des_c -# MAGIC ,A.tcm_desc -# MAGIC ,A.vbp_desc -# MAGIC ,A.unit -# MAGIC ,A.counting_unit -# MAGIC ,A.dosage_unit -# MAGIC ,A.NRDL_ENTRY_DATE -# MAGIC ,A.bu -# MAGIC ,A.Market_Ratio -# MAGIC from tmp.tmp_zk_retail_dtp_market a -# MAGIC left join ( -# MAGIC select -# MAGIC DISTINCT -# MAGIC ---------------------------------------------- -# MAGIC -- format prod_cod -# MAGIC case when length(prod_cod) < 9 then right(concat('000000000',prod_cod),9) else prod_cod end as prod_cod, -# MAGIC ---------------------------------------------- -# MAGIC --right(concat('00000',prod_cod ),5) prod_cod, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC right(concat('000000',manu_cod ),6) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change -# MAGIC where pack_cod is null -# MAGIC ) b on a.iqvia_prod_code = b.prod_cod -# MAGIC left join ( -# MAGIC select -# MAGIC DISTINCT -# MAGIC ---------------------------------------------- -# MAGIC -- format pack_cod -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' then right(concat('000000000000',trim(pack_cod)),12) else trim(pack_cod) end as pack_cod, -# MAGIC ---------------------------------------------- -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC right(concat('000000',manu_cod ),6) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change -# MAGIC where pack_cod is not null -# MAGIC ) c on a.iqvia_pack_code = c.pack_cod -# MAGIC left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_dtp_pack_property) d -# MAGIC on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -# MAGIC Left join (select distinct right(concat('000000',manu_cod ),6) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_dtp_pack_property) e -# MAGIC On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: update the pack data extra column - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: update the pack data extra column -# MAGIC -- 2.1 update pack_code, molecule_code, molecule_desc, product_code, product_desc, level_market -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC using( -# MAGIC select -# MAGIC distinct -# MAGIC iqvia_pack_code, -# MAGIC -- common_name, -# MAGIC -- dosage_form, -# MAGIC -- category_name, -# MAGIC -- product_name, -# MAGIC -- brand_name, -# MAGIC -- zk_pack_des, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC collect_list(market) as markets -# MAGIC from tmp.tmp_zk_retail_dtp_market_corp -# MAGIC group by 1,2,3,4,5 -# MAGIC ) as b -# MAGIC on a.iqvia_pack_code = b.iqvia_pack_code -# MAGIC -- on a.common_name = b.common_name -# MAGIC -- and a.dosage_form = b.dosage_form -# MAGIC -- and a.category_name = b.category_name -# MAGIC -- and nvl(a.product_name, '') = nvl(b.product_name, '') -# MAGIC -- and a.brand_name = b.brand_name -# MAGIC -- and a.pack_des = b.zk_pack_des -# MAGIC when matched then -# MAGIC update set -# MAGIC a.pack_code = b.iqvia_pack_code, -# MAGIC a.molecule_code = b.cmps_des, -# MAGIC a.molecule_desc = b.cmps_des_c, -# MAGIC a.product_code = b.prod_des, -# MAGIC a.product_desc = b.prod_des_c, -# MAGIC --------------------* hard_code *----------------------- -# MAGIC -- 手动修正market映射市场 -# MAGIC -- EGFR TKI Market -> EGFR TKI -# MAGIC -- Anti-HER2 mBC Market -> Anti-HER2 mBC -# MAGIC a.level_market = -# MAGIC case -# MAGIC when array_contains(markets, 'EGFR TKI Market') then 'EGFR TKI' -# MAGIC when array_contains(markets, 'Anti-HER2 mBC Market') then 'Anti-HER2 mBC' -# MAGIC else CONCAT_WS(',',markets) -# MAGIC end -# MAGIC --------------------* hard_code *----------------------- - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: update the pack data extra column -# MAGIC -- 2.2 generate tmp.tmp_retail_dtp_pack_mapping -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_pack_mapping as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.level_ta, -# MAGIC a.level_market, -# MAGIC a.pack_code, -# MAGIC a.molecule_code, -# MAGIC a.molecule_desc, -# MAGIC a.product_code, -# MAGIC a.product_desc, -# MAGIC b.corp_cod, -# MAGIC CONCAT_WS(',',collect_set(b.market)) as market_desc -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC inner join tmp.tmp_zk_retail_dtp_market_corp b -# MAGIC on a.pack_code = b.iqvia_pack_code -# MAGIC and a.molecule_code = b.cmps_des -# MAGIC and a.product_desc = b.prod_des_c -# MAGIC group by 1,2,3,4,5,6,7,8 -# MAGIC ), tmp_level as ( -# MAGIC select -# MAGIC distinct -# MAGIC ta, -# MAGIC market, -# MAGIC molecule, -# MAGIC brand -# MAGIC from tmp.tmp_retail_dtp_level_brand -# MAGIC ), tmp_molecule_brand as ( -# MAGIC -----------------------ta matched & market matched & molecule matched & brand matched -------------- -# MAGIC select -# MAGIC a.*,b.*,1 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and a.molecule_desc = b.molecule -# MAGIC and a.product_desc = b.brand -# MAGIC ), tmp_other_brand as ( -# MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE & brand matched----------------- -# MAGIC select -# MAGIC a.*,b.*,1 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and b.molecule = 'OTHER_MOLECULE' -# MAGIC and a.product_desc = b.brand -# MAGIC where a.pack_code not in ( -# MAGIC select distinct pack_code from tmp_molecule_brand -# MAGIC ) -# MAGIC ), tmp_molecule_other as( -# MAGIC -----------------------ta matched & market matched & molecule matched & OTHER_BRAND---------------- -# MAGIC select -# MAGIC a.*,b.*,2 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and a.molecule_desc = b.molecule -# MAGIC and b.brand = 'OTHER_BRAND' -# MAGIC where a.pack_code not in ( -# MAGIC select distinct pack_code from tmp_molecule_brand -# MAGIC union all -# MAGIC select distinct pack_code from tmp_other_brand -# MAGIC ) -# MAGIC ), tmp_other_other as ( -# MAGIC -----------------------ta matched & market matched & OTHER_MOLECULE& OTHER_BRAND--------------------- -# MAGIC select -# MAGIC a.*,b.*,2 as brand_flag -# MAGIC from tmp_pack_mapping a -# MAGIC inner join tmp_level b -# MAGIC on a.level_ta = b.ta -# MAGIC and a.level_market = b.market -# MAGIC and b.molecule = 'OTHER_MOLECULE' -# MAGIC and b.brand = 'OTHER_BRAND' -# MAGIC where a.pack_code not in ( -# MAGIC select distinct pack_code from tmp_molecule_brand -# MAGIC union all -# MAGIC select distinct pack_code from tmp_other_brand -# MAGIC union all -# MAGIC select distinct pack_code from tmp_molecule_other -# MAGIC ) -# MAGIC ), tmp_brand_mapping as ( -# MAGIC select * from tmp_molecule_brand -# MAGIC union all -# MAGIC select * from tmp_other_brand -# MAGIC union all -# MAGIC select * from tmp_molecule_other -# MAGIC union all -# MAGIC select * from tmp_other_other -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table tmp.tmp_retail_dtp_pack_mapping -# MAGIC -# MAGIC select -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC molecule as level_molecule, -# MAGIC brand as level_brand, -# MAGIC pack_code, -# MAGIC molecule_code, -# MAGIC molecule_desc, -# MAGIC product_code, -# MAGIC product_desc, -# MAGIC corp_cod, -# MAGIC market_desc, -# MAGIC brand_flag -# MAGIC from tmp_brand_mapping - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: update the pack data extra column -# MAGIC -- 2.3 update level_molecule, level_brand ,brand_flag -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC using( -# MAGIC select -# MAGIC distinct pack_code,level_molecule,level_brand,brand_flag -# MAGIC from tmp.tmp_retail_dtp_pack_mapping -# MAGIC ) as b -# MAGIC on a.pack_code = b.pack_code -# MAGIC when matched then -# MAGIC update set -# MAGIC a.level_molecule = b.level_molecule, -# MAGIC a.level_brand = b.level_brand, -# MAGIC a.brand_flag = b.brand_flag - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: update the pack data extra column -# MAGIC -- 2.4 update the pack data brand flag to '1' which pack has regional data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC time, -# MAGIC pack_code -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata -# MAGIC where region <> '全国' -# MAGIC and data_flag = 0 -# MAGIC ) -# MAGIC -# MAGIC merge into tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC using( -# MAGIC select * from tmp_has_regional_data -# MAGIC ) as b -# MAGIC on a.time = b.time -# MAGIC and a.pack_code = b.pack_code -# MAGIC when matched then -# MAGIC update set -# MAGIC a.brand_flag = 1 - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-3: split regional data by brand ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: split regional data by brand ratio when there is no regional data and there is a brand ratio -# MAGIC -- only split the pack data with brand ratio and without regional pack data -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC time as yyyymm, -# MAGIC pack_code -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata -# MAGIC where region <> '全国' -# MAGIC ), tmp_has_brand_ratio as ( -# MAGIC select -# MAGIC distinct -# MAGIC b.pack_code -# MAGIC from tmp.tmp_retail_dtp_level_brand a -# MAGIC inner join tmp.tmp_retail_dtp_pack_mapping b -# MAGIC on a.ta = b.level_ta -# MAGIC and a.market = b.level_market -# MAGIC and a.molecule = b.level_molecule -# MAGIC and a.brand = b.level_brand -# MAGIC ), tmp_pack_rawdata as ( -# MAGIC select * -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC where not exists( -# MAGIC select b.yyyymm,b.pack_code from tmp_has_regional_data b -# MAGIC where a.time = b.yyyymm -# MAGIC and a.pack_code = b.pack_code -# MAGIC ) and exists( -# MAGIC select c.pack_code from tmp_has_brand_ratio c -# MAGIC where a.pack_code = c.pack_code -# MAGIC ) -# MAGIC ) -# MAGIC ----------------------------- append split regional data ---------------------------- -# MAGIC insert into table tmp.tmp_retail_dtp_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC -- c.region_type, -# MAGIC c.iqvia_pack_code, -# MAGIC c.year, -# MAGIC c.time, -# MAGIC -- c.higher_level_region, -# MAGIC a.province_city as region, -# MAGIC -- c.prescription_nature, -# MAGIC -- c.medicine_attribute, -# MAGIC -- c.dosage_form, -# MAGIC -- c.object, -# MAGIC -- c.zk_classify1, -# MAGIC -- c.zk_classify2, -# MAGIC -- c.zk_classify3, -# MAGIC c.target_points, -# MAGIC -- c.common_name, -# MAGIC -- c.brand_name, -# MAGIC -- c.product_name, -# MAGIC -- c.category_name, -# MAGIC -- c.pack_des, -# MAGIC c.counting_unit, -# MAGIC -- c.factory, -# MAGIC -- c.corp_des, -# MAGIC c.average_price, -# MAGIC round(c.sales_amount * a.ratio_val ,10) as sales_amount, -# MAGIC round(c.sales_volume * a.ratio_vol ,10) as sales_volume, -# MAGIC c.counting_units_obversion, -# MAGIC c.pack_code, -# MAGIC c.molecule_code, -# MAGIC c.molecule_desc, -# MAGIC c.product_code, -# MAGIC c.product_desc, -# MAGIC c.level_ta, -# MAGIC c.level_market, -# MAGIC c.level_molecule, -# MAGIC c.level_brand, -# MAGIC a.ratio_val, -# MAGIC a.ratio_vol, -# MAGIC 3 as data_flag, -# MAGIC b.brand_flag -# MAGIC from tmp.tmp_retail_dtp_level_brand a -# MAGIC inner join tmp.tmp_retail_dtp_pack_mapping b -# MAGIC on a.ta = b.level_ta -# MAGIC and a.market = b.level_market -# MAGIC and a.molecule = b.level_molecule -# MAGIC and a.brand = b.level_brand -# MAGIC inner join tmp_pack_rawdata c -# MAGIC on c.pack_code = b.pack_code -# MAGIC and c.time = a.yyyymm -# MAGIC where a.province_city <> '全国' -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-4: substract ROC data - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: substract ROC data -# MAGIC -- if there is regional pack data or splited regional pack data, ROC = '全国' - 'sum regional data' -# MAGIC -- if there is not regional pack data, ROC = '全国' -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp_area_group as ( -# MAGIC select -# MAGIC pack_code, -# MAGIC time, -# MAGIC sum(sales_amount) as sales_amount, -# MAGIC sum(sales_volume) as sales_volume -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata -# MAGIC where region <> '全国' -# MAGIC group by pack_code,time -# MAGIC ), tmp_has_regional_data as ( -# MAGIC select -# MAGIC distinct -# MAGIC time, -# MAGIC pack_code -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata -# MAGIC where region <> '全国' -# MAGIC and data_flag = 0 -# MAGIC ) -# MAGIC -# MAGIC ----------------------------- append ROC data ------------------------------------------ -# MAGIC insert into table tmp.tmp_retail_dtp_pack_rawdata -# MAGIC -# MAGIC select -# MAGIC a.iqvia_pack_code, -# MAGIC -- a.region_type, -# MAGIC a.year, -# MAGIC a.time, -# MAGIC -- a.higher_level_region, -# MAGIC 'ROC' as region, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points, -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.category_name, -# MAGIC -- a.pack_des, -# MAGIC a.counting_unit, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des, -# MAGIC a.average_price, -# MAGIC a.sales_amount - ifnull(b.sales_amount,0) as sales_amount, -# MAGIC a.sales_volume - ifnull(b.sales_volume,0) as sales_volume, -# MAGIC a.counting_units_obversion, -# MAGIC a.pack_code, -# MAGIC a.molecule_code, -# MAGIC a.molecule_desc, -# MAGIC a.product_code, -# MAGIC a.product_desc, -# MAGIC a.level_ta, -# MAGIC a.level_market, -# MAGIC a.level_molecule, -# MAGIC a.level_brand, -# MAGIC a.ratio_val, -# MAGIC a.ratio_vol, -# MAGIC ------------------------------------------------------------------------------- -# MAGIC -- 有省份pack的数(包括无品牌数据的数)计算出来的ROC所对应的pack_flag,也需要是1-原始值,不能是2-拆分的值 -# MAGIC -- 所以这里针对这类有省份数据的ROC数据,data_flag赋值为0-原始值,其他的仍为1-倒减值 -# MAGIC case when c.pack_code is not null then 0 else 1 end as data_flag, -# MAGIC ------------------------------------------------------------------------------- -# MAGIC a.brand_flag -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC inner join tmp_area_group b -# MAGIC on a.pack_code = b.pack_code -# MAGIC and a.time = b.time -# MAGIC left join tmp_has_regional_data c -# MAGIC on a.time = c.time -# MAGIC and a.pack_code = c.pack_code -# MAGIC where a.region = '全国' - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/07 split_dtp_pack_data.py:Zone.Identifier b/EXTERNAL/Retail/07 split_dtp_pack_data.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/07 split_dtp_pack_data.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/08 map_to_dtp_dws_table.py b/EXTERNAL/Retail/08 map_to_dtp_dws_table.py deleted file mode 100644 index b818992..0000000 --- a/EXTERNAL/Retail/08 map_to_dtp_dws_table.py +++ /dev/null @@ -1,510 +0,0 @@ -# Databricks notebook source -# MAGIC %sql -# MAGIC -- CREATE or REPLACE TABLE tmp.tmp_retail_dtp_final_sales ( -# MAGIC -- year STRING, -# MAGIC -- yq STRING, -# MAGIC -- yyyymm STRING, -# MAGIC -- iqvia_pack_code STRING, -# MAGIC -- geo_key STRING, -# MAGIC -- count_unit DOUBLE, -# MAGIC -- average_price DOUBLE, -# MAGIC -- sales_value DECIMAL(20,10), -# MAGIC -- sales_unit DECIMAL(20,10), -# MAGIC -- counting_units_obversion DECIMAL(20,10), -# MAGIC -- counting_unit DECIMAL(20,10), -# MAGIC -- sales_value_ly DECIMAL(20,10), -# MAGIC -- sales_unit_ly DECIMAL(20,10), -# MAGIC -- counting_unit_ly DECIMAL(20,10), -# MAGIC -- pack_flag INT, -# MAGIC -- brand_flag INT) -# MAGIC -- USING delta -# MAGIC -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/TMP/tmp_retail_dtp_final_sales'; - -# COMMAND ---------- - -############################################################START############################################################## -### STEP-1: insert splited pack data into tmp final table: tmp_retail_final_dtp_sales -### STEP-2: calculate OTHERS data - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: insert splited pack data - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: insert splited pack data into tmp final table -# MAGIC -- insert into tmp_retail_dtp_final_sales (dws.dws_retail_dtp_sales) -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_has_roc as ( -# MAGIC select -# MAGIC pack_code, -# MAGIC time -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata -# MAGIC where region = 'ROC' -# MAGIC ), temp_dtp_pack_property as ( -# MAGIC select iqvia_pack_code,max(counting_unit) as counting_unit,max(unit) as unit -# MAGIC from dwd.dwd_gnd_ext_dtp_pack_property -# MAGIC group by iqvia_pack_code -# MAGIC ), tmp_pack as ( -# MAGIC select -# MAGIC a.year, -# MAGIC a.time, -# MAGIC a.pack_code, -# MAGIC a.region, -# MAGIC a.counting_unit, -# MAGIC a.average_price, -# MAGIC a.sales_amount, -# MAGIC a.sales_volume, -# MAGIC a.counting_units_obversion, -# MAGIC ------------------------------------------------------ -# MAGIC -- counting_unit取值逻辑: -# MAGIC -- 不能直接取原始pack文件表中的值,改为取pack_property表中counting_unit / unit的值 -# MAGIC a.sales_volume * (b.counting_unit/ coalesce(b.unit,1)) as counting_unit_property, -# MAGIC ------------------------------------------------------ -# MAGIC a.data_flag, -# MAGIC a.brand_flag, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.pack_des, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des -# MAGIC from tmp.tmp_retail_dtp_pack_rawdata a -# MAGIC left join temp_dtp_pack_property b -# MAGIC ---------------------------------------------------- -# MAGIC -- format iqvia_pack_code from dwd_gnd_ext_dtp_pack_property -# MAGIC -- on a.pack_code = -# MAGIC -- case when length(trim(b.iqvia_pack_code)) < 12 and trim(b.iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC -- then right(concat('000000000000',trim(b.iqvia_pack_code)),12) -# MAGIC -- else trim(b.iqvia_pack_code) -# MAGIC -- end -# MAGIC -- ---------------------------------------------------- -# MAGIC -- and nvl(a.prescription_nature,'') = nvl(b.prescription_nature,'') -# MAGIC -- and nvl(a.medicine_attribute,'') = nvl(b.medicine_attribute,'') -# MAGIC -- and nvl(a.dosage_form,'') = nvl(b.dosage_form,'') -# MAGIC -- and nvl(a.object,'') = nvl(b.object,'') -# MAGIC -- and nvl(a.zk_classify1,'') = nvl(b.zk_classify1,'') -# MAGIC -- and nvl(a.zk_classify2,'') = nvl(b.zk_classify2,'') -# MAGIC -- and nvl(a.zk_classify3,'') = nvl(b.zk_classify3,'') -# MAGIC -- and nvl(a.target_points,'') = nvl(b.target_points,'') -# MAGIC -- and nvl(a.common_name,'') = nvl(b.common_name,'') -# MAGIC -- and nvl(a.brand_name,'') = nvl(b.brand_name,'') -# MAGIC -- and nvl(a.product_name,'') = nvl(b.product_name,'') -# MAGIC -- and nvl(a.pack_des,'') = nvl(b.zk_pack_des,'') -# MAGIC -- and nvl(a.factory,'') = nvl(b.factory,'') -# MAGIC -- and nvl(a.corp_des,'') = nvl(b.zk_corp_des,'') -# MAGIC -- 20260226 不再使用上面的join条件,改为product_id关联 -# MAGIC on a.iqvia_pack_code = b.iqvia_pack_code -# MAGIC ),tmp_pack_this_year_with_roc ( -# MAGIC select -# MAGIC a.year, -# MAGIC concat(a.year, 'Q', CEIL(CAST(RIGHT(a.time,2) AS INT)/3)) as yq, -# MAGIC a.time as yyyymm, -# MAGIC a.pack_code as iqvia_pack_code, -# MAGIC a.region as geo_key, -# MAGIC a.counting_unit as count_unit, -# MAGIC a.average_price, -# MAGIC a.sales_amount as sales_value, -# MAGIC a.sales_volume as sales_unit, -# MAGIC a.counting_units_obversion, -# MAGIC a.counting_unit_property as counting_unit, -# MAGIC case when a.data_flag = 0 then 1 else 2 end as pack_flag, -# MAGIC case when a.brand_flag = 1 then 1 else 2 end as brand_flag, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.pack_des, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des -# MAGIC from tmp_pack a -# MAGIC where exists ( -# MAGIC select * from tmp_has_roc c -# MAGIC where c.pack_code = a.pack_code -# MAGIC and c.time = a.time -# MAGIC ) and a.region <> '全国' -# MAGIC ), tmp_pack_next_year_with_roc ( -# MAGIC select -# MAGIC cast(a.year + 1 as int) as year, -# MAGIC concat(cast(a.year + 1 as int) , 'Q', CEIL(CAST(RIGHT(a.time,2) AS INT)/3)) as yq, -# MAGIC cast(a.time + 100 as int) as yyyymm, -# MAGIC a.pack_code as iqvia_pack_code, -# MAGIC a.region as geo_key, -# MAGIC a.counting_unit as count_unit, -# MAGIC a.average_price, -# MAGIC a.sales_amount as sales_value_ly, -# MAGIC a.sales_volume as sales_unit_ly, -# MAGIC a.counting_unit_property as counting_unit_ly, -# MAGIC a.counting_units_obversion, -# MAGIC case when a.data_flag = 0 then 1 else 2 end as pack_flag, -# MAGIC case when a.brand_flag = 1 then 1 else 2 end as brand_flag, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.pack_des, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des -# MAGIC from tmp_pack a -# MAGIC where a.time + 100 <= (select max(time) from tmp_pack) -# MAGIC and exists ( -# MAGIC select * from tmp_has_roc c -# MAGIC where c.pack_code = a.pack_code -# MAGIC and c.time = a.time -# MAGIC ) and a.region <> '全国' -# MAGIC ), tmp_pack_with_roc as ( -# MAGIC select -# MAGIC ifnull(a.year, b.year) as year, -# MAGIC ifnull(a.yq, b.yq) as yq , -# MAGIC ifnull(a.yyyymm, b.yyyymm) as yyyymm, -# MAGIC ifnull(a.iqvia_pack_code, b.iqvia_pack_code) as iqvia_pack_code, -# MAGIC ifnull(a.geo_key, b.geo_key) as geo_key, -# MAGIC ifnull(a.count_unit, b.count_unit) as count_unit, -# MAGIC ifnull(a.average_price, b.average_price) as average_price, -# MAGIC ifnull(a.sales_value, 0) as sales_value, -# MAGIC ifnull(a.sales_unit, 0) as sales_unit, -# MAGIC ifnull(a.counting_unit, 0) as counting_unit, -# MAGIC ifnull(a.counting_units_obversion, b.counting_units_obversion) as counting_units_obversion, -# MAGIC ifnull(a.pack_flag, b.pack_flag) as pack_flag, -# MAGIC ifnull(a.brand_flag, b.brand_flag) as brand_flag, -# MAGIC ifnull(b.sales_value_ly, 0) as sales_value_ly, -# MAGIC ifnull(b.sales_unit_ly, 0) as sales_unit_ly, -# MAGIC ifnull(b.counting_unit_ly, 0) as counting_unit_ly -# MAGIC from tmp_pack_this_year_with_roc a -# MAGIC full outer join tmp_pack_next_year_with_roc b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.iqvia_pack_code = b.iqvia_pack_code -# MAGIC and a.geo_key = b.geo_key -# MAGIC -- and nvl(a.prescription_nature,'') = nvl(b.prescription_nature,'') -# MAGIC -- and nvl(a.medicine_attribute,'') = nvl(b.medicine_attribute,'') -# MAGIC -- and nvl(a.dosage_form,'') = nvl(b.dosage_form,'') -# MAGIC -- and nvl(a.object,'') = nvl(b.object,'') -# MAGIC -- and nvl(a.zk_classify1,'') = nvl(b.zk_classify1,'') -# MAGIC -- and nvl(a.zk_classify2,'') = nvl(b.zk_classify2,'') -# MAGIC -- and nvl(a.zk_classify3,'') = nvl(b.zk_classify3,'') -# MAGIC and nvl(a.target_points,'') = nvl(b.target_points,'') -# MAGIC -- and nvl(a.common_name,'') = nvl(b.common_name,'') -# MAGIC -- and nvl(a.brand_name,'') = nvl(b.brand_name,'') -# MAGIC -- and nvl(a.product_name,'') = nvl(b.product_name,'') -# MAGIC -- and nvl(a.pack_des,'') = nvl(b.pack_des,'') -# MAGIC -- and nvl(a.factory,'') = nvl(b.factory,'') -# MAGIC -- and nvl(a.corp_des,'') = nvl(b.corp_des,'') -# MAGIC ), tmp_pack_this_year_without_roc ( -# MAGIC select -# MAGIC left(a.time, 4) year, -# MAGIC concat(a.year, 'Q', CEIL(CAST(RIGHT(a.time,2) AS INT)/3)) as yq, -# MAGIC a.time as yyyymm, -# MAGIC a.pack_code as iqvia_pack_code, -# MAGIC 'ROC' as geo_key, -# MAGIC a.counting_unit as count_unit, -# MAGIC a.average_price, -# MAGIC a.sales_amount as sales_value, -# MAGIC a.sales_volume as sales_unit, -# MAGIC a.counting_units_obversion, -# MAGIC a.counting_unit_property as counting_unit, -# MAGIC case when data_flag = 0 then 1 else 2 end as pack_flag, -# MAGIC case when brand_flag = 1 then 1 else 2 end as brand_flag, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.pack_des, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des -# MAGIC from tmp_pack a -# MAGIC where not exists ( -# MAGIC select * from tmp_has_roc c -# MAGIC where c.pack_code = a.pack_code -# MAGIC and c.time = a.time -# MAGIC ) -# MAGIC ), tmp_pack_next_year_without_roc as ( -# MAGIC select -# MAGIC cast(a.year + 1 as int) as year, -# MAGIC concat(cast(a.year + 1 as int) , 'Q', CEIL(CAST(RIGHT(a.time,2) AS INT)/3)) as yq, -# MAGIC cast(a.time + 100 as int) as yyyymm, -# MAGIC a.pack_code as iqvia_pack_code, -# MAGIC 'ROC' as geo_key, -# MAGIC a.counting_unit as count_unit, -# MAGIC a.average_price, -# MAGIC a.sales_amount as sales_value_ly, -# MAGIC a.sales_volume as sales_unit_ly, -# MAGIC a.counting_unit_property as counting_unit_ly, -# MAGIC a.counting_units_obversion, -# MAGIC case when data_flag = 0 then 1 else 2 end as pack_flag, -# MAGIC case when brand_flag = 1 then 1 else 2 end as brand_flag, -# MAGIC -- a.prescription_nature, -# MAGIC -- a.medicine_attribute, -# MAGIC -- a.dosage_form, -# MAGIC -- a.object, -# MAGIC -- a.zk_classify1, -# MAGIC -- a.zk_classify2, -# MAGIC -- a.zk_classify3, -# MAGIC a.target_points -# MAGIC -- a.common_name, -# MAGIC -- a.brand_name, -# MAGIC -- a.product_name, -# MAGIC -- a.pack_des, -# MAGIC -- a.factory, -# MAGIC -- a.corp_des -# MAGIC from tmp_pack a -# MAGIC where a.time + 100 <= (select max(time) from tmp_pack) -# MAGIC and not exists ( -# MAGIC select * from tmp_has_roc c -# MAGIC where c.pack_code = a.pack_code -# MAGIC and c.time = a.time -# MAGIC ) -# MAGIC ),tmp_pack_without_roc as ( -# MAGIC select -# MAGIC ifnull(a.year, b.year) as year, -# MAGIC ifnull(a.yq, b.yq) as yq , -# MAGIC ifnull(a.yyyymm, b.yyyymm) as yyyymm, -# MAGIC ifnull(a.iqvia_pack_code, b.iqvia_pack_code) as iqvia_pack_code, -# MAGIC ifnull(a.geo_key, b.geo_key) as geo_key, -# MAGIC ifnull(a.count_unit, b.count_unit) as count_unit, -# MAGIC ifnull(a.average_price, b.average_price) as average_price, -# MAGIC ifnull(a.sales_value, 0) as sales_value, -# MAGIC ifnull(a.sales_unit, 0) as sales_unit, -# MAGIC ifnull(a.counting_unit, 0) as counting_unit, -# MAGIC ifnull(a.counting_units_obversion, b.counting_units_obversion) as counting_units_obversion, -# MAGIC ifnull(a.pack_flag, b.pack_flag) as pack_flag, -# MAGIC ifnull(a.brand_flag, b.brand_flag) as brand_flag, -# MAGIC ifnull(b.sales_value_ly, 0) as sales_value_ly, -# MAGIC ifnull(b.sales_unit_ly, 0) as sales_unit_ly, -# MAGIC ifnull(b.counting_unit_ly, 0) as counting_unit_ly -# MAGIC from tmp_pack_this_year_without_roc a -# MAGIC full outer join tmp_pack_next_year_without_roc b -# MAGIC on a.yyyymm = b.yyyymm -# MAGIC and a.iqvia_pack_code = b.iqvia_pack_code -# MAGIC and a.geo_key = b.geo_key -# MAGIC -- and nvl(a.prescription_nature,'') = nvl(b.prescription_nature,'') -# MAGIC -- and nvl(a.medicine_attribute,'') = nvl(b.medicine_attribute,'') -# MAGIC -- and nvl(a.dosage_form,'') = nvl(b.dosage_form,'') -# MAGIC -- and nvl(a.object,'') = nvl(b.object,'') -# MAGIC -- and nvl(a.zk_classify1,'') = nvl(b.zk_classify1,'') -# MAGIC -- and nvl(a.zk_classify2,'') = nvl(b.zk_classify2,'') -# MAGIC -- and nvl(a.zk_classify3,'') = nvl(b.zk_classify3,'') -# MAGIC and nvl(a.target_points,'') = nvl(b.target_points,'') -# MAGIC -- and nvl(a.common_name,'') = nvl(b.common_name,'') -# MAGIC -- and nvl(a.brand_name,'') = nvl(b.brand_name,'') -# MAGIC -- and nvl(a.product_name,'') = nvl(b.product_name,'') -# MAGIC -- and nvl(a.pack_des,'') = nvl(b.pack_des,'') -# MAGIC -- and nvl(a.factory,'') = nvl(b.factory,'') -# MAGIC -- and nvl(a.corp_des,'') = nvl(b.corp_des,'') -# MAGIC ), tmp_final_sales as ( -# MAGIC select * from tmp_pack_with_roc -# MAGIC union all -# MAGIC select * from tmp_pack_without_roc -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table tmp.tmp_retail_dtp_final_sales -# MAGIC -# MAGIC select -# MAGIC year, -# MAGIC yq, -# MAGIC yyyymm, -# MAGIC iqvia_pack_code, -# MAGIC geo_key, -# MAGIC count_unit, -# MAGIC average_price, -# MAGIC sales_value, -# MAGIC sales_unit, -# MAGIC counting_units_obversion, -# MAGIC counting_unit, -# MAGIC sales_value_ly, -# MAGIC sales_unit_ly, -# MAGIC counting_unit_ly, -# MAGIC pack_flag, -# MAGIC brand_flag -# MAGIC from tmp_final_sales -# MAGIC order by yyyymm -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: calculate OTHERS data - -# COMMAND ---------- - -# DBTITLE 1,不再计算 -# %sql -# ------------------------------------------------------------------------------------- -# -- STEP-2: calculate OTHERS data -# -- 2.1 calaulate DTP_AZ_OTHERS data -# ------------------------------------------------------------------------------------- -# with tmp_az_total_now as ( -# select -# cast(top_corp.sales_quarter as int ) yyyymm, -# top_corp.corp_name, -# top_corp.sales_amount *1000000.0 sales_amount, -# pack.CORP_COD -# from dwd.dwd_gnd_ext_retail_dtp_top_copd top_corp -# left join ( -# select distinct ZK_Corp_C,CORP_COD -# from dwd.dwd_inc_gnd_retail_b2c_label_total -# ) pack on replace(top_corp.corp_name,'-','')=pack.ZK_Corp_C -# where pack.CORP_COD='A5Z' -# ), tmp_az_total_ly as ( -# select -# cast(yyyymm + 100 as int) as yyyymm, -# corp_name, -# sales_amount as sales_amount_ly, -# CORP_COD -# from tmp_az_total_now -# ), tmp_az_total as ( -# select -# a.*, -# ifnull(b.sales_amount_ly, 0) as sales_amount_ly -# from tmp_az_total_now a -# left join tmp_az_total_ly b -# on a.yyyymm = b.yyyymm -# and a.corp_name = b.corp_name -# and a.CORP_COD = b.CORP_COD -# ),tmp_az_pack_total as ( -# select -# a.year, -# a.yq, -# a.yyyymm, -# sum(a.sales_value) as sales_value, -# sum(a.sales_unit) as sales_unit, -# sum(a.counting_unit) as counting_unit, -# sum(a.sales_value_ly) as sales_value_ly, -# sum(a.sales_unit_ly) as sales_unit_ly, -# sum(a.counting_unit_ly) as counting_unit_ly -# from tmp.tmp_retail_dtp_final_sales a -# where a.iqvia_pack_code in ( -# select distinct iqvia_pack_code -# from tmp.tmp_zk_retail_dtp_market_corp -# where corp_cod = 'A5Z' -# ) -# group by a.year,a.yq,a.yyyymm -# order by a.yyyymm -# ) - -# insert into table tmp.tmp_retail_dtp_final_sales - -# select -# left(a.yyyymm, 4) as year, -# concat(left(a.yyyymm, 4), 'Q', CEIL(CAST(RIGHT(a.yyyymm,2) AS INT)/3)) as yq, -# a.yyyymm, -# 'DTP_AZ_OTHERS' as iqvia_pack_code, -# 'ROC' as geo_key, -# 0 as count_unit, -# 0 as average_price, -# a.sales_amount - nvl(b.sales_value, 0) as sales_value, -# 0 as sales_unit, -# 0 as counting_units_obversion, -# 0 as counting_unit, -# a.sales_amount_ly - nvl(b.sales_value_ly, 0) as sales_value_ly, -# 0 as sales_unit_ly, -# 0 as counting_unit_ly, -# 0 as pack_flag, -# 0 as brand_flag -# from tmp_az_total a -# left join tmp_az_pack_total b -# on a.yyyymm = b.yyyymm -# order by a.yyyymm - -# COMMAND ---------- - -# DBTITLE 1,不再计算 -# %sql -# ------------------------------------------------------------------------------------- -# -- STEP-2: calculate OTHERS data -# -- 2.2 calaulate DTP_OTHERS data -# ------------------------------------------------------------------------------------- - -# with tmp_total_now as ( -# SELECT -# dtp_name, -# sales_quarter as yyyymm, -# sales_amount * 1000000.0 as sales_amount -# FROM dwd.dwd_gnd_ext_retail_dtp_overall_market -# ), tmp_total_ly as ( -# select -# dtp_name, -# cast(yyyymm + 100 as int) as yyyymm, -# sales_amount as sales_amount_ly -# from tmp_total_now -# ), tmp_total as ( -# select -# a.*, -# ifnull(b.sales_amount_ly, 0) as sales_amount_ly -# from tmp_total_now a -# left join tmp_total_ly b -# on a.yyyymm = b.yyyymm -# ),tmp_pack_total as ( -# select -# a.year, -# a.yq, -# a.yyyymm, -# sum(a.sales_value) as sales_value, -# sum(a.sales_unit) as sales_unit, -# sum(a.counting_unit) as counting_unit, -# sum(a.sales_value_ly) as sales_value_ly, -# sum(a.sales_unit_ly) as sales_unit_ly, -# sum(a.counting_unit_ly) as counting_unit_ly -# from tmp.tmp_retail_dtp_final_sales a -# group by a.year,a.yq,a.yyyymm -# order by a.yyyymm -# ) - -# insert into table tmp.tmp_retail_dtp_final_sales - -# select -# left(a.yyyymm, 4) as year, -# concat(left(a.yyyymm, 4), 'Q', CEIL(CAST(RIGHT(a.yyyymm,2) AS INT)/3)) as yq, -# a.yyyymm, -# 'DTP_OTHERS' as iqvia_pack_code, -# 'ROC' as geo_key, -# 0 as count_unit, -# 0 as average_price, -# a.sales_amount - nvl(b.sales_value, 0) as sales_value, -# 0 as sales_unit, -# 0 as counting_units_obversion, -# 0 as counting_unit, -# a.sales_amount_ly - nvl(b.sales_value_ly, 0) as sales_value_ly, -# 0 as sales_unit_ly, -# 0 as counting_unit_ly, -# 0 as pack_flag, -# 0 as brand_flag -# from tmp_total a -# left join tmp_pack_total b -# on a.yyyymm = b.yyyymm -# order by a.yyyymm - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/08 map_to_dtp_dws_table.py:Zone.Identifier b/EXTERNAL/Retail/08 map_to_dtp_dws_table.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/08 map_to_dtp_dws_table.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py b/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py deleted file mode 100644 index 4fcc913..0000000 --- a/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py +++ /dev/null @@ -1,177 +0,0 @@ -# Databricks notebook source -#当更新pack 或品牌 事实数据时需要运行此代码,否则无需运行。 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_oap' where file_name ='pack-CV-抗血栓2通用名-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_htn' where file_name ='pack-CV-高血压-化学药-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_atomizer' where file_name ='pack-雾化器-全国&县域数据.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_anti_asthma_copd' where file_name ='pack-RE-慢阻肺-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_zk_brand' where file_name ='Brand-品牌数据报表.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_statin_xzk' where file_name ='pack-CV-他汀类+血脂康-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_rd' where file_name ='pack-RD-肾科-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_aagsa_ppi_oral' where file_name ='pack-GI-慢性胃炎胃溃疡-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_niad' where file_name ='pack-DM-口服降糖化学药.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_metoprolol_tartrat' where file_name ='pack-CV-酒石酸美托洛尔.xlsx'; -# MAGIC - -# COMMAND ---------- - - -# brand+ 省份数据自动接入 -#获取配置表信息(表名、brand_flag -dfband = spark.sql(""" -SELECT DISTINCT table_name tab ,file_name brand_flag FROM dwd.dwd_gnd_ext_retail_corresponding_relationship -where type_name ='BRAND' -""").collect() - -def get_union_brand_data(df): - #数据为空 - if df == None: - return None - #初始化结果集 - union_query = None - for table in df: - # 选择当前表名 - T = str(table.tab) - # 获取对应brand表维度对应得 market 名称 - pack_flag = str(table.brand_flag) - sql = f""" - select - cast(left(quarter, 4)*100 + right(quarter,1)*3 as int ) AS YYYYMM - ,cast(left(quarter, 4) as int ) AS year - ,right(quarter, 2) AS quarter - ,quarter AS yq - ,type AS brand_cat_type - ,case when ta = 'NIAD' then 'DM' else ta end AS TA - ,market AS market - ,zk_brand_category AS zk_brand_category - ,zk_common_name AS zk_common_name - ,zk_manu_des AS zk_manu_des - ,rc_name_en AS rc_name_en - ,province_city AS province_city - ,ytd AS ytd - ,cast(sales_value * 1000000 as decimal(30,10)) AS sales_val - ,cast(sales_volume * 1000000 as decimal(30,10)) AS sales_vol - ,cast(price as decimal(30,10)) as price - ,cast(num_dist_rate as decimal(30,10)) as num_dist_rate - ,cast(weig_dist_rate as decimal(30,10)) as weig_dist_rate - ,cast(value_share as decimal(30,10)) as val_share - ,cast(volume_share as decimal(30,10)) as vol_share - ,replace(key_brand_ytd,'-','') as key_brand_ytd - ,cast(replace(key_brand_rank_ytd,'-','0') as int) as key_brand_rank_ytd - ,replace(top_brand_ytd,'-','') as top_brand_ytd - ,cast(replace(top_brand_ms_ytd,'-','0') as decimal(30,10)) as top_brand_ms_ytd - ,cast(replace(top_brand_inc_ms_ytd,'-','0') as decimal(30,10)) as top_brand_inc_ms_ytd - ,cast(replace(top_brand_gr_ytd,'-','0') as decimal(30,10)) as top_brand_gr_ytd - ,replace(key_brand_qtd,'-','') as key_brand_qtd - ,cast(replace(key_brand_rank_qtd,'-','0') as int) as key_brand_rank_qtd - ,replace(top_brand_qtd,'-','') as top_brand_qtd - ,cast(replace(top_brand_ms_qtd,'-','0') as decimal(30,10)) as top_brand_ms_qtd - ,cast(replace(top_brand_inc_ms_qtd,'-','0') as decimal(30,10)) as top_brand_inc_ms_qtd - ,cast(replace(top_brand_gr_qtd,'-','0') as decimal(30,10)) as top_brand_gr_qtd - ,ranked_by as ranked_by - ,'{pack_flag}' as pack_flag - ,from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt - from {T} - """ - # 读取数据 - current_query = spark.sql(sql) - #union 数据 - if union_query == None: - union_query = current_query - else: - union_query = union_query.union(current_query) - #返回数据集 / 写入表也行??? - return union_query -brand_result = get_union_brand_data(dfband) -brand_result.write.mode("overwrite").saveAsTable("dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all") - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ###新逻辑 -# MAGIC - 修改brand数据,先拆分成月维度的数据 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC /* -# MAGIC 修改时间:20250311 -# MAGIC 修改人:chenwu -# MAGIC 修改内容:brand来数频率为 季度来数, 但是 pack 为 月度来数据,需要用季度的数据/3得到月度的 -# MAGIC */ -# MAGIC insert overwrite table dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC with quarterly_table as ( -# MAGIC select -# MAGIC * -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC where market not in ('NIAD','Inhaled Extended Market','布地奈德雾化溶液') -# MAGIC -- 范围内只能是 季度来数据的,如果有月度来数据的需要排除掉 -# MAGIC ) -# MAGIC -# MAGIC ,month_table as (--转化成月度数据 -# MAGIC SELECT -# MAGIC SUBSTR(q.yq, 1, 4)*100 + -- 提取年份 -# MAGIC LPAD(m.month_num, 2, '0') -- 补零月份 -# MAGIC AS YYYYMM -- 月份首日 -# MAGIC ,`year` -# MAGIC ,`quarter` -# MAGIC ,yq -# MAGIC ,brand_cat_type -# MAGIC ,TA -# MAGIC ,market -# MAGIC ,zk_brand_category -# MAGIC ,zk_common_name -# MAGIC ,zk_manu_des -# MAGIC ,rc_name_en -# MAGIC ,province_city -# MAGIC ,ytd -# MAGIC ,sales_val /3 --除3 -# MAGIC ,sales_vol /3 --除3 -# MAGIC ,price -# MAGIC ,num_dist_rate -# MAGIC ,weig_dist_rate -# MAGIC ,val_share -# MAGIC ,vol_share -# MAGIC ,key_brand_ytd -# MAGIC ,key_brand_rank_ytd -# MAGIC ,top_brand_ytd -# MAGIC ,top_brand_ms_ytd -# MAGIC ,top_brand_inc_ms_ytd -# MAGIC ,top_brand_gr_ytd -# MAGIC ,key_brand_qtd -# MAGIC ,key_brand_rank_qtd -# MAGIC ,top_brand_qtd -# MAGIC ,top_brand_ms_qtd -# MAGIC ,top_brand_inc_ms_qtd -# MAGIC ,top_brand_gr_qtd -# MAGIC ,ranked_by -# MAGIC ,pack_flag -# MAGIC ,etl_insert_dt -# MAGIC ,etl_update_dt -# MAGIC FROM -# MAGIC quarterly_table q -# MAGIC LATERAL VIEW EXPLODE( -- 为每季度生成三个月 -# MAGIC CASE -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q1' THEN ARRAY(1, 2, 3) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q2' THEN ARRAY(4, 5, 6) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q3' THEN ARRAY(7, 8, 9) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q4' THEN ARRAY(10, 11, 12) -# MAGIC END -# MAGIC ) m AS month_num -# MAGIC ) -# MAGIC -# MAGIC ,other_not_quarterly_table ( -# MAGIC select -# MAGIC * -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC where market in ('NIAD','Inhaled Extended Market','布地奈德雾化溶液') -# MAGIC -- 范围内只能是 月度来数据的 -# MAGIC ) -# MAGIC -# MAGIC select * from month_table -# MAGIC union all -# MAGIC select * from other_not_quarterly_table \ No newline at end of file diff --git a/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py:Zone.Identifier b/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/09 dwd_inc_gnd_ext_retail_nataional.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/10 map_to_retail_dm_table.py b/EXTERNAL/Retail/10 map_to_retail_dm_table.py deleted file mode 100644 index 32d3f21..0000000 --- a/EXTERNAL/Retail/10 map_to_retail_dm_table.py +++ /dev/null @@ -1,4917 +0,0 @@ -# Databricks notebook source -############################################################START############################################################## -### STEP-1: map to dm.dm_zk_retail_geo -### STEP-2: map to dm.dm_ext_rc_ratio -### STEP-3: map to dm.dm_zk_retail_sales -### STEP-4: map to dm.dm_zk_retail_pack_property -### STEP-5: map to dm.dm_zk_retail_market_property -### STEP-6: map to dm.dm_zk_retail_dtp_pack_property -### STEP-7: map to dm.dm_zk_retail_dtp_sales -### STEP-8: map to dm.dm_zk_retail_sales_kpi -### STEP-9: map to dm.dm_zk_retail_market_ratio - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-1: map to dm.dm_zk_retail_geo - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-1: map to dm.dm_zk_retail_geo -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with all_province_city as ( -# MAGIC select distinct province_city from tmp.tmp_retail_brand_rawdata -# MAGIC union -# MAGIC select distinct zk_regin from tmp.tmp_retail_pack_rawdata -# MAGIC union -# MAGIC select distinct province_city from dwd.dwd_gnd_ext_dtp_zk_brand -# MAGIC union -# MAGIC select distinct region from dwd.dwd_gnd_ext_retail_dtp_datasource -# MAGIC ), tmp as ( -# MAGIC ----------------按照retail 逻辑划分福厦泉、全国,并从chpa的geo中提取其他维度信息--------------------- -# MAGIC select distinct -# MAGIC case when t1.province_city = '全国' then 'CHT' -# MAGIC when t1.province_city = '福厦泉' then 'FXQ' -# MAGIC else -# MAGIC nvl(t2.geo_key, t3.geo_key) -# MAGIC end geo_key, -# MAGIC t4.AZ_City_tier -# MAGIC ,t4.city_tier, -# MAGIC province_city, -# MAGIC t3.city_name, -# MAGIC t3.city_code, -# MAGIC t3.city_name_en, -# MAGIC case when t1.province_city = '福厦泉' then '福建' -# MAGIC when t1.province_city = '全国' then '全国' -# MAGIC else -# MAGIC nvl(t3.province_name,t2.province_name) -# MAGIC end province_name, -# MAGIC case when t1.province_city = '福厦泉' then 'FJ' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.province_code,t2.province_code) -# MAGIC end province_code, -# MAGIC case when t1.province_city = '福厦泉' then 'Fujian' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.province_name_en,t2.province_name_en) -# MAGIC end province_name_en, -# MAGIC case when t1.province_city = '福厦泉' then 'SOUTH' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.area_code,t2.area_code) -# MAGIC end area_code, -# MAGIC case when t1.province_city = '福厦泉' then '南部地区' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.area_name,t2.area_name) -# MAGIC end area_name, -# MAGIC case when t1.province_city = '福厦泉' then 'South China' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.area_name_en,t2.area_name_en) -# MAGIC end area_name_en, -# MAGIC case when t1.province_city = '福厦泉' then 'SOUTH' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.rc_code,t2.rc_code) -# MAGIC end rc_code, -# MAGIC case when t1.province_city = '福厦泉' then '南部地区' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.rc_name,t2.rc_name) -# MAGIC end rc_name, -# MAGIC case when t1.province_city = '福厦泉' then 'South China' -# MAGIC when t1.province_city = '全国' then 'National' -# MAGIC else -# MAGIC nvl(t3.rc_name_en,t2.rc_name_en) -# MAGIC end rc_name_en -# MAGIC from all_province_city t1 -# MAGIC left join dm.dm_td_geography t2 -# MAGIC on t1.province_city = t2.province_name and t2.geo_key = t2.province_code -# MAGIC left join dm.dm_td_geography t3 -# MAGIC on t1.province_city = replace(t3.city_name,'市','') and t3.geo_key = t3.city_code -# MAGIC left join dws.dws_ims_td_geo t4 -# MAGIC on t1.province_city = replace(t4.AUDIT_DES_C,'市','') -# MAGIC where t1.province_city <> 'ROC' -# MAGIC ) -# MAGIC -# MAGIC -------------------省份、自治区等处理----------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_geo -# MAGIC SELECT -# MAGIC geo_key -# MAGIC ,city_name_en -# MAGIC ,replace(city_name,'市') city_c -# MAGIC ,case when city_code is not null then 'City' else 'Province' END city_type -# MAGIC ,city_tier -# MAGIC ,AZ_City_tier -# MAGIC ,province_name_en -# MAGIC ,province_name -# MAGIC ,province_code -# MAGIC ,city_name city_map -# MAGIC ,case when province_code in ('TJ','CQ','BJ','SH') then concat(province_name,'市') -# MAGIC when province_code in ('SC','YN','LN','SA','GZ','HN','HL','SX','ZJ','JS','SD','JL','FJ','GD','HU','AH','GS','HE','JX','HB') then concat(province_name,'省') -# MAGIC when province_code ='GX' THEN concat(province_name,'壮族自治区') -# MAGIC when province_code ='IM' THEN concat(province_name,'自治区') -# MAGIC ELSE province_name -# MAGIC end province_map -# MAGIC ,city_code -# MAGIC ,province_city -# MAGIC ,area_code -# MAGIC ,area_name -# MAGIC ,area_name_en -# MAGIC ,rc_code -# MAGIC ,rc_name -# MAGIC ,rc_name_en -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from tmp -# MAGIC -# MAGIC UNION ALL -# MAGIC -# MAGIC SELECT -# MAGIC 'ROC' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'City' -# MAGIC , 1 -# MAGIC , 1 -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC , null -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,'Other Low Tiers' -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-2: map to dm.dm_ext_rc_ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: map to dm.dm_ext_rc_ratio -# MAGIC -- 2.1 rc 拆分逻辑处理 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dws.dws_ext_rc_ratio -# MAGIC select -# MAGIC a.sub_bu -# MAGIC ,a.mkt -# MAGIC ,a.region_code -# MAGIC ,nvl(b.PROVINCE_CODE,c.PROVINCE_CODE ) PROVINCE_CODE -# MAGIC ,nvl(b.AUDIT_COD,c.PROVINCE_CODE) city_code -# MAGIC ,a.ratio -# MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt -# MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt -# MAGIC from dwd.dwd_gnd_ext_rc_ratio a -# MAGIC left join dm.dm_ims_td_geo b on a.city = b.CITY_C -# MAGIC left join ( -# MAGIC select province_code,province_name -# MAGIC from dm.dm_td_geography group by province_name,province_code -# MAGIC ) c on a.city = c.province_name - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-2: map to dm.dm_ext_rc_ratio -# MAGIC -- 2.2 rc 拆分逻辑处理 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dm.dm_ext_rc_ratio -# MAGIC select -# MAGIC sub_bu -# MAGIC ,mkt -# MAGIC ,region_code -# MAGIC ,PROVINCE_CODE -# MAGIC ,city_code -# MAGIC ,ratio -# MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt -# MAGIC ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt -# MAGIC from dws.dws_ext_rc_ratio - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-3: map to dm.dm_zk_retail_sales - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 3.1 将数据写入最终表的临时表 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.2 write pack data from tmp.tmp_retail_final_sales to tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_source as ( -# MAGIC select -# MAGIC distinct -# MAGIC yyyymm, -# MAGIC iqvia_pack_code, -# MAGIC province_city, -# MAGIC collect_list(distinct market) as source -# MAGIC from tmp.tmp_retail_final_sales -# MAGIC group by yyyymm,iqvia_pack_code,province_city -# MAGIC ), tmp_pack as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC iqvia_pack_code, -# MAGIC province_city, -# MAGIC market, -# MAGIC pack_flag, -# MAGIC brand_flag, -# MAGIC sum(sales_unit) as sales_unit, -# MAGIC sum(sales_unit_ly) as sales_unit_ly, -# MAGIC sum(sales_value) as sales_value, -# MAGIC sum(sales_value_ly) as sales_value_ly, -# MAGIC sum(counting_unit) as counting_unit, -# MAGIC sum(counting_unit_ly) as counting_unit_ly -# MAGIC from tmp.tmp_retail_final_sales -# MAGIC group by yyyymm,iqvia_pack_code,province_city,market,pack_flag,brand_flag -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC select -# MAGIC a.yyyymm, -# MAGIC a.iqvia_pack_code, -# MAGIC CASE WHEN a.province_city ='ROC' then 'ROC' ELSE b.geo_key END as AUDIT_COD, -# MAGIC a.province_city, -# MAGIC c.corp_cod, -# MAGIC a.sales_unit, -# MAGIC a.sales_unit_ly, -# MAGIC a.sales_value, -# MAGIC a.sales_value_ly, -# MAGIC a.counting_unit, -# MAGIC a.counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC d.source, -# MAGIC a.pack_flag, -# MAGIC a.brand_flag, -# MAGIC case -# MAGIC when a.market in ('他汀类+血脂康','高血压用药','Brilinta Market') then 'CV' -# MAGIC when a.market in ('NIAD','RD Market') then 'CVRM' -# MAGIC ELSE '' -# MAGIC END as FLAG -# MAGIC from tmp_pack a -# MAGIC left join dm.dm_zk_retail_geo b -# MAGIC on a.province_city = b.province_city -# MAGIC left join tmp.tmp_zk_retail_pack_property_corp c -# MAGIC on a.iqvia_pack_code = c.iqvia_pack_code -# MAGIC left join tmp_source d -# MAGIC on a.yyyymm = d.yyyymm -# MAGIC and a.iqvia_pack_code = d.iqvia_pack_code -# MAGIC and a.province_city = d.province_city - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 3.2 计算OTHERS数据 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3 calculate OTHERS DATA -# MAGIC -- 3.3.1 将数据处理到dws -# MAGIC -- 3.3.1.1 维度信息计算 -# MAGIC -- STEP1: nataional_top_corp -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC --直接写入旧的文件对应的表,这样后面的代码都不用改动。 -# MAGIC --新文件《全国-集团排名》筛选:TA=Retail Total,Rx/OTC= Rx,Top/Top Incre. = Top Sales,对应了旧文件:《全国-Rx-TOP集团》 -# MAGIC insert overwrite table dwd.dwd_gnd_ext_retail_nataional_top_corp -# MAGIC ( -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC corp_type, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC ytd_gr, -# MAGIC ytd_ms, -# MAGIC ytd_delta_ms, -# MAGIC builtinarchivedate, -# MAGIC source_file_path, -# MAGIC source_file_name, -# MAGIC etl_insert_dt -# MAGIC ) -# MAGIC select -# MAGIC trim(rank1) as rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC `type` as corp_type, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC null as ytd_gr, -# MAGIC null as ytd_ms, -# MAGIC null as ytd_delta_ms, -# MAGIC builtinarchivedate, -# MAGIC source_file_path, -# MAGIC source_file_name, -# MAGIC etl_insert_dt -# MAGIC from dwd.dwd_gnd_retail_national_corp_rank -# MAGIC where upper(ta) = 'RETAIL TOTAL' -# MAGIC and upper(rx_otc) = 'RX' -# MAGIC and upper(top_top_incre) = 'TOP SALES' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3 calculate OTHERS DATA -# MAGIC -- 3.3.1 将数据处理到dws -# MAGIC -- 3.3.1.1 维度信息计算 -# MAGIC -- STEP2: nataional_ta_top_corp -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC --直接写入旧的文件对应的表,这样后面的代码都不用改动。 -# MAGIC --新文件《全国-集团排名》筛选:TA <> Retail Total,Top/Top Incre. = Top Sales,对应了旧文件:《全国-分TA-TOP集团》 -# MAGIC insert overwrite table dwd.dwd_gnd_ext_retail_nataional_ta_top_corp -# MAGIC ( -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corp_name, -# MAGIC corp_type, -# MAGIC source_name, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC ytd_gr, -# MAGIC ytd_ms, -# MAGIC ytd_delta_ms, -# MAGIC builtinarchivedate, -# MAGIC source_file_path, -# MAGIC source_file_name, -# MAGIC etl_insert_dt -# MAGIC ) -# MAGIC select -# MAGIC trim(rank1) as rank1, -# MAGIC corp_desc, -# MAGIC corporation as corp_name, -# MAGIC `type` as corp_type, -# MAGIC case when ta = 'GI' then concat(ta,'-',rx_otc) -# MAGIC when ta = 'NIAD-excl. GLP1' then 'DM' -# MAGIC else ta end as source_name, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC null as ytd_gr, -# MAGIC null as ytd_ms, -# MAGIC null as ytd_delta_ms, -# MAGIC builtinarchivedate, -# MAGIC source_file_path, -# MAGIC source_file_name, -# MAGIC etl_insert_dt -# MAGIC from dwd.dwd_gnd_retail_national_corp_rank -# MAGIC where upper(ta) <> 'RETAIL TOTAL' -# MAGIC and upper(top_top_incre) = 'TOP SALES' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3 calculate OTHERS DATA -# MAGIC -- 3.3.1 将数据处理到dws -# MAGIC -- 3.3.1.2 将 top_corp 的数据处理到dws -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC --------------------获取 全国total 本同期数据------------------------ -# MAGIC insert overwrite table dws.dws_zk_retail_top_corp -# MAGIC SELECT -# MAGIC yyyymm, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC -- source_name, -# MAGIC sum(sales_amount) as sales_amount, -# MAGIC sum(sales_amount_ly) as sales_amount_ly -# MAGIC FROM -# MAGIC ( -# MAGIC SELECT -# MAGIC nvl(rank1,'' ) as rank1 , -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC corp_type, -# MAGIC -- source_name, -# MAGIC CAST(sales_quarter AS int ) as yyyymm, -# MAGIC sales_amount * 1000000 AS sales_amount, -# MAGIC 0 AS sales_amount_ly -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp -# MAGIC UNION ALL -# MAGIC SELECT -# MAGIC nvl(rank1,'' ) rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC corp_type, -# MAGIC -- source_name, -# MAGIC CAST(sales_quarter + 100 AS int ) as yyyymm, -# MAGIC 0 AS sales_amount, -# MAGIC sales_amount * 1000000 AS sales_amount_ly -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp -# MAGIC WHERE CAST(sales_quarter + 100 AS int ) -# MAGIC <=(SELECT -# MAGIC max(CAST(sales_quarter AS int )) -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp ) ) -# MAGIC GROUP BY -# MAGIC yyyymm, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation -# MAGIC -- source_name - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3 calculate OTHERS DATA -# MAGIC -- 3.3.1 将数据处理到dws -# MAGIC -- 3.3.1.3 将 ta_top_corp 的数据处理到dws -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC --------------------获取 ta total 本同期数据,用于后续取 total 及 az 值 -# MAGIC insert overwrite table dws.dws_zk_retail_ta_top_corp -# MAGIC SELECT -# MAGIC source_name, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC CORP_COD, -# MAGIC yyyymm, -# MAGIC sum(sales_amount) sales_amount, -# MAGIC sum(sales_amount_ly) sales_amount_ly -# MAGIC FROM -# MAGIC ( -# MAGIC SELECT -# MAGIC a.rank1, -# MAGIC source_name, -# MAGIC A.corp_desc, -# MAGIC B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code -# MAGIC CAST(sales_quarter AS int ) yyyymm , -# MAGIC sales_amount * 1000000 AS sales_amount, -# MAGIC 0 AS sales_amount_ly -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a -# MAGIC LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b -# MAGIC ON a.corp_desc = b.ZK_Corp_C -# MAGIC UNION ALL -# MAGIC SELECT -# MAGIC a.rank1, -# MAGIC source_name, -# MAGIC A.corp_desc, -# MAGIC B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code -# MAGIC CAST(sales_quarter + 100 AS int ) yyyymm , -# MAGIC 0 AS sales_amount, -# MAGIC sales_amount * 1000000 AS sales_amount_ly -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a -# MAGIC LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b -# MAGIC ON a.corp_desc = b.ZK_Corp_C -# MAGIC WHERE -# MAGIC CAST(sales_quarter + 100 AS int ) -# MAGIC <=( SELECT max(CAST(sales_quarter AS int )) -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp ) -# MAGIC ) -# MAGIC GROUP BY -# MAGIC 1,2,3,4,5 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3.2 calculate TA OTHERS -# MAGIC -- 3.3.2.1 calculate CV_AZ_OTHERS -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_az_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_ta_top_corp -# MAGIC where source_name='CV' -# MAGIC AND CORP_COD ='A5Z' -# MAGIC ), tmp_az_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC a.corp_cod, -# MAGIC sum(a.sales_value) as sales_value , -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC where nvl(a.corp_cod,'') ='A5Z' -# MAGIC and FLAG = 'CV' -# MAGIC group by a.YYYYMM,a.corp_cod -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'CV_AZ_OTHERS' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC a.corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC -- 25年没有TA大数,此类数据直接赋值0 -# MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'CV' as FLAG -# MAGIC from tmp_az_pack_total a -# MAGIC left join tmp_az_total b -# MAGIC on a.YYYYMM = b.yyyymm - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3.2 calculate TA OTHERS -# MAGIC -- 3.3.2.2 calculate CV_OTHERS -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_ta_top_corp -# MAGIC where source_name='CV' -# MAGIC AND rank1 = 'Total' -# MAGIC ), tmp_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC sum(a.sales_value) as sales_value, -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC where FLAG = 'CV' -# MAGIC group by a.YYYYMM -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'CV_OTHERS' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC 'CV_OTHERS' as corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC -- 25年没有TA大数,此类数据直接赋值0 -# MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'CV' as FLAG -# MAGIC from tmp_pack_total a -# MAGIC left join tmp_total b -# MAGIC on a.YYYYMM = b.yyyymm - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.3.2 calculate TA OTHERS -# MAGIC -- 3.3.2.3 calculate CVRM_AZ_OTHERS (TODO) -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_az_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_ta_top_corp -# MAGIC where source_name='CVRM' -# MAGIC AND CORP_COD ='A5Z' -# MAGIC ), tmp_az_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC a.corp_cod, -# MAGIC sum(a.sales_value) as sales_value , -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC where nvl(a.corp_cod,'') ='A5Z' -# MAGIC and FLAG = 'CVRM' -# MAGIC group by a.YYYYMM,a.corp_cod -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'CVRM_AZ_OTHERS' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC a.corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC -- 25年没有TA大数,此类数据直接赋值0 -# MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'CVRM' as FLAG -# MAGIC from tmp_az_pack_total a -# MAGIC left join tmp_az_total b -# MAGIC on a.YYYYMM = b.yyyymm - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 5.3.2 calculate TA OTHERS -# MAGIC -- 5.3.2.4 calculate CVRM_OTHERS (TODO) -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_ta_top_corp -# MAGIC where source_name='CVRM' -# MAGIC AND rank1 = 'Total' -# MAGIC ), tmp_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC sum(a.sales_value) as sales_value, -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC where FLAG = 'CVRM' -# MAGIC group by a.YYYYMM -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'CVRM_OTHERS' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC 'CV_OTHERS' as corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC -- 25年没有TA大数,此类数据直接赋值0 -# MAGIC 0, --case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC 0, --case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC -------------------------* hard_code * ------------------------- -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'CVRM' as FLAG -# MAGIC from tmp_pack_total a -# MAGIC left join tmp_total b -# MAGIC on a.YYYYMM = b.yyyymm - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 5.3.3 calculate OTHERS -# MAGIC -- 5.3.3.1 calculate OTHERS_AZ_TA -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_az_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_top_corp -# MAGIC where corp_desc = '阿斯利康' -# MAGIC ), tmp_az_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC a.corp_cod, -# MAGIC sum(a.sales_value) as sales_value , -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC where nvl(a.corp_cod,'') ='A5Z' -# MAGIC group by a.YYYYMM,a.corp_cod -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'OTHERS_AZ_TA' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC a.corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'TA_AZ' as FLAG -# MAGIC from tmp_az_pack_total a -# MAGIC left join tmp_az_total b -# MAGIC on a.YYYYMM = b.yyyymm -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_sales -# MAGIC -- 5.3.3 calculate OTHERS -# MAGIC -- 5.3.3.2 calculate OTHERS_TA -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_total as ( -# MAGIC select -# MAGIC yyyymm, -# MAGIC sales_amount, -# MAGIC sales_amount_ly -# MAGIC from dws.dws_zk_retail_top_corp -# MAGIC where rank1 = 'Total' -# MAGIC ), tmp_pack_total as ( -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC sum(a.sales_value) as sales_value, -# MAGIC sum(a.sales_value_ly) as sales_value_ly -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final a -# MAGIC group by a.YYYYMM -# MAGIC ) -# MAGIC -# MAGIC insert into table tmp.tmp_retail_dm_zk_retail_sales_final -# MAGIC -# MAGIC select -# MAGIC a.YYYYMM, -# MAGIC 'OTHERS_TA' as iqvia_pack_code, -# MAGIC 'ROC' as AUDIT_COD, -# MAGIC 'ROC' as province_city, -# MAGIC 'OTHERS_TA' as corp_cod, -# MAGIC 0 as sales_unit, -# MAGIC 0 as sales_unit_ly, -# MAGIC case when b.sales_amount is not null then b.sales_amount - a.sales_value else 0 end as sales_value, -# MAGIC case when b.sales_amount_ly is not null then b.sales_amount_ly - a.sales_value_ly else 0 end as sales_value_ly, -# MAGIC 0 as counting_unit, -# MAGIC 0 as counting_unit_ly, -# MAGIC 'Retail(Quarterly)' as DATA_SOURCE, -# MAGIC null as source, -# MAGIC 0 as pack_flag, -# MAGIC 0 as brand_flag, -# MAGIC 'OTHERS_TA' as FLAG -# MAGIC from tmp_pack_total a -# MAGIC left join tmp_total b -# MAGIC on a.YYYYMM = b.yyyymm - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 3.3 映射到DM最终表 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.4 write into final table: dm.dm_zk_retail_sales -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_sales -# MAGIC -# MAGIC select -# MAGIC yyyymm, -# MAGIC iqvia_pack_code, -# MAGIC AUDIT_COD, -# MAGIC province_city, -# MAGIC corp_cod, -# MAGIC sales_unit, -# MAGIC sales_unit_ly, -# MAGIC sales_value, -# MAGIC sales_value_ly, -# MAGIC counting_unit, -# MAGIC counting_unit_ly, -# MAGIC DATA_SOURCE, -# MAGIC source, -# MAGIC pack_flag, -# MAGIC brand_flag, -# MAGIC FLAG, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from tmp.tmp_retail_dm_zk_retail_sales_final - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 3.4 补充新增的OTHERS数据到配置表中 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-3: map to dm.dm_zk_retail_sales -# MAGIC -- 3.5 将倒减的OTHERS数据补充到配置表中 -# MAGIC -- pack_flag :0-倒减的others 1-不拆的 2-拆的 -# MAGIC -- brand_flag :0-倒减的others 1-买了这个品牌 2-没买这个品牌 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_pack_property -# MAGIC ( -# MAGIC iqvia_lineno, -# MAGIC iqvia_pack_code, -# MAGIC PROD_COD, -# MAGIC iqvia_notes, -# MAGIC new_pack_flag, -# MAGIC is_exists_chpa, -# MAGIC product_id, -# MAGIC prescription_nature, -# MAGIC medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC common_name, -# MAGIC dosage_form, -# MAGIC user_type, -# MAGIC category_name, -# MAGIC product_name, -# MAGIC brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC counting_unit_a, -# MAGIC dosage_unit_a, -# MAGIC unit_a, -# MAGIC app1_cod, -# MAGIC app1_des, -# MAGIC app1_des_c, -# MAGIC app2_cod, -# MAGIC app2_des, -# MAGIC app2_des_c, -# MAGIC app3_cod, -# MAGIC app3_des, -# MAGIC app3_des_c, -# MAGIC atc1_cod, -# MAGIC atc1_des, -# MAGIC atc1_des_c, -# MAGIC atc2_cod, -# MAGIC atc2_des, -# MAGIC atc2_des_c, -# MAGIC atc3_cod, -# MAGIC atc3_des, -# MAGIC atc3_des_c, -# MAGIC atc4_cod, -# MAGIC atc4_des, -# MAGIC atc4_des_c, -# MAGIC bio_desc, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC edl_desc, -# MAGIC eth_otc_desc, -# MAGIC gene_orig_desc, -# MAGIC gqce_desc, -# MAGIC manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC mnfl_cod, -# MAGIC mnfl_des, -# MAGIC nrdl_desc, -# MAGIC pack_des, -# MAGIC stgh_des, -# MAGIC pack_lch, -# MAGIC paed_desc, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC tcm_desc, -# MAGIC vbp_desc, -# MAGIC unit, -# MAGIC counting_unit, -# MAGIC dosage_unit, -# MAGIC NRDL_ENTRY_DATE, -# MAGIC market, -# MAGIC bu, -# MAGIC extend_market_ratio, -# MAGIC is_az, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC select -# MAGIC iqvia_lineno, -# MAGIC iqvia_pack_code, -# MAGIC PROD_COD, -# MAGIC iqvia_notes, -# MAGIC new_pack_flag, -# MAGIC is_exists_chpa, -# MAGIC product_id, -# MAGIC prescription_nature, -# MAGIC medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC common_name, -# MAGIC dosage_form, -# MAGIC user_type, -# MAGIC category_name, -# MAGIC product_name, -# MAGIC brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC counting_unit_a, -# MAGIC dosage_unit_a, -# MAGIC unit_a, -# MAGIC app1_cod, -# MAGIC app1_des, -# MAGIC app1_des_c, -# MAGIC app2_cod, -# MAGIC app2_des, -# MAGIC app2_des_c, -# MAGIC app3_cod, -# MAGIC app3_des, -# MAGIC app3_des_c, -# MAGIC atc1_cod, -# MAGIC atc1_des, -# MAGIC atc1_des_c, -# MAGIC atc2_cod, -# MAGIC atc2_des, -# MAGIC atc2_des_c, -# MAGIC atc3_cod, -# MAGIC atc3_des, -# MAGIC atc3_des_c, -# MAGIC atc4_cod, -# MAGIC atc4_des, -# MAGIC atc4_des_c, -# MAGIC bio_desc, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC edl_desc, -# MAGIC eth_otc_desc, -# MAGIC gene_orig_desc, -# MAGIC gqce_desc, -# MAGIC manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC mnfl_cod, -# MAGIC mnfl_des, -# MAGIC nrdl_desc, -# MAGIC pack_des, -# MAGIC stgh_des, -# MAGIC pack_lch, -# MAGIC paed_desc, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC tcm_desc, -# MAGIC vbp_desc, -# MAGIC unit, -# MAGIC counting_unit, -# MAGIC dosage_unit, -# MAGIC NRDL_ENTRY_DATE, -# MAGIC market, -# MAGIC bu, -# MAGIC extend_market_ratio, -# MAGIC is_az, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from tmp.tmp_zk_retail_pack_property -# MAGIC union all -# MAGIC ------事实表中倒减出来的pack 需要补充到配置表中 -# MAGIC select -# MAGIC '' iqvia_lineno -# MAGIC ,iqvia_pack_code -# MAGIC ,'' prod_cod -# MAGIC ,'' iqvia_notes -# MAGIC ,'' new_pack_flag -# MAGIC ,'' Is_exists_chpa -# MAGIC ,iqvia_pack_code product_id -# MAGIC ,'' prescription_nature -# MAGIC ,'' medicine_type -# MAGIC ,'' zk_medicine_tier1 -# MAGIC ,'' zk_medicine_tier2 -# MAGIC ,'' zk_medicine_tier3 -# MAGIC ,'' zk_medicine_tier4 -# MAGIC ,'' common_name -# MAGIC ,'' dosage_form -# MAGIC ,'' user_type -# MAGIC ,'' category_name -# MAGIC ,'' product_name -# MAGIC ,'' brand_name -# MAGIC ,'' zk_manu_des -# MAGIC ,'' zk_corp_des -# MAGIC ,'' zk_pack_des -# MAGIC ,'' counting_unit_a -# MAGIC ,'' dosage_unit_a -# MAGIC ,'' unit_a -# MAGIC ,'' app1_cod -# MAGIC ,'' app1_des -# MAGIC ,'' app1_des_c -# MAGIC ,'' app2_cod -# MAGIC ,'' app2_des -# MAGIC ,'' app2_des_c -# MAGIC ,'' app3_cod -# MAGIC ,'' app3_des -# MAGIC ,'' app3_des_c -# MAGIC ,'' atc1_cod -# MAGIC ,'' atc1_des -# MAGIC ,'' atc1_des_c -# MAGIC ,'' atc2_cod -# MAGIC ,'' atc2_des -# MAGIC ,'' atc2_des_c -# MAGIC ,'' atc3_cod -# MAGIC -# MAGIC ,'' atc3_des -# MAGIC ,'' atc3_des_c -# MAGIC ,'' atc4_cod -# MAGIC ,'' atc4_des -# MAGIC ,'' atc4_des_c -# MAGIC ,'' bio_desc -# MAGIC ,'' cmps_cod -# MAGIC ,'' cmps_des -# MAGIC ,'' cmps_des_c -# MAGIC ,corp_cod corp_cod -# MAGIC ,'' corp_des -# MAGIC ,'' corp_des_c -# MAGIC ,'' edl_desc -# MAGIC ,'' eth_otc_desc -# MAGIC ,'' gene_orig_desc -# MAGIC ,'' gqce_desc -# MAGIC ,'' manu_cod -# MAGIC ,'' manu_des -# MAGIC ,'' manu_des_c -# MAGIC ,'' mnfl_cod -# MAGIC ,'' mnfl_des -# MAGIC ,'' nrdl_desc -# MAGIC ,'' pack_des -# MAGIC ,'' stgh_des -# MAGIC ,'' pack_lch -# MAGIC ,'' paed_desc -# MAGIC ,'Others' prod_des -# MAGIC ,'Others' prod_des_c -# MAGIC ,'' tcm_desc -# MAGIC ,'' vbp_desc -# MAGIC ,'' unit -# MAGIC ,'' counting_unit -# MAGIC ,'' dosage_unit -# MAGIC ,'' NRDL_ENTRY_DATE -# MAGIC ,'Non AZ Retail Related Market' market -# MAGIC ,'' bu -# MAGIC ,1 extend_market_ratio -# MAGIC ,CASE WHEN iqvia_pack_code LIKE '%AZ%' THEN 'Y' ELSE 'N' END is_az -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from ( -# MAGIC select distinct iqvia_pack_code,corp_cod -# MAGIC from DM.dm_zk_retail_sales -# MAGIC where iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_zk_retail_pack_property) -# MAGIC ) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-4: map to dm.dm_zk_retail_pack_property - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 4.1 对公司归属从新划分 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property -# MAGIC -- 4.1 对公司归属从新划分 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_dm_zk_retail_pack_property -# MAGIC ( -# MAGIC iqvia_lineno, -# MAGIC iqvia_pack_code, -# MAGIC PROD_COD, -# MAGIC iqvia_notes, -# MAGIC new_pack_flag, -# MAGIC is_exists_chpa, -# MAGIC product_id, -# MAGIC prescription_nature, -# MAGIC medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC common_name, -# MAGIC dosage_form, -# MAGIC user_type, -# MAGIC category_name, -# MAGIC product_name, -# MAGIC brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC counting_unit_a, -# MAGIC dosage_unit_a, -# MAGIC unit_a, -# MAGIC app1_cod, -# MAGIC app1_des, -# MAGIC app1_des_c, -# MAGIC app2_cod, -# MAGIC app2_des, -# MAGIC app2_des_c, -# MAGIC app3_cod, -# MAGIC app3_des, -# MAGIC app3_des_c, -# MAGIC atc1_cod, -# MAGIC atc1_des, -# MAGIC atc1_des_c, -# MAGIC atc2_cod, -# MAGIC atc2_des, -# MAGIC atc2_des_c, -# MAGIC atc3_cod, -# MAGIC atc3_des, -# MAGIC atc3_des_c, -# MAGIC atc4_cod, -# MAGIC atc4_des, -# MAGIC atc4_des_c, -# MAGIC bio_desc, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC edl_desc, -# MAGIC eth_otc_desc, -# MAGIC gene_orig_desc, -# MAGIC gqce_desc, -# MAGIC manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC mnfl_cod, -# MAGIC mnfl_des, -# MAGIC nrdl_desc, -# MAGIC pack_des, -# MAGIC stgh_des, -# MAGIC pack_lch, -# MAGIC paed_desc, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC tcm_desc, -# MAGIC vbp_desc, -# MAGIC unit, -# MAGIC counting_unit, -# MAGIC dosage_unit, -# MAGIC NRDL_ENTRY_DATE, -# MAGIC MARKET, -# MAGIC bu, -# MAGIC extend_market_ratio, -# MAGIC is_az -# MAGIC ) -# MAGIC select distinct -# MAGIC a.iqvia_lineno -# MAGIC ,a.iqvia_pack_code -# MAGIC ,a.PROD_COD -# MAGIC ,a.iqvia_notes -# MAGIC ,a.new_pack_flag -# MAGIC ,a.is_exists_chpa -# MAGIC ,a.product_id -# MAGIC ,a.prescription_nature -# MAGIC ,a.medicine_type -# MAGIC ,a.zk_medicine_tier1 -# MAGIC ,a.zk_medicine_tier2 -# MAGIC ,a.zk_medicine_tier3 -# MAGIC ,a.zk_medicine_tier4 -# MAGIC ,a.common_name -# MAGIC ,a.dosage_form -# MAGIC ,a.user_type -# MAGIC ,a.category_name -# MAGIC ,a.product_name -# MAGIC ,a.brand_name -# MAGIC ,a.zk_manu_des -# MAGIC ,a.zk_corp_des -# MAGIC ,a.zk_pack_des -# MAGIC ,a.counting_unit_a -# MAGIC ,a.dosage_unit_a -# MAGIC ,a.unit_a -# MAGIC ,a.app1_cod -# MAGIC ,a.app1_des -# MAGIC ,a.app1_des_c -# MAGIC ,a.app2_cod -# MAGIC ,a.app2_des -# MAGIC ,a.app2_des_c -# MAGIC ,a.app3_cod -# MAGIC ,a.app3_des -# MAGIC ,a.app3_des_c -# MAGIC ,a.atc1_cod -# MAGIC ,a.atc1_des -# MAGIC ,a.atc1_des_c -# MAGIC ,a.atc2_cod -# MAGIC ,a.atc2_des -# MAGIC ,a.atc2_des_c -# MAGIC ,a.atc3_cod -# MAGIC ,a.atc3_des -# MAGIC ,a.atc3_des_c -# MAGIC ,a.atc4_cod -# MAGIC ,a.atc4_des -# MAGIC ,a.atc4_des_c -# MAGIC ,a.bio_desc -# MAGIC ,a.cmps_cod -# MAGIC ,a.cmps_des -# MAGIC ,a.cmps_des_c -# MAGIC ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod -# MAGIC ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des -# MAGIC ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c -# MAGIC ,a.edl_desc -# MAGIC ,a.eth_otc_desc -# MAGIC ,a.gene_orig_desc -# MAGIC ,a.gqce_desc -# MAGIC ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod -# MAGIC ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des -# MAGIC ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -# MAGIC ,a.mnfl_cod -# MAGIC ,a.mnfl_des -# MAGIC ,a.nrdl_desc -# MAGIC ,a.pack_des -# MAGIC ,a.stgh_des -# MAGIC ,a.pack_lch -# MAGIC ,a.paed_desc -# MAGIC ,a.prod_des -# MAGIC ,a.prod_des_c -# MAGIC ,a.tcm_desc -# MAGIC ,a.vbp_desc -# MAGIC ,a.unit -# MAGIC ,a.counting_unit -# MAGIC ,a.dosage_unit -# MAGIC ,a.NRDL_ENTRY_DATE -# MAGIC ,A.MARKET -# MAGIC ,a.bu -# MAGIC ,a.extend_market_ratio -# MAGIC ,a.is_az -# MAGIC from dws.dws_zk_retail_pack_property a -# MAGIC left join ( -# MAGIC select -# MAGIC ---------------------------------------------- -# MAGIC -- format prod_cod -# MAGIC case when length(prod_cod) < 9 then right(concat('000000000',prod_cod),9) else prod_cod end as prod_cod, -# MAGIC ---------------------------------------------- -# MAGIC corp_cod,corp_des, -# MAGIC right(concat('000000',manu_cod ),6) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change -# MAGIC where pack_cod is null -# MAGIC ) b on a.prod_cod = b.prod_cod -# MAGIC left join ( -# MAGIC select -# MAGIC ---------------------------------------------- -# MAGIC -- format pack_cod -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' then right(concat('000000000000',trim(pack_cod)),12) else trim(pack_cod) end as pack_cod, -# MAGIC ---------------------------------------------- -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC right(concat('000000',manu_cod ),6) manu_cod, -# MAGIC manu_des -# MAGIC from dwd.dwd_gnd_tbl_corp_change -# MAGIC where pack_cod is not null -# MAGIC ) c on a.iqvia_pack_code = c.pack_cod -# MAGIC left join ( -# MAGIC select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -# MAGIC Left join ( -# MAGIC select -# MAGIC distinct -# MAGIC right(concat('000000',manu_cod ),6) manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 4.2 获取pack market的对应关系 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property -# MAGIC -- 4.2 获取pack market的对应关系 -# MAGIC -- 4.2.1 从底表获取market 与ta 对应关系 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dws.dws_ext_retail_td_ta -# MAGIC select -# MAGIC market, -# MAGIC ta, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dwd.dwd_gnd_ext_retail_dim_ta; - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-4: map to dm.dm_zk_retail_pack_property -# MAGIC -- 4.2 获取pack market的对应关系 -# MAGIC -- 4.2.2 获取pack market的对应关系, 映射到dm -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC INSERT OVERWRITE table dm.dm_zk_retail_pack_property -# MAGIC SELECT -# MAGIC MARKET_PACK_KEY -# MAGIC ,iqvia_pack_code iqvia_pack_code -# MAGIC ,MAX(pack_des) pack_des -# MAGIC ,MAX(stgh_des) stgh_des -# MAGIC ,MAX(pack_lch) pack_lch -# MAGIC ,MAX(Family_Code) Family_Code -# MAGIC ,MAX(Family_Name) Family_Name -# MAGIC ,MAX(iqvia_prod_code) iqvia_prod_code -# MAGIC ,MAX(prod_des) prod_des -# MAGIC ,MAX(prod_des_c) prod_des_c -# MAGIC ,MAX(cmps_cod) cmps_cod -# MAGIC ,MAX(CMPS_DES) CMPS_DES -# MAGIC ,MAX(cmps_des_c) cmps_des_c -# MAGIC ,MAX(atc1_cod) atc1_cod -# MAGIC ,MAX(atc2_cod) atc2_cod -# MAGIC ,MAX(atc3_cod) atc3_cod -# MAGIC ,MAX(atc4_cod) atc4_cod -# MAGIC ,MAX(APP1_COD) APP1_COD -# MAGIC ,MAX(APP2_COD) APP2_COD -# MAGIC ,MAX(APP3_COD) APP3_COD -# MAGIC ,MAX(BIO_DESC) BIO_DESC -# MAGIC ,MAX(gene_orig_desc) gene_orig_desc -# MAGIC ,MAX(ETH_OTC_DESC) ETH_OTC_DESC -# MAGIC ,MAX(nrdl_desc) nrdl_desc -# MAGIC ,MAX(NRDL_ENTRY_DATE) NRDL_ENTRY_DATE -# MAGIC ,MAX(edl_desc) edl_desc -# MAGIC ,MAX(TCM_DESC) TCM_DESC -# MAGIC ,MAX(PAED_DESC) PAED_DESC -# MAGIC ,MAX(GQCE_DESC) GQCE_DESC -# MAGIC ,MAX(VBP_DESC) VBP_DESC -# MAGIC ,MAX(MANU_COD) MANU_COD -# MAGIC ,MAX(MANU_DES) MANU_DES -# MAGIC ,MAX(MANU_DES_C) MANU_DES_C -# MAGIC ,MAX(MNFL_COD) MNFL_COD -# MAGIC ,MAX(MNFL_DES) MNFL_DES -# MAGIC ,MAX(corp_cod) corp_cod -# MAGIC ,MAX(corp_des) corp_des -# MAGIC ,MAX(CORP_DES_C) CORP_DES_C -# MAGIC ,MAX(BrandType) BrandType -# MAGIC ,MAX(market) market -# MAGIC ,MAX(KEY_COMPETITOR) KEY_COMPETITOR -# MAGIC ,MAX(is_az) is_az -# MAGIC ,MAX(AZ_MAIN) AZ_MAIN -# MAGIC ,MAX(AZ_Related) AZ_Related -# MAGIC ,MAX(atc1_des) atc1_des -# MAGIC ,MAX(atc1_des_c) atc1_des_c -# MAGIC ,MAX(atc2_des) atc2_des -# MAGIC ,MAX(atc2_des_c) atc2_des_c -# MAGIC ,MAX(atc3_des) atc3_des -# MAGIC ,MAX(atc3_des_c) atc3_des_c -# MAGIC ,MAX(atc4_des) atc4_des -# MAGIC ,MAX(atc4_des_c) atc4_des_c -# MAGIC ,MAX(app1_des) app1_des -# MAGIC ,MAX(app1_des_c) app1_des_c -# MAGIC ,MAX(app2_des) app2_des -# MAGIC ,MAX(app2_des_c) app2_des_c -# MAGIC ,MAX(app3_des) app3_des -# MAGIC ,MAX(app3_des_c) app3_des_c -# MAGIC ,MAX(class) class -# MAGIC ,MAX(TA) TA -# MAGIC FROM ( -# MAGIC select -# MAGIC distinct -# MAGIC CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' -# MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' -# MAGIC WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' -# MAGIC ELSE a.market -# MAGIC END ||'_'||a.iqvia_pack_code MARKET_PACK_KEY -# MAGIC ,a.iqvia_pack_code -# MAGIC ,c.pack_des -# MAGIC ,c.stgh_des -# MAGIC ,c.pack_lch -# MAGIC ,'' Family_Code -# MAGIC ,'' Family_Name -# MAGIC ,c.iqvia_prod_code -# MAGIC ,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des end prod_des -# MAGIC ,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des_c end prod_des_c -# MAGIC ,c.cmps_cod -# MAGIC ,c.CMPS_DES -# MAGIC ,c.cmps_des_c -# MAGIC ,c.atc1_cod -# MAGIC ,c.atc2_cod -# MAGIC ,c.atc3_cod -# MAGIC ,c.atc4_cod -# MAGIC ,c.APP1_COD -# MAGIC ,c.APP2_COD -# MAGIC ,c.APP3_COD -# MAGIC ,c.BIO_DESC -# MAGIC ,c.gene_orig_desc -# MAGIC ,c.ETH_OTC_DESC -# MAGIC ,c.nrdl_desc -# MAGIC ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -# MAGIC ,c.edl_desc -# MAGIC ,c.TCM_DESC -# MAGIC ,c.PAED_DESC -# MAGIC ,c.GQCE_DESC -# MAGIC ,c.VBP_DESC -# MAGIC ,a.MANU_COD -# MAGIC ,a.MANU_DES -# MAGIC ,a.MANU_DES_C -# MAGIC ,c.MNFL_COD -# MAGIC ,c.MNFL_DES -# MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' else a.CORP_COD END as corp_cod -# MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' else case when a.CORP_DES like '% GROUP%' THEN replace(a.CORP_DES ,' GROUP','' ) ELSE a.CORP_DES END END as corp_des -# MAGIC ,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' else a.CORP_DES_C END CORP_DES_C -# MAGIC ,'' BrandType -# MAGIC ,CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' -# MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' -# MAGIC WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' -# MAGIC ELSE a.market -# MAGIC END market -# MAGIC ,t5.KEY_COMPETITOR -# MAGIC ,IF(a.corp_des_c in('阿斯利康制药集团') or A.iqvia_pack_code LIKE '%AZ%' ,'Y','N') is_az -# MAGIC ,'' AZ_MAIN -# MAGIC ,'' AZ_Related -# MAGIC ,c.atc1_des -# MAGIC ,c.atc1_des_c -# MAGIC ,c.atc2_des -# MAGIC ,c.atc2_des_c -# MAGIC ,c.atc3_des -# MAGIC ,c.atc3_des_c -# MAGIC ,c.atc4_des -# MAGIC ,c.atc4_des_c -# MAGIC ,c.app1_des -# MAGIC ,c.app1_des_c -# MAGIC ,c.app2_des -# MAGIC ,c.app2_des_c -# MAGIC ,c.app3_des -# MAGIC ,c.app3_des_c -# MAGIC ,nvl(t3.class,'Others') class -# MAGIC ,case when a.market ='Antacid anti GI swelling agent+PPI Oral' then 'GI' -# MAGIC when a.MARKET ='RD Market' then 'RD' -# MAGIC ELSE -# MAGIC CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM' -# MAGIC WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV' -# MAGIC ELSE t2.ta END -# MAGIC END TA -# MAGIC from tmp.tmp_dm_zk_retail_pack_property a -# MAGIC left join dwd.dwd_gnd_ext_retail_pack_property c on a.product_id = c.product_id -# MAGIC LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE -# MAGIC -------------------------------------------------------------------- -# MAGIC -- format pack_code from dwd_ims_td_pack_additional_attribute -# MAGIC ON a.iqvia_pack_code = -# MAGIC case when length(trim(MOLE.Pack_Code)) < 12 and trim(MOLE.Pack_Code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(MOLE.Pack_Code)),12) -# MAGIC else trim(MOLE.Pack_Code) -# MAGIC end -# MAGIC -------------------------------------------------------------------- -# MAGIC left join dws.dws_ext_retail_td_ta t2 on a.market = t2.market -# MAGIC left join dwd.dwd_gnd_tblclass t3 on a.MARKET = case when t3.market is null then a.market else t3.market end -# MAGIC ----------------------------------------------------------------------------- -# MAGIC -- format pack_code from dwd_gnd_tblclass -# MAGIC and nvl(a.iqvia_pack_code,'') = -# MAGIC case when t3.pack_code is null -# MAGIC then nvl(a.iqvia_pack_code,'') -# MAGIC else -# MAGIC case when length(trim(t3.pack_code)) < 12 and trim(t3.pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(t3.pack_code)),12) -# MAGIC else trim(t3.pack_code) -# MAGIC end -# MAGIC end -# MAGIC ----------------------------------------------------------------------------- -# MAGIC -- format product_code from dwd_gnd_tblclass -# MAGIC and nvl(a.PROD_COD,'') = -# MAGIC case when t3.product_code is null -# MAGIC then nvl(a.PROD_COD,'') -# MAGIC else case when length(t3.product_code) < 9 then right(concat('000000000',t3.product_code),9) else t3.product_code end -# MAGIC end -# MAGIC ----------------------------------------------------------------------------- -# MAGIC and nvl(a.cmps_cod,'') = case when t3.molecule_code is null then nvl(a.cmps_cod ,'') else right(concat('000000', t3.molecule_code ),6 ) end -# MAGIC and nvl(a.corp_cod,'') = case when t3.Corporation_code is null then nvl(a.corp_cod ,'') else t3.Corporation_code end -# MAGIC and nvl(a.manu_cod,'')=case when t3.Manufacturer_Code is null then nvl(a.manu_cod,'') else t3.Manufacturer_Code end -# MAGIC and nvl(c.atc1_cod,'') = case when t3.ATC1_Code is null then nvl(c.atc1_cod ,'') else t3.ATC1_Code end -# MAGIC and nvl(c.ATC2_COD,'') = case when t3.ATC2_Code is null then nvl(c.ATC2_COD ,'') else t3.ATC2_Code end -# MAGIC and nvl(c.ATC3_COD,'') = case when t3.ATC3_Code is null then nvl(c.ATC3_COD ,'') else t3.ATC3_Code end -# MAGIC and nvl(c.ATC4_COD,'') = case when t3.ATC4_Code is null then nvl(c.ATC4_COD ,'') else t3.ATC4_Code end -# MAGIC and nvl(c.app1_cod,'') = case when t3.NFC1_Code is null then nvl(c.app1_cod ,'') else t3.NFC1_Code end -# MAGIC and nvl(c.APP2_COD,'') = case when t3.NFC2_Code is null then nvl(c.APP2_COD ,'') else t3.NFC2_Code end -# MAGIC and nvl(c.APP3_COD,'') = case when t3.NFC3_Code is null then nvl(c.APP3_COD ,'') else t3.NFC3_Code end -# MAGIC and nvl(c.stgh_des,'') = case when t3.Strength is null then nvl(c.stgh_des ,'') else t3.Strength end -# MAGIC left join (select distinct MARKET,PACK_CODE as pack_cod,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 -# MAGIC on a.market = t5.MARKET -# MAGIC and a.iqvia_pack_code = t5.PACK_COD -# MAGIC ) -# MAGIC group by MARKET_PACK_KEY ,iqvia_pack_code - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-5: map to dm.dm_zk_retail_market_property - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-5: map to dm.dm_zk_retail_market_property -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_market_property -# MAGIC select -# MAGIC distinct -# MAGIC iqvia_pack_code, -# MAGIC market, -# MAGIC ta -# MAGIC from dm.dm_zk_retail_pack_property - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-6: map to dm.dm_zk_retail_dtp_pack_property - -# COMMAND ---------- - -# DBTITLE 1,overwrite dws.dws_zk_retail_dtp_market -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-6: map to dm.dm_zk_retail_dtp_pack_property -# MAGIC -- 6.1 dtp 部分生成dws -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dws.dws_zk_retail_dtp_market -# MAGIC ( -# MAGIC region_type, -# MAGIC higher_level_region, -# MAGIC market, -# MAGIC iqvia_pack_code, -# MAGIC iqvia_prod_code, -# MAGIC iqvia_notes, -# MAGIC new_pack_flag, -# MAGIC is_exists_chpa, -# MAGIC prescription_nature, -# MAGIC common_name, -# MAGIC dosage_form, -# MAGIC category_name, -# MAGIC product_name, -# MAGIC brand_name, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC counting_unit_a, -# MAGIC app1_cod, -# MAGIC app1_des, -# MAGIC app1_des_c, -# MAGIC app2_cod, -# MAGIC app2_des, -# MAGIC app2_des_c, -# MAGIC app3_cod, -# MAGIC app3_des, -# MAGIC app3_des_c, -# MAGIC atc1_cod, -# MAGIC atc1_des, -# MAGIC atc1_des_c, -# MAGIC atc2_cod, -# MAGIC atc2_des, -# MAGIC atc2_des_c, -# MAGIC atc3_cod, -# MAGIC atc3_des, -# MAGIC atc3_des_c, -# MAGIC atc4_cod, -# MAGIC atc4_des, -# MAGIC atc4_des_c, -# MAGIC bio_desc, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC edl_desc, -# MAGIC eth_otc_desc, -# MAGIC gene_orig_desc, -# MAGIC gqce_desc, -# MAGIC manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC mnfl_cod, -# MAGIC mnfl_des, -# MAGIC nrdl_desc, -# MAGIC pack_des, -# MAGIC stgh_des, -# MAGIC pack_lch, -# MAGIC paed_desc, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC tcm_desc, -# MAGIC vbp_desc, -# MAGIC unit, -# MAGIC counting_unit, -# MAGIC dosage_unit, -# MAGIC NRDL_ENTRY_DATE, -# MAGIC bu, -# MAGIC Market_Ratio -# MAGIC ) -# MAGIC select -# MAGIC distinct -# MAGIC NULL AS region_type, -# MAGIC NULL AS higher_level_region, -# MAGIC market, -# MAGIC iqvia_pack_code, -# MAGIC iqvia_prod_code, -# MAGIC iqvia_notes, -# MAGIC new_pack_flag, -# MAGIC is_exists_chpa, -# MAGIC NULL AS prescription_nature, -# MAGIC NULL AS common_name, -# MAGIC NULL AS dosage_form, -# MAGIC NULL AS category_name, -# MAGIC NULL AS product_name, -# MAGIC NULL AS brand_name, -# MAGIC NULL AS zk_corp_des, -# MAGIC NULL AS zk_pack_des, -# MAGIC NULL AS counting_unit_a, -# MAGIC app1_cod, -# MAGIC app1_des, -# MAGIC app1_des_c, -# MAGIC app2_cod, -# MAGIC app2_des, -# MAGIC app2_des_c, -# MAGIC app3_cod, -# MAGIC app3_des, -# MAGIC app3_des_c, -# MAGIC atc1_cod, -# MAGIC atc1_des, -# MAGIC atc1_des_c, -# MAGIC atc2_cod, -# MAGIC atc2_des, -# MAGIC atc2_des_c, -# MAGIC atc3_cod, -# MAGIC atc3_des, -# MAGIC atc3_des_c, -# MAGIC atc4_cod, -# MAGIC atc4_des, -# MAGIC atc4_des_c, -# MAGIC bio_desc, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC cmps_des_c, -# MAGIC corp_cod, -# MAGIC corp_des, -# MAGIC corp_des_c, -# MAGIC edl_desc, -# MAGIC eth_otc_desc, -# MAGIC gene_orig_desc, -# MAGIC gqce_desc, -# MAGIC manu_cod, -# MAGIC manu_des, -# MAGIC manu_des_c, -# MAGIC mnfl_cod, -# MAGIC mnfl_des, -# MAGIC nrdl_desc, -# MAGIC pack_des, -# MAGIC stgh_des, -# MAGIC pack_lch, -# MAGIC paed_desc, -# MAGIC prod_des, -# MAGIC prod_des_c, -# MAGIC tcm_desc, -# MAGIC vbp_desc, -# MAGIC unit, -# MAGIC counting_unit, -# MAGIC dosage_unit, -# MAGIC NRDL_ENTRY_DATE, -# MAGIC bu, -# MAGIC Market_Ratio -# MAGIC from tmp.tmp_zk_retail_dtp_market_corp t1 -# MAGIC union -# MAGIC select -# MAGIC distinct -# MAGIC '' region_type -# MAGIC ,'' higher_level_region -# MAGIC ,'DTP_OTHER Market' market -# MAGIC ,iqvia_pack_code -# MAGIC ,'' iqvia_prod_code -# MAGIC ,'' iqvia_notes -# MAGIC ,'' new_pack_flag -# MAGIC ,'' is_exists_chpa -# MAGIC ,'' prescription_nature -# MAGIC ,'' common_name -# MAGIC ,'' dosage_form -# MAGIC ,'' category_name -# MAGIC ,'' product_name -# MAGIC ,'' brand_name -# MAGIC ,'' zk_corp_des -# MAGIC ,'' zk_pack_des -# MAGIC ,'' counting_unit_a -# MAGIC ,'' app1_cod -# MAGIC ,'' app1_des -# MAGIC ,'' app1_des_c -# MAGIC ,'' app2_cod -# MAGIC ,'' app2_des -# MAGIC ,'' app2_des_c -# MAGIC ,'' app3_cod -# MAGIC ,'' app3_des -# MAGIC ,'' app3_des_c -# MAGIC ,'' atc1_cod -# MAGIC ,'' atc1_des -# MAGIC ,'' atc1_des_c -# MAGIC ,'' atc2_cod -# MAGIC ,'' atc2_des -# MAGIC ,'' atc2_des_c -# MAGIC ,'' atc3_cod -# MAGIC ,'' atc3_des -# MAGIC ,'' atc3_des_c -# MAGIC ,'' atc4_cod -# MAGIC ,'' atc4_des -# MAGIC ,'' atc4_des_c -# MAGIC ,'' bio_desc -# MAGIC ,'' cmps_cod -# MAGIC ,'' cmps_des -# MAGIC ,'' cmps_des_c -# MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' ELSE '' END corp_cod -# MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' ELSE '' END corp_des -# MAGIC ,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' ELSE '' END corp_des_c -# MAGIC ,'' edl_desc -# MAGIC ,'' eth_otc_desc -# MAGIC ,'' gene_orig_desc -# MAGIC ,'' gqce_desc -# MAGIC ,'' manu_cod -# MAGIC ,'' manu_des -# MAGIC ,'' manu_des_c -# MAGIC ,'' mnfl_cod -# MAGIC ,'' mnfl_des -# MAGIC ,'' nrdl_desc -# MAGIC ,'' pack_des -# MAGIC ,'' stgh_des -# MAGIC ,'' pack_lch -# MAGIC ,'' paed_desc -# MAGIC ,'' prod_des -# MAGIC ,'' prod_des_c -# MAGIC ,'' tcm_desc -# MAGIC ,'' vbp_desc -# MAGIC ,'' unit -# MAGIC ,'' counting_unit -# MAGIC ,'' dosage_unit -# MAGIC ,null NRDL_ENTRY_DATE -# MAGIC ,null -# MAGIC ,'1' Market_Ratio -# MAGIC from tmp.tmp_retail_dtp_final_sales t1 -# MAGIC where iqvia_pack_code LIKE '%OTHERS' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-6: map to dm.dm_zk_retail_dtp_pack_property -# MAGIC -- 6.2 dtp 部分生成 dm -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_tblclass as ( -# MAGIC select -# MAGIC ------------------------------------------------------------------- -# MAGIC -- format pack_code & product_code -# MAGIC case when length(trim(pack_code)) < 12 and trim(pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_code)),12) -# MAGIC else trim(pack_code) -# MAGIC end as new_pack_code, -# MAGIC case when length(product_code) < 9 then right(concat('000000000',product_code),9) else product_code end as new_product_code, -# MAGIC ------------------------------------------------------------------- -# MAGIC * -# MAGIC from dwd.dwd_gnd_tblclass -# MAGIC ) -# MAGIC -# MAGIC ------------获取对应class 及其他维度------- -# MAGIC insert overwrite table dm.dm_zk_retail_dtp_pack_property -# MAGIC select distinct -# MAGIC A.market ||'_'|| A.iqvia_pack_code MARKET_PACK_KEY -# MAGIC ,A.iqvia_pack_code -# MAGIC ,A.pack_des -# MAGIC ,A.stgh_des -# MAGIC ,A.pack_lch -# MAGIC ,'' Family_cod -# MAGIC ,'' Family_Name -# MAGIC ,A.iqvia_prod_code PROD_COD -# MAGIC ,A.prod_des -# MAGIC ,A.prod_des_c -# MAGIC ,A.cmps_cod -# MAGIC ,A.cmps_des -# MAGIC ,A.cmps_des_c -# MAGIC ,A.atc1_cod -# MAGIC ,A.atc2_cod -# MAGIC ,A.atc3_cod -# MAGIC ,A.atc4_cod -# MAGIC ,A.app1_cod -# MAGIC ,A.app2_cod -# MAGIC ,A.app3_cod -# MAGIC ,A.BIO_DESC -# MAGIC ,A.gene_orig_desc -# MAGIC ,A.eth_otc_desc -# MAGIC ,A.nrdl_desc -# MAGIC ,A.NRDL_ENTRY_DATE -# MAGIC ,A.edl_desc -# MAGIC ,A.TCM_DESC -# MAGIC ,A.PAED_DESC -# MAGIC ,A.GQCE_DESC -# MAGIC ,A.VBP_DESC -# MAGIC ,A.MANU_COD -# MAGIC ,A.MANU_DES -# MAGIC ,A.MANU_DES_C -# MAGIC ,A.MNFL_COD -# MAGIC ,A.MNFL_DES -# MAGIC ,A.CORP_COD -# MAGIC ,CASE WHEN A.corp_des LIKE '% GROUP%' THEN replace(A.corp_des,' GROUP','' ) ELSE A.corp_des END corp_des -# MAGIC ,CORP_DES_C -# MAGIC ,'' BrandType -# MAGIC ,A.MARKET -# MAGIC ,t5.KEY_COMPETITOR -# MAGIC ,CASE WHEN CORP_COD ='A5Z' THEN 'Y' ELSE 'N' END IS_AZ -# MAGIC ,'' AZ_MAIN -# MAGIC ,case when dmt.TA is null then 'Others MKT' else 'AZ Related MKT' end as AZ_Related -# MAGIC ,atc1_des -# MAGIC ,atc1_des_c -# MAGIC ,atc2_des -# MAGIC ,atc2_des_c -# MAGIC ,atc3_des -# MAGIC ,atc3_des_c -# MAGIC ,atc4_des -# MAGIC ,atc4_des_c -# MAGIC ,app1_des -# MAGIC ,app1_des_c -# MAGIC ,app2_des -# MAGIC ,app2_des_c -# MAGIC ,app3_des -# MAGIC ,app3_des_c -# MAGIC ,ifnull(t3.class,'Others') as Class -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dws.dws_zk_retail_dtp_market A -# MAGIC left join dwd.dwd_gnd_ims_tblmarket_ta_map dmt on dmt.Market = A.Market -# MAGIC left join tmp_tblclass t3 -# MAGIC on A.market = ifnull(t3.market , A.market ) -# MAGIC -------------------------------------------------------------- -# MAGIC -- format -# MAGIC and A.iqvia_pack_code = ifnull(t3.new_pack_code, A.iqvia_pack_code) -# MAGIC and A.iqvia_prod_code = ifnull(t3.new_product_code, A.iqvia_prod_code) -# MAGIC -------------------------------------------------------------- -# MAGIC and A.cmps_cod = ifnull(right(concat('000000',t3.molecule_code ), 6) , A.cmps_cod) -# MAGIC and A.corp_cod = ifnull(t3.Corporation_code , A.corp_cod) -# MAGIC and A.manu_cod = ifnull(t3.Manufacturer_Code , A.manu_cod) -# MAGIC and A.ATC1_COD = ifnull(t3.ATC1_Code , A.ATC1_COD) -# MAGIC and A.ATC2_COD = ifnull(t3.ATC2_Code , A.ATC2_COD) -# MAGIC and A.ATC3_COD = ifnull(t3.ATC3_Code , A.ATC3_COD) -# MAGIC and A.ATC4_COD = ifnull(t3.ATC4_Code , A.ATC4_COD) -# MAGIC and A.APP1_COD = ifnull(t3.NFC1_Code , A.APP1_COD) -# MAGIC and A.APP2_COD = ifnull(t3.NFC2_Code , A.APP2_COD) -# MAGIC and A.APP3_COD = ifnull(t3.NFC3_Code , A.APP3_COD) -# MAGIC and ifnull(A.STGH_DES, '') = ifnull(t3.Strength, ifnull(A.STGH_DES, '')) -# MAGIC left join (select distinct MARKET,PACK_CODE as PACK_COD,KEY_COMPETITOR from DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING) t5 -# MAGIC on A.market = t5.MARKET -# MAGIC and A.iqvia_pack_code = t5.PACK_COD -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-7: map to dm.dm_zk_retail_dtp_sales - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-7: map to dm.dm_zk_retail_dtp_sales -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_dtp_sales -# MAGIC select -# MAGIC a.year, -# MAGIC a.yq, -# MAGIC a.yyyymm, -# MAGIC a.iqvia_pack_code, -# MAGIC nvl(b.geo_key, a.geo_key) as AUDIT_COD, -# MAGIC a.sales_value, -# MAGIC a.sales_unit, -# MAGIC a.counting_unit, -# MAGIC a.sales_value_ly, -# MAGIC a.sales_unit_ly, -# MAGIC a.counting_unit_ly, -# MAGIC ------------------------------------------------------------- -# MAGIC -- dtp相关的数据的pack_flag 除计算的OTHERS外(0),其余(1,2) 均为1 -# MAGIC case when a.pack_flag = 0 then 0 else 1 end as pack_flag, -# MAGIC ------------------------------------------------------------- -# MAGIC a.brand_flag -# MAGIC from tmp.tmp_retail_dtp_final_sales a -# MAGIC left join dm.dm_zk_retail_geo b -# MAGIC on a.geo_key = b.province_city -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-8: map to dm.dm_zk_retail_sales_kpi - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-1:品牌数据报告(13个) -# MAGIC - share -# MAGIC - key_brand_ytd -# MAGIC - key_brand_rank_ytd -# MAGIC - top_brand_ytd -# MAGIC - top_brand_ms_ytd -# MAGIC - top_brand_gr_ytd -# MAGIC - top_brand_inc_ms_ytd -# MAGIC - key_brand_qtd -# MAGIC - key_brand_rank_qtd -# MAGIC - top_brand_qtd -# MAGIC - top_brand_ms_qtd -# MAGIC - top_brand_inc_ms_qtd -# MAGIC - top_brand_gr_qtd - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.1 kpi: share -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with exploded_data as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC ifnull(common_name,'' ) as common_name, -# MAGIC level, -# MAGIC split(level_ta,',') array_ta, -# MAGIC split(level_market,',') array_market, -# MAGIC split(level_molecule,',') array_molecule, -# MAGIC split(level_brand,',') array_brand -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where level like '%MULTI_BRAND%' -# MAGIC ), tmp_config as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC common_name, -# MAGIC level, -# MAGIC array_ta[idx] as level_ta, -# MAGIC array_market[idx] as level_market, -# MAGIC array_molecule[idx] as level_molecule, -# MAGIC array_brand[idx] as level_brand -# MAGIC from exploded_data -# MAGIC lateral view posexplode(array_ta) AS idx, split_ta -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC common_name, -# MAGIC level, -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC level_molecule, -# MAGIC level_brand -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where level = 'BRAND' -# MAGIC ),max_pack_mapping as ( -# MAGIC select -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC level_molecule, -# MAGIC level_brand, -# MAGIC molecule_desc, -# MAGIC product_desc, -# MAGIC corp_cod, -# MAGIC max(pack_code) as pack_code -# MAGIC from tmp.tmp_retail_pack_mapping -# MAGIC group by level_ta,level_market,level_molecule,level_brand,molecule_desc,product_desc,corp_cod -# MAGIC ), tmp_brand_kpi as ( -# MAGIC select -# MAGIC distinct -# MAGIC c.pack_code, -# MAGIC c.corp_cod, -# MAGIC a.YYYYMM, -# MAGIC null as ytd, -# MAGIC d.geo_key, -# MAGIC a.val_share as kpi_val, -# MAGIC a.vol_share as kpi_vol, -# MAGIC a.ta, -# MAGIC a.key_brand_ytd, -# MAGIC a.key_brand_rank_ytd, -# MAGIC a.top_brand_ytd, -# MAGIC a.top_brand_ms_ytd, -# MAGIC a.top_brand_inc_ms_ytd, -# MAGIC a.top_brand_gr_ytd, -# MAGIC a.key_brand_qtd, -# MAGIC a.key_brand_rank_qtd, -# MAGIC a.top_brand_qtd, -# MAGIC a.top_brand_ms_qtd, -# MAGIC a.top_brand_inc_ms_qtd, -# MAGIC a.top_brand_gr_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC inner join tmp_config b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.zk_brand_category = b.brand -# MAGIC and a.zk_common_name = b.common_name -# MAGIC inner join max_pack_mapping c -# MAGIC on c.level_ta = b.level_ta -# MAGIC and c.level_market = b.level_market -# MAGIC and c.level_molecule = b.level_molecule -# MAGIC and c.level_brand = b.level_brand -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC ), tmp_brand_kpi_ly as ( -# MAGIC select -# MAGIC pack_code, -# MAGIC corp_cod, -# MAGIC cast(YYYYMM + 100 as int ) as YYYYMM, -# MAGIC ytd, -# MAGIC geo_key, -# MAGIC kpi_val as kpi_val_ly, -# MAGIC kpi_vol as kpi_vol_ly, -# MAGIC ta -# MAGIC from tmp_brand_kpi -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC a.pack_code, -# MAGIC a.corp_cod, -# MAGIC a.yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'share' as KPI_name, -# MAGIC a.kpi_val, -# MAGIC b.kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC a.kpi_vol, -# MAGIC b.kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_brand_kpi a -# MAGIC left join tmp_brand_kpi_ly b -# MAGIC on a.pack_code = b.pack_code -# MAGIC and a.YYYYMM = b.YYYYMM -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.2 kpi: key_brand_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_brand_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.key_brand_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_brand_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.key_brand_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_brand_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC key_brand_ytd -# MAGIC from tmp_brand_ytd_value -# MAGIC ), tmp_brand_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC key_brand_ytd -# MAGIC from tmp_brand_ytd_volume -# MAGIC ), tmp_brand_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.key_brand_ytd, -# MAGIC b.key_brand_ytd as key_brand_ytd_ly -# MAGIC from tmp_brand_ytd_value a -# MAGIC inner join tmp_brand_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_brand_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.key_brand_ytd, -# MAGIC b.key_brand_ytd as key_brand_ytd_ly -# MAGIC from tmp_brand_ytd_volume a -# MAGIC inner join tmp_brand_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'key_brand_ytd' as KPI_name, -# MAGIC null as kpi_val, -# MAGIC null as kpi_val_ly, -# MAGIC a.key_brand_ytd as str_kpi_val, -# MAGIC a.key_brand_ytd_ly as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC b.key_brand_ytd as str_kpi_vol, -# MAGIC b.key_brand_ytd_ly as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_brand_ytd_value_all a -# MAGIC inner join tmp_brand_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.3 kpi: key_brand_rank_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.key_brand_rank_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.key_brand_rank_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC key_brand_rank_ytd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC key_brand_rank_ytd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.key_brand_rank_ytd, -# MAGIC b.key_brand_rank_ytd as key_brand_rank_ytd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.key_brand_rank_ytd, -# MAGIC b.key_brand_rank_ytd as key_brand_rank_ytd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'key_brand_rank_ytd' as KPI_name, -# MAGIC a.key_brand_rank_ytd as kpi_val, -# MAGIC a.key_brand_rank_ytd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.key_brand_rank_ytd as kpi_vol, -# MAGIC b.key_brand_rank_ytd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.4 kpi: top_brand_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_ytd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_ytd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ytd, -# MAGIC b.top_brand_ytd as top_brand_ytd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ytd, -# MAGIC b.top_brand_ytd as top_brand_ytd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_ytd' as KPI_name, -# MAGIC null as kpi_val, -# MAGIC null as kpi_val_ly, -# MAGIC a.top_brand_ytd as str_kpi_val, -# MAGIC a.top_brand_ytd_ly as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC b.top_brand_ytd as str_kpi_vol, -# MAGIC b.top_brand_ytd_ly as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.5 kpi: top_brand_ms_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ms_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ms_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_ms_ytd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_ms_ytd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ms_ytd, -# MAGIC b.top_brand_ms_ytd as top_brand_ms_ytd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ms_ytd, -# MAGIC b.top_brand_ms_ytd as top_brand_ms_ytd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_ms_ytd' as KPI_name, -# MAGIC a.top_brand_ms_ytd as kpi_val, -# MAGIC a.top_brand_ms_ytd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_ms_ytd as kpi_vol, -# MAGIC b.top_brand_ms_ytd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.6 kpi: top_brand_gr_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_gr_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_gr_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_gr_ytd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_gr_ytd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_gr_ytd, -# MAGIC b.top_brand_gr_ytd as top_brand_gr_ytd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_gr_ytd, -# MAGIC b.top_brand_gr_ytd as top_brand_gr_ytd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_gr_ytd' as KPI_name, -# MAGIC a.top_brand_gr_ytd as kpi_val, -# MAGIC a.top_brand_gr_ytd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_gr_ytd as kpi_vol, -# MAGIC b.top_brand_gr_ytd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.7 kpi: top_brand_inc_ms_ytd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_inc_ms_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC d.geo_key, -# MAGIC a.top_brand_inc_ms_ytd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_inc_ms_ytd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) as ytd, -# MAGIC geo_key, -# MAGIC top_brand_inc_ms_ytd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_inc_ms_ytd, -# MAGIC b.top_brand_inc_ms_ytd as top_brand_inc_ms_ytd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC a.top_brand_inc_ms_ytd, -# MAGIC b.top_brand_inc_ms_ytd as top_brand_inc_ms_ytd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC null as yyyymm, -# MAGIC a.ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_inc_ms_ytd' as KPI_name, -# MAGIC a.top_brand_inc_ms_ytd as kpi_val, -# MAGIC a.top_brand_inc_ms_ytd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_inc_ms_ytd as kpi_vol, -# MAGIC b.top_brand_inc_ms_ytd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.ytd = b.ytd -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.8 kpi: key_brand_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.key_brand_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.key_brand_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC key_brand_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC key_brand_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.key_brand_qtd, -# MAGIC b.key_brand_qtd as key_brand_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.key_brand_qtd, -# MAGIC b.key_brand_qtd as key_brand_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'key_brand_qtd' as KPI_name, -# MAGIC null as kpi_val, -# MAGIC null as kpi_val_ly, -# MAGIC a.key_brand_qtd as str_kpi_val, -# MAGIC a.key_brand_qtd_ly as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC b.key_brand_qtd as str_kpi_vol, -# MAGIC b.key_brand_qtd_ly as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.9 kpi: key_brand_rank_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.key_brand_rank_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.key_brand_rank_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC key_brand_rank_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC key_brand_rank_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.key_brand_rank_qtd, -# MAGIC b.key_brand_rank_qtd as key_brand_rank_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.key_brand_rank_qtd, -# MAGIC b.key_brand_rank_qtd as key_brand_rank_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'key_brand_rank_qtd' as KPI_name, -# MAGIC a.key_brand_rank_qtd as kpi_val, -# MAGIC a.key_brand_rank_qtd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.key_brand_rank_qtd as kpi_vol, -# MAGIC b.key_brand_rank_qtd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.10 kpi: top_brand_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_qtd, -# MAGIC b.top_brand_qtd as top_brand_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_qtd, -# MAGIC b.top_brand_qtd as top_brand_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_qtd' as KPI_name, -# MAGIC null as kpi_val, -# MAGIC null as kpi_val_ly, -# MAGIC a.top_brand_qtd as str_kpi_val, -# MAGIC a.top_brand_qtd_ly as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC b.top_brand_qtd as str_kpi_vol, -# MAGIC b.top_brand_qtd_ly as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.11 kpi: top_brand_ms_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ms_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_ms_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_ms_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_ms_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ms_qtd, -# MAGIC b.top_brand_ms_qtd as top_brand_ms_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_ms_qtd, -# MAGIC b.top_brand_ms_qtd as top_brand_ms_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_ms_qtd' as KPI_name, -# MAGIC a.top_brand_ms_qtd as kpi_val, -# MAGIC a.top_brand_ms_qtd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_ms_qtd as kpi_vol, -# MAGIC b.top_brand_ms_qtd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.12 kpi: top_brand_inc_ms_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_inc_ms_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_inc_ms_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_inc_ms_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_inc_ms_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_inc_ms_qtd, -# MAGIC b.top_brand_inc_ms_qtd as top_brand_inc_ms_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_inc_ms_qtd, -# MAGIC b.top_brand_inc_ms_qtd as top_brand_inc_ms_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_inc_ms_qtd' as KPI_name, -# MAGIC a.top_brand_inc_ms_qtd as kpi_val, -# MAGIC a.top_brand_inc_ms_qtd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_inc_ms_qtd as kpi_vol, -# MAGIC b.top_brand_inc_ms_qtd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.13 kpi: top_brand_gr_qtd -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_kpi_ytd_value as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_gr_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'value' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_volume as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC d.geo_key, -# MAGIC a.top_brand_gr_qtd -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC where a.ranked_by = 'volume' -# MAGIC and a.ytd is not null -# MAGIC ), tmp_kpi_ytd_value_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_gr_qtd -# MAGIC from tmp_kpi_ytd_value -# MAGIC ), tmp_kpi_ytd_volume_ly as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC cast(yyyymm + 100 as int ) as yyyymm, -# MAGIC geo_key, -# MAGIC top_brand_gr_qtd -# MAGIC from tmp_kpi_ytd_volume -# MAGIC ), tmp_kpi_ytd_value_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_gr_qtd, -# MAGIC b.top_brand_gr_qtd as top_brand_gr_qtd_ly -# MAGIC from tmp_kpi_ytd_value a -# MAGIC inner join tmp_kpi_ytd_value_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ), tmp_kpi_ytd_volume_all as ( -# MAGIC select -# MAGIC a.ta, -# MAGIC a.market, -# MAGIC a.yyyymm, -# MAGIC a.geo_key, -# MAGIC a.top_brand_gr_qtd, -# MAGIC b.top_brand_gr_qtd as top_brand_gr_qtd_ly -# MAGIC from tmp_kpi_ytd_volume a -# MAGIC inner join tmp_kpi_ytd_volume_ly b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select -# MAGIC distinct -# MAGIC '' as pack_code, -# MAGIC '' as corp_cod, -# MAGIC a.yyyymm, -# MAGIC null as ytd, -# MAGIC a.geo_key, -# MAGIC 'top_brand_gr_qtd' as KPI_name, -# MAGIC a.top_brand_gr_qtd as kpi_val, -# MAGIC a.top_brand_gr_qtd_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC b.top_brand_gr_qtd as kpi_vol, -# MAGIC b.top_brand_gr_qtd_ly as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC a.ta -# MAGIC from tmp_kpi_ytd_value_all a -# MAGIC inner join tmp_kpi_ytd_volume_all b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.yyyymm = b.yyyymm -# MAGIC and a.geo_key = b.geo_key - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-2:TOP数据(8个) -# MAGIC - top1_brand_val -# MAGIC - top1_brand_gr -# MAGIC - top2_brand_val -# MAGIC - top2_brand_gr -# MAGIC - top1_incremental_brand -# MAGIC - top1_incremental_gr -# MAGIC - top2_incremental_brand -# MAGIC - top2_incremental_gr - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 将RX市场数据合并并处理数据格式获取code -# MAGIC -- -------关联 corp code -# MAGIC -- -------是否total 数据打标 -# MAGIC -- -------格式处理 -# MAGIC -- -------dm 使用 niad 数据 -# MAGIC -- -------全国数据 地理编码 为 roc -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC insert overwrite table tmp.tmp_zk_retail_rx_ta_and_top_corp -# MAGIC select -# MAGIC distinct -# MAGIC case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type -# MAGIC ,case when replace(a.rx_type,' TTL','') ='NIAD' THEN 'DM' -# MAGIC when replace(a.rx_type,' TTL','') ='GI-Rx+OTC' then 'GI' -# MAGIC ELSE replace(a.rx_type,' TTL','') END ta -# MAGIC ,nvl(b.CORP_COD ,CORP_COD) CORP_COD -# MAGIC ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG -# MAGIC ,a.quarter_flag YTD -# MAGIC ,'ROC' GEO_KEY -# MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val -# MAGIC ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr -# MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val -# MAGIC ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr -# MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand -# MAGIC ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr -# MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand -# MAGIC ,coalesce(cast(a.top2_incremental_gr as double ),0 ) top2_incremental_gr -# MAGIC from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a -# MAGIC left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b -# MAGIC on a.corporation = b.ZK_Corp_C -# MAGIC WHERE rx_type <>'DM' -# MAGIC UNION ALL -# MAGIC select -# MAGIC distinct -# MAGIC case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type -# MAGIC ,replace(a.rx_type,' TTL','') ta -# MAGIC ,nvl(b.CORP_COD ,CORP_COD) CORP_COD -# MAGIC ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG -# MAGIC ,a.quarter_flag YTD -# MAGIC ,'ROC' GEO_KEY -# MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val -# MAGIC ,coalesce(cast(a.top1_brand_gr as double ) ,0 ) top1_brand_gr -# MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val -# MAGIC ,coalesce(cast(a.top2_brand_gr as double ) ,0 ) top2_brand_gr -# MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand -# MAGIC ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr -# MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand -# MAGIC ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr -# MAGIC from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a -# MAGIC left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b -# MAGIC on a.corporation = b.ZK_Corp_C -# MAGIC WHERE rx_type ='NIAD' -# MAGIC union all -# MAGIC select distinct -# MAGIC 'top_corp' data_type -# MAGIC ,NULL ta -# MAGIC ,nvl(b.CORP_COD,a.corporation) CORP_COD -# MAGIC ,'Y' TOTAL_FLAG -# MAGIC ,a.quarter_flag -# MAGIC ,'ROC' GEO_KEY -# MAGIC ,replace(a.top1_brand_val,'-','') top1_brand_val -# MAGIC ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr -# MAGIC ,replace(a.top2_brand_val,'-','') top2_brand_val -# MAGIC ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr -# MAGIC ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand -# MAGIC ,coalesce(cast(a.top1_incremental_gr as double ) ,0 ) top1_incremental_gr -# MAGIC ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand -# MAGIC ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr -# MAGIC from dwd.dwd_gnd_ext_retail_rx_top_corp a -# MAGIC left join (select ZK_Corp,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp ) b -# MAGIC on a.corporation = b.ZK_Corp -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.14 top1_brand_val -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top1_brand_val' kpi_name -# MAGIC ,null kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,top1_brand_val str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp -# MAGIC -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.15 top1_brand_gr -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top1_brand_gr' kpi_name -# MAGIC ,top1_brand_gr kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.16 top2_brand_val -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top2_brand_val' kpi_name -# MAGIC ,null kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,top2_brand_val str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.17 top2_brand_gr -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top2_brand_gr' kpi_name -# MAGIC ,top2_brand_gr kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp -# MAGIC - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.18 top1_incremental_brand -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top1_incremental_brand' kpi_name -# MAGIC ,null kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,top1_incremental_brand str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.19 top1_incremental_gr -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top1_incremental_gr' kpi_name -# MAGIC ,top1_incremental_gr kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.20 top2_incremental_brand -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top2_incremental_brand' kpi_name -# MAGIC ,null kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,top2_incremental_brand str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.21 top2_incremental_gr -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC SELECT distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,NULL YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,'top2_incremental_gr' kpi_name -# MAGIC ,top2_incremental_gr kpi_val -# MAGIC ,NULL kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from tmp.tmp_zk_retail_rx_ta_and_top_corp - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-3:增量数据(1个) -# MAGIC - corp_type_sales_amount - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.22 处理增量数据 corp_type_sales_amount -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select distinct -# MAGIC '' pack_code -# MAGIC ,bq.type_name corp_cod -# MAGIC ,cast(bq.sales_quarter as int) yyyymm -# MAGIC ,null ytd -# MAGIC ,'ROC' geo_key -# MAGIC ,'corp_type_sales_amount' kpi_name -# MAGIC ,bq.sales_amount * 1000000 kpi_val -# MAGIC ,tq.sales_amount * 1000000 kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null tr_kpi_vol_ly -# MAGIC ,'Y' TOTAL_FLAG -# MAGIC ,null ta -# MAGIC from dwd.dwd_gnd_ext_retail_rx_market bq -# MAGIC left join dwd.dwd_gnd_ext_retail_rx_market tq -# MAGIC on bq.type_name=tq.type_name -# MAGIC and cast(bq.sales_quarter as int) = cast(tq.sales_quarter + 100 as int) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-4:top corp及rank(2个) -# MAGIC - top_corp_sales_amount -# MAGIC - top_corp_rank - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.23&24 top_corp_sales_amount & top_corp_rank -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with top_corp_total as ( -# MAGIC ----------------------处理top_corp 大数-------------------- -# MAGIC ---------关联 corp code 特殊:dwd_inc_gnd_retail_b2c_label_total 这个表 az 公司有两个code ,需要取A5Z 那个 -# MAGIC ---------是否total 数据打标 -# MAGIC ---------格式处理 -# MAGIC ---------dm 使用 niad 数据 -# MAGIC ---------全国数据 地理编码 为 roc -# MAGIC select -# MAGIC a.corp_desc, -# MAGIC 'top_corp' data_type -# MAGIC ,b.CORP_COD -# MAGIC ,'Y' TOTAL_FLAG -# MAGIC ,a.sales_quarter -# MAGIC ,cast(a.sales_quarter as int) yyyymm -# MAGIC ,'ROC' geo_key -# MAGIC ,a.sales_amount*1000000 sales_amount -# MAGIC ,c.sales_amount*1000000 sales_amount_ly -# MAGIC ,a.rank1 -# MAGIC ,null ta -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_top_corp a -# MAGIC left join ( -# MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C -# MAGIC ) b on a.corp_desc= b.ZK_Corp_C -# MAGIC left join dwd.dwd_gnd_ext_retail_nataional_top_corp c -# MAGIC on a.corp_desc= c.corp_desc -# MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) -# MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 -# MAGIC where a.rank1 is not null -# MAGIC -# MAGIC unioN all -# MAGIC -# MAGIC select -# MAGIC a.corp_desc, -# MAGIC 'top_ta_corp' data_type -# MAGIC ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code -# MAGIC ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG -# MAGIC ,a.sales_quarter -# MAGIC ,cast(a.sales_quarter as int) yyyymm -# MAGIC ,'ROC' geo_key -# MAGIC ,a.sales_amount*1000000 sales_amount -# MAGIC ,c.sales_amount*1000000 sales_amount_ly -# MAGIC ,a.rank1 -# MAGIC ,CASE WHEN trim(a.source_name) ='GI-Rx+OTC' THEN 'GI' ELSE trim(a.source_name) END ta -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a -# MAGIC left join ( -# MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C -# MAGIC ) b on a.corp_desc= b.ZK_Corp_C -# MAGIC left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c -# MAGIC on a.corp_desc= c.corp_desc -# MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) -# MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 -# MAGIC and a.source_name =c.source_name -# MAGIC WHERE trim(a.source_name) <>'DM' -# MAGIC -# MAGIC UNION ALL -# MAGIC -# MAGIC select -# MAGIC CASE WHEN a.corp_desc='NIAD' THEN 'DM' ELSE a.corp_desc END corp_desc, -# MAGIC 'top_ta_corp' data_type -# MAGIC ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code -# MAGIC ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG -# MAGIC ,a.sales_quarter -# MAGIC ,cast(a.sales_quarter as int) yyyymm -# MAGIC ,'ROC' geo_key -# MAGIC ,a.sales_amount*1000000 sales_amount -# MAGIC ,c.sales_amount*1000000 sales_amount_ly -# MAGIC ,a.rank1 -# MAGIC ,'DM' ta -# MAGIC FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a -# MAGIC left join ( -# MAGIC select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C -# MAGIC ) b on a.corp_desc= b.ZK_Corp_C -# MAGIC left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c -# MAGIC on a.corp_desc= c.corp_desc -# MAGIC and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) -# MAGIC and cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 -# MAGIC and a.source_name =c.source_name -# MAGIC WHERE trim(a.source_name) ='NIAD' -# MAGIC ) -# MAGIC -# MAGIC -- 处理top corp 及 rank 数据 -# MAGIC insert into table dws.dws_zk_retail_sales_kpi -# MAGIC -# MAGIC select DISTINCT -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,yyyymm -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'top_corp_sales_amount' kpi_name -# MAGIC ,sales_amount kpi_val -# MAGIC ,sales_amount_ly kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from top_corp_total -# MAGIC union all -# MAGIC select distinct -# MAGIC '' pack_code -# MAGIC ,corp_cod -# MAGIC ,yyyymm -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'top_corp_rank' kpi_name -# MAGIC ,rank1 kpi_val -# MAGIC ,null kpi_val_ly -# MAGIC ,NULL str_kpi_val -# MAGIC ,NULL str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,ta -# MAGIC from top_corp_total -# MAGIC where lower(rank1) <> 'Total' -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-5:DTP指标(2个) -# MAGIC - top_corp_rank -# MAGIC - top_corp_sales_amount - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.25&26 top_corp_rank & top_corp_sales_amount -# MAGIC -- 将dtp 数据转换成 kpi 格式--- -# MAGIC -- 品牌数据 初始 -# MAGIC -- 关联公司code -# MAGIC -- 处理pack code -# MAGIC -- 处理格式 -# MAGIC -- total flag 打标 -# MAGIC -- dtp 所有数据的ta 均为 ONCO -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with tmp as ( -# MAGIC -------------获取dtp top brand的本同期数据-------------------------- -# MAGIC select -# MAGIC cast(top_corp.sales_quarter as int ) yyyymm -# MAGIC ,top_corp.sales_quarter -# MAGIC ,replace(top_corp.rank1,'-','') rank1 -# MAGIC ,replace(top_corp.corp_name,'-','') crp_name -# MAGIC ,top_corp.brand_name -# MAGIC ,case when top_corp.brand_name ='Others' then 'Others' else zk.IQVIA_PROD_CODE end iqvia_prod_code -# MAGIC ,case when top_corp.brand_name ='Others' then 'Others' else brand.iqvia_pack_code end iqvia_pack_code -# MAGIC ,zk.CORP_COD -# MAGIC -- ,top_corp.source_name -# MAGIC ,top_corp.sales_amount*1000000 sales_amount -# MAGIC ,tq.sales_amount*1000000 sales_amount_ly -# MAGIC ,'Y' TOTAL_FLAG -# MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_brand top_corp -# MAGIC left join dwd.dwd_gnd_ext_retail_dtp_top_brand tq -# MAGIC on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) -# MAGIC and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) -# MAGIC and tq.rank1 =top_corp.rank1 and nvl(top_corp.brand_name,'' ) =nvl(tq.brand_name,'' ) -# MAGIC left join ( -# MAGIC select -# MAGIC distinct -# MAGIC ZK_Prod_C, -# MAGIC ----------------------------------------------------- -# MAGIC -- format IQVIA_PROD_CODE -# MAGIC case when length(IQVIA_PROD_CODE) < 9 then right(concat('000000000',IQVIA_PROD_CODE),9) else IQVIA_PROD_CODE end as IQVIA_PROD_CODE, -# MAGIC ----------------------------------------------------- -# MAGIC ZK_Corp_C, -# MAGIC CORP_COD -# MAGIC from dwd.dwd_inc_gnd_retail_b2c_label_total -# MAGIC )zk on top_corp.brand_name = zk.ZK_Prod_C AND replace(top_corp.corp_name,'-','')=zk.ZK_Corp_C -# MAGIC left join ( -# MAGIC select PROD_COD IQVIA_PROD_CODE,max(PACK_COD) iqvia_pack_code,CORP_COD -# MAGIC from dm.dm_ims_td_pack_property group by PROD_COD,CORP_COD -# MAGIC ) brand on zk.IQVIA_PROD_CODE = brand.iqvia_prod_code AND replace(zk.CORP_COD,'-','')=brand.corp_cod -# MAGIC -# MAGIC UNION all -# MAGIC -# MAGIC -------获取 dtp top corp的本同期数据------------ -# MAGIC select -# MAGIC cast(top_corp.sales_quarter as int ) yyyymm -# MAGIC ,top_corp.sales_quarter -# MAGIC ,replace(top_corp.rank1,'-','') rank1 -# MAGIC ,replace(top_corp.corp_name,'-','') corp_name -# MAGIC ,'' brand_name -# MAGIC ,''iqvia_prod_code -# MAGIC ,'' iqvia_pack_code -# MAGIC ,case when replace(top_corp.corp_name,'-','') ='Others' then '' else pack.corp_cod end corp_cod -# MAGIC -- ,top_corp.source_name -# MAGIC ,top_corp.sales_amount*1000000 sales_amount -# MAGIC ,tq.sales_amount*1000000 sales_amount_ly -# MAGIC --,case when replace(top_corp.rank1,'-','') ='' then 'Y' ELSE 'N' END TOTAL_FLAG -# MAGIC ,'Y' TOTAL_FLAG -# MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_copd top_corp -# MAGIC left join dwd.dwd_gnd_ext_retail_dtp_top_copd tq -# MAGIC on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) -# MAGIC and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) -# MAGIC and tq.rank1 =top_corp.rank1 -# MAGIC -- left join (select zk_corp_des,max(corp_cod) corp_cod from dwd.dwd_inc_gnd_retail_b2c_label_total group by zk_corp_des) pack -# MAGIC left join ( -# MAGIC select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total -# MAGIC ) pack on replace(top_corp.corp_name,'-','') = pack.ZK_Corp_C -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_dtp_sales_kpi -# MAGIC -# MAGIC select distinct -# MAGIC iqvia_prod_code pack_code -# MAGIC ,corp_cod -# MAGIC ,'ONCO' ta -# MAGIC ,yyyymm -# MAGIC ,null ytd -# MAGIC ,'ROC' geo_key -# MAGIC ,'top_corp_rank' kpi_name -# MAGIC ,cast(rank1 as double) kpi_val -# MAGIC ,null kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC -- ,null ta -# MAGIC from tmp where rank1 !='' -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select distinct -# MAGIC iqvia_prod_code pack_code -# MAGIC ,corp_cod -# MAGIC ,'ONCO' ta -# MAGIC ,yyyymm -# MAGIC ,null ytd -# MAGIC ,'ROC' geo_key -# MAGIC ,'top_corp_sales_amount' kpi_name -# MAGIC ,sales_amount kpi_val -# MAGIC ,sales_amount_ly kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC -- ,null ta -# MAGIC from tmp - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-6:自有部分数据(9个) -# MAGIC retail 自有部分数据处理成kpi 形式 -# MAGIC - pack_price_fz -# MAGIC - pack_price_fm -# MAGIC - pack_price_by_counting_unit_fm -# MAGIC - weighted_spread_rate -# MAGIC - digital_spread_rate -# MAGIC - pack_price -# MAGIC - pack_price_by_counting_unit -# MAGIC - num_dist_rate -# MAGIC - weig_dist_rate - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.27 pack_price_fz -# MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分子 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select -# MAGIC a.iqvia_pack_code pack_code -# MAGIC ,a.corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null td -# MAGIC ,a.AUDIT_COD geo_key -# MAGIC ,'pack_price_fz' KPI_name -# MAGIC ,sum(sales_value) kpi_val -# MAGIC ,sum(sales_value_ly) kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END ta -# MAGIC ,a.brand_flag -# MAGIC ,a.pack_flag -# MAGIC from dm.dm_zk_retail_sales a -# MAGIC GROUP BY -# MAGIC a.iqvia_pack_code, -# MAGIC a.corp_cod, -# MAGIC YYYYMM , -# MAGIC a.AUDIT_COD, -# MAGIC case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END, -# MAGIC a.brand_flag, -# MAGIC a.pack_flag -# MAGIC having ta is not null and sum(sales_value) > 0 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.28 pack_price_fm -# MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分母 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select -# MAGIC a.iqvia_pack_code pack_code -# MAGIC ,a.corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,a.AUDIT_COD geo_key -# MAGIC ,'pack_price_fm' KPI_name -# MAGIC ,sum(a.sales_unit) kpi_val -# MAGIC ,sum(a.sales_unit_ly) kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END ta -# MAGIC ,a.brand_flag -# MAGIC ,a.pack_flag -# MAGIC from dm.dm_zk_retail_sales a -# MAGIC GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD -# MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END -# MAGIC ,a.brand_flag -# MAGIC ,a.pack_flag -# MAGIC having ta is not null and sum(sales_unit)>0 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.29 pack_price_by_counting_unit_fm -# MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 by counting unit 的 price 分母 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select -# MAGIC a.iqvia_pack_code pack_code -# MAGIC ,a.corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,a.AUDIT_COD geo_key -# MAGIC ,'pack_price_by_counting_unit_fm' KPI_name -# MAGIC ,sum(a.counting_unit) kpi_val -# MAGIC ,sum(a.counting_unit_ly) kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END ta -# MAGIC ,a.brand_flag -# MAGIC ,a.pack_flag -# MAGIC from dm.dm_zk_retail_sales a -# MAGIC GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD -# MAGIC ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' -# MAGIC WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' -# MAGIC WHEN A.source[0] = 'NIAD' THEN 'DM' -# MAGIC WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' -# MAGIC WHEN A.source[0] ='RD Market' THEN 'RD' -# MAGIC END -# MAGIC ,a.brand_flag -# MAGIC ,a.pack_flag -# MAGIC having ta is not null and sum(counting_unit)>0 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 将pack表的 price 数据进行处理 -# MAGIC -- 在 retail 拆分好的结果表里获取pack 粒度的 price 分子 -# MAGIC -- 关联 corp code -# MAGIC -- 获取geo_key 后续的audit key -# MAGIC -- 获取ta 值 -# MAGIC -- 获取pack 文件中计算price 的所有指标 及加权铺货率、数字铺货率 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC with pack_rawdata as ( -# MAGIC select * from tmp.tmp_retail_pack_rawdata where data_flag = 0 -# MAGIC ), tmp_pack_property as ( -# MAGIC ---------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC select -# MAGIC distinct -# MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(iqvia_pack_code)),12) -# MAGIC else trim(iqvia_pack_code) -# MAGIC end as iqvia_pack_code, -# MAGIC ---------------------------------------------------------------- -# MAGIC product_id -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ),a as ( -# MAGIC select -# MAGIC df.brand_flag,df.zk_product_id,YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region -# MAGIC ,sum(sales_value) sales_value -# MAGIC ,sum(sales_unit) sales_unit -# MAGIC ,sum(weighted_spread_rate) weighted_spread_rate -# MAGIC ,sum(digital_spread_rate) digital_spread_rate -# MAGIC ,sum(sales_value_ly) sales_value_ly -# MAGIC ,sum(sales_unit_ly) sales_unit_ly -# MAGIC ,sum(weighted_spread_rate_ly) weighted_spread_rate_ly -# MAGIC ,sum(digital_spread_rate_ly) digital_spread_rate_ly -# MAGIC from ( -# MAGIC select -# MAGIC month as YYYYMM, -# MAGIC product_id as zk_product_id, -# MAGIC zk_regin as zk_region -# MAGIC ,sales_value,sales_unit,weighted_spread_rate,digital_spread_rate -# MAGIC ,0 sales_value_ly -# MAGIC ,0 sales_unit_ly -# MAGIC ,0 weighted_spread_rate_ly -# MAGIC ,0 digital_spread_rate_ly -# MAGIC ,brand_flag -# MAGIC from pack_rawdata -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC cast( month + 100 as int ) as yyyymm, -# MAGIC product_id as zk_product_id, -# MAGIC zk_regin as zk_region -# MAGIC ,0 sales_value -# MAGIC ,0 sales_unit -# MAGIC ,0 weighted_spread_rate -# MAGIC ,0 digital_spread_rate -# MAGIC ,sales_value sales_value_ly -# MAGIC ,sales_unit sales_unit_ly -# MAGIC ,weighted_spread_rate weighted_spread_rate_ly -# MAGIC ,digital_spread_rate digital_spread_rate_ly -# MAGIC ,brand_flag -# MAGIC from pack_rawdata -# MAGIC where month + 100 <= (select max(month) FROM pack_rawdata) -# MAGIC ) df -# MAGIC left join tmp_pack_property pack on pack.product_id = df.zk_product_id -# MAGIC left join tmp.tmp_zk_retail_pack_property_corp corp -# MAGIC on pack.iqvia_pack_code = corp.iqvia_pack_code -# MAGIC group by YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region,df.brand_flag,df.zk_product_id -# MAGIC ) -# MAGIC -# MAGIC insert overwrite table tmp.tmp_zk_retail_price -# MAGIC select -# MAGIC distinct -# MAGIC YYYYMM, -# MAGIC zk_product_id, -# MAGIC d.ta, -# MAGIC c.geo_key, -# MAGIC a.iqvia_pack_code, -# MAGIC b.iqvia_prod_code, -# MAGIC b.prod_des_c, -# MAGIC corp_cod, -# MAGIC zk_region, -# MAGIC sales_value, -# MAGIC sales_value_ly, -# MAGIC sales_unit, -# MAGIC sales_unit_ly, -# MAGIC weighted_spread_rate, -# MAGIC weighted_spread_rate_ly, -# MAGIC digital_spread_rate, -# MAGIC digital_spread_rate_ly -# MAGIC from a -# MAGIC left join ( -# MAGIC select distinct iqvia_pack_code ,prod_des_c,prod_des,iqvia_prod_code -# MAGIC from dm.dm_zk_retail_pack_property -# MAGIC ) b on a.iqvia_pack_code=b.iqvia_pack_code -# MAGIC left join ( -# MAGIC select distinct geo_key,province_city from dm.dm_zk_retail_geo -# MAGIC ) c on a.zk_region = c.province_city -# MAGIC left join ( -# MAGIC select distinct iqvia_pack_code,ta from dm.dm_zk_retail_market_property -# MAGIC ) d on a.iqvia_pack_code=d.iqvia_pack_code -# MAGIC where a.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_sales) - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.30 weighted_spread_rate -# MAGIC -- 在 retail pack 粒度的文件中获取加权铺货率 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select distinct -# MAGIC iqvia_pack_code pack_code -# MAGIC ,corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'weighted_spread_rate' KPI_name -# MAGIC ,weighted_spread_rate kpi_val -# MAGIC ,weighted_spread_rate_ly kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,ta ta -# MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag -# MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag -# MAGIC from tmp.tmp_zk_retail_price a -# MAGIC left join ( -# MAGIC SELECT DISTINCT b.prod_des_c -# MAGIC FROM tmp.tmp_retail_pack_rawdata A -# MAGIC LEFT JOIN ( -# MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c -# MAGIC FROM dm.dm_zk_retail_pack_property -# MAGIC ) b on a.pack_code = b.iqvia_pack_code -# MAGIC where a.brand_flag = 1 -# MAGIC ) prod on a.prod_des_c = prod.prod_des_c - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.31 digital_spread_rate -# MAGIC -- 在 retail pack 粒度的文件中获取数字铺货率 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select distinct -# MAGIC iqvia_pack_code -# MAGIC ,corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'digital_spread_rate' KPI_name -# MAGIC ,digital_spread_rate kpi_val -# MAGIC ,digital_spread_rate_ly kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,ta ta -# MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag -# MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag -# MAGIC from tmp.tmp_zk_retail_price a -# MAGIC left join ( -# MAGIC SELECT DISTINCT b.prod_des_c -# MAGIC FROM tmp.tmp_retail_pack_rawdata A -# MAGIC LEFT JOIN ( -# MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c -# MAGIC FROM dm.dm_zk_retail_pack_property -# MAGIC ) b on a.pack_code = b.iqvia_pack_code -# MAGIC where a.brand_flag = 1 -# MAGIC ) prod on a.prod_des_c=prod.prod_des_c - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.32 pack_price -# MAGIC -- 在 retail pack 粒度的文件中获取计算pack 粒度的price -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select distinct -# MAGIC iqvia_pack_code -# MAGIC ,corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'pack_price' KPI_name -# MAGIC ,round(sum(sales_value)/sum(sales_unit),3) kpi_val -# MAGIC ,round(sum(sales_value_ly)/sum(sales_unit_ly),3) kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,ta ta -# MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag -# MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag -# MAGIC from tmp.tmp_zk_retail_price a -# MAGIC left join ( -# MAGIC SELECT DISTINCT b.prod_des_c -# MAGIC FROM tmp.tmp_retail_pack_rawdata A -# MAGIC LEFT JOIN ( -# MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c -# MAGIC FROM dm.dm_zk_retail_pack_property -# MAGIC ) b on a.pack_code = b.iqvia_pack_code -# MAGIC where a.brand_flag = 1 -# MAGIC ) prod on a.prod_des_c=prod.prod_des_c -# MAGIC group by -# MAGIC corp_cod, -# MAGIC YYYYMM, -# MAGIC geo_key, -# MAGIC ta, -# MAGIC iqvia_pack_code, -# MAGIC case when prod.prod_des_c is null THEN 2 else 1 END, -# MAGIC case when geo_key ='CHT' THEN 2 else 1 END - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.33 pack_price_by_counting_unit -# MAGIC -- 在 retail pack 粒度的文件中获取计算pack 粒度的price by counting unit -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC with tmp_pack_property as ( -# MAGIC ---------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC select -# MAGIC case when length(trim(iqvia_pack_code)) < 12 and trim(iqvia_pack_code) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(iqvia_pack_code)),12) -# MAGIC else trim(iqvia_pack_code) -# MAGIC end as iqvia_pack_code, -# MAGIC ---------------------------------------------------------------- -# MAGIC product_id, -# MAGIC counting_unit, -# MAGIC unit -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property -# MAGIC ) -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC select distinct -# MAGIC a.iqvia_pack_code -# MAGIC ,a.corp_cod -# MAGIC ,YYYYMM -# MAGIC ,null ytd -# MAGIC ,geo_key -# MAGIC ,'pack_price_by_counting_unit' KPI_name -# MAGIC ,round(sum(sales_value)/sum(sales_unit*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val -# MAGIC ,round(sum(sales_value_ly)/sum(sales_unit_ly*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val_ly -# MAGIC ,null str_kpi_val -# MAGIC ,null str_kpi_val_ly -# MAGIC ,null kpi_vol -# MAGIC ,null kpi_vol_ly -# MAGIC ,null str_kpi_vol -# MAGIC ,null str_kpi_vol_ly -# MAGIC ,'N' TOTAL_FLAG -# MAGIC ,ta ta -# MAGIC ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag -# MAGIC ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag -# MAGIC from tmp.tmp_zk_retail_price a -# MAGIC left join tmp_pack_property b on a.zk_product_id =b.product_id -# MAGIC left join ( -# MAGIC SELECT DISTINCT b.prod_des_c -# MAGIC FROM tmp.tmp_retail_pack_rawdata A -# MAGIC LEFT JOIN ( -# MAGIC SELECT DISTINCT iqvia_pack_code,prod_des_c -# MAGIC FROM dm.dm_zk_retail_pack_property -# MAGIC ) b on a.pack_code = b.iqvia_pack_code -# MAGIC where a.brand_flag = 1 -# MAGIC ) prod on a.prod_des_c=prod.prod_des_c -# MAGIC group by -# MAGIC a.corp_cod, -# MAGIC YYYYMM,geo_key, -# MAGIC ta, -# MAGIC a.iqvia_pack_code, -# MAGIC case when prod.prod_des_c is null THEN 2 else 1 END, -# MAGIC case when geo_key ='CHT' THEN 2 else 1 END - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- 8.34&35 num_dist_rate & weig_dist_rate -# MAGIC -- 在 retail brand 品牌文件中获取数字铺货率 并对re 特殊处理,re相关品牌优先取inhaled market 对应 pack -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert into table dws.dws_zk_retail_sales_own_kpi -# MAGIC -# MAGIC with exploded_data as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC ifnull(common_name,'' ) as common_name, -# MAGIC level, -# MAGIC split(level_ta,',') array_ta, -# MAGIC split(level_market,',') array_market, -# MAGIC split(level_molecule,',') array_molecule, -# MAGIC split(level_brand,',') array_brand -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where level like '%MULTI_BRAND%' -# MAGIC ), tmp_config as ( -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC common_name, -# MAGIC level, -# MAGIC array_ta[idx] as level_ta, -# MAGIC array_market[idx] as level_market, -# MAGIC array_molecule[idx] as level_molecule, -# MAGIC array_brand[idx] as level_brand -# MAGIC from exploded_data -# MAGIC lateral view posexplode(array_ta) AS idx, split_ta -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC ta, -# MAGIC market, -# MAGIC brand, -# MAGIC common_name, -# MAGIC level, -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC level_molecule, -# MAGIC level_brand -# MAGIC from dwd.dwd_gnd_retail_split_automatic -# MAGIC where level = 'BRAND' -# MAGIC ),max_pack_mapping as ( -# MAGIC select -# MAGIC level_ta, -# MAGIC level_market, -# MAGIC level_molecule, -# MAGIC level_brand, -# MAGIC molecule_desc, -# MAGIC product_desc, -# MAGIC corp_cod, -# MAGIC max(pack_code) as pack_code -# MAGIC from tmp.tmp_retail_pack_mapping -# MAGIC group by level_ta,level_market,level_molecule,level_brand,molecule_desc,product_desc,corp_cod -# MAGIC ), tmp_brand_kpi_now as ( -# MAGIC select -# MAGIC distinct -# MAGIC a.ta, -# MAGIC nvl(f.iqvia_pack_code,c.pack_code) as pack_code, -# MAGIC c.corp_cod, -# MAGIC c.product_desc, -# MAGIC a.YYYYMM, -# MAGIC d.geo_key, -# MAGIC a.num_dist_rate, -# MAGIC a.weig_dist_rate -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all a -# MAGIC inner join tmp_config b -# MAGIC on a.ta = b.ta -# MAGIC and a.market = b.market -# MAGIC and a.zk_brand_category = b.brand -# MAGIC and a.zk_common_name = b.common_name -# MAGIC inner join max_pack_mapping c -# MAGIC on c.level_ta = b.level_ta -# MAGIC and c.level_market = b.level_market -# MAGIC and c.level_molecule = b.level_molecule -# MAGIC and c.level_brand = b.level_brand -# MAGIC left join dm.dm_zk_retail_geo d -# MAGIC on a.province_city = d.province_city -# MAGIC left join ( -# MAGIC select distinct iqvia_pack_code ,prod_des_c -# MAGIC from dm.dm_zk_retail_pack_property -# MAGIC ) e on c.pack_code = e.iqvia_pack_code -# MAGIC left join ( -# MAGIC select prod_des_c,max(iqvia_pack_code) iqvia_pack_code -# MAGIC from dm.dm_zk_retail_pack_property -# MAGIC where market='Inhaled Extended Market' -# MAGIC group by prod_des_c -# MAGIC ) f on e.prod_des_c =f.prod_des_c -# MAGIC ), tmp_brand_kpi_ly as ( -# MAGIC select -# MAGIC pack_code, -# MAGIC corp_cod, -# MAGIC cast(YYYYMM + 100 as int ) as YYYYMM, -# MAGIC geo_key, -# MAGIC num_dist_rate, -# MAGIC weig_dist_rate -# MAGIC from tmp_brand_kpi_now -# MAGIC ), tmp_brand_kpi as ( -# MAGIC select -# MAGIC a.*, -# MAGIC b.num_dist_rate as num_dist_rate_ly, -# MAGIC b.weig_dist_rate as weig_dist_rate_ly -# MAGIC from tmp_brand_kpi_now a -# MAGIC left join tmp_brand_kpi_ly b -# MAGIC on a.pack_code = b.pack_code -# MAGIC and a.corp_cod = b.corp_cod -# MAGIC and a.YYYYMM = b.YYYYMM -# MAGIC and a.geo_key = b.geo_key -# MAGIC ) -# MAGIC -# MAGIC select -# MAGIC pack_code, -# MAGIC corp_cod, -# MAGIC yyyymm, -# MAGIC null as ytd, -# MAGIC geo_key, -# MAGIC 'num_dist_rate' as KPI_name, -# MAGIC num_dist_rate as kpi_val, -# MAGIC num_dist_rate_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC ta, -# MAGIC case when product_desc is null THEN 2 else 1 END as brand_flag, -# MAGIC case when geo_key ='CHT' THEN 2 else 1 END as pack_flag -# MAGIC from tmp_brand_kpi -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC pack_code, -# MAGIC corp_cod, -# MAGIC yyyymm, -# MAGIC null as ytd, -# MAGIC geo_key, -# MAGIC 'weig_dist_rate' as KPI_name, -# MAGIC weig_dist_rate as kpi_val, -# MAGIC weig_dist_rate_ly as kpi_val_ly, -# MAGIC null as str_kpi_val, -# MAGIC null as str_kpi_val_ly, -# MAGIC null as kpi_vol, -# MAGIC null as kpi_vol_ly, -# MAGIC null as str_kpi_vol, -# MAGIC null as str_kpi_vol_ly, -# MAGIC 'N' as TOTAL_FLAG, -# MAGIC ta, -# MAGIC case when product_desc is null THEN 2 else 1 END as brand_flag, -# MAGIC case when geo_key ='CHT' THEN 2 else 1 END as pack_flag -# MAGIC from tmp_brand_kpi -# MAGIC -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### PART-7:映射到dm表 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-8: map to dm.dm_zk_retail_sales_kpi -# MAGIC -- PART-7: 映射到dm表 -# MAGIC -- 将所有渠道kpi 数据汇总到dm -# MAGIC -- KPI 表汇总 -# MAGIC -- ytd 为是否ytd flag -# MAGIC -- geo 将cht(全国) 改成 ROC -# MAGIC -- DTP_FLAG: O-非dtp ,1-dtp数据 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dm.dm_zk_retail_sales_kpi -# MAGIC ( pack_code -# MAGIC ,corp_cod -# MAGIC ,ta -# MAGIC ,YYYYMM -# MAGIC ,ytd -# MAGIC ,geo_key -# MAGIC ,KPI_name -# MAGIC ,kpi_val -# MAGIC ,kpi_val_ly -# MAGIC ,str_kpi_val -# MAGIC ,str_kpi_val_ly -# MAGIC ,kpi_vol -# MAGIC ,kpi_vol_ly -# MAGIC ,str_kpi_vol -# MAGIC ,str_kpi_vol_ly -# MAGIC ,TOTAL_FLAG -# MAGIC ,data_source -# MAGIC ,dtp_flag -# MAGIC ,brand_flag -# MAGIC ,pack_flag -# MAGIC ) -# MAGIC --------retail 渠道 kpi -# MAGIC select -# MAGIC nvl(pack_code,'') pack_code -# MAGIC ,nvl(corp_cod,'') corp_cod -# MAGIC ,nvl(ta,'') ta -# MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7 AND substr(ytd,6,1)<>'Q',concat('20',substr(ytd,4,2))*100 + right(ytd,2) ,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ) as int )) YYYYMM -# MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD -# MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key -# MAGIC ,nvl(kpi_name,'') as kpi_name -# MAGIC ,nvl(cast(kpi_val as double),0) kpi_val -# MAGIC ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly -# MAGIC ,nvl(str_kpi_val,'') -# MAGIC ,nvl(str_kpi_val_ly,'') -# MAGIC ,nvl(cast(kpi_vol as double),0) kpi_vol -# MAGIC ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly -# MAGIC ,nvl(str_kpi_vol,'') -# MAGIC ,nvl(str_kpi_vol_ly,'') -# MAGIC ,nvl(TOTAL_FLAG,'') -# MAGIC ,'Retail(Quarterly)' data_source -# MAGIC ,'0' dtp_flag -# MAGIC , 0 -# MAGIC , 0 -# MAGIC from dws.dws_zk_retail_sales_kpi -# MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') -# MAGIC -# MAGIC union all -# MAGIC ---------------dtp 的kpi -# MAGIC select -# MAGIC nvl(pack_code,'') pack_code -# MAGIC ,nvl(corp_cod,'') corp_cod -# MAGIC ,nvl(ta,'') ta -# MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM -# MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD -# MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END -# MAGIC ,nvl(kpi_name,'') -# MAGIC ,nvl(kpi_val,0) -# MAGIC ,nvl(kpi_val_ly,0) -# MAGIC ,nvl(str_kpi_val,'') -# MAGIC ,nvl(str_kpi_val_ly,'') -# MAGIC ,nvl(kpi_vol,0) -# MAGIC ,nvl(kpi_vol_ly,0) -# MAGIC ,nvl(str_kpi_vol,'') -# MAGIC ,nvl(str_kpi_vol_ly,'') -# MAGIC ,nvl(TOTAL_FLAG,'') -# MAGIC ,'Retail(Quarterly)' data_source -# MAGIC ,'1' dtp_flag -# MAGIC ,0 -# MAGIC ,0 -# MAGIC from dws.dws_zk_retail_dtp_sales_kpi -# MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC --拼接retail 自有部分kpi -# MAGIC select -# MAGIC nvl(pack_code,'') pack_code -# MAGIC ,nvl(corp_cod,'') corp_cod -# MAGIC ,nvl(ta,'') ta -# MAGIC ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM -# MAGIC ,if(ytd IS NOT NULL ,'Y' ,'N') YTD -# MAGIC ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key -# MAGIC ,nvl(kpi_name,'') -# MAGIC ,nvl(cast(kpi_val as double),0) kpi_val -# MAGIC ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly -# MAGIC ,nvl(str_kpi_val,'') -# MAGIC ,nvl(str_kpi_val_ly,'') -# MAGIC ,nvl(cast(kpi_vol as double),0) kpi_vol -# MAGIC ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly -# MAGIC ,nvl(str_kpi_vol,'') -# MAGIC ,nvl(str_kpi_vol_ly,'') -# MAGIC ,nvl(TOTAL_FLAG,'') -# MAGIC ,'Retail(Quarterly)' data_source -# MAGIC ,'0' dtp_flag -# MAGIC ,nvl(brand_flag,0) -# MAGIC ,nvl(pack_flag,0) -# MAGIC from dws.dws_zk_retail_sales_own_kpi -# MAGIC WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-9: map to dm.dm_zk_retail_market_ratio - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-9: map to dm.dm_zk_retail_market_ratio -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC /* -# MAGIC 修改人:chenwu -# MAGIC 修改时间:20250319 -# MAGIC 修改内容: -# MAGIC */ -# MAGIC ------------------------生产retail 的ratio 表,该表系数用于计算pdot-------- -# MAGIC insert overwrite table dm.dm_zk_retail_market_ratio -# MAGIC ( -# MAGIC market_pack_key, -# MAGIC pack_cod, -# MAGIC prod_des, -# MAGIC cmps_des, -# MAGIC corp_cod, -# MAGIC market, -# MAGIC value_market_ratio, -# MAGIC unit_market_ratio, -# MAGIC countingunit_market_ratio, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC select distinct -# MAGIC a.market || a.iqvia_pack_code as market_pack_key -# MAGIC ,a.iqvia_pack_code as pack_cod -# MAGIC ,a.prod_des as prod_des -# MAGIC ,a.cmps_des as cmps_des -# MAGIC ,a.corp_cod as corp_cod -# MAGIC ,a.market as market -# MAGIC ,a.extend_market_ratio as value_market_ratio -# MAGIC ,a.extend_market_ratio as unit_market_ratio -# MAGIC ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.extend_market_ratio ,1 ) -# MAGIC else t4.ratio*coalesce(a.extend_market_ratio ,1 ) -# MAGIC end ,a.extend_market_ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt -# MAGIC from tmp.tmp_dm_zk_retail_pack_property a -# MAGIC left join (--COUNTINGUNIT -# MAGIC select distinct -# MAGIC market, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_cod)),12) -# MAGIC else trim(pack_cod) -# MAGIC end as pack_cod, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC pack_des, -# MAGIC level, -# MAGIC type, -# MAGIC cast(ratio as float) as ratio, -# MAGIC cast(starttime as int) starttime, -# MAGIC cast (endtime as int) endtime -# MAGIC from dwd.dwd_gnd_ims_tblbrandratio -# MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' -# MAGIC )t4 on a.market=t4.market -# MAGIC and a.iqvia_pack_code = t4.PACK_COD -# MAGIC left join (--COUNTINGUNIT -# MAGIC select distinct -# MAGIC market, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_cod)),12) -# MAGIC else trim(pack_cod) -# MAGIC end as pack_cod, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC pack_des, -# MAGIC level, -# MAGIC type, -# MAGIC cast(ratio as float) as ratio, -# MAGIC cast(starttime as int) starttime, -# MAGIC cast (endtime as int) endtime -# MAGIC from dwd.dwd_gnd_ims_tblbrandratio -# MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' -# MAGIC ) t5 on a.market=t5.market -# MAGIC and right(concat('000000',a.CMPS_COD ),6 )= right(concat('000000',t5.CMPS_COD ),6 ) -# MAGIC union all -# MAGIC select distinct -# MAGIC a.market || a.iqvia_pack_code as market_pack_key -# MAGIC ,a.iqvia_pack_code as pack_cod -# MAGIC ,a.prod_des as prod_des -# MAGIC ,a.cmps_des as cmps_des -# MAGIC ,a.corp_cod as corp_cod -# MAGIC ,a.market as market -# MAGIC ,a.Market_Ratio as value_market_ratio -# MAGIC ,a.Market_Ratio as unit_market_ratio -# MAGIC ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.Market_Ratio ,1 ) -# MAGIC else t4.ratio*coalesce(a.Market_Ratio ,1 ) -# MAGIC end ,a.Market_Ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt -# MAGIC from dws.dws_zk_retail_dtp_market a -# MAGIC left join (--COUNTINGUNIT -# MAGIC select distinct -# MAGIC market, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_cod)),12) -# MAGIC else trim(pack_cod) -# MAGIC end as pack_cod, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC pack_des, -# MAGIC level, -# MAGIC type, -# MAGIC cast(ratio as float) as ratio, -# MAGIC cast(starttime as int) starttime, -# MAGIC cast (endtime as int) endtime -# MAGIC from dwd.dwd_gnd_ims_tblbrandratio -# MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' -# MAGIC )t4 on a.market=t4.market -# MAGIC and a.iqvia_pack_code = t4.PACK_COD -# MAGIC left join (--COUNTINGUNIT -# MAGIC select distinct -# MAGIC market, -# MAGIC cmps_cod, -# MAGIC cmps_des, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC -- format pack_cod from dwd_gnd_ims_tblbrandratio -# MAGIC case when length(trim(pack_cod)) < 12 and trim(pack_cod) REGEXP '^[0-9]' -# MAGIC then right(concat('000000000000',trim(pack_cod)),12) -# MAGIC else trim(pack_cod) -# MAGIC end as pack_cod, -# MAGIC ---------------------------------------------------------------------------- -# MAGIC pack_des, -# MAGIC level, -# MAGIC type, -# MAGIC cast(ratio as float) as ratio, -# MAGIC cast(starttime as int) starttime, -# MAGIC cast (endtime as int) endtime -# MAGIC from dwd.dwd_gnd_ims_tblbrandratio -# MAGIC where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' -# MAGIC ) t5 on a.market=t5.market -# MAGIC and right(concat('000000',a.CMPS_COD ),6 ) = right(concat('000000',t5.CMPS_COD ),6 ) -# MAGIC - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/10 map_to_retail_dm_table.py:Zone.Identifier b/EXTERNAL/Retail/10 map_to_retail_dm_table.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/10 map_to_retail_dm_table.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/11 map_to_overview_dm_table.py b/EXTERNAL/Retail/11 map_to_overview_dm_table.py deleted file mode 100644 index 6f7b991..0000000 --- a/EXTERNAL/Retail/11 map_to_overview_dm_table.py +++ /dev/null @@ -1,1000 +0,0 @@ -# Databricks notebook source -############################################################START############################################################## -### STEP-10: map to dm.dm_zk_retail_overview_data -### STEP-11: map to dm.dm_zk_retail_product_info -### STEP-12: map to dm.dm_zk_retail_brand -### STEP-13: map to dm.dm_zk_retail_export - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-10: map to dm.dm_zk_retail_overview_data - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-10: map to dm.dm_zk_retail_overview_data -# MAGIC -- 10.1 将所有overview 数据整合在同一张表里 -# MAGIC -# MAGIC -- -- 注意事项: -# MAGIC -- --rank1字段:Total行排名设为99,其他行如果数据源是null,则设为98。总之不能为null。 -# MAGIC -- -- 每个数据源文件(file_name)判断是否Total行的方式不尽相同,具体参考代码。 -# MAGIC -- --sales_quarter字段:数据源中有两种格式,24Q1以及2024Q1,因此需要统一成2024Q1这种格式。 -# MAGIC -- -- 有些因为是YTD的值,源文件里sales_quarter是null,需将YTD字段中的时间拆出来作为sales_quarter字段的值 -# MAGIC -- --最终表的source_name字段的内容是各个TA,RC字段是南区、北区等。而数据源文件中都叫source_name,每个源文件需按实际情况拆分成2列 -# MAGIC -- --yyyymm字段:Q1是3月、Q2是6月、Q3是9月、Q4是12月。 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_overview_data -# MAGIC ( -# MAGIC rank1 -# MAGIC ,product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,sales_quarter -# MAGIC ,yyyymm -# MAGIC ,ytd -# MAGIC ,sales_amount -# MAGIC ,sales_amount_ly -# MAGIC ,sales_amount_total -# MAGIC ,sales_amount_ly_total -# MAGIC ,rx_type -# MAGIC ,top1_brand_val -# MAGIC ,top1_brand_gr -# MAGIC ,top2_brand_val -# MAGIC ,top2_brand_gr -# MAGIC ,top1_incremental_brand -# MAGIC ,top1_incremental_gr -# MAGIC ,top2_incremental_brand -# MAGIC ,top2_incremental_gr -# MAGIC ,ytd_gr -# MAGIC ,ytd_ms -# MAGIC ,ytd_delta_ms -# MAGIC ,dtp_name -# MAGIC ,file_name -# MAGIC ,source_name -# MAGIC ,rc -# MAGIC ,rx_otc -# MAGIC ,top_incre -# MAGIC ,etl_insert_dt -# MAGIC ,etl_update_dt -# MAGIC ) -# MAGIC -# MAGIC -# MAGIC with overview as -# MAGIC ( -# MAGIC select -# MAGIC case when replace(upper(corp_name),'-','') = 'DTP TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else replace(rank1,' ','') end as rank1 -# MAGIC ,null as product_desc -# MAGIC ,null as product_type -# MAGIC ,null as common_name -# MAGIC ,null as brand -# MAGIC ,replace(corp_name,'-','') as corp -# MAGIC ,null as corporation -# MAGIC ,null as corp_type -# MAGIC ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) -# MAGIC else sales_quarter -# MAGIC end as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,sales_amount -# MAGIC ,null as rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,null as dtp_name -# MAGIC ,'DTP TOP10企业排名' file_name -# MAGIC ,NULL as source_name -# MAGIC ,null rc -# MAGIC ,'Rx' as rx_otc -# MAGIC ,'TOP' as top_incre -# MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_copd ---这个没有ytd 三个字段添加 -# MAGIC union all -# MAGIC select -# MAGIC case when replace(upper(brand_name),'-','') = 'DTP TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else replace(rank1,' ','') end as rank1 -# MAGIC ,null as product_desc -# MAGIC ,null as product_type -# MAGIC ,null as common_name -# MAGIC ,brand_name as brand -# MAGIC ,replace(corp_name,'-','') as corp -# MAGIC ,null as corporation -# MAGIC ,null as corp_type -# MAGIC ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) -# MAGIC else sales_quarter -# MAGIC end as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,sales_amount -# MAGIC ,null as rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,null as dtp_name -# MAGIC ,'DTP TOP10品牌排名' file_name -# MAGIC ,NULL as source_name -# MAGIC ,null rc -# MAGIC ,'Rx' as rx_otc -# MAGIC ,'TOP' as top_incre -# MAGIC from dwd.dwd_gnd_ext_retail_dtp_top_brand ---这个没有ytd 三个字段添加 -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else replace(rank1,' ','') end as rank1 -# MAGIC ,null as product_desc -# MAGIC ,null as product_type -# MAGIC ,null as common_name -# MAGIC ,null as brand -# MAGIC ,corp_desc as corp -# MAGIC ,corporation -# MAGIC ,`type` as corp_type -# MAGIC ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) -# MAGIC else sales_quarter -# MAGIC end as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,sales_amount -# MAGIC ,null as rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,null as dtp_name -# MAGIC ,'全国-集团排名' file_name -# MAGIC ,case when ta = 'GI' then concat(ta,'-',rx_otc) -# MAGIC when ta = 'NIAD-excl. GLP1' then 'DM' -# MAGIC else ta end as source_name -# MAGIC ,null rc -# MAGIC ,rx_otc -# MAGIC ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -# MAGIC from dwd.dwd_gnd_retail_national_corp_rank -# MAGIC -# MAGIC union all -# MAGIC select -# MAGIC case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else replace(rank1,' ','') end as rank1 -# MAGIC ,prod_desc as product_desc -# MAGIC ,`type` as product_type -# MAGIC ,cmps_desc as common_name -# MAGIC ,brand -# MAGIC ,corp_desc as corp -# MAGIC ,corporation -# MAGIC ,null as corp_type -# MAGIC ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) -# MAGIC else sales_quarter -# MAGIC end as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,sales_amount -# MAGIC ,null as rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,null as dtp_name -# MAGIC ,'全国-产品排名' file_name -# MAGIC ,case when ta = 'GI' then concat(ta,'-',rx_otc) -# MAGIC when ta = 'NIAD-excl. GLP1' then 'DM' -# MAGIC else ta end as source_name -# MAGIC ,null rc -# MAGIC ,rx_otc -# MAGIC ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -# MAGIC from dwd.dwd_gnd_retail_national_prd_rank -# MAGIC union all -# MAGIC select -# MAGIC case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else replace(rank1,' ','') end as rank1 -# MAGIC ,null as product_desc -# MAGIC ,null as product_type -# MAGIC ,null as common_name -# MAGIC ,null as brand -# MAGIC ,corp_desc as corp -# MAGIC ,corporation -# MAGIC ,`type` as corp_type -# MAGIC ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) -# MAGIC else sales_quarter -# MAGIC end as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,sales_amount -# MAGIC ,null as rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,null as dtp_name -# MAGIC ,'大区-集团排名' file_name -# MAGIC ,case when ta = 'GI' then concat(ta,'-',rx_otc) -# MAGIC when ta = 'NIAD-excl. GLP1' then 'DM' -# MAGIC else ta end as source_name -# MAGIC ,region rc -# MAGIC ,rx_otc -# MAGIC ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -# MAGIC from dwd.dwd_gnd_retail_region_corp_rank -# MAGIC ) -# MAGIC -# MAGIC -- --计算Total值,按文件、季度、TA、rx_otc、top_incre进行合计 -# MAGIC -- --因为数据中本身就包含了Total行,因此直接筛选了rank1 = '99'(即筛选Total行)进行合计 -# MAGIC ,overview_total as ( -# MAGIC select file_name, -# MAGIC source_name, -# MAGIC rx_otc, -# MAGIC top_incre, -# MAGIC sales_quarter, -# MAGIC rc, -# MAGIC sum(sales_amount) sales_amount_total -# MAGIC from overview -# MAGIC where rank1 = '99' -# MAGIC group by file_name,sales_quarter,rx_otc,top_incre,source_name,rc -# MAGIC ) -# MAGIC -# MAGIC -- --取到文件中的最大时间,在获取ly值的时候,用于限定时间范围 -# MAGIC ,overview_maxyq as ( -# MAGIC select max(sales_quarter) max_sales_quarter -# MAGIC from overview -# MAGIC where sales_quarter is not null -# MAGIC ) -# MAGIC -# MAGIC -- --在数据源的基础上,增加yyyymm字段、sales_amount_ly、sales_amount_total、sales_amount_ly_total字段 -# MAGIC select -# MAGIC case when max(rank1) < 10000 then max(rank1) else cast(max(rank1) as int) - 10000 end as rank1 -# MAGIC ,product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,sales_quarter -# MAGIC ,case when right(sales_quarter,1) = '1' then concat(left(sales_quarter,4),'03') -# MAGIC when right(sales_quarter,1) = '2' then concat(left(sales_quarter,4),'06') -# MAGIC when right(sales_quarter,1) = '3' then concat(left(sales_quarter,4),'09') -# MAGIC when right(sales_quarter,1) = '4' then concat(left(sales_quarter,4),'12') -# MAGIC end as yyyymm -# MAGIC ,max(ytd) ytd -# MAGIC ,sum(sales_amount) as sales_amount -# MAGIC ,sum(sales_amount_ly) as sales_amount_ly -# MAGIC ,sum(sales_amount_total) as sales_amount_total -# MAGIC ,sum(sales_amount_ly_total) as sales_amount_ly_total -# MAGIC ,rx_type -# MAGIC ,max(top1_brand_val) top1_brand_val -# MAGIC ,max(top1_brand_gr) top1_brand_gr -# MAGIC ,max(top2_brand_val) top2_brand_val -# MAGIC ,max(top2_brand_gr) top2_brand_gr -# MAGIC ,max(top1_incremental_brand) top1_incremental_brand -# MAGIC ,max(top1_incremental_gr) top1_incremental_gr -# MAGIC ,max(top2_incremental_brand) top2_incremental_brand -# MAGIC ,max(top2_incremental_gr) top2_incremental_gr -# MAGIC ,max(ytd_gr) ytd_gr -# MAGIC ,max(ytd_ms) ytd_ms -# MAGIC ,max(ytd_delta_ms) ytd_delta_ms -# MAGIC ,dtp_name -# MAGIC ,file_name -# MAGIC ,source_name -# MAGIC ,rc -# MAGIC ,rx_otc -# MAGIC ,top_incre -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from -# MAGIC ( -# MAGIC select -# MAGIC cast(rank1 as int) + 10000 rank1 -# MAGIC ,product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,t1.sales_quarter -# MAGIC ,ytd -# MAGIC ,sales_amount -# MAGIC ,0 as sales_amount_ly -# MAGIC ,t2.sales_amount_total -# MAGIC ,0 as sales_amount_ly_total -# MAGIC ,rx_type -# MAGIC ,top1_brand_val -# MAGIC ,top1_brand_gr -# MAGIC ,top2_brand_val -# MAGIC ,top2_brand_gr -# MAGIC ,top1_incremental_brand -# MAGIC ,top1_incremental_gr -# MAGIC ,top2_incremental_brand -# MAGIC ,top2_incremental_gr -# MAGIC ,ytd_gr -# MAGIC ,ytd_ms -# MAGIC ,ytd_delta_ms -# MAGIC ,dtp_name -# MAGIC ,t1.file_name -# MAGIC ,t1.source_name -# MAGIC ,t1.rc -# MAGIC ,t1.rx_otc -# MAGIC ,t1.top_incre -# MAGIC from overview t1 -# MAGIC left join overview_total t2 -# MAGIC on t1.file_name = t2.file_name -# MAGIC and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'') -# MAGIC and t1.rx_otc = t2.rx_otc -# MAGIC and t1.top_incre = t2.top_incre -# MAGIC and NVL(t1.source_name,'') = NVL(t2.source_name,'') -# MAGIC and NVL(t1.rc,'') = NVL(t2.rc,'') -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC select -# MAGIC cast(rank1 as int) rank1 -# MAGIC ,product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) as sales_quarter -# MAGIC ,null as ytd -# MAGIC ,0 as sales_amount -# MAGIC ,sales_amount as sales_amount_ly -# MAGIC ,0 as sales_amount_total -# MAGIC ,t2.sales_amount_total as sales_amount_ly_total -# MAGIC ,rx_type -# MAGIC ,null as top1_brand_val -# MAGIC ,null as top1_brand_gr -# MAGIC ,null as top2_brand_val -# MAGIC ,null as top2_brand_gr -# MAGIC ,null as top1_incremental_brand -# MAGIC ,null as top1_incremental_gr -# MAGIC ,null as top2_incremental_brand -# MAGIC ,null as top2_incremental_gr -# MAGIC ,null as ytd_gr -# MAGIC ,null as ytd_ms -# MAGIC ,null as ytd_delta_ms -# MAGIC ,dtp_name -# MAGIC ,t1.file_name -# MAGIC ,t1.source_name -# MAGIC ,t1.rc -# MAGIC ,t1.rx_otc -# MAGIC ,t1.top_incre -# MAGIC from overview t1 -# MAGIC left join overview_total t2 -# MAGIC on t1.file_name = t2.file_name -# MAGIC and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'') -# MAGIC and t1.rx_otc = t2.rx_otc -# MAGIC and t1.top_incre = t2.top_incre -# MAGIC and NVL(t1.source_name,'') = NVL(t2.source_name,'') -# MAGIC and NVL(t1.rc,'') = NVL(t2.rc,'') -# MAGIC left join overview_maxyq t3 -# MAGIC on 1=1 -# MAGIC where concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) <= t3.max_sales_quarter -# MAGIC ) t -# MAGIC group by -# MAGIC product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,sales_quarter -# MAGIC ,rx_type -# MAGIC ,dtp_name -# MAGIC ,file_name -# MAGIC ,source_name -# MAGIC ,rc -# MAGIC ,rx_otc -# MAGIC ,top_incre - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-10: map to dm.dm_zk_retail_overview_data -# MAGIC -- 10.2 将free report overview 导出的合并文件写入dm -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dm.dm_zk_retail_overview_data( -# MAGIC rank1, -# MAGIC product_desc, -# MAGIC product_type, -# MAGIC common_name, -# MAGIC brand, -# MAGIC corp, -# MAGIC corporation, -# MAGIC corp_type, -# MAGIC sales_quarter, -# MAGIC yyyymm, -# MAGIC ytd, -# MAGIC sales_amount, -# MAGIC sales_amount_ly, -# MAGIC sales_amount_total, -# MAGIC sales_amount_ly_total, -# MAGIC rx_type, -# MAGIC top1_brand_val, -# MAGIC top1_brand_gr, -# MAGIC top2_brand_val, -# MAGIC top2_brand_gr, -# MAGIC top1_incremental_brand, -# MAGIC top1_incremental_gr, -# MAGIC top2_incremental_brand, -# MAGIC top2_incremental_gr, -# MAGIC ytd_gr, -# MAGIC ytd_ms, -# MAGIC ytd_delta_ms, -# MAGIC dtp_name, -# MAGIC file_name, -# MAGIC source_name, -# MAGIC rc, -# MAGIC rx_otc, -# MAGIC top_incre, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC select -# MAGIC trim(rank1) rank1 -# MAGIC ,product_desc -# MAGIC ,product_type -# MAGIC ,common_name -# MAGIC ,brand -# MAGIC ,nvl(corp,'' ) corp -# MAGIC ,corporation -# MAGIC ,corp_type -# MAGIC ,sales_quarter -# MAGIC ,yyyymm -# MAGIC ,case when ytd is null then 'N' ELSE 'Y' END ytd -# MAGIC ,sales_amount -# MAGIC ,sales_amount_ly -# MAGIC ,sales_amount_total -# MAGIC ,sales_amount_ly_total -# MAGIC ,rx_type -# MAGIC ,top1_brand_val -# MAGIC ,cast(top1_brand_gr as double) top1_brand_gr -# MAGIC ,top2_brand_val -# MAGIC ,cast(top2_brand_gr as double) top2_brand_gr -# MAGIC ,top1_incremental_brand -# MAGIC ,cast(top1_incremental_gr as double) top1_incremental_gr -# MAGIC ,top2_incremental_brand -# MAGIC ,cast(top2_incremental_gr as double) top2_incremental_gr -# MAGIC ,cast(ytd_gr as double ) ytd_gr -# MAGIC ,cast(ytd_ms as double) ytd_ms -# MAGIC ,cast(ytd_delta_ms as double) ytd_delta_ms -# MAGIC ,dtp_name -# MAGIC ,file_name -# MAGIC ,trim(source_name) source_name -# MAGIC ,rc -# MAGIC ,rx_otc -# MAGIC ,top_incre -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dws.dws_zk_retail_overview_data - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-11: map to dm.dm_zk_retail_product_info - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-11: map to dm.dm_zk_retail_product_info -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC ------------------------------retail/EC原始维度,从b2c配置表直取----------------------------------------- -# MAGIC insert overwrite table dws.dws_zk_retail_product_info -# MAGIC select distinct -# MAGIC product_id -# MAGIC ------------------------------------------------------------- -# MAGIC -- format iqvia_pack_code -# MAGIC ,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 -# MAGIC ------------------------------------------------------------- -# MAGIC ,prescription_nature -# MAGIC ,medicine_type -# MAGIC ,zk_medicine_tier1 -# MAGIC ,zk_medicine_tier2 -# MAGIC ,zk_medicine_tier3 -# MAGIC ,zk_medicine_tier4 -# MAGIC ,common_name -# MAGIC ,dosage_form -# MAGIC ,user_type -# MAGIC ,category_name -# MAGIC ,product_name -# MAGIC ,brand_name -# MAGIC ,zk_manu_des -# MAGIC ,zk_corp_des -# MAGIC ,zk_pack_des -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dwd.dwd_gnd_ext_retail_pack_property; -# MAGIC ------------------------------retail/EC原始维度,从b2c直取 写入dm----------------------------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_product_info -# MAGIC select distinct -# MAGIC product_id -# MAGIC ,iqvia_pack_code -# MAGIC ,prescription_nature -# MAGIC ,medicine_type -# MAGIC ,zk_medicine_tier1 -# MAGIC ,zk_medicine_tier2 -# MAGIC ,zk_medicine_tier3 -# MAGIC ,zk_medicine_tier4 -# MAGIC ,common_name -# MAGIC ,dosage_form -# MAGIC ,user_type -# MAGIC ,category_name -# MAGIC ,product_name -# MAGIC ,brand_name -# MAGIC ,zk_manu_des -# MAGIC ,zk_corp_des -# MAGIC ,zk_pack_des -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dws.dws_zk_retail_product_info; - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-12: map to dm.dm_zk_retail_brand - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-12: map to dm.dm_zk_retail_brand -# MAGIC -- retail 自有部分需要导出数据,从品牌数据报表直取,无特殊加工 -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC ------------------------------retail 自有部分需要导出数据,从品牌数据报表直取,无特殊加工----------------------------------------- -# MAGIC insert overwrite table dws.dws_zk_retail_brand -# MAGIC with max_yq as ( -# MAGIC select TA,market,rc_name_en,province_city,ranked_by,max(yq) as yq -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC group by TA,market,rc_name_en,province_city,ranked_by -# MAGIC ) -# MAGIC -# MAGIC select distinct -# MAGIC t1.TA, -# MAGIC t1.market, -# MAGIC t1.rc_name_en, -# MAGIC t1.province_city -# MAGIC ,key_brand_ytd -# MAGIC ,key_brand_rank_ytd -# MAGIC ,top_brand_ytd -# MAGIC ,top_brand_ms_ytd -# MAGIC ,top_brand_inc_ms_ytd -# MAGIC ,top_brand_gr_ytd -# MAGIC ,key_brand_qtd -# MAGIC ,key_brand_rank_qtd -# MAGIC ,top_brand_qtd -# MAGIC ,top_brand_ms_qtd -# MAGIC ,top_brand_inc_ms_qtd -# MAGIC ,top_brand_gr_qtd -# MAGIC ,t1.ranked_by -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all t1 -# MAGIC inner join max_yq t2 -# MAGIC on t1.TA = t2.TA -# MAGIC and t1.market = t2.market -# MAGIC and t1.rc_name_en = t2.rc_name_en -# MAGIC and t1.province_city = t2.province_city -# MAGIC and t1.yq = t2.yq -# MAGIC and t1.ranked_by = t2.ranked_by -# MAGIC ; -# MAGIC -# MAGIC -- dm_zk_retail_brand -# MAGIC -# MAGIC ------------------------------retail 自有部分需要导出数据,写入dm----------------------------------------- -# MAGIC insert overwrite table dm.dm_zk_retail_brand -# MAGIC select distinct -# MAGIC TA,market,rc_name_en,province_city -# MAGIC ,key_brand_ytd -# MAGIC ,cast(key_brand_rank_ytd as double) key_brand_rank_ytd -# MAGIC ,top_brand_ytd -# MAGIC ,cast(top_brand_ms_ytd as double) top_brand_ms_ytd -# MAGIC ,cast(top_brand_inc_ms_ytd as double) top_brand_inc_ms_ytd -# MAGIC ,cast(top_brand_gr_ytd as double) top_brand_gr_ytd -# MAGIC ,key_brand_qtd -# MAGIC ,cast(key_brand_rank_qtd as double ) key_brand_rank_qtd -# MAGIC ,top_brand_qtd -# MAGIC ,cast(top_brand_ms_qtd as double ) top_brand_ms_qtd -# MAGIC ,cast(top_brand_inc_ms_qtd as double ) top_brand_inc_ms_qtd -# MAGIC ,cast(top_brand_gr_qtd as double ) top_brand_gr_qtd -# MAGIC ,ranked_by -# MAGIC from dws.dws_zk_retail_brand; -# MAGIC -# MAGIC -# MAGIC -# MAGIC -# MAGIC - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-13: map to dm.dm_zk_retail_export - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -- STEP-13: map to dm.dm_zk_retail_export -# MAGIC -# MAGIC --修改时间:20240821 -# MAGIC --修改人:FanXujia -# MAGIC --修改内容: -# MAGIC --导出模板整合,由原来的十几个文件改为3个文件 -# MAGIC --《全国-集团排名》:dwd.dwd_gnd_retail_national_corp_rank -# MAGIC --《全国-产品排名》:dwd.dwd_gnd_retail_national_prd_rank -# MAGIC --《大区-集团排名》:dwd.dwd_gnd_retail_region_corp_rank -# MAGIC ------------------------------------------------------------------------------------- -# MAGIC -# MAGIC insert overwrite table dws.dws_zk_retail_export -# MAGIC ( -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC prod_desc, -# MAGIC cmps_desc, -# MAGIC brand, -# MAGIC region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC file_name, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC --《全国-集团排名》 -# MAGIC select distinct -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC case when upper(trim(rank1)) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else trim(rank1) end as rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC null as prod_desc, -# MAGIC null as cmps_desc, -# MAGIC null as brand, -# MAGIC null as region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC '全国-集团排名' as file_name, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -# MAGIC from dwd.dwd_gnd_retail_national_corp_rank -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC --《全国-产品排名》 -# MAGIC select distinct -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC case when upper(trim(rank1)) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else trim(rank1) end as rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC prod_desc, -# MAGIC cmps_desc, -# MAGIC brand, -# MAGIC null as region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC '全国-产品排名' as file_name, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -# MAGIC from dwd.dwd_gnd_retail_national_prd_rank -# MAGIC -# MAGIC union all -# MAGIC -# MAGIC --《大区-集团排名》 -# MAGIC select distinct -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC case when upper(trim(rank1)) = 'TOTAL' then '99' -# MAGIC when rank1 is null then '98' -# MAGIC else trim(rank1) end as rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC null as prod_desc, -# MAGIC null as cmps_desc, -# MAGIC null as brand, -# MAGIC region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC '大区-集团排名' as file_name, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -# MAGIC from dwd.dwd_gnd_retail_region_corp_rank; -# MAGIC -# MAGIC --写入dm表 -# MAGIC insert overwrite table dm.dm_zk_retail_export -# MAGIC ( -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC prod_desc, -# MAGIC cmps_desc, -# MAGIC brand, -# MAGIC region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC file_name, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC select -# MAGIC ta, -# MAGIC rx_otc, -# MAGIC top_top_incre, -# MAGIC rank1, -# MAGIC corp_desc, -# MAGIC corporation, -# MAGIC type, -# MAGIC prod_desc, -# MAGIC cmps_desc, -# MAGIC brand, -# MAGIC region, -# MAGIC sales_quarter, -# MAGIC sales_amount, -# MAGIC file_name, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC from dws.dws_zk_retail_export; - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ## STEP-14: calculate niad date - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC CREATE OR REPLACE TABLE tmp.tmp_dm_td_ext_retail_niad_month as -# MAGIC WITH ALL_RETIAL_DATA ( -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_niad -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_statin_xzk -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_oap -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_anti_asthma_copd -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_aagsa_ppi_oral -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_atomizer -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_nataional_rd -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_metoprolol_tartrat -# MAGIC union all -# MAGIC select -# MAGIC max( -# MAGIC nvl( -# MAGIC month, -# MAGIC CONCAT( -# MAGIC SUBSTRING(quarter, 1, 4), -- 提取年份(前4位) -# MAGIC CASE -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '1' THEN '03' -- Q1 → 03月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '2' THEN '06' -- Q2 → 06月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '3' THEN '09' -- Q3 → 09月 -# MAGIC WHEN SUBSTRING(quarter, 6, 1) = '4' THEN '12' -- Q4 → 12月 -# MAGIC END -# MAGIC ) -# MAGIC ) -# MAGIC ) as month, -# MAGIC 'NOTNIAD' as datatype -# MAGIC from -# MAGIC dwd.dwd_gnd_ext_retail_htn -# MAGIC ) -# MAGIC SELECT -# MAGIC MAX(t1.month) as NIAD_MONTH, -# MAGIC max(t2.month) OTHERS_MONTH -# MAGIC FROM -# MAGIC all_retial_data t1 -# MAGIC LEFT JOIN ( -# MAGIC SELECT -# MAGIC MAX(month) as month -# MAGIC FROM -# MAGIC all_retial_data -# MAGIC WHERE -# MAGIC datatype = 'NOTNIAD' -# MAGIC ) t2 -# MAGIC WHERE -# MAGIC t1.datatype = 'NIAD' - -# COMMAND ---------- - -############################################################END################################################################ \ No newline at end of file diff --git a/EXTERNAL/Retail/11 map_to_overview_dm_table.py:Zone.Identifier b/EXTERNAL/Retail/11 map_to_overview_dm_table.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/11 map_to_overview_dm_table.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql b/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql deleted file mode 100644 index ff12c73..0000000 --- a/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql +++ /dev/null @@ -1,81 +0,0 @@ --- Databricks notebook source -insert overwrite table dws.dws_tf_external_retail_dtp_special -with dim_geo as ( - SELECT - AUDIT_COD - ,REGION_TYPE - ,PROVINCE_C - FROM DM.DM_TD_EXTERNAL_GEO - WHERE DATA_SOURCE = 'DTP(Quarterly)' - GROUP BY 1,2,3 -) -,all_data (--所有DTP BRAND 中的数据聚合 - select - market - ,province_city - ,yyyymm - ,sum(sales_value) as sales_value - ,sum(sales_volume) as sales_volume - ,sum(pdot_counting_unit) as pdot_counting_unit - from dwd.dwd_gnd_ext_dtp_zk_brand --数据来源表 - where type = '品类' - and market = 'EGFR TKI' - and zk_brand_category ='EGFR TKI Market' - and ranked_by = 'value' - group by 1,2,3 -) -,not_quanguo_data as (--计算非全国部分 - select - market - ,yyyymm - ,sum(sales_value) as sales_value - ,sum(sales_volume) as sales_volume - ,sum(pdot_counting_unit) as pdot_counting_unit - from all_data - where province_city <> '全国' - group by 1,2 -) -,roc_data as (--计算 roc部分的值 = 全国- 非全国合计 - select - a.market - ,'ROC' as province_city - ,a.yyyymm - ,a.sales_value-b.sales_value as sales_value - ,a.sales_volume - b.sales_volume as sales_volume - ,a.pdot_counting_unit - b.pdot_counting_unit as pdot_counting_unit - from all_data a - left join not_quanguo_data b on a.market = b.market and a.yyyymm = b.yyyymm - where a.province_city = '全国' -) -,all_data_with_roc as (--合并全部数据 - select - market - ,province_city - ,yyyymm - ,sales_value - ,sales_volume - ,pdot_counting_unit - from all_data where province_city <> '全国' - union all - select - market - ,province_city - ,yyyymm - ,sales_value - ,sales_volume - ,pdot_counting_unit - from roc_data -) - -select - a.market - ,a.province_city - ,concat(b.AUDIT_COD, 'DTP(Quarterly)', b.REGION_TYPE ) as audit_key --pbi dim_rc 关联键 - ,concat(b.AUDIT_COD, 'DTP(Quarterly)' ) audit_source --pbi dim_geo 关联键 - ,concat(left(a.yyyymm,4),'-',right(a.yyyymm,2),'-01') date_key --pbi dim_date 关联键 - ,a.yyyymm - ,a.sales_value - ,a.sales_volume - ,a.pdot_counting_unit -from all_data_with_roc a -left join dim_geo b on a.province_city = b.PROVINCE_C \ No newline at end of file diff --git a/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql:Zone.Identifier b/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/12 dws_tf_external_retail_dtp_special.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql b/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql deleted file mode 100644 index 7eeb536..0000000 --- a/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql +++ /dev/null @@ -1,184 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RETAIL_SALES -AS -SELECT - A.YYYYMM, - A.iqvia_pack_code AS PACK_CODE, - trim(A.AUDIT_COD) AS AUDIT_CODE, - 'Retail(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) as SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) as SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - A.PACK_FLAG, - A.brand_flag PROD_FLAG, - 0 DTP_FLAG, - case - when - max(lower(C.CMPS_DES)) in ('atorvastatin', 'rosuvastatin', 'esomeprazole', 'omeprazole') - then - 1 - else 0 - end as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 -------------------------------------- -FROM - dm.dm_zk_retail_sales A - LEFT JOIN ( - select DISTINCT - iqvia_pack_code, - CMPS_DES - from - dm.dm_zk_retail_pack_property - ) C - ON A.iqvia_pack_code = C.iqvia_pack_code -where - A.YYYYMM >= '202001' -GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.PACK_FLAG, - A.brand_flag - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_SALES -( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) -SELECT - YYYYMM, - NVL ( - NULLIF(PACK_CODE, ''), - CONCAT ('PACK_CODE_', DATA_SOURCE) - ) AS PACK_CODE, - NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - RETAIL_SALES -; \ No newline at end of file diff --git a/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql:Zone.Identifier b/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/13 DM_TF_EXT_RETAIL_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql b/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql deleted file mode 100644 index b8c6115..0000000 --- a/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql +++ /dev/null @@ -1,170 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_DTP_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_dtp_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_dtp_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RETAIL_DTP_SALES -AS -SELECT - A.YYYYMM, - A.iqvia_pack_code AS PACK_CODE, - trim(A.AUDIT_COD) AS AUDIT_CODE, - 'DTP(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) as SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) as SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - brand_flag AS PROD_FLAG, - 1 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_zk_retail_dtp_sales A - where - A.YYYYMM >= '201901' - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.brand_flag, - A.pack_flag - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_DTP_SALES -( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) -SELECT - YYYYMM, - NVL ( - NULLIF(PACK_CODE, ''), - CONCAT ('PACK_CODE_', DATA_SOURCE) - ) AS PACK_CODE, - NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - RETAIL_DTP_SALES -; \ No newline at end of file diff --git a/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql:Zone.Identifier b/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/14 DM_TF_EXT_RETAIL_DTP_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql b/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql deleted file mode 100644 index 090d0f0..0000000 --- a/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_PACK_PROPERTY --- ( --- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- MARKET STRING, --- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- CLASS STRING, --- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_RETAIL_PACK_PROPERTY -SELECT - MARKET_PACK_KEY, - IQVIA_PACK_CODE AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - IQVIA_PROD_CODE AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - MARKET, - KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - CLASS, - NULL AS MARKET_RATIO, - NULL AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_ZK_RETAIL_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/15 DM_TD_EXT_RETAIL_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql b/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql deleted file mode 100644 index daaf07d..0000000 --- a/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY --- ( --- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- MARKET STRING, --- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- CLASS STRING, --- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_dtp_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_dtp_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY -SELECT - MARKET_PACK_KEY, - iqvia_pack_code AS PACK_CODE, - pack_des AS PACK_DESC, - stgh_des AS STGH_DESC, - pack_lch AS PACK_LCH, - Family_cod AS FAMILY_CODE, - Family_Name AS FAMILY_NAME, - PROD_COD AS PROD_CODE, - prod_des AS PROD_DESC, - prod_des_c AS PROD_DESC_C, - cmps_cod AS CMPS_CODE, - cmps_des AS CMPS_DESC, - cmps_des_c AS CMPS_DESC_C, - atc1_cod AS ATC1_CODE, - atc2_cod AS ATC2_CODE, - atc3_cod AS ATC3_CODE, - atc4_cod AS ATC4_CODE, - app1_cod AS APP1_CODE, - app2_cod AS APP2_CODE, - app3_cod AS APP3_CODE, - BIO_DESC, - gene_orig_desc AS GENE_ORIG_DESC, - eth_otc_desc AS ETH_OTC_DESC, - nrdl_desc AS NRDL_DESC, - NRDL_ENTRY_DATE, - edl_desc AS EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - NULL AS VBP_DESC_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - corp_des AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BrandType AS BRANDTYPE, - MARKET, - KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - AZ_Related AS AZ_RELATED, - atc1_des AS ATC1_DESC, - atc1_des_c AS ATC1_DESC_C, - atc2_des AS ATC2_DESC, - atc2_des_c AS ATC2_DESC_C, - atc3_des AS ATC3_DESC, - atc3_des_c AS ATC3_DESC_C, - atc4_des AS ATC4_DESC, - atc4_des_c AS ATC4_DESC_C, - app1_des AS APP1_DESC, - app1_des_c AS APP1_DESC_C, - app2_des AS APP2_DESC, - app2_des_c AS APP2_DESC_C, - app3_des AS APP3_DESC, - app3_des_c AS APP3_DESC_C, - Class AS CLASS, - NULL AS MARKET_RATIO, - NULL AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_ZK_RETAIL_DTP_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/16 DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql b/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql deleted file mode 100644 index 14dfbea..0000000 --- a/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql +++ /dev/null @@ -1,248 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_DTP_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_dtp_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_pack2market'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW VIEW_EXT_DTP -AS --- 包含规则 -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 DM.DM_TD_EXT_RETAIL_DTP_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_ext_retail_dtp_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 DM.DM_TD_EXT_RETAIL_DTP_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_ext_retail_dtp_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_DTP_PACK2MARKET -SELECT - MARKET, - PACK_CODE, - PACK_DESC, - STGH_DESC, - PACK_LCH, - PROD_CODE, - CMPS_CODE, - CMPS_DESC, - ATC1_CODE, - ATC2_CODE, - ATC3_CODE, - ATC4_CODE, - APP1_CODE, - APP2_CODE, - APP3_CODE, - BIO_DESC, - GENE_ORIG, - ETH_OTC_D, - NRDL_DESC, - NRDL_ENTR, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - VBP_DESC, - MANU_CODE, - MANU_DESC, - MNFL_CODE, - MNFL_DESC, - CORP_CODE, - CORP_DESC, - BRANDTYPE, - BU, - STARTTIME, - ENDTIME, - 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 VIEW_EXT_DTP \ No newline at end of file diff --git a/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/17 DM_TD_EXT_DTP_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql b/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql deleted file mode 100644 index 70b01e7..0000000 --- a/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql +++ /dev/null @@ -1,248 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_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_retail_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack2market'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW VIEW_EXT_RETAIL -AS --- 包含规则 -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 DM.DM_TD_EXT_RETAIL_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_ext_retail_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 DM.DM_TD_EXT_RETAIL_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_ext_retail_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_RETAIL_PACK2MARKET -SELECT - MARKET, - PACK_CODE, - PACK_DESC, - STGH_DESC, - PACK_LCH, - PROD_CODE, - CMPS_CODE, - CMPS_DESC, - ATC1_CODE, - ATC2_CODE, - ATC3_CODE, - ATC4_CODE, - APP1_CODE, - APP2_CODE, - APP3_CODE, - BIO_DESC, - GENE_ORIG, - ETH_OTC_D, - NRDL_DESC, - NRDL_ENTR, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - VBP_DESC, - MANU_CODE, - MANU_DESC, - MNFL_CODE, - MNFL_DESC, - CORP_CODE, - CORP_DESC, - BRANDTYPE, - BU, - STARTTIME, - ENDTIME, - 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 VIEW_EXT_RETAIL \ No newline at end of file diff --git a/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/17 DM_TD_EXT_RETAIL_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql b/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql deleted file mode 100644 index 9aadbf4..0000000 --- a/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_DTP_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_dtp_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_DTP_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_DTP_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/18 DM_TD_EXT_DTP_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql b/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql deleted file mode 100644 index 0f5feb3..0000000 --- a/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_retail_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_RETAIL_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_RETAIL_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/18 DM_TD_EXT_RETAIL_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql b/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 3876d22..0000000 --- a/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,160 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_DTP_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_DTP_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_DTP_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD \ No newline at end of file diff --git a/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/19 DM_TD_EXT_DTP_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql b/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql deleted file mode 100644 index c61532a..0000000 --- a/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_RETAIL_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/19 DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql b/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 824fd4c..0000000 --- a/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,88 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_DTP_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_dtp_market_pack_mapping'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DTP_MARKET_PACK_MAPPING -AS -SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T1.CLASS, - T1.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END - FROM -DM.DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY T1 -LEFT JOIN DM.DM_TD_EXT_DTP_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE -LEFT JOIN DM.DM_TD_EXT_DTP_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE -WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_DTP_MARKET_PACK_MAPPING -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM DTP_MARKET_PACK_MAPPING \ No newline at end of file diff --git a/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/20 DM_TD_EXT_DTP_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql b/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 3e49038..0000000 --- a/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,88 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_pack_mapping'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW RETAIL_MARKET_PACK_MAPPING -AS -SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T1.CLASS, - T1.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END - FROM -DM.DM_TD_EXT_RETAIL_PACK_PROPERTY T1 -LEFT JOIN DM.DM_TD_EXT_RETAIL_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE -LEFT JOIN DM.DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE -WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM RETAIL_MARKET_PACK_MAPPING \ No newline at end of file diff --git a/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/20 DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py b/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py deleted file mode 100644 index d827c18..0000000 --- a/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py +++ /dev/null @@ -1,367 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC ### 原本逻辑 - -# COMMAND ---------- - -#当更新pack 或品牌 事实数据时需要运行此代码,否则无需运行。 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_oap' where file_name ='pack-CV-抗血栓2通用名-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_htn' where file_name ='pack-CV-高血压-化学药-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_atomizer' where file_name ='pack-雾化器-全国&县域数据.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_anti_asthma_copd' where file_name ='pack-RE-慢阻肺-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_zk_brand' where file_name ='Brand-品牌数据报表.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_statin_xzk' where file_name ='pack-CV-他汀类+血脂康-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_rd' where file_name ='pack-RD-肾科-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_aagsa_ppi_oral' where file_name ='pack-GI-慢性胃炎胃溃疡-全国.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_nataional_niad' where file_name ='pack-DM-口服降糖化学药.xlsx'; -# MAGIC update dwd.dwd_gnd_ext_retail_corresponding_relationship set table_name ='dwd.dwd_gnd_ext_retail_metoprolol_tartrat' where file_name ='pack-CV-酒石酸美托洛尔.xlsx'; -# MAGIC - -# COMMAND ---------- - - # pack数据自动接入 整合 -#获取配置表信息(表名、brand_flag -df = spark.sql(""" -SELECT DISTINCT table_name tab ,file_name brand_flag FROM dwd.dwd_gnd_ext_retail_corresponding_relationship -where type_name ='PACK' -""").collect() - -def get_union_pack_data(df): - #初始化结果集 - union_query = None - # niad_pdot_unit需特殊赋值对应表名:tmp.tmp_inc_gnd_ext_retail_nataional_niad - # niad_pdot_unit_flag = 'tmp.tmp_inc_gnd_ext_retail_nataional_niad' - for table in df: - # 选择当前表名 - T = str(table.tab) - # 获取对应brand表维度对应得 market 名称 - brand_flag = str(table.brand_flag) - sql = f""" - select - cast(t1.month as int) AS YYYYMM - ,cast(left(t1.quarter, 4) as int) AS year - ,right(t1.quarter, 2) AS quarter - ,t1.quarter AS yq - ,t1.zk_product_id - ,t1.zk_region - ,t1.zk_rx_otc - ,t1.zk_medicine_type - ,t1.zk_medicine_tier1 - ,t1.zk_medicine_tier2 - ,t1.zk_medicine_tier3 - ,t1.zk_medicine_tier4 - ,t1.zk_common_name - ,t1.zk_dosage_form - ,t1.zk_user_type - ,t1.zk_category_name - ,t1.zk_product_name - ,t1.zk_brand_name - ,t1.zk_manu_des - ,t1.zk_corp_des - ,t1.zk_pack_des - ,t1.price - ,CAST(replace(t1.sales_unit,',','') AS decimal(30,10)) as sales_unit - ,CAST(replace(t1.sales_value,',','') AS decimal(30,10)) as sales_value - ,CAST(replace(t1.digital_spread_rate,',','') AS decimal(30,10)) as digital_spread_rate - ,CAST(replace(t1.weighted_spread_rate,',','') AS decimal(30,10)) as weighted_spread_rate - ,CAST(replace(t1.counting_unit,',','') AS decimal(30,10)) as counting_unit - ,'{brand_flag}' as brand_flag - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt - from {T} t1 - left join dws.dws_ext_retail_td_prod t2 - on t1.zk_product_id = t2.zk_product_id - where month is not null - """ - # 读取数据 - current_query = spark.sql(sql) - #union 数据 - if union_query ==None: - union_query=current_query - else: - union_query = union_query.union(current_query) - #返回数据集 / 写入表也行??? - return union_query -pack_result = get_union_pack_data(df) -pack_result.write.mode("overwrite").saveAsTable("dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all") - -# COMMAND ---------- - - -# brand+ 省份数据自动接入 -#获取配置表信息(表名、brand_flag -dfband = spark.sql(""" -SELECT DISTINCT table_name tab ,file_name brand_flag FROM dwd.dwd_gnd_ext_retail_corresponding_relationship -where type_name ='BRAND' -""").collect() - -def get_union_brand_data(df): - #数据为空 - if df == None: - return None - #初始化结果集 - union_query = None - for table in df: - # 选择当前表名 - T = str(table.tab) - # 获取对应brand表维度对应得 market 名称 - pack_flag = str(table.brand_flag) - sql = f""" - select - cast(left(quarter, 4)*100 + right(quarter,1)*3 as int ) AS YYYYMM - ,cast(left(quarter, 4) as int ) AS year - ,right(quarter, 2) AS quarter - ,quarter AS yq - ,type AS brand_cat_type - ,case when ta = 'NIAD' then 'DM' else ta end AS TA - ,market AS market - ,zk_brand_category AS zk_brand_category - ,zk_common_name AS zk_common_name - ,zk_manu_des AS zk_manu_des - ,rc_name_en AS rc_name_en - ,province_city AS province_city - ,ytd AS ytd - ,cast(sales_value * 1000000 as decimal(30,10)) AS sales_val - ,cast(sales_volume * 1000000 as decimal(30,10)) AS sales_vol - ,cast(price as decimal(30,10)) as price - ,cast(num_dist_rate as decimal(30,10)) as num_dist_rate - ,cast(weig_dist_rate as decimal(30,10)) as weig_dist_rate - ,cast(value_share as decimal(30,10)) as val_share - ,cast(volume_share as decimal(30,10)) as vol_share - ,replace(key_brand_ytd,'-','') as key_brand_ytd - ,cast(replace(key_brand_rank_ytd,'-','0') as int) as key_brand_rank_ytd - ,replace(top_brand_ytd,'-','') as top_brand_ytd - ,cast(replace(top_brand_ms_ytd,'-','0') as decimal(30,10)) as top_brand_ms_ytd - ,cast(replace(top_brand_inc_ms_ytd,'-','0') as decimal(30,10)) as top_brand_inc_ms_ytd - ,cast(replace(top_brand_gr_ytd,'-','0') as decimal(30,10)) as top_brand_gr_ytd - ,replace(key_brand_qtd,'-','') as key_brand_qtd - ,cast(replace(key_brand_rank_qtd,'-','0') as int) as key_brand_rank_qtd - ,replace(top_brand_qtd,'-','') as top_brand_qtd - ,cast(replace(top_brand_ms_qtd,'-','0') as decimal(30,10)) as top_brand_ms_qtd - ,cast(replace(top_brand_inc_ms_qtd,'-','0') as decimal(30,10)) as top_brand_inc_ms_qtd - ,cast(replace(top_brand_gr_qtd,'-','0') as decimal(30,10)) as top_brand_gr_qtd - ,ranked_by as ranked_by - ,'{pack_flag}' as pack_flag - ,from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt - from {T} - """ - # 读取数据 - current_query = spark.sql(sql) - #union 数据 - if union_query == None: - union_query = current_query - else: - union_query = union_query.union(current_query) - #返回数据集 / 写入表也行??? - return union_query -brand_result = get_union_brand_data(dfband) -brand_result.write.mode("overwrite").saveAsTable("dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all") - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC ----------------------多达一、天一宁、others、氨氯地平阿托伐他汀钙 数据在 高血压和他汀血脂康里面重复,但该数据在品牌报表里面没有对应的值,会导致后续拆分到pack + 省份时得到的结果不一致,因此需要将高血压或者他汀血脂康数据 根据pack+ 全国数据按省份数平均分配,并汇总到品牌维度,写入品牌数据报表,为后续pack +全国拆分到pack + 省份 提供数据基础 -# MAGIC insert overwrite table dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC with data_pack as ( -# MAGIC ----------底表获取基础数据----pack 汇总到品牌 --并按省份数量平均 -# MAGIC select brand_flag,a.YYYYMM,nvl(b.prod_des_c,'OTHERS' ) prod_des_c ,sum(a.sales_value)/sum(num) sales_value,sum(a.sales_unit)/sum(num) sales_unit ,sum(a.sales_value) sales ,sum(a.sales_unit) saleu -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a -# MAGIC left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id = b.product_id -# MAGIC cross join (select count(distinct zk_region) num from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all where zk_region<>'全国') -# MAGIC where a.zk_common_name ='氨氯地平阿托伐他汀钙' and a.brand_flag in ('pack-CV-他汀类+血脂康-全国.xlsx' ,'pack-CV-高血压-化学药-全国.xlsx','pack-CV-抗血栓2通用名-全国.xlsx') -# MAGIC group by 1,2,3 -# MAGIC ),city as ( -# MAGIC ----获取省份及年月头表 -# MAGIC select distinct -# MAGIC YYYYMM -# MAGIC ,year -# MAGIC ,quarter -# MAGIC ,yq -# MAGIC ,province_city -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC where province_city !='全国' and ranked_by ='volume' -# MAGIC ) -# MAGIC , split as ( -# MAGIC ------分别补充全国数据、品牌数据------ -# MAGIC select -# MAGIC city.YYYYMM -# MAGIC ,year -# MAGIC ,quarter -# MAGIC ,yq -# MAGIC ,'品牌' brand_cat_type -# MAGIC ,'CV' TA -# MAGIC ,brand_flag market -# MAGIC ,prod_des_c -# MAGIC ,'' -# MAGIC ,'' -# MAGIC ,'' -# MAGIC ,province_city -# MAGIC ,'' -# MAGIC ,sales_value -# MAGIC ,sales_unit -# MAGIC ,0,0,0,0,0,'' ,0 ,'' ,0,0,0,'',0,'',0,0,0,'volume' ,'' -# MAGIC from data_pack left join city on city.YYYYMM=data_pack.YYYYMM -# MAGIC union all -# MAGIC select -# MAGIC city.YYYYMM -# MAGIC ,year -# MAGIC ,quarter -# MAGIC ,yq -# MAGIC ,'品牌' brand_cat_type -# MAGIC ,'CV' TA -# MAGIC ,brand_flag market -# MAGIC ,prod_des_c -# MAGIC ,'' -# MAGIC ,'' -# MAGIC ,'' -# MAGIC ,'全国' province_city -# MAGIC ,'' -# MAGIC ,sales sales_value -# MAGIC ,saleu sales_unit -# MAGIC ,0,0,0,0,0,'' ,0 ,'' ,0,0,0,'',0,'',0,0,0,'volume' ,'' -# MAGIC from data_pack left join (select distinct year,quarter,yyyymm,yq from city ) city on city.YYYYMM=data_pack.YYYYMM -# MAGIC -# MAGIC ) -# MAGIC select * from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC union all -# MAGIC select * -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt -# MAGIC ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt -# MAGIC from split - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC --补位 -# MAGIC with tmp as ( -# MAGIC select -# MAGIC YYYYMM, -# MAGIC year, -# MAGIC quarter, -# MAGIC yq, -# MAGIC case when length(zk_product_id) < 7 then right(concat('0000000',zk_product_id),7) else zk_product_id end as zk_product_id, -# MAGIC zk_region, -# MAGIC zk_rx_otc, -# MAGIC zk_medicine_type, -# MAGIC zk_medicine_tier1, -# MAGIC zk_medicine_tier2, -# MAGIC zk_medicine_tier3, -# MAGIC zk_medicine_tier4, -# MAGIC zk_common_name, -# MAGIC zk_dosage_form, -# MAGIC zk_user_type, -# MAGIC zk_category_name, -# MAGIC zk_product_name, -# MAGIC zk_brand_name, -# MAGIC zk_manu_des, -# MAGIC zk_corp_des, -# MAGIC zk_pack_des, -# MAGIC price, -# MAGIC sales_unit, -# MAGIC sales_value, -# MAGIC digital_spread_rate, -# MAGIC weighted_spread_rate, -# MAGIC counting_unit, -# MAGIC brand_flag, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all -# MAGIC -- pack-CV-酒石酸美托洛尔.xlsx的数据没有了,所以排除 酒石酸美托洛尔 -# MAGIC where brand_flag<>'pack-CV-酒石酸美托洛尔.xlsx' -# MAGIC ) -# MAGIC -# MAGIC insert overwrite dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all -# MAGIC select * -# MAGIC from tmp; - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 新逻辑 -# MAGIC - 修改brand数据,先拆分成月维度的数据 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC /* -# MAGIC 修改时间:20250311 -# MAGIC 修改人:chenwu -# MAGIC 修改内容:brand来数频率为 季度来数, 但是 pack 为 月度来数据,需要用季度的数据/3得到月度的 -# MAGIC */ -# MAGIC insert overwrite table dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC with quarterly_table as ( -# MAGIC select -# MAGIC * -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC where market not in ('NIAD','Inhaled Extended Market','布地奈德雾化溶液') -# MAGIC -- 范围内只能是 季度来数据的,如果有月度来数据的需要排除掉 -# MAGIC ) -# MAGIC -# MAGIC ,month_table as (--转化成月度数据 -# MAGIC SELECT -# MAGIC SUBSTR(q.yq, 1, 4)*100 + -- 提取年份 -# MAGIC LPAD(m.month_num, 2, '0') -- 补零月份 -# MAGIC AS YYYYMM -- 月份首日 -# MAGIC ,`year` -# MAGIC ,`quarter` -# MAGIC ,yq -# MAGIC ,brand_cat_type -# MAGIC ,TA -# MAGIC ,market -# MAGIC ,zk_brand_category -# MAGIC ,zk_common_name -# MAGIC ,zk_manu_des -# MAGIC ,rc_name_en -# MAGIC ,province_city -# MAGIC ,ytd -# MAGIC ,sales_val /3 --除3 -# MAGIC ,sales_vol /3 --除3 -# MAGIC ,price -# MAGIC ,num_dist_rate -# MAGIC ,weig_dist_rate -# MAGIC ,val_share -# MAGIC ,vol_share -# MAGIC ,key_brand_ytd -# MAGIC ,key_brand_rank_ytd -# MAGIC ,top_brand_ytd -# MAGIC ,top_brand_ms_ytd -# MAGIC ,top_brand_inc_ms_ytd -# MAGIC ,top_brand_gr_ytd -# MAGIC ,key_brand_qtd -# MAGIC ,key_brand_rank_qtd -# MAGIC ,top_brand_qtd -# MAGIC ,top_brand_ms_qtd -# MAGIC ,top_brand_inc_ms_qtd -# MAGIC ,top_brand_gr_qtd -# MAGIC ,ranked_by -# MAGIC ,pack_flag -# MAGIC ,etl_insert_dt -# MAGIC ,etl_update_dt -# MAGIC FROM -# MAGIC quarterly_table q -# MAGIC LATERAL VIEW EXPLODE( -- 为每季度生成三个月 -# MAGIC CASE -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q1' THEN ARRAY(1, 2, 3) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q2' THEN ARRAY(4, 5, 6) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q3' THEN ARRAY(7, 8, 9) -# MAGIC WHEN RIGHT(q.yq, 2) = 'Q4' THEN ARRAY(10, 11, 12) -# MAGIC END -# MAGIC ) m AS month_num -# MAGIC ) -# MAGIC -# MAGIC ,other_not_quarterly_table ( -# MAGIC select -# MAGIC * -# MAGIC from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -# MAGIC where market in ('NIAD','Inhaled Extended Market','布地奈德雾化溶液') -# MAGIC -- 范围内只能是 月度来数据的 -# MAGIC ) -# MAGIC -# MAGIC select * from month_table -# MAGIC union all -# MAGIC select * from other_not_quarterly_table \ No newline at end of file diff --git a/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py:Zone.Identifier b/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/z1 dwd_inc_gnd_ext_retail_nataional_作废.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/z2 retail_load_data_作废.sql b/EXTERNAL/Retail/z2 retail_load_data_作废.sql deleted file mode 100644 index f5142ab..0000000 --- a/EXTERNAL/Retail/z2 retail_load_data_作废.sql +++ /dev/null @@ -1,6276 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ### 维度信息计算 - --- COMMAND ---------- - -------------------------------------------------------------------------------------- ---修改时间:20240819 ---修改人:FanXujia ---修改内容: ---模板整合,将原本的十几个手工表改成3个表。 ---其中, ---新文件《全国-集团排名》筛选:TA=Retail Total,Rx/OTC= Rx,Top/Top Incre. = Top Sales,对应了旧文件:《全国-Rx-TOP集团》 ---新文件《全国-集团排名》筛选:TA <> Retail Total,Top/Top Incre. = Top Sales,对应了旧文件:《全国-分TA-TOP集团》 ---《全国-集团排名》:dwd.dwd_gnd_retail_national_corp_rank ---《全国-产品排名》:dwd.dwd_gnd_retail_national_prd_rank ---《大区-集团排名》:dwd.dwd_gnd_retail_region_corp_rank -------------------------------------------------------------------------------------- - --- COMMAND ---------- - ---直接写入旧的文件对应的表,这样后面的代码都不用改动。 ---新文件《全国-集团排名》筛选:TA=Retail Total,Rx/OTC= Rx,Top/Top Incre. = Top Sales,对应了旧文件:《全国-Rx-TOP集团》 -insert overwrite table dwd.dwd_gnd_ext_retail_nataional_top_corp -( -rank1, -corp_desc, -corporation, -corp_type, -sales_quarter, -sales_amount, -ytd_gr, -ytd_ms, -ytd_delta_ms, -builtinarchivedate, -source_file_path, -source_file_name, -etl_insert_dt -) -select -trim(rank1) as rank1, -corp_desc, -corporation, -`type` as corp_type, -sales_quarter, -sales_amount, -null as ytd_gr, -null as ytd_ms, -null as ytd_delta_ms, -builtinarchivedate, -source_file_path, -source_file_name, -etl_insert_dt -from dwd.dwd_gnd_retail_national_corp_rank -where upper(ta) = 'RETAIL TOTAL' -and upper(rx_otc) = 'RX' -and upper(top_top_incre) = 'TOP SALES' - --- COMMAND ---------- - ---直接写入旧的文件对应的表,这样后面的代码都不用改动。 ---新文件《全国-集团排名》筛选:TA <> Retail Total,Top/Top Incre. = Top Sales,对应了旧文件:《全国-分TA-TOP集团》 -insert overwrite table dwd.dwd_gnd_ext_retail_nataional_ta_top_corp -( -rank1, -corp_desc, -corp_name, -corp_type, -source_name, -sales_quarter, -sales_amount, -ytd_gr, -ytd_ms, -ytd_delta_ms, -builtinarchivedate, -source_file_path, -source_file_name, -etl_insert_dt -) -select -trim(rank1) as rank1, -corp_desc, -corporation as corp_name, -`type` as corp_type, -case when ta = 'GI' then concat(ta,'-',rx_otc) - when ta = 'NIAD-excl. GLP1' then 'DM' - else ta end as source_name, -sales_quarter, -sales_amount, -null as ytd_gr, -null as ytd_ms, -null as ytd_delta_ms, -builtinarchivedate, -source_file_path, -source_file_name, -etl_insert_dt -from dwd.dwd_gnd_retail_national_corp_rank -where upper(ta) <> 'RETAIL TOTAL' -and upper(top_top_incre) = 'TOP SALES' - --- COMMAND ---------- - --------------------从底表获取market 与ta 对应关系------------------------------ -insert overwrite table dws.dws_ext_retail_td_ta -select - market, - ta, - from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, - from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from dwd.dwd_gnd_ext_retail_dim_ta; - --- COMMAND ---------- - ---增加retail的省份和城市 geo表 - with t1 as ( - ----获取底表的 province_city -select province_city -from (select zk_region province_city from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all -union all -select province_city from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all) - group by province_city ----增加dtp的部分 -UNION -select distinct province_city from dwd.dwd_gnd_ext_dtp_zk_brand -) -, tmp as ( -----------------按照retail 逻辑划分福厦泉、全国,并从chpa的geo中提取其他维度信息--------------------- -select distinct - case when t1.province_city = '全国' then 'CHT' - when t1.province_city = '福厦泉' then 'FXQ' - else - nvl(t2.geo_key, t3.geo_key) - end geo_key, - t4.AZ_City_tier - ,t4.city_tier, - province_city, - t3.city_name, - t3.city_code, - t3.city_name_en, - case when t1.province_city = '福厦泉' then '福建' - when t1.province_city = '全国' then '全国' - else - nvl(t3.province_name,t2.province_name) - end province_name, - case when t1.province_city = '福厦泉' then 'FJ' - when t1.province_city = '全国' then 'National' - else - nvl(t3.province_code,t2.province_code) - end province_code, - case when t1.province_city = '福厦泉' then 'Fujian' - when t1.province_city = '全国' then 'National' - else - nvl(t3.province_name_en,t2.province_name_en) - end province_name_en, - case when t1.province_city = '福厦泉' then 'SOUTH' - when t1.province_city = '全国' then 'National' - else - nvl(t3.area_code,t2.area_code) - end area_code, - case when t1.province_city = '福厦泉' then '南部地区' - when t1.province_city = '全国' then 'National' - else - nvl(t3.area_name,t2.area_name) - end area_name, - case when t1.province_city = '福厦泉' then 'South China' - when t1.province_city = '全国' then 'National' - else - nvl(t3.area_name_en,t2.area_name_en) - end area_name_en, - - case when t1.province_city = '福厦泉' then 'SOUTH' - when t1.province_city = '全国' then 'National' - else - nvl(t3.rc_code,t2.rc_code) - end rc_code, - case when t1.province_city = '福厦泉' then '南部地区' - when t1.province_city = '全国' then 'National' - else - nvl(t3.rc_name,t2.rc_name) - end rc_name, - case when t1.province_city = '福厦泉' then 'South China' - when t1.province_city = '全国' then 'National' - else - nvl(t3.rc_name_en,t2.rc_name_en) - end rc_name_en -from t1 left -join dm.dm_td_geography t2 -on t1.province_city = t2.province_name and t2.geo_key = t2.province_code -left join dm.dm_td_geography t3 -on t1.province_city = replace(t3.city_name,'市','') and t3.geo_key = t3.city_code -left join dws.dws_ims_td_geo t4 -on t1.province_city = replace(t4.AUDIT_DES_C,'市','') -) --------------------省份、自治区等处理----------------------- -insert overwrite table dm.dm_zk_retail_geo -SELECT - geo_key - ,city_name_en - ,replace(city_name,'市') city_c - ,case when city_code is not null then 'City' else 'Province' END city_type - ,city_tier - ,AZ_City_tier - ,province_name_en - ,province_name - ,province_code - ,city_name city_map - ,case when province_code in ('TJ','CQ','BJ','SH') then concat(province_name,'市') - when province_code in ('SC','YN','LN','SA','GZ','HN','HL','SX','ZJ','JS','SD','JL','FJ','GD','HU','AH','GS','HE','JX','HB') then concat(province_name,'省') - when province_code ='GX' THEN concat(province_name,'壮族自治区') - when province_code ='IM' THEN concat(province_name,'自治区') - ELSE province_name - end province_map - ,city_code - ,province_city - ,area_code - ,area_name - ,area_name_en - ,rc_code - ,rc_name - ,rc_name_en - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt - from tmp - -UNION ALL - -SELECT -'ROC' -,'Other Low Tiers' -,'Other Low Tiers' -,'City' -, 1 -, 1 -,'Other Low Tiers' -,'Other Low Tiers' -, null -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' -,'Other Low Tiers' - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt - --- COMMAND ---------- - -/** - B2C标签表整合关联tblmarket 表,获取market 信息 - -*/ -insert overwrite table tmp.tmp_zk_retail_pack_property -with tmp1 as ( - - select distinct - prod.iqvia_lineno - ,if( prod.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',prod.iqvia_pack_code),12),prod.iqvia_pack_code) as iqvia_pack_code --right(concat('0000000',prod.iqvia_pack_code),7) - , right(concat('000000000',prod.iqvia_prod_code),9) as PROD_COD - ,prod.iqvia_notes - ,prod.new_pack_flag - ,prod.is_exists_chpa - ,prod.product_id - ,prod.prescription_nature - ,prod.medicine_type - ,prod.zk_medicine_tier1 - ,prod.zk_medicine_tier2 - ,prod.zk_medicine_tier3 - ,prod.zk_medicine_tier4 - ,prod.common_name - ,prod.dosage_form - ,prod.user_type - ,prod.category_name - ,prod.product_name - ,prod.brand_name - ,prod.zk_manu_des - ,prod.zk_corp_des - ,prod.zk_pack_des - ,prod.counting_unit_a - ,prod.dosage_unit_a - ,prod.unit_a - ,prod.app1_cod - ,prod.app1_des - ,prod.app1_des_c - ,prod.app2_cod - ,prod.app2_des - ,prod.app2_des_c - ,prod.app3_cod - ,prod.app3_des - ,prod.app3_des_c - ,prod.atc1_cod - ,prod.atc1_des - ,prod.atc1_des_c - ,prod.atc2_cod - ,prod.atc2_des - ,prod.atc2_des_c - ,prod.atc3_cod - ,prod.atc3_des - ,prod.atc3_des_c - ,prod.atc4_cod - ,prod.atc4_des - ,prod.atc4_des_c - ,prod.bio_desc - ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod - ,prod.cmps_des - ,prod.cmps_des_c - ,prod.corp_cod - ,prod.corp_des - ,prod.corp_des_c - ,prod.edl_desc - ,prod.eth_otc_desc - ,prod.gene_orig_desc - ,prod.gqce_desc - ,prod.manu_cod - ,prod.manu_des - ,prod.manu_des_c - ,prod.mnfl_cod - ,prod.mnfl_des - ,prod.nrdl_desc - ,prod.pack_des - ,prod.stgh_des - ,prod.pack_lch - ,prod.paed_desc - ,prod.prod_des - ,prod.prod_des_c - ,prod.tcm_desc - ,prod.vbp_desc - ,prod.unit - ,prod.counting_unit - ,prod.dosage_unit - ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE - ,tblmkt.market - ,tblmkt.bu - ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio -from dwd.dwd_gnd_ext_retail_pack_property prod -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON prod.iqvia_pack_code = MOLE.Pack_Code -left join ( - select market - ,bu - ,atc1_code - ,atc2_code - ,atc3_code - ,atc4_code - ,nfc1_code - ,nfc2_code - ,nfc3_code - ,pack_code - ,Molecule_Code - ,zk_common_name - ,extend_market_ratio - ,zk_product_id - ,zk_dosage_form - ,Product_Code - ,not_in_flag - ,extend_market - from dwd.dwd_gnd_ext_retail_tblmarket - -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end)) - where 1=1 - and Extend_Market IS NULL - AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' ) -)tblmkt -on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end -and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end -and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end -and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end -and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end -and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end -and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end -and right(concat('000000000',nvl(prod.iqvia_prod_code,0 )),9) = case when tblmkt.Product_Code is null then right(concat('000000000',nvl(prod.iqvia_prod_code,0 )),9) else right(concat('000000000',nvl(tblmkt.Product_Code,0 )),9) end -and if(nvl(prod.iqvia_pack_code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(prod.iqvia_pack_code,0 )),12),nvl(prod.iqvia_pack_code,0 )) - = case when tblmkt.Pack_Code is null then if(nvl(prod.iqvia_pack_code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(prod.iqvia_pack_code,0 )),12),nvl(prod.iqvia_pack_code,0 )) - else if(nvl(tblmkt.Pack_Code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(tblmkt.Pack_Code,0 )),12),nvl(tblmkt.Pack_Code,0 )) end --- and right(concat('00000',nvl(prod.iqvia_prod_code,0 )),5) = case when tblmkt.Product_Code is null then right(concat('00000',nvl(prod.iqvia_prod_code,0 )),5) else right(concat('00000',nvl(tblmkt.Product_Code,0 )),5) end --- and right(concat('0000000',nvl(prod.iqvia_pack_code,0 )),7) = case when tblmkt.Pack_Code is null then right(concat('0000000',nvl(prod.iqvia_pack_code,0 )),7) else right(concat('0000000',tblmkt.Pack_Code ),7 ) end -and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end -where tblmkt.market is not null - -) -, tmp2 as ( - - select distinct - prod.iqvia_lineno - ,if( prod.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',prod.iqvia_pack_code),12),prod.iqvia_pack_code) as iqvia_pack_code --right(concat('0000000',prod.iqvia_pack_code),7) - , right(concat('000000000',prod.iqvia_prod_code),9) as PROD_COD - ,prod.iqvia_notes - ,prod.new_pack_flag - ,prod.is_exists_chpa - ,prod.product_id - ,prod.prescription_nature - ,prod.medicine_type - ,prod.zk_medicine_tier1 - ,prod.zk_medicine_tier2 - ,prod.zk_medicine_tier3 - ,prod.zk_medicine_tier4 - ,prod.common_name - ,prod.dosage_form - ,prod.user_type - ,prod.category_name - ,prod.product_name - ,prod.brand_name - ,prod.zk_manu_des - ,prod.zk_corp_des - ,prod.zk_pack_des - ,prod.counting_unit_a - ,prod.dosage_unit_a - ,prod.unit_a - ,prod.app1_cod - ,prod.app1_des - ,prod.app1_des_c - ,prod.app2_cod - ,prod.app2_des - ,prod.app2_des_c - ,prod.app3_cod - ,prod.app3_des - ,prod.app3_des_c - ,prod.atc1_cod - ,prod.atc1_des - ,prod.atc1_des_c - ,prod.atc2_cod - ,prod.atc2_des - ,prod.atc2_des_c - ,prod.atc3_cod - ,prod.atc3_des - ,prod.atc3_des_c - ,prod.atc4_cod - ,prod.atc4_des - ,prod.atc4_des_c - ,prod.bio_desc - ,right(concat('000000',nvl(prod.cmps_cod,0 )),6) cmps_cod - ,prod.cmps_des - ,prod.cmps_des_c - ,prod.corp_cod - ,prod.corp_des - ,prod.corp_des_c - ,prod.edl_desc - ,prod.eth_otc_desc - ,prod.gene_orig_desc - ,prod.gqce_desc - ,prod.manu_cod - ,prod.manu_des - ,prod.manu_des_c - ,prod.mnfl_cod - ,prod.mnfl_des - ,prod.nrdl_desc - ,prod.pack_des - ,prod.stgh_des - ,prod.pack_lch - ,prod.paed_desc - ,prod.prod_des - ,prod.prod_des_c - ,prod.tcm_desc - ,prod.vbp_desc - ,prod.unit - ,prod.counting_unit - ,prod.dosage_unit - ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE - ,tblmkt.market - ,tblmkt.bu - ,nvl(tblmkt.extend_market_ratio,1) as extend_market_ratio - ,1 as f_flag -from dwd.dwd_gnd_ext_retail_pack_property prod -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON prod.iqvia_pack_code = MOLE.Pack_Code -left join ( - select market - ,bu - ,atc1_code - ,atc2_code - ,atc3_code - ,atc4_code - ,nfc1_code - ,nfc2_code - ,nfc3_code - ,pack_code - ,Molecule_Code - ,zk_common_name - ,extend_market_ratio - ,zk_product_id - ,zk_dosage_form - ,Product_Code - ,not_in_flag - ,extend_market - from dwd.dwd_gnd_ext_retail_tblmarket - -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end)) - where 1=1 - and Extend_Market IS NULL and NOT_IN_FLAG ='0' - -)tblmkt -on nvl(prod.ATC1_COD,'') = case when tblmkt.ATC1_Code is null then nvl(prod.ATC1_COD,'') else tblmkt.ATC1_Code end -and nvl(prod.ATC2_COD,'') = case when tblmkt.ATC2_Code is null then nvl(prod.ATC2_COD,'') else tblmkt.ATC2_Code end -and nvl(prod.ATC3_COD,'') = case when tblmkt.ATC3_Code is null then nvl(prod.ATC3_COD,'') else tblmkt.ATC3_Code end -and nvl(prod.ATC4_COD,'') = case when tblmkt.ATC4_Code is null then nvl(prod.ATC4_COD,'') else tblmkt.ATC4_Code end -and nvl(prod.APP1_COD,'') = case when tblmkt.NFC1_Code is null then nvl(prod.APP1_COD,'') else tblmkt.NFC1_Code end -and nvl(prod.APP2_COD,'') = case when tblmkt.NFC2_Code is null then nvl(prod.APP2_COD,'') else tblmkt.NFC2_Code end -and nvl(prod.APP3_COD,'') = case when tblmkt.NFC3_Code is null then nvl(prod.APP3_COD,'') else tblmkt.NFC3_Code end -and right(concat('000000000',nvl(prod.iqvia_prod_code,0 )),9) = case when tblmkt.Product_Code is null then right(concat('000000000',nvl(prod.iqvia_prod_code,0 )),9) else right(concat('000000000',nvl(tblmkt.Product_Code,0 )),9) end -and if(nvl(prod.iqvia_pack_code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(prod.iqvia_pack_code,0 )),12),nvl(prod.iqvia_pack_code,0 )) - = case when tblmkt.Pack_Code is null then if(nvl(prod.iqvia_pack_code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(prod.iqvia_pack_code,0 )),12),nvl(prod.iqvia_pack_code,0 )) - else if(nvl(tblmkt.Pack_Code,0 ) REGEXP '^[0-9]' ,right(concat('000000000000',nvl(tblmkt.Pack_Code,0 )),12),nvl(tblmkt.Pack_Code,0 )) end -and right(concat('000000',nvl(prod.cmps_cod,0 )),6) = case when tblmkt.Molecule_Code is null then right(concat('000000',nvl(prod.cmps_cod,0 )),6) else right(concat('000000',nvl(tblmkt.Molecule_Code,0 )),6) end -where tblmkt.market is not null - - -) -, tmp3 as ( - select distinct - tmp1.iqvia_lineno - ,tmp1.iqvia_pack_code - ,tmp1.PROD_COD - ,tmp1.iqvia_notes - ,tmp1.new_pack_flag - ,tmp1.is_exists_chpa - ,tmp1.product_id - ,tmp1.prescription_nature - ,tmp1.medicine_type - ,tmp1.zk_medicine_tier1 - ,tmp1.zk_medicine_tier2 - ,tmp1.zk_medicine_tier3 - ,tmp1.zk_medicine_tier4 - ,tmp1.common_name - ,tmp1.dosage_form - ,tmp1.user_type - ,tmp1.category_name - ,tmp1.product_name - ,tmp1.brand_name - ,tmp1.zk_manu_des - ,tmp1.zk_corp_des - ,tmp1.zk_pack_des - ,tmp1.counting_unit_a - ,tmp1.dosage_unit_a - ,tmp1.unit_a - ,tmp1.app1_cod - ,tmp1.app1_des - ,tmp1.app1_des_c - ,tmp1.app2_cod - ,tmp1.app2_des - ,tmp1.app2_des_c - ,tmp1.app3_cod - ,tmp1.app3_des - ,tmp1.app3_des_c - ,tmp1.atc1_cod - ,tmp1.atc1_des - ,tmp1.atc1_des_c - ,tmp1.atc2_cod - ,tmp1.atc2_des - ,tmp1.atc2_des_c - ,tmp1.atc3_cod - ,tmp1.atc3_des - ,tmp1.atc3_des_c - ,tmp1.atc4_cod - ,tmp1.atc4_des - ,tmp1.atc4_des_c - ,tmp1.bio_desc - ,tmp1.cmps_cod - ,tmp1.cmps_des - ,tmp1.cmps_des_c - ,tmp1.corp_cod - ,tmp1.corp_des - ,tmp1.corp_des_c - ,tmp1.edl_desc - ,tmp1.eth_otc_desc - ,tmp1.gene_orig_desc - ,tmp1.gqce_desc - ,tmp1.manu_cod - ,tmp1.manu_des - ,tmp1.manu_des_c - ,tmp1.mnfl_cod - ,tmp1.mnfl_des - ,tmp1.nrdl_desc - ,tmp1.pack_des - ,tmp1.stgh_des - ,tmp1.pack_lch - ,tmp1.paed_desc - ,tmp1.prod_des - ,tmp1.prod_des_c - ,tmp1.tcm_desc - ,tmp1.vbp_desc - ,tmp1.unit - ,tmp1.counting_unit - ,tmp1.dosage_unit - ,tmp1.NRDL_ENTRY_DATE - ,tmp1.market - ,nvl(t2.bu,tmp1.bu) as bu - ,tmp1.extend_market_ratio - ,IF(tmp1.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az -from tmp1 left join tmp2 - on nvl(tmp1.ATC1_COD,'') = nvl(tmp2.ATC1_COD,'') - and nvl(tmp1.ATC2_COD,'') = nvl(tmp2.ATC2_COD,'') - and nvl(tmp1.ATC3_COD,'') = nvl(tmp2.ATC3_COD,'') - and nvl(tmp1.ATC4_COD,'') = nvl(tmp2.ATC4_COD,'') - and nvl(tmp1.APP1_COD,'') = nvl(tmp2.APP1_COD,'') - and nvl(tmp1.APP2_COD,'') = nvl(tmp2.APP2_COD,'') - and nvl(tmp1.APP3_COD,'') = nvl(tmp2.APP3_COD,'') - and nvl(tmp1.PROD_COD,'') = nvl(tmp2.PROD_COD,'') - and nvl(tmp1.iqvia_pack_code,'') = nvl(tmp2.iqvia_pack_code,'') - and nvl(tmp1.common_name ,'') = nvl(tmp2.common_name ,'') - and nvl(tmp1.product_id,'') = nvl(tmp2.product_id,'') - and nvl(tmp1.dosage_form ,'') = nvl(tmp2.dosage_form ,'') - and nvl(tmp1.CMPS_COD,'') = nvl(tmp2.CMPS_COD,'') - and nvl(tmp1.market ,'') = nvl(tmp2.market ,'') -left join (select Market, BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ext_retail_tblmarket - -- where (market not in( 'ZOK Default Market', 'Inhaled Extended Market') and Extend_Market IS NOT NULL - -- )or (case when market in( 'Inhaled Extended Market') then zk_product_id is not null end) - where Extend_Market IS NOT NULL - ) t2 on tmp1.Market=t2.Extend_Market -where NVL(tmp2.f_flag,0) !=1 - -) - - --- 合并所有市场数据 -select - * -from tmp3 ---没有匹配上的给默认市场:Non AZ Retail Related Market -union all -select - prod.iqvia_lineno - ,if( prod.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',prod.iqvia_pack_code),12),prod.iqvia_pack_code) as iqvia_pack_code - ,right(concat('000000000',prod.iqvia_prod_code),9) as iqvia_prod_code - -- ,right(concat('0000000', prod.iqvia_pack_code ),7 ) iqvia_pack_code - -- ,right(concat('00000', prod.iqvia_prod_code ),5) iqvia_prod_code - ,prod.iqvia_notes - ,prod.new_pack_flag - ,prod.is_exists_chpa - ,prod.product_id - ,prod.prescription_nature - ,prod.medicine_type - ,prod.zk_medicine_tier1 - ,prod.zk_medicine_tier2 - ,prod.zk_medicine_tier3 - ,prod.zk_medicine_tier4 - ,prod.common_name - ,prod.dosage_form - ,prod.user_type - ,prod.category_name - ,prod.product_name - ,prod.brand_name - ,prod.zk_manu_des - ,prod.zk_corp_des - ,prod.zk_pack_des - ,prod.counting_unit_a - ,prod.dosage_unit_a - ,prod.unit_a - ,prod.app1_cod - ,prod.app1_des - ,prod.app1_des_c - ,prod.app2_cod - ,prod.app2_des - ,prod.app2_des_c - ,prod.app3_cod - ,prod.app3_des - ,prod.app3_des_c - ,prod.atc1_cod - ,prod.atc1_des - ,prod.atc1_des_c - ,prod.atc2_cod - ,prod.atc2_des - ,prod.atc2_des_c - ,prod.atc3_cod - ,prod.atc3_des - ,prod.atc3_des_c - ,prod.atc4_cod - ,prod.atc4_des - ,prod.atc4_des_c - ,prod.bio_desc - ,right(concat('00000',nvl(prod.cmps_cod,0 )),6) cmps_cod - ,prod.cmps_des - ,prod.cmps_des_c - ,prod.corp_cod - ,prod.corp_des - ,prod.corp_des_c - ,prod.edl_desc - ,prod.eth_otc_desc - ,prod.gene_orig_desc - ,prod.gqce_desc - ,prod.manu_cod - ,prod.manu_des - ,prod.manu_des_c - ,prod.mnfl_cod - ,prod.mnfl_des - ,prod.nrdl_desc - ,prod.pack_des - ,prod.stgh_des - ,prod.pack_lch - ,prod.paed_desc - ,prod.prod_des - ,prod.prod_des_c - ,prod.tcm_desc - ,prod.vbp_desc - ,prod.unit - ,prod.counting_unit - ,prod.dosage_unit - ,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE - ,'Non AZ Retail Related Market' as market - ,tmp3.bu - ,nvl(tmp3.extend_market_ratio,1) as extend_market_ratio - ,IF(PROD.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az - -from dwd.dwd_gnd_ext_retail_pack_property prod -left join tmp3 on prod.product_id = tmp3.product_id -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON prod.iqvia_pack_code = MOLE.Pack_Code -where tmp3.product_id is null - - --- COMMAND ---------- - ------处理 Nifedipine 上传时有特殊字符,无法匹配---- -update tmp.tmp_zk_retail_pack_property -set market='Nifedipine Market' -where market like 'Nifedipine%' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### brand拆分 - --- COMMAND ---------- - ---------------------------------------------获取省份文件中的品牌的数据,用于后续比例拆分-------------------------- -insert overwrite table tmp.tmp_retail_brand -SELECT - YYYYMM, - TA, - case - when zk_brand_category in ('氨氯地平阿托伐他汀钙片', '多达一', '天依宁', 'OTHERS') then zk_brand_category -- - else b.PROD_DES_C - end as PROD_DES_C, - province_city, - brand_cat_type, - A.zk_common_name, - A.market, - SUM(sales_val) sales_val, - cast(SUM(sales_vol) as decimal(30,10)) sales_vol -FROM - dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all A - left JOIN ( - select - distinct PROD_DES_C, - ZK_Prod_C - from - dwd.dwd_inc_gnd_retail_b2c_label_total - ) B ON nvl(A.zk_brand_category, '') = nvl(B.ZK_Prod_C, '') - -where - ranked_by = 'volume' --and brand_cat_type = '品牌' --and TA = 'CV' -GROUP BY - YYYYMM, - TA, - case - when zk_brand_category in ('氨氯地平阿托伐他汀钙片', '多达一', '天依宁', 'OTHERS') then zk_brand_category - else b.PROD_DES_C - end, - province_city, - A.market, - A.zk_common_name, - brand_cat_type - --- COMMAND ---------- - ------------------------------------------------------------------------------------------------------------- ---修改时间:20240903 ---修改人:FanXujia ---修改内容:新增一个高血压的子市场《酒石酸美托洛尔》,实为高血压市场里的一个分子式,到pack、到省份粒度。品牌粒度文件中没有他。 -------------------------------------------------------------------------------------------------------------- - - --- COMMAND ---------- - ----------------------------把品牌、全国数据拆分,并得到比例----------------------------710 修改 ------------------ -insert overwrite table tmp.tmp_zk_retail_brandTotal -WITH MKT AS ( - ----------------MKT 总值------------ -select a.YYYYMM,ta,a.province_city,a.brand_cat_type,a.market, - a.sales_val - ,a.sales_vol - ,B.brand_mkt marketmapping -from tmp.tmp_retail_brand a -left join (SELECT DISTINCT brand_mkt,market_mapping FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA IN ('CV','GI')) B -on a.market=b.brand_mkt and B.brand_mkt = B.market_mapping -where brand_cat_type = '品类' -and A.TA IN ('CV','GI') AND B.brand_mkt IS not null -), brand_df AS ( - -------归属于分子式子市场的品牌------ -select a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city - ,case when a.market = 'pack-CV-高血压-化学药-全国.xlsx' then '氨氯地平,阿托伐他汀' - when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '氨氯地平,阿托伐他汀' else A.market end submkt - ,cmps_des_c - ,case when a.market = 'pack-CV-高血压-化学药-全国.xlsx' then '高血压用药' - when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '他汀类+血脂康' else B.brand_mkt end marketmapping - -- when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '他汀类+血脂康' else coalesce(B.brand_mkt,A.market ) end marketmapping - ,a.sales_val,a.sales_vol -from tmp.tmp_retail_brand a -left join (select distinct brand_mkt,category_name from dwd.dwd_gnd_ext_retail_corresponding_relationship where category_name is not null AND TA IN ('CV','GI') AND category_name<>brand_mkt) B -ON a.market=b.category_name -left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c -where brand_cat_type = '品牌' -and a.market not in (select distinct brand_mkt from dwd.dwd_gnd_ext_retail_corresponding_relationship where brand_mkt is not null ) -and TA IN ('CV','GI') -),cmps_total as ( - ---------------------分子式汇总值------------ - select a.YYYYMM,ta,a.province_city,a.brand_cat_type --,c.zk_common_name,c.cmps_des_c - ,a.market,a.sales_val,a.sales_vol,B.brand_mkt marketmapping -from tmp.tmp_retail_brand a -left join (SELECT DISTINCT brand_mkt,category_name FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA IN ('CV','GI')) B -on a.market=b.category_name and B.brand_mkt<> B.category_name --- LEFT JOIN (select DISTINCT zk_common_name,cmps_des_c,marketmapping from brand_df) c on c.zk_common_name= a.market and B.brand_mkt = c.marketmapping -where brand_cat_type = '品类' -and A.TA IN ('CV','GI') and B.brand_mkt is not null -), mkt_brand as ( - ----直接归属mkt 下的brand ,不能按同一个比例处理,需单独减去------------------ - select a.YYYYMM,a.TA,a.province_city, -case when a.market = 'pack-CV-高血压-化学药-全国.xlsx' then '氨氯地平,阿托伐他汀' - when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '氨氯地平,阿托伐他汀' else A.market end market -,concat('Others_cmps_',cmps_des_c ) cmps_des_c -,concat('Others_cmps_',a.market ) marketmapping -,a.PROD_DES_C - ,case when a.market = 'pack-CV-高血压-化学药-全国.xlsx' then '氨氯地平,阿托伐他汀' - when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '氨氯地平,阿托伐他汀' else A.market end submkt - ,a.sales_val,a.sales_vol -from tmp.tmp_retail_brand a -left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c -where brand_cat_type = '品牌' -and case when a.market = 'pack-CV-高血压-化学药-全国.xlsx' then '氨氯地平,阿托伐他汀' - when a.market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '氨氯地平,阿托伐他汀' else A.market end in (select distinct brand_mkt from dwd.dwd_gnd_ext_retail_corresponding_relationship where brand_mkt is not null and ta IN ('CV','GI')) -and TA IN ('CV','GI') -and a.PROD_DES_C not in (select distinct PROD_DES_C from brand_df) -) ---------酒石酸美托洛尔 -,metoprolol_tartrat as -( -select YYYYMM, -'CV' as TA, -zk_region as province_city, -'高血压用药' as marketmapping, -sum(sales_value) as sales_val, -sum(sales_unit) as sales_vol -from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all -where brand_flag = 'pack-CV-酒石酸美托洛尔.xlsx' -group by YYYYMM,zk_region -) -, brand_data AS ( - --------------------计算others_cmps----------------- - --从others_cmps这里扣除酒石酸美托洛尔 -select - MKT.YYYYMM - ,MKT.ta,MKT.province_city - ,MKT.market - ,concat('Others_cmps_',mkt.market ) cmps_des_c - ,concat('Others_cmps_',mkt.market ) prodmapping - ,MKT.sales_val - b.sales_val - coalesce(val,0 ) - coalesce(metoprolol_tartrat.sales_val,0) sales_val - ,MKT.sales_vol - b.sales_vol -coalesce(vol, 0 ) - coalesce(metoprolol_tartrat.sales_vol,0) sales_vol -FROM MKT inner JOIN - -- (select YYYYMM,province_city,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from cmps_total group by YYYYMM,province_city,marketmapping) b - ( - select - YYYYMM,province_city,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol - from ( - select YYYYMM,province_city,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from cmps_total group by YYYYMM,province_city,marketmapping - union all - select YYYYMM,province_city - ,case when market = 'pack-CV-高血压-化学药-全国.xlsx' then '高血压用药' - when market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '他汀类+血脂康' end marketmapping - ,sum(sales_val),sum(sales_vol) - from tmp.tmp_retail_brand where PROD_DES_C in ('多达一', '氨氯地平阿托伐他汀钙片', '天依宁', 'OTHERS') - group by YYYYMM,province_city - ,case when market = 'pack-CV-高血压-化学药-全国.xlsx' then '高血压用药' - when market = 'pack-CV-他汀类+血脂康-全国.xlsx' then '他汀类+血脂康' end - ) group by YYYYMM,province_city,marketmapping - ) b -on MKT.YYYYMM=b.YYYYMM and MKT.province_city=b.province_city and MKT.market=b.marketmapping -left join (select YYYYMM,TA,province_city,market,marketmapping,sum(sales_val) val ,sum(sales_vol) vol - from mkt_brand - group by YYYYMM,TA,province_city,market,marketmapping - ) mkt_brand on MKT.YYYYMM =mkt_brand.YYYYMM and MKT.market =mkt_brand.market and MKT.province_city=mkt_brand.province_city -left join metoprolol_tartrat -on MKT.YYYYMM = metoprolol_tartrat.YYYYMM AND MKT.market = metoprolol_tartrat.marketmapping AND MKT.province_city = metoprolol_tartrat.province_city -union all ---------------计算others_cmps_brand----------------- ---cmps_total里没有酒石酸美托洛尔,因此这里不用减酒石酸美托洛尔 -SELECT a.YYYYMM,a.ta,a.province_city - ,a.marketmapping market - ,cmps_des_c - ,CASE WHEN A.MARKET ='其他拉唑类' THEN 'Others_其他拉唑类' ELSE coalesce(concat('Others_',b.cmps_des_c),concat('Others_',A.marketmapping) ) END prodmapping - ,a.sales_val - coalesce(b.sales_val,0 ) sales_val - ,a.sales_vol - coalesce(b.sales_vol,0 ) sales_vol -from cmps_total a -LEFT JOIN (select YYYYMM,province_city,submkt,cmps_des_c,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from brand_df GROUP BY YYYYMM,province_city,submkt,marketmapping,cmps_des_c ) b -on a.YYYYMM=b.YYYYMM and a.province_city=b.province_city and a.marketmapping=b.marketmapping and a.market=b.submkt -union all ---------------归属于分子式子市场的品牌----------- -SELECT - YYYYMM,TA,province_city - ,marketmapping market - ,cmps_des_c - ,PROD_DES_C - ,sales_val - ,sales_vol -FROM brand_df -union all --------------直接归属于市场的品牌 -select - YYYYMM,TA,province_city - ,market - ,cmps_des_c - ,prod_des_c - ,sales_val - ,sales_vol -from mkt_brand -------这里不用union上酒石酸美托洛尔,因为他有pack粒度的数,不需要计算比例 -) - -----计算拆分比例------ -SELECT - YYYYMM - ,ta - ,province_city - ,market - ,case when ta='CV' AND prodmapping ='OTHERS' THEN '氨氯地平,阿托伐他汀' - WHEN TA='GI' AND cmps_des_c IS NULL THEN '其他拉唑类' - ELSE cmps_des_c END cmps_des_c - ,prodmapping - ,sales_val - ,sales_vol - ,nvl(cast(sales_val as decimal(38,15)) / sum(sales_val) over(PARTITION BY YYYYMM,ta,market,prodmapping),0.0384615384615385) valRate - ,nvl(cast(sales_vol as decimal(38,15)) / sum(sales_vol) over(PARTITION BY YYYYMM,ta,market,prodmapping),0.0384615384615385) volRate -from ( - -------------倒减ROC-------------- - SELECT - A.YYYYMM - ,A.ta - ,'ROC' province_city - ,A.market - ,cmps_des_c - ,case when A.prodmapping ='OTHERS' THEN 'Others_氨氯地平阿托伐他汀钙片' ELSE A.prodmapping END prodmapping - ,A.sales_val - coalesce(B.sales_val ,0 ) sales_val - ,A.sales_vol - coalesce(B.sales_vol,0) sales_vol - FROM brand_data A - LEFT JOIN (select YYYYMM,market,prodmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from brand_data where province_city<>'全国' GROUP BY YYYYMM,market,prodmapping) B - ON A.YYYYMM =B.YYYYMM AND A.prodmapping=B.prodmapping AND A.markeT=B.market - WHERE A.province_city ='全国' - union all - ------计算好的比例拆分基础数据---- - select - YYYYMM,ta,province_city,market,cmps_des_c - ,case when A.prodmapping ='OTHERS' THEN 'Others_氨氯地平阿托伐他汀钙片' ELSE A.prodmapping END prodmapping - - ,sales_val,sales_vol - FROM brand_data A - where province_city <>'全国' -) - --- COMMAND ---------- - --- ----------------------------------------------pack全国数据 rd 抗血栓2通用名 不用补数,niad GI,re 逻辑特殊,所以排除,仅保留CV 他汀、高血压数据------------------------------------------------- -------对pack 进行处理,关联维度表获取prod ,cmps,market 等数据,同时,对省份文件有的品牌填充原有品牌值,省份文件存在分子式但品牌不在的用others_cmps方式记录,其他为others_market,用于按特定比例拆分数据--- -create or replace table tmp.tmp_zk_retail_pack -using delta -as ---将酒石酸美托洛尔的数据从高血压的数据中排除掉 -------------------注意事项--------------------------------------------------------------- ---使用相减的方法,每个省份都会剩下0.0几 ---因此直接使用not in的方法 ------------------------------------------------------------------------------------------ -with pack_without_metoprolol_tartrat as ( - -select * -from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all --- 新数据中不含 酒石酸美托洛尔 - -- where zk_product_id not in ( - -- select distinct zk_product_id from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all - -- where brand_flag = 'pack-CV-酒石酸美托洛尔.xlsx' - -- ) -) -,tmp as ( - select - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - E.market_mapping market, - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null then 'OTHERS_氨氯地平,阿托伐他汀' - else B.prod_des_c - end prod_des_c, - - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null - THEN 'Others_氨氯地平阿托伐他汀钙片' - ELSE coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - END PROD_MAPPING, - -- coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) PROD_MAPPING, - - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit -from - pack_without_metoprolol_tartrat A - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit/coalesce(unit,1) counting_unit, - cmps_des_c - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - LEFT JOIN ( - SELECT - DISTINCT brand_mkt, - file_name, - market_mapping - FROM - DWD.dwd_gnd_ext_retail_corresponding_relationship - ) E ON A.brand_flag = E.file_name - LEFT JOIN ( - SELECT - DISTINCT YYYYMM, - prodmapping, - market - FROM - tmp.tmp_ZK_retail_brandTotal - ) C ON A.YYYYMM = C.YYYYMM - AND B.prod_des_c = C.prodmapping - AND E.market_mapping = C.market ---NIAD 直接取pack数据,gi market 剔除逻辑,RE根据maket拆分 、RE包含雾化器数据----- - left join (SELECT DISTINCT cmps_des_c FROM TMP.tmp_zk_retail_brandTotal where cmps_des_c is NOT null ) F - ON B.cmps_des_c=F.cmps_des_c -where - brand_flag NOT in ( - 'pack-DM-口服降糖化学药.xlsx', - 'pack-GI-慢性胃炎胃溃疡-全国.xlsx', - 'pack-RE-慢阻肺-全国.xlsx', - 'pack-雾化器-全国&县域数据.xlsx', - 'pack-CV-抗血栓2通用名-全国.xlsx', - 'pack-RD-肾科-全国.xlsx' - ) -GROUP BY - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null then 'OTHERS_氨氯地平,阿托伐他汀' - else B.prod_des_c - end, - E.market_mapping, - --coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null - THEN 'Others_氨氯地平阿托伐他汀钙片' - ELSE coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - END -) --------美托洛尔 包含琥珀酸美托洛尔 需要通过market 重新定义拆分归属------------ - select - YYYYMM,zk_product_id,iqvia_pack_code,market,prod_des_c - ,case when PROD_MAPPING ='Others_美托洛尔' and flag is not null then 'Others_美托洛尔' - when PROD_MAPPING ='Others_美托洛尔' and flag is null then 'Others_cmps_高血压用药' - else PROD_MAPPING - end PROD_MAPPING - ,sales_value,sales_unit,counting_unit -from tmp -left join (select distinct iqvia_pack_code flag from tmp.tmp_zk_retail_pack_property where market ='Metoprolol Succinate Market') fl on tmp.iqvia_pack_code =fl.flag - - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### NIAD - --- COMMAND ---------- - --------------------niad 全国数据拆分------------------------------------------------------------------- --- -----------------NIAD 加工 ,将拆分的数据替换成pack 源数据------------------------20240701修改版本------ -insert overwrite table tmp.tmp_retail_sales_niad -WITH national_pack as ( - -------获取niad 的全国pack 基础数据-------- - select - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - E.market_mapping market, - B.prod_des_c, - CONCAT(E.brand_mkt, '_Others') PROD_MAPPING, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all A - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit/coalesce(unit,1 ) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - LEFT JOIN ( - SELECT - DISTINCT brand_mkt, - file_name, - market_mapping - FROM - DWD.dwd_gnd_ext_retail_corresponding_relationship - ) E ON A.brand_flag = E.file_name - where - A.brand_flag in ('pack-DM-口服降糖化学药.xlsx') - and A.zk_region = '全国' --and A.YYYYMM='202312' --,'pack-雾化器-全国&县域数据.xlsx') - GROUP BY - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - B.prod_des_c, - CONCAT(E.brand_mkt, '_Others'), - E.market_mapping -), -pack_prov as ( - -------获取niad 的省份pack 基础数据-------- - select - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - E.market_mapping market, - A.brand_flag, - B.prod_des_c, - NVL(B.PROD_DES_C, CONCAT(E.market_mapping, '_Others')) PROD_MAPPING, - SUM(A.sales_value) sales_value, - SUM(A.sales_unit) sales_unit, - A.zk_region, - sum(sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all A - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit/coalesce(unit,1 ) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - LEFT JOIN ( - SELECT - DISTINCT brand_mkt, - file_name, - market_mapping - FROM - DWD.dwd_gnd_ext_retail_corresponding_relationship - ) E ON A.brand_flag = E.file_name - where - A.brand_flag in ('pack-DM-口服降糖化学药.xlsx') - and A.zk_region != '全国' --and A.YYYYMM='202312' --,'pack-雾化器-全国&县域数据.xlsx') - GROUP BY - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - B.prod_des_c, - E.market_mapping, - A.brand_flag, - A.zk_region -) - -/* -修改人:chenwu -修改时间:20250319 -修改内容:NIAD不藏数据,用于页面藏数逻辑。brand_flag 默认都给1 -*/ ---拆分NIAD数据到ROC -SELECT - A.YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,A.PROD_MAPPING - ,'ROC' province_city - ,A.market - ,A.Sales_value - nvl(sales_V ,0) Sales_value - ,A.sales_unit - nvl(SALES_U,0) sales_unit - ,A.counting_unit - nvl(COUNT_U,0) counting_unit - ,2 pack_flag - ,1 brand_flag --case when c.mapp is null then 2 else 1 end brand_flag -FROM national_pack A -LEFT JOIN ( - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,market - ,SUM(sales_value) sales_V - ,SUM(sales_unit) SALES_U - ,SUM(counting_unit) COUNT_U - FROM pack_prov - GROUP BY - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,market -)B ON A.YYYYMM=B.YYYYMM - AND A.zk_product_id=B.zk_product_id -left join (select b.PROD_DES_C mapp from -(select distinct zk_brand_category from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all where brand_cat_type='品牌' and market='NIAD') a -left join (select distinct PROD_DES_C,ZK_Prod_C from dwd.dwd_inc_gnd_retail_b2c_label_total ) b on a.zk_brand_category =b.ZK_Prod_C ) c -on a.prod_des_c = c.mapp -union all ---pack+省份 原始数据 -select - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,zk_region province_city - ,market - ,sales_value - ,sales_unit - ,counting_unit - ,1 pack_flag - ,1 brand_flag --case when b.mapp is null then 2 else 1 end brand_flag -from pack_prov a -left join (select b.PROD_DES_C mapp from -(select distinct zk_brand_category from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all where brand_cat_type='品牌' and market='NIAD') a -left join (select distinct PROD_DES_C,ZK_Prod_C from dwd.dwd_inc_gnd_retail_b2c_label_total ) b on a.zk_brand_category =b.ZK_Prod_C ) b -on a.PROD_MAPPING = b.mapp - - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### RE - --- COMMAND ---------- - --- ------------------------------------------------------------RE 数据拆分------------------------------------------- --- ------------------ --- insert overwrite table tmp.tmp_retail_result_re --- with Inhaled_tmp as ( --- ----拼接Respules Market数据---Inhaled --- select a.YYYYMM,a.zk_product_id,b.iqvia_pack_code,a.zk_region,sum(a.sales_value) sales_value,sum(sales_unit) sales_unit ,sum(a.sales_unit*(b.counting_unit/coalesce(b.unit,1 ))) counting_unit --- ,1 pack_flag --- ,1 brand_flag --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id=b.product_id --- where brand_flag= 'pack-雾化器-全国&县域数据.xlsx' and a.zk_region <>'全国' --- -- and iqvia_pack_code in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Inhaled Extended Market by Brand') --- group by a.YYYYMM,b.iqvia_pack_code,a.zk_region,a.zk_product_id --- union all --- -- -inhaled ROC数据---- --- select --- a.YYYYMM --- ,a.zk_product_id --- ,A.iqvia_pack_code --- ,'ROC' province_city --- ,a.sales_value -inh.sales_value sales_value --- ,a.sales_unit -inh.sales_unit sales_unit --- ,a.counting_unit-inh.counting_unit counting_unit --- ,2 pack_flag --- ,1 brand_flag --- from ( --- -----re 数据筛选--respules Market数据汇总到全国-- --- select a.YYYYMM,a.zk_product_id,b.iqvia_pack_code,a.zk_region,sum(a.sales_value) sales_value,sum(sales_unit) sales_unit ,sum(a.sales_unit* (b.counting_unit/coalesce(b.unit,1 ))) counting_unit --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id=b.product_id --- where brand_flag='pack-RE-慢阻肺-全国.xlsx' --- -- and b.iqvia_pack_code in (select iqvia_pack_code from dm.dm_zk_retail_pack_property where market ='Respules Market') --- and b.iqvia_pack_code in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Respules Market') --- group by a.YYYYMM,a.zk_region,b.iqvia_pack_code,a.zk_product_id --- ) a INNER join ( --- select --- a.YYYYMM --- ,a.zk_product_id --- ,c.iqvia_pack_code --- ,coalesce(b.sales_value,0)sales_value --- ,coalesce(b.sales_unit,0) sales_unit --- ,coalesce(b.counting_unit,0) counting_unit --- from ( select YYYYMM,zk_product_id from --- (select distinct zk_product_id from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all where zk_region <>'全国') --- cross join (select distinct YYYYMM from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all where zk_region <>'全国') --- ) a --- left join (select a.YYYYMM,a.zk_product_id,b.iqvia_pack_code,sum(a.sales_value) sales_value,sum(sales_unit) sales_unit,sum(a.sales_unit* (b.counting_unit/coalesce(b.unit,1 ))) counting_unit --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id=b.product_id --- where brand_flag= 'pack-雾化器-全国&县域数据.xlsx' and a.zk_region <>'全国' --- group by a.YYYYMM,b.iqvia_pack_code,a.zk_product_id) b --- on a.YYYYMM=b.YYYYMM and a.zk_product_id=b.zk_product_id --- left join dwd.dwd_gnd_ext_retail_pack_property c on a.zk_product_id=c.product_id --- -- WHERE b.iqvia_pack_code IN (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Inhaled Extended Market by Brand') - --- ) inh on a.YYYYMM =inh.YYYYMM and a.zk_product_id=inh.zk_product_id --- ) --- ,mkt as ( --- -------------补充mark 的roc 部分数据 --- select YYYYMM,ta,province_city,brand_cat_type,market,sales_val,sales_vol --- from tmp.tmp_retail_brand where ta='RE' AND brand_cat_type ='品类' and market ='慢性阻塞性肺疾病' --- union all --- select --- a.YYYYMM,a.ta,'ROC' ,a.brand_cat_type,a.market,a.sales_val - b.sales_val sales_val ,a.sales_vol-b.sales_vol sales_vol --- from --- (select YYYYMM,ta,brand_cat_type,market,sum(sales_val) sales_val,sum(sales_vol) sales_vol --- from tmp.tmp_retail_brand where ta='RE' AND brand_cat_type ='品类' and market ='慢性阻塞性肺疾病' and province_city ='全国' --- group by 1,2,3,4 --- ) a --- left join --- ( --- select YYYYMM,ta,brand_cat_type,market,sum(sales_val) sales_val,sum(sales_vol) sales_vol --- from tmp.tmp_retail_brand where ta='RE' AND brand_cat_type ='品类' and market ='慢性阻塞性肺疾病' and province_city <>'全国' --- group by 1,2,3,4 --- )b on a.YYYYMM =b.YYYYMM and a.ta=b.ta and a.brand_cat_type=b.brand_cat_type and a.market=b.market --- ) --- ,total_no_inhaled as ( --- ----------------剔除inhaled 后剩余 MKT 总值------------ --- select a.YYYYMM,a.ta,a.province_city,a.brand_cat_type,a.market --- ,B.brand_mkt marketmapping --- ,sales_val - coalesce(val,0 ) sales_val --- ,sales_vol - coalesce(vol,0 ) sales_vol --- -- ,sales_val - coalesce(sales_value,sal ) sales_val --- -- ,sales_vol - coalesce(sales_unit,vol) sales_vol --- from mkt a --- left join (SELECT DISTINCT brand_mkt,market_mapping FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA='RE') B --- on a.market=b.brand_mkt and B.brand_mkt = B.market_mapping --- -- left join (select YYYYMM,zk_region,sum(sales_value) sales_value,sum(counting_unit) sales_unit from Inhaled_tmp group by 1,2) c on a.province_city=c.zk_region and a.YYYYMM=c.YYYYMM --- -- left join (select YYYYMM,'全国' zk_region,sum(sales_value) sal,sum(counting_unit) vol from Inhaled_tmp group by 1) d on a.YYYYMM=d.YYYYMM and a.province_city=d.zk_region --- left join ( --- select YYYYMM,TA,province_city,brand_cat_type,market,sales_val val,sales_vol vol from tmp.tmp_retail_brand where ta='RE' AND market ='Inhaled Extended Market' AND brand_cat_type ='品类' --- UNION ALL --- select --- a.YYYYMM,a.TA,'ROC',a.brand_cat_type,a.market --- ,a.sales_val-b.sales_val --- ,a.sales_vol-b.sales_vol --- from (select YYYYMM,TA,brand_cat_type,market,sales_val ,sales_vol from tmp.tmp_retail_brand where ta='RE' AND market ='Inhaled Extended Market' AND brand_cat_type ='品类' and province_city ='全国') a --- left join (select YYYYMM,TA,brand_cat_type,market,sum(sales_val) sales_val,sum(sales_vol) sales_vol from tmp.tmp_retail_brand where ta='RE' AND market ='Inhaled Extended Market' AND brand_cat_type ='品类' AND province_city<>'全国' --- group by YYYYMM,TA,brand_cat_type,market ) b on a.YYYYMM=b.YYYYMM AND a.brand_cat_type=b.brand_cat_type AND a.market=b.market --- ) c on a.province_city=c.province_city and a.YYYYMM=c.YYYYMM --- where a.brand_cat_type = '品类' --- and A.TA ='RE' AND B.brand_mkt IS not null --- ), others as ( --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city,a.market,cmps_des_c,a.market --- ,a.sales_val-b.sales_val sales_val, a.sales_vol-b.sales_vol sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 --- union all --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,'ROC',a.market,a.cmps_des_c,a.market,a.sales_val - b.sales_val,a.sales_vol-b.sales_vol --- from ( --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city,a.market, --- cmps_des_c,a.market --- ,a.sales_val-b.sales_val sales_val, a.sales_vol-b.sales_vol sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 and a.province_city='全国' --- ) a left join ( --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,a.market, --- cmps_des_c,a.market --- ,sum(a.sales_val-b.sales_val) sales_val, sum(a.sales_vol-b.sales_vol) sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 and a.province_city <> '全国' --- group by a.YYYYMM,a.TA,a.PROD_DES_C,a.market, cmps_des_c,a.market --- ) b on a.YYYYMM=b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.market=b.market and a.cmps_des_c=b.cmps_des_c --- ) - --- , brand_of_no_inhaled as ( --- -------------剔除inhaled 品牌数据及ROC数据------------ --- select a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city --- , A.market submkt --- ,cmps_des_c --- ,B.brand_mkt marketmapping --- ,a.sales_val,a.sales_vol --- from tmp.tmp_retail_brand a --- left join (select distinct brand_mkt,category_name from dwd.dwd_gnd_ext_retail_corresponding_relationship where category_name is not null AND TA ='RE' AND category_name<>brand_mkt) B --- ON a.market=b.category_name --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where brand_cat_type = '品牌' --- and a.market not in (select distinct brand_mkt from dwd.dwd_gnd_ext_retail_corresponding_relationship where brand_mkt is not null ) --- and TA ='RE' AND A.market <> 'Inhaled Extended Market' --- union all --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,'ROC' province_city --- ,a.submkt,a.cmps_des_c,a.marketmapping,a.sales_val-b.sales_val sales_val,a.sales_vol-b.sales_vol sales_vol --- from (select a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city --- , A.market submkt --- ,cmps_des_c --- ,B.brand_mkt marketmapping --- ,a.sales_val,a.sales_vol --- from tmp.tmp_retail_brand a --- left join (select distinct brand_mkt,category_name from dwd.dwd_gnd_ext_retail_corresponding_relationship where category_name is not null AND TA ='RE' AND category_name<>brand_mkt) B --- ON a.market=b.category_name --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where brand_cat_type = '品牌' --- and a.market not in (select distinct brand_mkt from dwd.dwd_gnd_ext_retail_corresponding_relationship where brand_mkt is not null ) --- and TA ='RE' AND A.market <> 'Inhaled Extended Market' and a.province_city='全国' --- ) a --- left join (select a.YYYYMM,a.TA,a.PROD_DES_C --- , A.market submkt --- ,cmps_des_c --- ,B.brand_mkt marketmapping --- ,sum(a.sales_val) sales_val,sum(a.sales_vol) sales_vol --- from tmp.tmp_retail_brand a --- left join (select distinct brand_mkt,category_name from dwd.dwd_gnd_ext_retail_corresponding_relationship where category_name is not null AND TA ='RE' AND category_name<>brand_mkt) B --- ON a.market=b.category_name --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where brand_cat_type = '品牌' --- and a.market not in (select distinct brand_mkt from dwd.dwd_gnd_ext_retail_corresponding_relationship where brand_mkt is not null ) --- and TA ='RE' AND A.market <> 'Inhaled Extended Market' and a.province_city<>'全国' --- group by 1,2,3,4,5,6 --- ) b on a.YYYYMM =b.YYYYMM and a.PROD_DES_C =b.PROD_DES_C and a.submkt=b.submkt and a.marketmapping=b.marketmapping --- union all --- ----拼接 re 部分比inhaled 多出的brand 数据 --- select * from others - --- ),cmps_total as ( --- ------cmps 剔除inhaled 后 的基础数据---- --- select a.YYYYMM,ta,a.province_city,a.brand_cat_type,a.market,B.brand_mkt marketmapping --- ,a.sales_val,a.sales_vol --- from tmp.tmp_retail_brand a --- left join (SELECT DISTINCT brand_mkt,category_name FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA='RE') B --- on a.market=b.category_name and B.brand_mkt<> B.category_name --- where brand_cat_type = '品类' --- and A.TA ='RE' and B.brand_mkt is not null AND a.market <>'Inhaled Extended Market' --- union all --- select --- a.YYYYMM,a.ta,'ROC' ,a.brand_cat_type,a.market,a.marketmapping,a.sales_val-b.sales_val sales_val,a.sales_vol-b.sales_vol sales_vol --- from ( select a.YYYYMM,ta,a.province_city,a.brand_cat_type --,c.zk_common_name,c.cmps_des_c --- ,a.market,a.sales_val,a.sales_vol,B.brand_mkt marketmapping --- from tmp.tmp_retail_brand a --- left join (SELECT DISTINCT brand_mkt,category_name FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA='RE') B --- on a.market=b.category_name and B.brand_mkt<> B.category_name --- where brand_cat_type = '品类' --- and A.TA ='RE' and B.brand_mkt is not null AND a.market <>'Inhaled Extended Market' and a.province_city = '全国' --- )a left join ( --- select a.YYYYMM,ta,a.brand_cat_type ,B.brand_mkt marketmapping --- ,a.market,sum(a.sales_val) sales_val,sum(a.sales_vol) sales_vol --- from tmp.tmp_retail_brand a --- left join (SELECT DISTINCT brand_mkt,category_name FROM dwd.dwd_gnd_ext_retail_corresponding_relationship WHERE category_name IS NOT NULL AND TA='RE') B --- on a.market=b.category_name and B.brand_mkt<> B.category_name --- where brand_cat_type = '品类' --- and A.TA ='RE' and B.brand_mkt is not null AND a.market <>'Inhaled Extended Market' and a.province_city<>'全国' --- group by 1,2,3,4,5 --- )b on a.YYYYMM =b.YYYYMM and a.ta=b.ta and a.marketmapping=b.marketmapping and b.market =a.market and a.brand_cat_type=b.brand_cat_type --- union all --- select --- a.YYYYMM,a.TA,a.province_city,'',cmps_des_c,a.market --- ,a.sales_val-b.sales_val sales_val, a.sales_vol-b.sales_vol sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 --- union all --- select --- a.YYYYMM,a.TA,'ROC','',a.cmps_des_c,a.market,a.sales_val - b.sales_val,a.sales_vol-b.sales_vol --- from ( --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,a.province_city,a.market, --- cmps_des_c,a.market --- ,a.sales_val-b.sales_val sales_val, a.sales_vol-b.sales_vol sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 and a.province_city='全国' --- ) a left join ( --- select --- a.YYYYMM,a.TA,a.PROD_DES_C,a.market, --- cmps_des_c,a.market --- ,sum(a.sales_val-b.sales_val) sales_val, sum(a.sales_vol-b.sales_vol) sales_vol --- from (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='慢性阻塞性肺疾病' ) a --- inner join (select YYYYMM,TA,PROD_DES_C,province_city,market,sales_val,sales_vol from tmp.tmp_retail_brand where TA='RE' AND brand_cat_type ='品牌' and market ='Inhaled Extended Market') b --- on a.YYYYMM =b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.province_city =b.province_city --- left join (select distinct prod_des_c,cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) C ON A.PROD_DES_C=C.prod_des_c --- where a.sales_val-b.sales_val >0 and a.province_city <> '全国' --- group by a.YYYYMM,a.TA,a.PROD_DES_C,a.market, cmps_des_c,a.market --- ) b on a.YYYYMM=b.YYYYMM and a.PROD_DES_C=b.PROD_DES_C and a.market=b.market and a.cmps_des_c=b.cmps_des_c - - - - - --- ),ratio as ( --- select --- YYYYMM --- ,ta --- ,province_city --- ,market --- ,cmps_des_c --- ,prodmapping --- ,sales_val --- ,sales_vol --- ,sales_val /sum(sales_val)over(PARTITION BY YYYYMM,ta,market,prodmapping) radio_val --- ,sales_vol / sum(sales_vol)over(PARTITION BY YYYYMM,ta,market,prodmapping) radio_vol - --- from ( --- select --- MKT.YYYYMM --- ,ta,MKT.province_city --- ,market --- ,concat('Others_cmps_',market ) cmps_des_c --- ,concat('Others_cmps_',market ) prodmapping --- ,MKT.sales_val - b.sales_val sales_val --- ,MKT.sales_vol - b.sales_vol sales_vol --- FROM total_no_inhaled MKT inner JOIN (select YYYYMM,province_city,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from cmps_total group by YYYYMM,province_city,marketmapping) b --- on MKT.YYYYMM=b.YYYYMM and MKT.province_city=b.province_city and MKT.market=b.marketmapping --- where mkt.province_city <>'全国' --- union all --- ------------计算others_cmps_brand----------------- --- SELECT a.YYYYMM,a.ta,a.province_city --- ,a.marketmapping market --- ,cmps_des_c --- , coalesce(concat('Others_',b.cmps_des_c),concat('Others_',A.marketmapping) ) prodmapping --- ,a.sales_val - coalesce(b.sales_val,0 ) sales_val --- ,a.sales_vol - coalesce(b.sales_vol,0 ) sales_vol --- from cmps_total a --- LEFT JOIN (select YYYYMM,province_city,submkt,cmps_des_c,marketmapping,sum(sales_val) sales_val,sum(sales_vol) sales_vol from brand_of_no_inhaled GROUP BY YYYYMM,province_city,submkt,marketmapping,cmps_des_c ) b --- on a.YYYYMM=b.YYYYMM and a.province_city=b.province_city and a.marketmapping=b.marketmapping and a.market=b.submkt --- where a.province_city <> '全国' - --- union all --- SELECT --- YYYYMM,TA,province_city --- ,marketmapping market --- ,cmps_des_c --- ,PROD_DES_C --- ,sales_val --- ,sales_vol --- FROM brand_of_no_inhaled --- where province_city <> '全国' --- ) --- ) - - - --- select TMP.YYYYMM,tmp.zk_product_id,iqvia_pack_code,province_city,sales_value*radio_val sales_value,tmp.sales_unit*radio_vol sales_unit ,tmp.counting_unit*radio_vol counting_unit --- ,2 pack_flag,case when tmp.PROD_MAPPING like 'Others_%' then 2 else 1 end brand_flag --- from ( --- select a.YYYYMM,a.zk_product_id --- ,b.prod_des_c,b.cmps_des_c --- ,coalesce(c.PROD_DES_C,concat('Others_',F.cmps_des_c),concat('Others_cmps_',e.brand_mkt)) PROD_MAPPING --- ,b.iqvia_pack_code,a.zk_region,sum(a.sales_value) sales_value,sum(sales_unit) sales_unit,sum(a.sales_unit* (b.counting_unit/coalesce(b.unit,1 ))) counting_unit --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id=b.product_id --- left join (select distinct PROD_DES_C from tmp.tmp_retail_brand where TA='RE' AND market ='慢性阻塞性肺疾病' and brand_cat_type ='品牌') c on b.prod_des_c =c.PROD_DES_C --- left join (select distinct cmps_des_c from ratio where cmps_des_c not in ( select cmps_des_c from others ))f on b.cmps_des_c =f.cmps_des_c --- LEFT JOIN (SELECT DISTINCT brand_mkt,file_name FROM DWD.dwd_gnd_ext_retail_corresponding_relationship) E ON A.brand_flag = E.file_name --- where brand_flag='pack-RE-慢阻肺-全国.xlsx' --- AND b.iqvia_pack_code NOT IN ( --- select b.iqvia_pack_code from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id=b.product_id --- where brand_flag= 'pack-雾化器-全国&县域数据.xlsx' and a.zk_region <>'全国') --- -- AND b.iqvia_pack_code not in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Inhaled Extended Market by Brand') --- AND b.iqvia_pack_code in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='RE Market') - --- group by a.YYYYMM,b.iqvia_pack_code,a.zk_region,a.zk_product_id ,b.prod_des_c,b.cmps_des_c --- ,coalesce(c.PROD_DES_C,concat('Others_',F.cmps_des_c),concat('Others_cmps_',e.brand_mkt)) --- ) tmp inner join ratio rate on TMP.YYYYMM=rate.YYYYMM and nvl(tmp.PROD_MAPPING ,'' )= nvl(rate.prodmapping,'' ) --- union all --- select --- a.YYYYMM --- ,a.zk_product_id --- ,A.iqvia_pack_code --- ,zk_region province_city --- ,sales_value --- ,sales_unit --- ,counting_unit,pack_flag,brand_flag --- from Inhaled_tmp a - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## brand 比例拼接到 pack - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### Inhaled 直取pack - --- COMMAND ---------- - -/* -修改日期:20250311 -修改人:chenwu -修改内容:新增Inhaled直取逻辑属于 RE 慢性阻塞性肺疾病 -*/ -create or replace temporary view Inhaled_pack_direct -as -with - ---Inhaled -Inhaled_prov as ( - select - a.YYYYMM, - a.zk_product_id, - b.iqvia_pack_code, - a.zk_region, - '慢性阻塞性肺疾病' market, - B.prod_des_c, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - where - brand_flag = 'pack-雾化器-全国&县域数据.xlsx' - and a.zk_region <> '全国' -- and iqvia_pack_code in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Inhaled Extended Market by Brand') - group by 1,2,3,4,5,6 -) ---全国的数据 -,Inhaled_all as ( - select - a.YYYYMM, - a.zk_product_id, - b.iqvia_pack_code, - '全国' zk_region, - '慢性阻塞性肺疾病' market, - B.prod_des_c, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - where - brand_flag = 'pack-雾化器-全国&县域数据.xlsx' - and a.zk_region = '全国' - group by 1,2,3,4,5,6 -) - ---倒减ROC部分 = 全国 - 省份 -SELECT - A.YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,'ROC' province_city - ,A.market - ,A.Sales_value - nvl(sales_V ,0) Sales_value - ,A.sales_unit - nvl(SALES_U,0) sales_unit - ,A.counting_unit - nvl(COUNT_U,0) counting_unit - ,2 pack_flag - ,1 brand_flag -FROM Inhaled_all A -LEFT JOIN ( - SELECT - YYYYMM - ,zk_product_id - ,iqvia_pack_code - ,SUM(sales_value) sales_V - ,SUM(sales_unit) SALES_U - ,SUM(counting_unit) COUNT_U - FROM Inhaled_prov --省份 - GROUP BY - YYYYMM - ,zk_product_id - ,iqvia_pack_code -)B ON A.YYYYMM=B.YYYYMM AND A.zk_product_id=B.zk_product_id ---拼接省份的数据 -union all -select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - zk_region as province_city, - market, - Sales_value, - sales_unit, - counting_unit, - 1 pack_flag, - 1 brand_flag -from Inhaled_prov - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 布地奈德雾化溶液 直取pack - --- COMMAND ---------- - -/* -修改日期:20250311 -修改人:chenwu -修改内容:新增 布地奈德雾化溶液 直取逻辑,属于 RE 慢性阻塞性肺疾病 -*/ -create or replace temporary view bdnd_pack_direct -as -with - ---布地奈德雾化溶液 -bdnd_prov as ( - select - a.YYYYMM, - a.zk_product_id, - b.iqvia_pack_code, - a.zk_region, - '慢性阻塞性肺疾病' market, - B.prod_des_c, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - where - zk_common_name ='布地奈德' and brand_flag = 'pack-RE-慢阻肺-全国.xlsx' - and a.zk_region <> '全国' -- and iqvia_pack_code in (select iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market ='Inhaled Extended Market by Brand') - group by 1,2,3,4,5,6 -) ---全国的数据 -,bdnd_all as ( - select - a.YYYYMM, - a.zk_product_id, - b.iqvia_pack_code, - '全国' zk_region, - '慢性阻塞性肺疾病' market, - B.prod_des_c, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - where - zk_common_name ='布地奈德' and brand_flag = 'pack-RE-慢阻肺-全国.xlsx' - and a.zk_region = '全国' - group by 1,2,3,4,5,6 -) - ---倒减ROC部分 = 全国 - 省份 -SELECT - A.YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,'ROC' province_city - ,A.market - ,A.Sales_value - nvl(sales_V ,0) Sales_value - ,A.sales_unit - nvl(SALES_U,0) sales_unit - ,A.counting_unit - nvl(COUNT_U,0) counting_unit - ,2 pack_flag - ,1 brand_flag -FROM bdnd_all A -LEFT JOIN ( - SELECT - YYYYMM - ,zk_product_id - ,iqvia_pack_code - ,SUM(sales_value) sales_V - ,SUM(sales_unit) SALES_U - ,SUM(counting_unit) COUNT_U - FROM bdnd_prov --省份 - GROUP BY - YYYYMM - ,zk_product_id - ,iqvia_pack_code -)B ON A.YYYYMM=B.YYYYMM AND A.zk_product_id=B.zk_product_id ---拼接省份的数据 -union all -select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - zk_region as province_city, - market, - Sales_value, - sales_unit, - counting_unit, - 1 pack_flag, - 1 brand_flag -from bdnd_prov - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 补数据 pack直取 - --- COMMAND ---------- - -/* -修改日期:20250311 -修改人:chenwu -修改内容: -补数据 ---1 月份数据会比季度数据提前来,没有拆分比例的时候,保留全国的数据。 ---2 因为没有买 高血压总分子式 的数据,所以 高血压其他分子式 数据会漏掉,补进来。 -*/ - -create or replace temporary view tmp_zk_retail_pack_lost -as -with all_with_no_brand_province as ( - select a.*, - case when YYYYMM > b.last_yyymm then 'new_m' else 'lost' end as datatype - from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left join (select max(yyyymm) last_yyymm from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all ) b - where YYYYMM > b.last_yyymm - or ( - brand_flag ='pack-CV-高血压-化学药-全国.xlsx' - ) -) - -,tmp as ( - select - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - E.market_mapping market, - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null then 'OTHERS_氨氯地平,阿托伐他汀' - else B.prod_des_c - end prod_des_c, - - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null - THEN 'Others_氨氯地平阿托伐他汀钙片' - ELSE coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - END PROD_MAPPING, - -- coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) PROD_MAPPING, - datatype, - SUM(A.sales_value) sales_value, - sum(sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit -from - all_with_no_brand_province A - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit/coalesce(unit,1) counting_unit, - cmps_des_c - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - LEFT JOIN ( - SELECT - DISTINCT brand_mkt, - file_name, - market_mapping - FROM - DWD.dwd_gnd_ext_retail_corresponding_relationship - ) E ON A.brand_flag = E.file_name - LEFT JOIN ( - SELECT - DISTINCT YYYYMM, - prodmapping, - market - FROM - tmp.tmp_ZK_retail_brandTotal - ) C ON A.YYYYMM = C.YYYYMM - AND B.prod_des_c = C.prodmapping - AND E.market_mapping = C.market ---NIAD 直接取pack数据,gi market 剔除逻辑,RE根据maket拆分 、RE包含雾化器数据----- - left join (SELECT DISTINCT cmps_des_c FROM TMP.tmp_zk_retail_brandTotal where cmps_des_c is NOT null ) F - ON B.cmps_des_c=F.cmps_des_c -where - brand_flag in ( - - 'pack-GI-慢性胃炎胃溃疡-全国.xlsx', - "pack-CV-高血压-化学药-全国.xlsx" - ,'pack-CV-他汀类+血脂康-全国.xlsx' - - -- 'pack-雾化器-全国&县域数据.xlsx', - --'pack-DM-口服降糖化学药.xlsx' - --'pack-RE-慢阻肺-全国.xlsx', - -- ,'pack-RD-肾科-全国.xlsx' ,'pack-CV-抗血栓2通用名-全国.xlsx' 下面会单独拉取全部 - ) -GROUP BY - A.YYYYMM, - a.zk_product_id, - B.iqvia_pack_code, - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null then 'OTHERS_氨氯地平,阿托伐他汀' - else B.prod_des_c - end, - E.market_mapping, - --coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - case - when b.cmps_des_c = '氨氯地平,阿托伐他汀' - and b.prod_des_c is null - THEN 'Others_氨氯地平阿托伐他汀钙片' - ELSE coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) - END - ,datatype - ) - -, result( - select - YYYYMM,zk_product_id,iqvia_pack_code,market,prod_des_c - ,case when datatype = 'lost' and PROD_MAPPING ='Others_美托洛尔' and flag is not null then 'Others_美托洛尔' - when datatype = 'lost' and PROD_MAPPING ='Others_美托洛尔' and flag is null then 'Others_cmps_高血压用药' - else PROD_MAPPING - end PROD_MAPPING - ,datatype - ,sales_value,sales_unit,counting_unit -from tmp -left join (select distinct iqvia_pack_code flag from tmp.tmp_zk_retail_pack_property where market ='Metoprolol Succinate Market') fl on tmp.iqvia_pack_code =fl.flag -) - -select yyyymm,zk_product_id,iqvia_pack_code,market,prod_des_c,PROD_MAPPING -,sales_value -,sales_unit -,counting_unit -from result -where (PROD_MAPPING = 'Others_cmps_高血压用药' and datatype='lost') or datatype <> 'lost' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### 小儿咳喘 - --- COMMAND ---------- - ---小儿咳喘的brand省份拆分比例 -insert overwrite table tmp.tmp_zk_retail_brandTotal_xiaoer -with -xiaoer_mkt as (--小儿咳喘 总数( 包含布地奈德) - select - YYYYMM - ,TA - ,province_city - ,market - ,zk_brand_category - ,zk_common_name - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all - where market ='小儿咳喘' and TA = 'RE' and brand_cat_type = '品类' - and ranked_by = 'volume' - group by 1,2,3,4,5,6 -) ---布地奈德雾化溶液 -,bdnd as ( - select - YYYYMM - ,TA - ,province_city - ,market - ,zk_brand_category - ,zk_common_name - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all - where market ='布地奈德雾化溶液' and zk_brand_category = '布地奈德雾化溶液' and TA = 'RE' and brand_cat_type = '品类' - and ranked_by = 'volume' - group by 1,2,3,4,5,6 -) ---小快克,可威,希舒美,美林,易坦静 -,xiaoer_brand as ( - select - YYYYMM - ,TA - ,province_city - ,market - ,zk_brand_category - ,zk_common_name - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all - where market ='小儿咳喘' and TA = 'RE' and brand_cat_type = '品牌' - and zk_brand_category in ( - '可威-颗粒' --奥司他韦 - ,'可威-胶囊' --奥司他韦 - ,'美林-混悬滴剂' --布洛芬 - ,'美林-混悬液' --布洛芬 - -- ,'普米克令舒' --布地奈德 - ,'速福达-干混悬剂' --玛巴洛沙韦 - ,'速福达-片剂' --玛巴洛沙韦 - -- ,'天晴速畅' --布地奈德 - ,'希舒美' --阿奇霉素 - ,'小快克' --氨酚黄那敏 - ,'易坦静' --氨溴特罗 - ) - and ranked_by = 'volume' - group by 1,2,3,4,5,6 -) ---小儿 - (布地奈得 和 各品牌的 )= 小儿others -,xiaoer_mkt_m_bdnd as ( - select - A.YYYYMM - ,A.TA - ,A.province_city - ,A.market - ,'others_xiaoer' zk_brand_category - ,'others_xiaoer' zk_common_name - ,case when sum(A.sales_val) - coalesce(sum(B.sales_val),0) - coalesce(sum(c.sales_val),0) <=0 then 0 - else sum(A.sales_val) - coalesce(sum(B.sales_val),0) - coalesce(sum(c.sales_val),0) end sales_val - ,case when sum(A.sales_vol) - coalesce(sum(B.sales_vol),0) - coalesce(sum(c.sales_vol),0) <=0 then 0 - else sum(A.sales_vol) - coalesce(sum(B.sales_vol),0) - coalesce(sum(c.sales_vol),0) end sales_vol - from xiaoer_mkt A - left join ( - select - YYYYMM - ,province_city - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from bdnd - group by 1,2 - ) B on A.YYYYMM = B.YYYYMM and A.province_city = B.province_city - left join ( - select - YYYYMM - ,province_city - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from xiaoer_brand - group by 1,2 - ) C on A.YYYYMM = C.YYYYMM and A.province_city = C.province_city - group by 1,2,3,4,5,6 -) - --- 所有的数据 -, all_xiaoer_formated as ( - select * - from xiaoer_mkt_m_bdnd - union all - select * - from xiaoer_brand -) - --- 倒减去roc -, all_xiaoer_w_roc as ( - select - A.YYYYMM - ,A.TA - ,'ROC' province_city - ,A.market - ,A.zk_brand_category - ,A.zk_common_name - ,A.sales_val - coalesce(B.sales_val,0) as sales_val - ,A.sales_vol - coalesce(B.sales_vol,0) as sales_vol - from all_xiaoer_formated A - left join ( - select - YYYYMM - ,TA - ,market - ,zk_brand_category - ,zk_common_name - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from all_xiaoer_formated - where province_city <> '全国' - group by 1,2,3,4,5 - ) B on A.TA = B.TA and A.YYYYMM=B.YYYYMM - and A.market = B.market - and A.zk_brand_category= B.zk_brand_category - and A.zk_common_name = B.zk_common_name - where A.province_city = '全国' -union all -select - YYYYMM - ,TA - ,province_city - ,market - ,zk_brand_category - ,zk_common_name - ,sales_val - ,sales_vol -from all_xiaoer_formated -where province_city <> '全国' -) --- 计算拆分比例 -SELECT - YYYYMM - ,TA - ,province_city - ,market - ,zk_common_name - ,zk_brand_category - ,sales_val - ,sales_vol - ,nvl(cast(sales_val as decimal(38,15)) / sum(sales_val) over(PARTITION BY YYYYMM,TA,market,zk_brand_category),0.0384615384615385) valRate - ,nvl(cast(sales_vol as decimal(38,15)) / sum(sales_vol) over(PARTITION BY YYYYMM,TA,market,zk_brand_category),0.0384615384615385) volRate -from all_xiaoer_w_roc - - --- COMMAND ---------- - -create or replace temporary view tmp_pack_xiaoer -as -with xiaoer_all_pack as ( - select - a.YYYYMM, - a.zk_product_id, - a.zk_common_name, - a.zk_product_name, - a.zk_category_name, - b.iqvia_pack_code, - -- -- c.province_city, - '' market, - B.prod_des_c, - SUM(A.sales_value) sales_value, - sum(A.sales_unit) sales_unit, - SUM(A.sales_unit * b.counting_unit) counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) B ON A.zk_product_id = B.product_id - where - brand_flag = 'pack-RE-慢阻肺-全国.xlsx' and a.zk_region = '全国' - and zk_common_name <>'布地奈德' - group by 1,2,3,4,5,6,7,8 -) - -,tmp_brand_2_pack_xiaoer as ( - select 1 id ,'布洛芬' b_cmp ,'美林-混悬滴剂' b_brand ,'布洛芬' p_cmp ,'美林' p_product ,'布洛芬混悬滴剂' p_category union all - select 2 id ,'布洛芬' b_cmp ,'美林-混悬液' b_brand ,'布洛芬' p_cmp ,'美林' p_product ,'布洛芬混悬液' p_category union all - select 3 id ,'奥司他韦' b_cmp ,'可威-颗粒' b_brand ,'奥司他韦' p_cmp ,'可威' p_product ,'磷酸奥司他韦颗粒' p_category union all - select 8 id ,'奥司他韦' b_cmp ,'可威-胶囊' b_brand ,'奥司他韦' p_cmp ,'可威' p_product ,'磷酸奥司他韦胶囊' p_category union all - select 4 id ,'阿奇霉素' b_cmp ,'希舒美' b_brand ,'阿奇霉素' p_cmp ,'希舒美' p_product ,'阿奇霉素干混悬剂' p_category union all - select 5 id ,'氨酚黄那敏' b_cmp ,'小快克' b_brand ,'氨酚黄那敏' p_cmp ,'小快克' p_product ,'小儿氨酚黄那敏颗粒' p_category union all - select 6 id ,'氨溴特罗' b_cmp ,'易坦静' b_brand ,'氨溴特罗' p_cmp ,'易坦静' p_product ,'氨溴特罗口服溶液' p_category union all - select 9 id ,'玛巴洛沙韦' b_cmp ,'速福达-片剂' b_brand ,'玛巴洛沙韦' p_cmp ,'速福达' p_product ,'玛巴洛沙韦片' p_category union all - select 10 id ,'玛巴洛沙韦' b_cmp ,'速福达-干混悬剂' b_brand ,'玛巴洛沙韦' p_cmp ,'速福达' p_product ,'玛巴洛沙韦干混悬剂' p_category union all - select 7 id ,'others_xiaoer' b_cmp ,'others_xiaoer' b_brand ,'others_xiaoer' p_cmp ,'others_xiaoer' p_product ,'others_xiaoer' p_category -) - -select -A.YYYYMM -,A.zk_product_id -,A.iqvia_pack_code -,case when c.YYYYMM is null then '全国' else c.province_city end as province_city --如果季度拆分比例没有则不扩展province,直接为全国 -,'小儿咳喘' market -,A.prod_des_c -,'小儿咳喘' PROD_MAPPING -,case when C.YYYYMM is null then A.sales_value else cast(A.sales_value * C.ValRate as decimal(38, 10)) end as sales_value -,case when C.YYYYMM is null then A.sales_unit else cast(A.sales_unit * C.VolRate as decimal(38, 10)) end as sales_unit -,case when C.YYYYMM is null then A.counting_unit else cast(A.counting_unit * C.VolRate as decimal(38, 10)) end as counting_unit --- ,C.ValRate --- ,B.B_cmp -,case when c.YYYYMM is null then 1 else 2 end as pack_flag --2 按比例拆分的,1 不拆分比例的 -,case when c.YYYYMM is not null and B.B_cmp is null then 2 else 1 end as brand_flag --2 others_xiaoer 倒减出来的比例,1 是brand省份的比例 -from xiaoer_all_pack A --pack数据 -left join tmp_brand_2_pack_xiaoer B --brand 和 pack 的mapping - on A.zk_common_name = B.p_cmp - and A.zk_product_name = B.p_product - and A.zk_category_name = B.p_category -left join (select * from tmp.tmp_zk_retail_brandTotal_xiaoer ) C --拆分比例 - on A.YYYYMM = C.YYYYMM - and case when B.B_cmp is null then 'others_xiaoer' else B.B_cmp end = C.zk_common_name -- 没有拆分比例的 归为others - and case when B.B_brand is null then 'others_xiaoer' else B.B_brand end = C.zk_brand_category - -- where A.iqvia_pack_code = '1092502' - -- and A.YYYYMM = '202412' - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### pack 拼接省份比例 - --- COMMAND ---------- - ----------------------------------------------将所有数据拆分到省份拼接-------------------------------------------------------------------- -insert overwrite table tmp.tmp_retail_result -with tmp as ( - -- 选取pack 粒度基础数据 用于筛选 抗血栓2通用名 和 rd 数据 - select A.YYYYMM,a.zk_product_id,B.iqvia_pack_code,E.market_mapping market,A.brand_flag,B.prod_des_c,NVL(B.PROD_DES_C,CONCAT(E.market_mapping,'_Others')) PROD_MAPPING,SUM(A.sales_value) sales_value,SUM(A.sales_unit) sales_unit,A.zk_region,sum(sales_unit * b.counting_unit) counting_unit -from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all A -left JOIN (select distinct product_id, prod_des_c,iqvia_pack_code,counting_unit/coalesce(unit,1 ) counting_unit from dwd.dwd_gnd_ext_retail_pack_property) B ON A.zk_product_id = B.product_id -LEFT JOIN (SELECT DISTINCT brand_mkt,file_name,market_mapping FROM DWD.dwd_gnd_ext_retail_corresponding_relationship) E ON A.brand_flag = E.file_name -where A.zk_product_id not in ( - select distinct zk_product_id from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all - where brand_flag = 'pack-CV-酒石酸美托洛尔.xlsx' -) - GROUP BY A.YYYYMM,a.zk_product_id,B.iqvia_pack_code,B.prod_des_c, E.market_mapping ,A.brand_flag,A.zk_region - -) ,GI AS ( ---- gi 数据需要从 GI 文件中获取 market 为gi 的数据--- -select A.YYYYMM,a.zk_product_id,B.iqvia_pack_code,E.market_mapping market,B.prod_des_c -,coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) PROD_MAPPING -,SUM(A.sales_value) sales_value,sum(sales_unit) sales_unit ,SUM(A.sales_unit * b.counting_unit) counting_unit -from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all A -left JOIN (select distinct product_id, prod_des_c,iqvia_pack_code,counting_unit/coalesce(unit,1 ) counting_unit,CASE WHEN cmps_cod IN ('001658','002782','008617','001051','001853','008467') THEN '其他拉唑类' ELSE cmps_des_c END cmps_des_c from dwd.dwd_gnd_ext_retail_pack_property ) B ON A.zk_product_id = B.product_id -LEFT JOIN (SELECT DISTINCT brand_mkt,file_name,market_mapping FROM DWD.dwd_gnd_ext_retail_corresponding_relationship) E ON A.brand_flag = E.file_name -LEFT JOIN (SELECT DISTINCT YYYYMM,prodmapping,market FROM tmp.tmp_zk_retail_brandTotal) C ON A.YYYYMM = C.YYYYMM AND B.prod_des_c = C.prodmapping AND E.market_mapping = C.market -left join (SELECT DISTINCT cmps_des_c FROM TMP.tmp_zk_retail_brandTotal where cmps_des_c is NOT null ) F on b.cmps_des_c =f.cmps_des_c - -where brand_flag in ( 'pack-GI-慢性胃炎胃溃疡-全国.xlsx') -and ( - - b.product_id in ( select distinct a.product_id from tmp.tmp_zk_retail_pack_property a where a.market ='Antacid anti GI swelling agent+PPI Oral' ) - -- b.product_id in ( select distinct a.product_id from dws.dws_zk_retail_pack_property a where a.market ='Retail_GI Market' ) - -) -GROUP BY A.YYYYMM,a.zk_product_id,B.iqvia_pack_code,B.prod_des_c -,coalesce(C.prodmapping,concat('Others_',F.cmps_des_c),CONCAT('Others_cmps_',E.brand_mkt) ) -,E.market_mapping -) ---酒石酸美托洛尔 -,national_metoprolol_tartrat as ( - select - t1.YYYYMM, - t2.iqvia_pack_code, - t1.zk_product_id, - t2.prod_des_c, - NVL(t2.prod_des_c, '酒石酸美托洛尔_Others') PROD_MAPPING, - t1.zk_region as province_city, - '酒石酸美托洛尔' as market, - t1.sales_value, - t1.sales_unit, - t1.sales_unit * NVL(t2.counting_unit,1) as counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all t1 - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) t2 ON t1.zk_product_id = t2.product_id - where - t1.brand_flag = 'pack-CV-酒石酸美托洛尔.xlsx' - and t1.zk_region = '全国' -), -prov_metoprolol_tartrat as ( - select - t1.YYYYMM, - t2.iqvia_pack_code, - t1.zk_product_id, - t2.prod_des_c, - NVL(t2.prod_des_c, '酒石酸美托洛尔_Others') PROD_MAPPING, - t1.zk_region as province_city, - '酒石酸美托洛尔' as market, - t1.sales_value, - t1.sales_unit, - t1.sales_unit * NVL(t2.counting_unit,1) as counting_unit - from - dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all t1 - left JOIN ( - select - distinct product_id, - prod_des_c, - iqvia_pack_code, - counting_unit / coalesce(unit, 1) counting_unit - from - dwd.dwd_gnd_ext_retail_pack_property - ) t2 ON t1.zk_product_id = t2.product_id - where - t1.brand_flag = 'pack-CV-酒石酸美托洛尔.xlsx' - and t1.zk_region <> '全国' -), -all_metoprolol_tartrat as ( - select - t1.YYYYMM, - t1.iqvia_pack_code, - t1.zk_product_id, - t1.prod_des_c, - t1.PROD_MAPPING, - 'ROC' as province_city, - t1.market, - t1.sales_value - t2.sales_value sales_value, - t1.sales_unit - t2.sales_unit sales_unit, - t1.counting_unit - t2.counting_unit counting_unit, - 2 as pack_flag, - 2 as brand_flag - from - national_metoprolol_tartrat t1 - left join ( - select - YYYYMM, - zk_product_id, - sum(sales_value) sales_value, - sum(sales_unit) sales_unit, - sum(counting_unit) counting_unit - from - prov_metoprolol_tartrat - group by - YYYYMM, - zk_product_id - ) t2 on t1.YYYYMM = t2.YYYYMM - and t1.zk_product_id = t2.zk_product_id - union all - select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - PROD_MAPPING, - province_city, - market, - sales_value, - sales_unit, - counting_unit, - 1 as pack_flag, - 2 as brand_flag - from - prov_metoprolol_tartrat -) - ----他汀类+血脂康 + 高血压用药----------- ----拆分、倒减 pack_flag brand_flag 为0 ,取源数据为1 ---这里tmp_zk_retail_pack和tmp_zk_retail_brandTotal都已将酒石酸美托洛尔排除 - select A.YYYYMM,a.iqvia_pack_code,a.zk_product_id,a.prod_des_c,A.PROD_MAPPING,b.province_city,A.market,cast(a.sales_value*b.ValRate as decimal(38,10)) sales_value,cast(a.sales_unit*b.VolRate as decimal(38,10)) sales_unit,cast(a.counting_unit * b.VolRate as decimal(38,10)) counting_unit -,2 pack_flag -,case when PROD_MAPPING IN ('多达一', '氨氯地平阿托伐他汀钙片', '天依宁', 'OTHERS_氨氯地平,阿托伐他汀') or flag is null then 2 else 1 end brand_flag -from tmp.tmp_zk_retail_pack a -inner join tmp.tmp_zk_retail_brandTotal b on a.YYYYMM = b.YYYYMM and nvl(a.PROD_MAPPING ,'' )= nvl(b.prodmapping,'' ) and a.market = b.market -left join (select distinct PROD_DES_C flag from tmp.tmp_retail_brand) on a.prod_des_c = flag -UNION ALL ---- NIAD -SELECT YYYYMM,iqvia_pack_code,zk_product_id,prod_des_c, PROD_MAPPING,province_city,market,sales_value,sales_unit ,counting_unit,pack_flag,brand_flag from tmp.tmp_retail_sales_niad ---- GI -UNION ALL -select A.YYYYMM,a.iqvia_pack_code,a.zk_product_id,a.prod_des_c,A.PROD_MAPPING,b.province_city,A.market,a.sales_value*b.ValRate sales_value,a.sales_unit*b.VolRate sales_unit,a.counting_unit * b.VolRate counting_unit -,2 pack_flag --- ,case when a.PROD_MAPPING =concat('Others_',a.market ) then 2 else 1 end brand_flag -,case when (a.PROD_MAPPING like 'Others_%' and a.PROD_MAPPING not like 'Others_cmps%') or flag is null then 2 else 1 end brand_flag -from GI a -inner join tmp.tmp_zk_retail_brandTotal b on a.YYYYMM = b.YYYYMM and a.PROD_MAPPING = b.prodmapping and a.market = b.market -left join (select distinct PROD_DES_C flag from tmp.tmp_retail_brand) on a.prod_des_c = flag ---RD和抗血栓 -union all -select -YYYYMM -,iqvia_pack_code -,zk_product_id -,prod_des_c -,PROD_MAPPING -,'全国' zk_region -,case when brand_flag = 'pack-RD-肾科-全国.xlsx' then 'RD Market' else 'Brilinta Market' end market -,sales_value -,sales_unit -,counting_unit -,2 pack_flag -,2 brand_flag -from tmp -where brand_flag in ( 'pack-CV-抗血栓2通用名-全国.xlsx','pack-RD-肾科-全国.xlsx') --- 补充漏掉的部分 -union all -select -a.YYYYMM -,a.iqvia_pack_code -,a.zk_product_id -,a.prod_des_c -,a.PROD_MAPPING -,'全国' zk_region -,a.market -,a.sales_value -,a.sales_unit -,a.counting_unit -,1 pack_flag -,1 brand_flag -FROM tmp_zk_retail_pack_lost a - ------拼接re结果 --- union all --- select --- a.YYYYMM --- ,a.iqvia_pack_code --- ,a.zk_product_id --- ,b.prod_des_c --- ,b.prod_des_c --- ,a.province_city --- ,'慢性阻塞性肺疾病' market --- ,a.sales_value --- ,a.sales_unit --- ,a.counting_unit --- ,pack_flag --- ,case when c.mapp is null then 2 else 1 end brand_flag --- from tmp.tmp_retail_result_re a --- left join dwd.dwd_gnd_ext_retail_pack_property b --- on a.zk_product_id =b.product_id --- left join (select b.PROD_DES_C mapp from --- (select distinct zk_brand_category from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all where brand_cat_type='品牌' and market='慢性阻塞性肺疾病') a --- left join (select distinct PROD_DES_C,ZK_Prod_C from dwd.dwd_inc_gnd_retail_b2c_label_total ) b on a.zk_brand_category =b.ZK_Prod_C ) c --- on b.prod_des_c = c.mapp --- --酒石酸美托洛尔 --- union all --- select --- YYYYMM, --- iqvia_pack_code, --- zk_product_id, --- prod_des_c, --- PROD_MAPPING, --- province_city, --- market, --- sales_value, --- sales_unit, --- counting_unit, --- pack_flag, --- brand_flag --- from all_metoprolol_tartrat - --- inhaled直取数据 -union all -select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - '' PROD_MAPPING, - province_city, - market, - Sales_value, - sales_unit, - counting_unit, - pack_flag, - brand_flag -from Inhaled_pack_direct ---bdnd数据 -union all -select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - '' PROD_MAPPING, - province_city, - market, - Sales_value, - sales_unit, - counting_unit, - pack_flag, - brand_flag -from bdnd_pack_direct ---小儿咳喘 -union all -select - YYYYMM, - iqvia_pack_code, - zk_product_id, - prod_des_c, - '' PROD_MAPPING, - province_city, - market, - Sales_value, - sales_unit, - counting_unit, - pack_flag, - brand_flag -from tmp_pack_xiaoer - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 写入dws - --- COMMAND ---------- - -------------------------------将数据写入dws 并获取同期数据---------------------------- -insert overwrite table dws.dws_zk_retail_sales -select - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,province_city - ,market - ,sum(sales_value) as sales_value - ,sum(sales_value_ly) as sales_value_ly - ,sum(sales_unit) as sales_unit - ,sum(sales_unit_ly) as sales_unit_ly - ,sum(counting_unit) as counting_unit - ,sum(counting_unit_ly) as counting_unit_ly - ,pack_flag - ,brand_flag - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt -from ( - select - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,province_city - ,market - ,sales_value as sales_value - ,0 as sales_value_ly - ,sales_unit as sales_unit - ,0 as sales_unit_ly - ,counting_unit as counting_unit - ,0 as counting_unit_ly - ,pack_flag - ,brand_flag - from tmp.tmp_retail_result - union all - select - cast(YYYYMM + 100 as int) - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,province_city - ,market - ,0 as sales_value - ,sales_value as sales_value_ly - ,0 as sales_unit - ,sales_unit as sales_unit_ly - ,0 as counting_unit - ,counting_unit as counting_unit_ly - ,pack_flag - ,brand_flag - from tmp.tmp_retail_result - where YYYYMM + 100 <=(select max(yyyymm) from tmp.tmp_retail_result) -) -group by - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,PROD_MAPPING - ,province_city - ,market - ,pack_flag - ,brand_flag - - - - - --- COMMAND ---------- - -/* -剔除利尿剂数据 -*/ -insert overwrite table tmp.tmp_zk_retail_sales -select a.* from dws.dws_zk_retail_sales a - -left join dwd.dwd_gnd_ext_retail_pack_property c on a.zk_product_id = c.product_id -where lower( c.atc2_cod ) <> 'c03' and a.market = 'RD Market' - -union all -select * from dws.dws_zk_retail_sales a -where a.market <> 'RD Market' - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 将ta总数写入 dwd层,保持原有逻辑不动 - --- COMMAND ---------- - --- /* --- 修改时间:20250311 --- 修改人:chenwu --- 修改内容:由于TA大数没有了,所以要用pack的数据往上汇总,写入到原先的 dwd.dwd_gnd_ext_retail_nataional_ta_top_corp中 --- */ --- with corp_type_mapping as (-- corp 的类型 --- select --- case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END CORP_COD --- ,case when upper(MNFL_DES) = 'LOCAL' then 'LOCAL' else 'MNC' end CORP_TYPE --- from dwd.dwd_inc_gnd_retail_b2c_label_total --- group by --- case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END --- ,case when upper(MNFL_DES) = 'LOCAL' then 'LOCAL' else 'MNC' end --- ) - --- ,packcode_corp_mapping as (--pack 和 corp 关系 --- select iqvia_pack_code, nvl(max(corp_cod),'others') corp_cod,nvl( max(corp_des), 'others') corp_des, nvl(MAX(corp_des_c),'others') corp_des_c --- from tmp.tmp_zk_retail_pack_property --- group by 1 --- ) --- ,market_ta_mapping as ( --- select '慢性阻塞性肺疾病' market ,'RE' ta union all --- select '慢性胃炎、胃溃疡' market ,'GI' ta union all --- select 'Inhaled Extended Market' market ,'RE' ta union all --- select 'NIAD' market ,'NIAD' ta union all --- select 'Brilinta Market' market ,'CV-2' ta union all --- select '他汀类+血脂康' market ,'CV-3' ta union all --- select '小儿咳喘' market ,'XIAOER' ta union all --- select '高血压用药' market ,'CV-1' ta union all --- select 'RD Market' market ,'RD' ta --- ) --- ,ta_sumall as ( --- select --- B.corp_des_c as corp_desc --- ,B.CORP_COD as corp_name --code 暂时替代 英文名称 --- -- ,B.corp_cod as corp_cod --- ,C.CORP_TYPE as corp_type --- ,A.YYYYMM as sales_quarter --- ,cast(sum(sales_value)/1000000.000000 as decimal(38,6)) sales_amount --- ,D.ta as source_name_old --- from tmp.tmp_zk_retail_sales A --- left join packcode_corp_mapping B on A.iqvia_pack_code = B.iqvia_pack_code --- left join corp_type_mapping C on B.corp_cod = C.CORP_COD --- left join market_ta_mapping D on D.market = A.market --- where a.market<>'小儿咳喘' --and A.YYYYMM ='202412' --- group by --- B.corp_des_c --- ,B.corp_cod --- -- ,B.corp_cod --- ,C.CORP_TYPE --- ,A.YYYYMM --- ,D.ta) - --- ,sumall (--cv、niad --- select *,'CV' AS source_name from ta_sumall where left(source_name_old,2)='CV' UNION ALL --- select *,'CVRM' AS source_name from ta_sumall where left(source_name_old,2)='CV' OR source_name_old IN ('NIAD', 'RD') UNION ALL --- select *,'GI' AS source_name from ta_sumall where source_name_old='GI' UNION ALL --- select *,'RD' AS source_name from ta_sumall where source_name_old='RD' UNION ALL --- select *,'RE' AS source_name from ta_sumall where source_name_old='RE' UNION ALL --- select *,'NIAD' AS source_name from ta_sumall where source_name_old='NIAD' --- ) --- ,rankresult ( --计算排名 --- select --- row_number() over(partition by sales_quarter,source_name order by sales_amount desc) rank1 --- ,corp_desc --- ,corp_name --- ,corp_type --- ,sales_quarter --- ,sales_amount --- ,source_name --- from sumall --- ) - --- -- 写入数据到 dwd层 --- insert into table dwd.dwd_gnd_ext_retail_nataional_ta_top_corp --- (rank1, --- corp_desc, --- corp_name, --- corp_type, --- source_name, --- sales_quarter, --- sales_amount --- -- ytd_gr, --- -- ytd_ms, --- -- ytd_delta_ms, --- -- builtinarchivedate, --- -- source_file_path, --- -- source_file_name, --- -- etl_insert_dt --- ) --- select --- rank1 --- ,corp_desc --- ,corp_name --- ,corp_type --- ,source_name --- ,sales_quarter --- ,sales_amount --- from rankresult --- where rank1<=20 --数量太多 --- -- and sales_quarter ='202412' and source_name='NIAD' - - --- COMMAND ---------- - -----------------将 ta_top_corp 的数据处理到dws------------------- -insert overwrite table dws.dws_zk_retail_ta_top_corp --------------------获取 ta total 本同期数据,用于后续取 total 及 az 值------------------------ -SELECT - source_name, - rank1, - corp_desc, - CORP_COD, - yyyymm, - sum(sales_amount) sales_amount, - sum(sales_amount_ly) sales_amount_ly -FROM - ( - SELECT - a.rank1, - source_name, - A.corp_desc, - B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code - CAST(sales_quarter AS int ) yyyymm , - sales_amount * 1000000 AS sales_amount, - 0 AS sales_amount_ly - FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a - LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b - ON a.corp_desc = b.ZK_Corp_C -UNION ALL - SELECT - a.rank1, - source_name, - A.corp_desc, - B.CORP_COD, --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code - CAST(sales_quarter + 100 AS int ) yyyymm , - 0 AS sales_amount, - sales_amount * 1000000 AS sales_amount_ly - FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a - LEFT JOIN (SELECT DISTINCT ZK_Corp_C,CORP_COD FROM dwd.dwd_inc_gnd_retail_b2c_label_total) b - ON a.corp_desc = b.ZK_Corp_C - WHERE - CAST(sales_quarter + 100 AS int ) - <=( SELECT max(CAST(sales_quarter AS int )) - FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp ) -) -GROUP BY - 1,2,3,4,5 - - --- COMMAND ---------- - ---------------------------------------------------将 top_corp 的数据处理到dws---------------------------------------------------- ---------------------获取 全国total 本同期数据------------------------ -insert overwrite table dws.dws_zk_retail_top_corp -SELECT - yyyymm, - rank1, - corp_desc, - corporation, - -- source_name, - sum(sales_amount) as sales_amount, - sum(sales_amount_ly) as sales_amount_ly -FROM - ( - SELECT - nvl(rank1,'' ) as rank1 , - corp_desc, - corporation, - corp_type, - -- source_name, - CAST(sales_quarter AS int ) as yyyymm, - sales_amount * 1000000 AS sales_amount, - 0 AS sales_amount_ly - FROM dwd.dwd_gnd_ext_retail_nataional_top_corp - UNION ALL - SELECT - nvl(rank1,'' ) rank1, - corp_desc, - corporation, - corp_type, - -- source_name, - CAST(sales_quarter + 100 AS int ) as yyyymm, - 0 AS sales_amount, - sales_amount * 1000000 AS sales_amount_ly - FROM dwd.dwd_gnd_ext_retail_nataional_top_corp - WHERE CAST(sales_quarter + 100 AS int ) - <=(SELECT - max(CAST(sales_quarter AS int )) - FROM dwd.dwd_gnd_ext_retail_nataional_top_corp ) ) -GROUP BY - yyyymm, - rank1, - corp_desc, - corporation - -- source_name - --- COMMAND ---------- - -------------------对 配置表的pack 对应公司、分子式 根据 dwd_gnd_tbl_corp_change 表进行产品重新归属--------- -insert overwrite table tmp.tmp_zk_retail_pack_property_corp -select distinct a.iqvia_pack_code - ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod - ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des - ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c - ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod - ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des - ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -from (select DISTINCT iqvia_pack_code,corp_cod,corp_des,corp_des_c,right(concat('000000',manu_cod),6 ) manu_cod,manu_des,manu_des_c,prod_cod from tmp.tmp_zk_retail_pack_property) a -left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des,right(concat('000000',manu_cod),6 ) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b -on right(concat('000000000',A.prod_cod ),9)= b.prod_cod -left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des,right(concat('000000',manu_cod),6 ) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c -on a.iqvia_pack_code = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d -on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct right(concat('000000',manu_cod),6 ) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e -On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - --- COMMAND ---------- - ------------------------------计算others ta 和 cv others --------------------------------------- --- 他汀类+血脂康 高血压用药 Brilinta Market 三个标签属于CV 需要倒减 cv others 及az_others -- ---增加酒石酸美托洛尔,这个也属于CV --------------------------------------CV OTHERS------------------------------------------- --- total - market -insert overwrite table tmp.tmp_dm_zk_retail_sales_tmp -WITH TEMP_CV AS ( - -------------------------------------------------CV数据关联 去重pack,避免数据重复----------------------------------------------------- - SELECT - a.YYYYMM - ,a.iqvia_pack_code - ,a.zk_product_id - ,a.prod_des_c - ,a.province_city - ,a.sales_value - ,a.sales_value_ly - ,a.sales_unit - ,a.sales_unit_ly - ,a.counting_unit - ,a.counting_unit_ly - ,pack_flag - ,brand_flag - ,collect_list(a.market) source - FROM tmp.tmp_zk_retail_sales a - inner join ( - ---CV 中对重复数据任意取一个文件来源的 pack ,避免数据重复--- - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,max(market) market - FROM tmp.tmp_zk_retail_sales - where market in ('他汀类+血脂康','高血压用药','Brilinta Market','酒石酸美托洛尔') - group by 1,2,3,4,5 - ) b on a.yyyymm = b.yyyymm - and a.iqvia_pack_code =b.iqvia_pack_code - and a.zk_product_id = b.zk_product_id - and a.province_city = b.province_city - and a.market = b.market - where a.market in ('他汀类+血脂康','高血压用药','Brilinta Market','酒石酸美托洛尔') - group by 1,2,3,4,5,6,7,8,9,10,11,12,13 -) -, CV_PACK_CORP_DATA AS ( --------------------------------------获取pack + corp 粒度 的CV数据 并倒减cv下 az others 值----------------------------------------------- ---------------------拼接CV 原始AZ PACK数据-------------------- - SELECT - YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,A.province_city - ,B.corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - from TEMP_CV A - inner JOIN (select distinct iqvia_pack_code,corp_cod,corp_des,corp_des_c from tmp.tmp_zk_retail_pack_property_corp) b - ON A.iqvia_pack_code=B.iqvia_pack_code - where corp_cod ='A5Z' - UNION ALL ---------------------CV下的AZ OTHERS,即 cv 下的 AZ 汇总值减 pack 粒度az 汇总-------------------- - SELECT - CV_PACK.YYYYMM - ,'CV_AZ_OTHERS' as iqvia_pack_code - ,'CV_AZ_OTHERS' as zk_product_id - ,null as prod_des_c - ,'ROC' as province_city - ,CV_PACK.corp_cod - ,0--,case when Total.sales_amount is not null then Total.sales_amount - CV_PACK.sales_value else 0 end as sales_value - ,0--,case when Total.sales_amount_ly is not null then Total.sales_amount_ly - CV_PACK.sales_value_ly else 0 end as sales_value_ly - ,0,0,0,0 - ,null - ,0 pack_flag - ,0 brand_flag - FROM ( - SELECT - YYYYMM - ,corp_cod - ,sum(sales_value) sales_value - ,sum(sales_value_ly) sales_value_ly - from TEMP_CV a - inner join (select distinct iqvia_pack_code,corp_cod,corp_des,corp_des_c from tmp.tmp_zk_retail_pack_property_corp ) b - on a.iqvia_pack_code = b.iqvia_pack_code - where corp_cod ='A5Z' - group by 1,2 - ) CV_PACK - LEFT JOIN ( select yyyymm,sales_amount,sales_amount_ly from dws.dws_zk_retail_ta_top_corp where source_name='CV' --AND CORP_COD='A5Z' - AND CORP_COD ='A5Z' - ) Total - ON CV_PACK.YYYYMM = Total.YYYYMM - UNION ALL ---------------------拼接CV CORP非az 值-------------------- - SELECT - YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,A.province_city - ,B.corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - from TEMP_CV A - left JOIN (select distinct iqvia_pack_code,corp_cod,corp_des,corp_des_c from tmp.tmp_zk_retail_pack_property_corp ) b - ON A.iqvia_pack_code=B.iqvia_pack_code - where nvl(corp_cod,'') <>'A5Z' -) - ------ 倒减完 AZ 的所有CV PACK 数据--------- - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - ,'CV' FLAG - from CV_PACK_CORP_DATA - UNION ALL -------- 获取 CV_OTHERS---------- - SELECT - CV_PACK.YYYYMM - ,'CV_OTHERS' as iqvia_pack_code - ,'CV_OTHERS' as zk_product_id - ,null as prod_des_c - ,'ROC' as province_city - ,'CV_OTHERS' AS corp_cod - ,0--,case when Total.sales_amount is not null then Total.sales_amount - CV_PACK.sales_value else 0 end as sales_value - ,0--,case when Total.sales_amount_ly is not null then Total.sales_amount_ly - CV_PACK.sales_value_ly else 0 end as sales_value_ly - ,0,0,0,0 - ,null - ,0 pack_flag - ,0 brand_flag - ,'CV' - FROM ( - -------获取所有CV 数据------- - SELECT - YYYYMM - ,sum(sales_value) sales_value - ,sum(sales_value_ly) sales_value_ly - from CV_PACK_CORP_DATA - group by 1 - ) CV_PACK - LEFT JOIN ( select yyyymm,sales_amount,sales_amount_ly from dws.dws_zk_retail_ta_top_corp where source_name='CV' --AND CORP_COD='A5Z' - AND rank1 ='Total' - ) Total - ON CV_PACK.YYYYMM = Total.YYYYMM - UNION ALL ----------- 除了 CV 外的其他数据---------- - SELECT DISTINCT - YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,A.province_city - ,B.corp_cod - ,round(sales_value,2) sales_value - ,round(sales_value_ly,2) sales_value_ly - ,round(sales_unit,2) sales_unit - ,round(sales_unit_ly,2) sales_unit_ly - ,round(counting_unit,2) counting_unit - ,round(counting_unit_ly,2) counting_unit_ly - ,collect_list(market) source - ,pack_flag - ,brand_flag - ,CASE WHEN A.market IN ('NIAD','RD Market') THEN 'CVRM' ELSE '' END FLAG - from tmp.tmp_zk_retail_sales A - LEFT JOIN (select distinct iqvia_pack_code,corp_cod from tmp.tmp_zk_retail_pack_property_corp ) b - ON A.iqvia_pack_code=B.iqvia_pack_code - where market not in ('他汀类+血脂康','高血压用药','Brilinta Market','酒石酸美托洛尔') - group by - YYYYMM - ,A.iqvia_pack_code - ,A.zk_product_id - ,A.prod_des_c - ,A.province_city - ,B.corp_cod - ,round(sales_value,2) - ,round(sales_value_ly,2) - ,round(sales_unit,2) - ,round(sales_unit_ly,2) - ,round(counting_unit,2) - ,round(counting_unit_ly,2) - ,pack_flag - ,brand_flag - ,CASE WHEN A.market IN ('NIAD','RD Market') THEN 'CVRM' ELSE '' END - - - - --- COMMAND ---------- - ---------------------------------------------------------------------倒减cvrm az 及cvrm total ----------------------------------------------------- -insert overwrite table tmp.tmp_dm_zk_retail_sales_tmp2 -with alldata as ( - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - ,FLAG -FROM TMP.tmp_dm_zk_retail_sales_tmp -UNION ALL -SELECT - A.YYYYMM - ,'CVRM_AZ_OTHERS' iqvia_pack_code - ,'CVRM_AZ_OTHERS' zk_product_id - ,NULL prod_des_c - ,'ROC' - ,A.corp_cod - ,0--,case when B.sales_amount is not null then B.sales_amount - A.sales_value else 0 end sales_value - ,0--case when B.sales_amount_ly is not null then B.sales_amount_ly - A.sales_value_ly else 0 end sales_value_ly - ,0 sales_unit - ,0 sales_unit_ly - ,0 counting_unit - ,0 counting_unit_ly - ,NULL source - ,0 pack_flag - ,0 brand_flag - ,'CVRM' -FROM ( SELECT - YYYYMM,corp_cod - ,SUM(sales_value) sales_value - ,SUM(sales_value_ly) sales_value_ly - FROM tmp.tmp_dm_zk_retail_sales_tmp WHERE corp_cod ='A5Z' AND FLAG IN ('CV','CVRM') - GROUP BY 1,2 -) A -LEFT JOIN (select CORP_COD,yyyymm,sales_amount,sales_amount_ly from dws.dws_zk_retail_ta_top_corp where source_name='CVRM' AND CORP_COD='A5Z') B -ON A.YYYYMM=B.yyyymm AND A.corp_cod=B.CORP_COD -) - - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - ,FLAG -from alldata -union all -SELECT - A.YYYYMM - ,'CVRM_OTHERS' iqvia_pack_code - ,'CVRM_OTHERS' zk_product_id - ,NULL prod_des_c - ,'ROC' - ,'CVRM_OTHERS' corp_cod - ,0--,case when B.sales_amount is not null then B.sales_amount - A.sales_value else 0 end sales_value - ,0--case when B.sales_amount_ly is not null then B.sales_amount_ly - A.sales_value_ly else 0 end sales_value_ly - ,0 sales_unit - ,0 sales_unit_ly - ,0 counting_unit - ,0 counting_unit_ly - ,NULL source - ,0 pack_flag - ,0 brand_flag - ,'CVRM' -FROM ( SELECT - YYYYMM - ,SUM(sales_value) sales_value - ,SUM(sales_value_ly) sales_value_ly - FROM alldata WHERE FLAG IN ('CV','CVRM') - GROUP BY 1 -) A -LEFT JOIN (select yyyymm,sales_amount,sales_amount_ly from dws.dws_zk_retail_ta_top_corp where corp_desc='CVRM') B -ON A.YYYYMM=B.yyyymm - - --- COMMAND ---------- - -------------------------8.2不上线,但后续肯定会上线----------------- --- -----Non AZ Retail Related Market 逻辑,仅需要全国数据,该市场均为各文件中没有市场的数据,逻辑中存在仅取 gi re 文件数据,原因是 高血压、他汀血脂康、niad 在拆分时 使用的时整个文件拆分,而RD 、抗血栓 整个文件是全取,non az 市场数据若有,就已经存在结果表里; 反之 GI 、RE(含Inhaled) 拆分时通过 tblmarket 框选了对应市场的数据进行拆分,其他数据被排除了(即NON AZ 市场数据,该数据不属于任何TA ,但归属于TOTAL),后续这部分数据需要 在pbi 展示,所有需要在倒减 others_ta 时加上。 --- INSERT INTO tmp.tmp_dm_zk_retail_sales_tmp2 --- select --- YYYYMM --- ,iqvia_pack_code --- ,zk_product_id --- ,prod_des_c --- ,province_city --- ,corp_cod --- ,SUM(sales_value) sales_value --- ,SUM(sales_value_ly) sales_value_ly --- ,SUM(sales_unit) sales_unit --- ,SUM(sales_unit_ly) sales_unit_ly --- ,sum(counting_unit) counting_unit --- ,sum(counting_unit_ly) counting_unit_ly --- ,source --- ,pack_flag --- ,brand_flag --- ,flag --- from ( - --- --------------获取本期、同期数据---------- --- select --- a.YYYYMM --- ,b.iqvia_pack_code --- ,a.zk_product_id --- ,b.prod_des_c --- ,'ROC' province_city --- ,coalesce(c.corp_cod,b.corp_cod ) corp_cod --- ,sum(a.sales_value) sales_value --- ,0 sales_value_ly --- ,sum(a.sales_unit) sales_unit --- ,0 sales_unit_ly --- ,sum(a.sales_unit *(a.counting_unit / coalesce(b.unit,1 ))) counting_unit --- ,0 counting_unit_ly --- ,collect_list(a.brand_flag ) source --- ,2 pack_flag --- ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag --- ,null flag --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id = b.product_id --- left join tmp.tmp_zk_retail_pack_property_corp c on c.iqvia_pack_code = right(concat('0000000',b.iqvia_pack_code ),7 ) --- left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A --- LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c FROM tmp.tmp_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code --- ) prod on b.prod_des_c=prod.prod_des_c --- where b.iqvia_pack_code in ( select distinct iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market = 'Non AZ Retail Related Market' ) --- and a.zk_region ='全国' --- AND a.brand_flag in ('pack-GI-慢性胃炎胃溃疡-全国.xlsx','pack-RE-慢阻肺-全国.xlsx') --- and b.iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_dm_zk_retail_sales_tmp ) --- group by a.YYYYMM,b.iqvia_pack_code,a.zk_product_id,b.prod_des_c,a.brand_flag --- ,coalesce(c.corp_cod,b.corp_cod ) --- ,case when prod.prod_des_c is null --- THEN 2 else 1 --- END --- union all --- select --- cast(a.YYYYMM + 100 as int ) YYYYMM --- ,b.iqvia_pack_code --- ,a.zk_product_id --- ,b.prod_des_c --- ,'ROC' province_city --- ,coalesce(c.corp_cod,b.corp_cod ) corp_cod --- ,0 sales_value --- ,sum(a.sales_value) sales_value_ly --- ,0 sales_unit --- ,sum(a.sales_unit) sales_unit_ly --- ,0 counting_unit --- ,sum(a.sales_unit *(a.counting_unit / coalesce(b.unit,1 ))) counting_unit_ly --- ,collect_list(a.brand_flag ) source --- ,2 pack_flag --- ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag --- ,null flag --- from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all a --- left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id = b.product_id --- left join tmp.tmp_zk_retail_pack_property_corp c on c.iqvia_pack_code = right(concat('0000000',b.iqvia_pack_code ),7 ) --- left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A --- LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c FROM tmp.tmp_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code --- ) prod on b.prod_des_c=prod.prod_des_c --- where b.iqvia_pack_code in ( select distinct iqvia_pack_code from tmp.tmp_zk_retail_pack_property where market = 'Non AZ Retail Related Market' ) --- and a.zk_region ='全国' --- AND a.brand_flag in ('pack-GI-慢性胃炎胃溃疡-全国.xlsx','pack-RE-慢阻肺-全国.xlsx') --- and b.iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_dm_zk_retail_sales_tmp ) --- and a.YYYYMM + 100 <= (select max(YYYYMM) from tmp.tmp_dm_zk_retail_sales_tmp ) --- group by cast(a.YYYYMM + 100 as int ) --- ,b.iqvia_pack_code,a.zk_product_id,b.prod_des_c,a.brand_flag --- ,coalesce(c.corp_cod,b.corp_cod ) --- ,case when prod.prod_des_c is null --- THEN 2 else 1 --- END --- ) group by --- YYYYMM,iqvia_pack_code,zk_product_id,prod_des_c,province_city,corp_cod,source,pack_flag,brand_flag,flag - - --- COMMAND ---------- - --------------------------------------------------倒减OTHERS TA\ others az 并写入dm----------------------------------------- -insert overwrite table dm.dm_zk_retail_sales -with all_ta_data as ( - SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - ,FLAG - from tmp.tmp_dm_zk_retail_sales_tmp2 - UNION ALL - SELECT - mkt.YYYYMM - ,'OTHERS_AZ_TA' as iqvia_pack_code - ,'OTHERS_AZ_TA' as zk_product_id - ,null as prod_des_c - ,'ROC' as province_city - ,mkt.corp_cod - ,case when Total.sales_amount is not null then Total.sales_amount - mkt.sales_value else 0 end as sales_value - ,case when Total.sales_amount_ly is not null then Total.sales_amount_ly - mkt.sales_value_ly else 0 end as sales_value_ly - ,0,0,0,0 - ,null - ,0 pack_flag - ,0 brand_flag - ,'TA_AZ' - FROM ( - SELECT - YYYYMM - ,corp_cod - ,sum(sales_value) sales_value - ,sum(sales_value_ly) sales_value_ly - from tmp.tmp_dm_zk_retail_sales_tmp2 A - where nvl(corp_cod,'') ='A5Z' - group by YYYYMM,corp_cod - ) mkt - LEFT JOIN (SELECT yyyymm,sales_amount,sales_amount_ly FROM dws.dws_zk_retail_top_corp WHERE corp_desc='阿斯利康') TOTAL - ON mkt.YYYYMM = Total.YYYYMM -) -,Result as ( - ------------------------------- 所有pack数据 ------------------------------- -SELECT - YYYYMM - ,iqvia_pack_code - ,zk_product_id - ,prod_des_c - ,province_city - ,corp_cod - ,sales_value - ,sales_value_ly - ,sales_unit - ,sales_unit_ly - ,counting_unit - ,counting_unit_ly - ,source - ,pack_flag - ,brand_flag - ,FLAG -from all_ta_data - ----------------------------------OTHERS_TA 倒减数据----------------------------------- -union all -SELECT - mkt.YYYYMM - ,'OTHERS_TA' as iqvia_pack_code - ,'OTHERS_TA' as zk_product_id - ,null as prod_des_c - ,'ROC' as province_city - ,'OTHERS_TA' as corp_cod - ,Total.sales_amount - mkt.sales_value as sales_value - ,Total.sales_amount_ly - mkt.sales_value_ly as sales_value_ly - ,0,0,0,0 - ,null - ,0 pack_flag - ,0 brand_flag - ,'OTHERS_TA' -FROM ( - SELECT - YYYYMM - ,sum(sales_value) sales_value - ,sum(sales_value_ly) sales_value_ly - from all_ta_data A - group by YYYYMM - ) mkt -LEFT JOIN (SELECT yyyymm,sales_amount,sales_amount_ly FROM dws.dws_zk_retail_top_corp WHERE rank1='Total') TOTAL -ON mkt.YYYYMM = Total.YYYYMM -) -----------------------------------------数据写入DM------------------------------------------------ -select - pack.YYYYMM - ,pack.iqvia_pack_code - ,NVL(CASE WHEN PACK.province_city ='全国' then 'ROC' ELSE T2.geo_key END ,'ROC') AUDIT_COD - ,CASE WHEN PACK.province_city ='全国' then 'ROC' ELSE PACK.province_city END province_city - ,corp_cod - ,sum(pack.sales_unit) sales_unit - ,sum(pack.sales_unit_ly) sales_unit_ly - ,sum(pack.sales_value) sales_value - ,sum(pack.sales_value_ly) sales_value_ly - ,sum(pack.counting_unit) counting_unit - ,sum(pack.counting_unit_ly) counting_unit_ly - ,'Retail (Quarterly)' DATA_SOURCE - ,source - ,pack_flag - ,brand_flag - ,FLAG - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt -from result pack -left join dm.dm_zk_retail_geo t2 -on pack.province_city = t2.province_city -group by pack.YYYYMM - ,pack.iqvia_pack_code - ,NVL(CASE WHEN PACK.province_city ='全国' then 'ROC' ELSE T2.geo_key END ,'ROC') - ,CASE WHEN PACK.province_city ='全国' then 'ROC' ELSE PACK.province_city END - ,source - ,pack_flag - ,brand_flag - ,corp_cod - ,FLAG - - --- COMMAND ---------- - ----------------------------------------------将倒减的pack 补充到ppack info -insert overwrite table dws.dws_zk_retail_pack_property -select -* - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from tmp.tmp_zk_retail_pack_property -union all -------事实表中倒减出来的pack 需要补充到配置表中 - select - '' iqvia_lineno - ,iqvia_pack_code PACK_CODE - ,'' iqvia_prod_code - ,'' iqvia_notes - ,'' new_pack_flag - ,'' Is_exists_chpa - ,iqvia_pack_code product_id - ,'' prescription_nature - ,'' medicine_type - ,'' zk_medicine_tier1 - ,'' zk_medicine_tier2 - ,'' zk_medicine_tier3 - ,'' zk_medicine_tier4 - ,'' common_name - ,'' dosage_form - ,'' user_type - ,'' category_name - ,'' product_name - ,'' brand - ,'' zk_manu_des - ,'' zk_corp_des - ,'' zk_pack_des - ,'' counting_unit_a - ,'' dosage_unit_a - ,'' unit_a - ,'' app1_cod - ,'' app1_des - ,'' app1_des_c - ,'' app2_cod - ,'' app2_des - ,'' app2_des_c - ,'' app3_cod - ,'' app3_des - ,'' app3_des_c - ,'' atc1_cod - ,'' atc1_des - ,'' atc1_des_c - ,'' atc2_cod - ,'' atc2_des - ,'' atc2_des_c - ,'' atc3_cod - - ,'' atc3_des - ,'' atc3_des_c - ,'' atc4_cod - ,'' atc4_des - ,'' atc4_des_c - ,'' bio_desc - ,'' cmps_cod - ,'' cmps_des - ,'' cmps_des_c - ,corp_cod corp_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 - ,'Others' prod_des - ,'Others' prod_des_c - ,'' tcm_desc - ,'' vbp_desc - ,'' unit - ,'' counting_unit - ,'' dosage_unit - ,'' NRDL_ENTRY_DATE - ,'Non AZ Retail Related Market' market - ,'' bu - ,1 extend_market_ratio - ,CASE WHEN iqvia_pack_code LIKE '%AZ%' THEN 'Y' ELSE 'N' END is_az - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from (select distinct iqvia_pack_code,corp_cod - from DM.dm_zk_retail_sales where iqvia_pack_code not in (select distinct iqvia_pack_code from tmp.tmp_zk_retail_pack_property)) - - - --- COMMAND ---------- - --- dwd_gnd_tbl_corp_change ----------------------------------------对公司归属从新划分---------------------- -insert overwrite table tmp.tmp_dm_zk_retail_pack_property -select distinct - a.iqvia_lineno - ,a.iqvia_pack_code - ,a.PROD_COD - ,a.iqvia_notes - ,a.new_pack_flag - ,a.is_exists_chpa - ,a.product_id - ,a.prescription_nature - ,a.medicine_type - ,a.zk_medicine_tier1 - ,a.zk_medicine_tier2 - ,a.zk_medicine_tier3 - ,a.zk_medicine_tier4 - ,a.common_name - ,a.dosage_form - ,a.user_type - ,a.category_name - ,a.product_name - ,a.brand_name - ,a.zk_manu_des - ,a.zk_corp_des - ,a.zk_pack_des - ,a.counting_unit_a - ,a.dosage_unit_a - ,a.unit_a - ,a.app1_cod - ,a.app1_des - ,a.app1_des_c - ,a.app2_cod - ,a.app2_des - ,a.app2_des_c - ,a.app3_cod - ,a.app3_des - ,a.app3_des_c - ,a.atc1_cod - ,a.atc1_des - ,a.atc1_des_c - ,a.atc2_cod - ,a.atc2_des - ,a.atc2_des_c - ,a.atc3_cod - ,a.atc3_des - ,a.atc3_des_c - ,a.atc4_cod - ,a.atc4_des - ,a.atc4_des_c - ,a.bio_desc - ,a.cmps_cod - ,a.cmps_des - ,a.cmps_des_c - ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod - ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des - ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c - ,a.edl_desc - ,a.eth_otc_desc - ,a.gene_orig_desc - ,a.gqce_desc - ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod - ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des - ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c - ,a.mnfl_cod - ,a.mnfl_des - ,a.nrdl_desc - ,a.pack_des - ,a.stgh_des - ,a.pack_lch - ,a.paed_desc - ,a.prod_des - ,a.prod_des_c - ,a.tcm_desc - ,a.vbp_desc - ,a.unit - ,a.counting_unit - ,a.dosage_unit - ,a.NRDL_ENTRY_DATE - -- ,CASE WHEN a.market= 'Antacid anti GI swelling agent+PPI Oral' THEN 'Retail_GI Market' ELSE a.MARKET END MARKET - ,A.MARKET - ,a.bu - ,a.extend_market_ratio - ,a.is_az -from dws.dws_zk_retail_pack_property a -left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des, right(concat('000000',manu_cod ),6) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b -on right(concat('000000000',A.prod_cod ),9)= b.prod_cod -left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod,corp_des, right(concat('000000',manu_cod ),6) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c -on a.iqvia_pack_code = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_retail_pack_property) d -on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct right(concat('000000',manu_cod ),6) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_retail_pack_property) e -On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - --- COMMAND ---------- - - ------------------------------获取pack market 的对应关系---------------------------- --- drop table if exists dm.dm_zk_retail_pack_property; --- create table if not exists dm.dm_zk_retail_pack_property --- using delta as -INSERT OVERWRITE table dm.dm_zk_retail_pack_property -SELECT MARKET_PACK_KEY -,iqvia_pack_code iqvia_pack_code -,MAX(pack_des) pack_des -,MAX(stgh_des) stgh_des -,MAX(pack_lch) pack_lch -,MAX(Family_Code) Family_Code -,MAX(Family_Name) Family_Name -,MAX(iqvia_prod_code) iqvia_prod_code -,MAX(prod_des) prod_des -,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(market) market -,MAX(KEY_COMPETITOR) KEY_COMPETITOR -,MAX(is_az) is_az -,MAX(AZ_MAIN) AZ_MAIN -,MAX(AZ_Related) AZ_Related -,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(class) class -,MAX(TA) TA -FROM ( - select distinct - CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' - WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' - ELSE a.market - END ||'_'||a.iqvia_pack_code MARKET_PACK_KEY -,a.iqvia_pack_code -,c.pack_des -,c.stgh_des -,c.pack_lch -,'' Family_Code -,'' Family_Name -,c.iqvia_prod_code -,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des end prod_des -,case when c.iqvia_pack_code like '%O%' THEN 'Others' else c.prod_des_c end prod_des_c -,c.cmps_cod -,c.CMPS_DES -,c.cmps_des_c -,c.atc1_cod -,c.atc2_cod -,c.atc3_cod -,c.atc4_cod -,c.APP1_COD -,c.APP2_COD -,c.APP3_COD -,c.BIO_DESC -,c.gene_orig_desc -,c.ETH_OTC_DESC -,c.nrdl_desc -,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -,c.edl_desc -,c.TCM_DESC -,c.PAED_DESC -,c.GQCE_DESC -,c.VBP_DESC -,a.MANU_COD -,a.MANU_DES -,a.MANU_DES_C -,c.MNFL_COD -,c.MNFL_DES -,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' else a.CORP_COD END - corp_cod -,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' else case when a.CORP_DES like '% GROUP%' THEN replace(a.CORP_DES ,' GROUP','' ) ELSE a.CORP_DES END END - corp_des -,CASE WHEN A.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' else a.CORP_DES_C END - CORP_DES_C -,'' BrandType -,CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM_OTHER Market' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV_OTHER Market' - WHEN A.iqvia_pack_code IN ('OTHERS_AZ_TA','OTHERS_TA') THEN 'OTHERS Market' - ELSE a.market - END market -,t5.KEY_COMPETITOR -,IF(a.corp_des_c in('阿斯利康制药集团') ,'Y','N') is_az -,'' AZ_MAIN -,'' AZ_Related -,c.atc1_des -,c.atc1_des_c -,c.atc2_des -,c.atc2_des_c -,c.atc3_des -,c.atc3_des_c -,c.atc4_des -,c.atc4_des_c -,c.app1_des -,c.app1_des_c -,c.app2_des -,c.app2_des_c -,c.app3_des -,c.app3_des_c --- ,nvl(cla.class,'Others') class -,nvl(t3.class,'Others') class -,case when a.market ='Antacid anti GI swelling agent+PPI Oral' then 'GI' - when a.MARKET ='RD Market' then 'RD' - ELSE - CASE when a.iqvia_pack_code IN ('CVRM_AZ_OTHERS','CVRM_OTHERS') THEN 'CVRM' - WHEN a.iqvia_pack_code IN ('CV_AZ_OTHERS','CV_OTHERS') THEN 'CV' - ELSE t2.ta END - END TA -from tmp.tmp_dm_zk_retail_pack_property a -left join dwd.dwd_gnd_ext_retail_pack_property c on a.product_id = c.product_id -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON a.iqvia_pack_code = MOLE.Pack_Code -left join dws.dws_ext_retail_td_ta t2 on a.market = t2.market -left join dwd.dwd_gnd_tblclass t3 on a.MARKET = case when t3.market is null then a.market else t3.market end - and nvl(a.iqvia_pack_code,'') = case when t3.pack_code is null then nvl(a.iqvia_pack_code,'') else if( t3.pack_code REGEXP '^[0-9]',right(concat('000000000000',t3.pack_code),12),t3.pack_code) end - and nvl(a.PROD_COD,'') = case when t3.product_code is null then nvl(a.PROD_COD ,'') else right(concat('000000000', t3.product_code),9 ) end - and nvl(a.cmps_cod,'') = case when t3.molecule_code is null then nvl(a.cmps_cod ,'') else right(concat('000000', t3.molecule_code ),6 ) end - and nvl(a.corp_cod,'') = case when t3.Corporation_code is null then nvl(a.corp_cod ,'') else t3.Corporation_code end - and nvl(a.manu_cod,'')=case when t3.Manufacturer_Code is null then nvl(a.manu_cod,'') else t3.Manufacturer_Code end - and nvl(c.atc1_cod,'') = case when t3.ATC1_Code is null then nvl(c.atc1_cod ,'') else t3.ATC1_Code end - and nvl(c.ATC2_COD,'') = case when t3.ATC2_Code is null then nvl(c.ATC2_COD ,'') else t3.ATC2_Code end - and nvl(c.ATC3_COD,'') = case when t3.ATC3_Code is null then nvl(c.ATC3_COD ,'') else t3.ATC3_Code end - and nvl(c.ATC4_COD,'') = case when t3.ATC4_Code is null then nvl(c.ATC4_COD ,'') else t3.ATC4_Code end - and nvl(c.app1_cod,'') = case when t3.NFC1_Code is null then nvl(c.app1_cod ,'') else t3.NFC1_Code end - and nvl(c.APP2_COD,'') = case when t3.NFC2_Code is null then nvl(c.APP2_COD ,'') else t3.NFC2_Code end - and nvl(c.APP3_COD,'') = case when t3.NFC3_Code is null then nvl(c.APP3_COD ,'') else t3.NFC3_Code end - and nvl(c.stgh_des,'') = case when t3.Strength is null then nvl(c.stgh_des ,'') else t3.Strength end -left join (select distinct MARKET,PACK_COD,KEY_COMPETITOR from dm.dm_ims_td_pack_property) t5 -on a.market = t5.MARKET -and a.iqvia_pack_code = t5.PACK_COD -) - -group by MARKET_PACK_KEY -,iqvia_pack_code - - --- COMMAND ---------- - -------------获取pack market ta 对应关系表------------- -insert overwrite table dm.dm_zk_retail_market_property -select distinct -iqvia_pack_code,market,ta -from dm.dm_zk_retail_pack_property - --- COMMAND ---------- - -------------rc 拆分逻辑处理----------- -insert overwrite table dws.dws_ext_rc_ratio -select - a.sub_bu - ,a.mkt - ,a.region_code - ,nvl(b.PROVINCE_CODE,c.PROVINCE_CODE ) PROVINCE_CODE - ,nvl(b.AUDIT_COD,c.PROVINCE_CODE) city_code - ,a.ratio - ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt - ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt - from dwd.dwd_gnd_ext_rc_ratio a - left join dm.dm_ims_td_geo b - on a.city = b.CITY_C - left join (select province_code,province_name from dm.dm_td_geography group by province_name,province_code) c - on a.city = c.province_name - --- COMMAND ---------- - -----------------rc拆分逻辑处理到dm -insert overwrite table dm.dm_ext_rc_ratio -select - sub_bu - ,mkt - ,region_code - ,PROVINCE_CODE - ,city_code - ,ratio - ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_insert_dt - ,From_utc_timestamp(CURRENT_TIMESTAMP(), 'UTC+8') etl_update_dt - from dws.dws_ext_rc_ratio - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## DTP维度表 - --- COMMAND ---------- - --- -----dtp 维度表处理------------------ --- --第一步: --- --先处理 Extend_Market 和 NOT_IN_FLAG 都为空的数据,代表有明确定义得市场 -insert overwrite table tmp.tmp_zk_retail_dtp_market -select distinct -t1.region_type -,t1.higher_level_region -,t2.market -,if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) iqvia_pack_code --right(concat('0000000', t1.iqvia_pack_code ),7) -,right(concat('000000000', t1.iqvia_prod_code ),9) iqvia_prod_code --right(concat('00000', t1.iqvia_prod_code ),5) -,t1.iqvia_notes -,t1.new_pack_flag -,t1.is_exists_chpa -,t1.prescription_nature -,t1.common_name -,t1.dosage_form -,t1.category_name -,t1.product_name -,t1.brand_name -,t1.zk_corp_des -,t1.zk_pack_des -,t1.counting_unit_a -,t1.app1_cod -,t1.app1_des -,t1.app1_des_c -,t1.app2_cod -,t1.app2_des -,t1.app2_des_c -,t1.app3_cod -,t1.app3_des -,t1.app3_des_c -,t1.atc1_cod -,t1.atc1_des -,t1.atc1_des_c -,t1.atc2_cod -,t1.atc2_des -,t1.atc2_des_c -,t1.atc3_cod -,t1.atc3_des -,t1.atc3_des_c -,t1.atc4_cod -,t1.atc4_des -,t1.atc4_des_c -,t1.bio_desc -, right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod -,t1.cmps_des -,t1.cmps_des_c -,t1.corp_cod -,t1.corp_des -,t1.corp_des_c -,t1.edl_desc -,t1.eth_otc_desc -,t1.gene_orig_desc -,t1.gqce_desc -,t1.manu_cod -,t1.manu_des -,t1.manu_des_c -,t1.mnfl_cod -,t1.mnfl_des -,t1.nrdl_desc -,t1.pack_des -,t1.stgh_des -,t1.pack_lch -,t1.paed_desc -,t1.prod_des -,t1.prod_des_c -,t1.tcm_desc -,t1.vbp_desc -,t1.unit -,t1.counting_unit -,t1.dosage_unit -,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio -from dwd.dwd_gnd_ext_dtp_pack_property t1 -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON t1.iqvia_pack_code = MOLE.Pack_Code -left join (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )) t2 --- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) -on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end -and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end -and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end -and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end -and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end -and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end -and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end -and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end -and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -and right(concat('000000000', t1.iqvia_prod_code ),9) = case when t2.Product_Code is null then right(concat('000000000', t1.iqvia_prod_code ),9) else right(concat('000000000', t2.Product_Code ),9) end -and if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) - = case when t2.Pack_Code is null then if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) - else if( t2.Pack_Code REGEXP '^[0-9]',right(concat('000000000000',t2.Pack_Code),12),t2.Pack_Code) end -and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end -and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end -where t2.market is not null -; - - --- COMMAND ---------- - -insert overwrite table tmp.tmp_zk_retail_dtp_market_del -select distinct - t1.region_type -,t1.higher_level_region -,t2.market -,if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) iqvia_pack_code -, right(concat('000000000', t1.iqvia_prod_code ),9) iqvia_prod_code -,t1.iqvia_notes -,t1.new_pack_flag -,t1.is_exists_chpa -,t1.prescription_nature -,t1.common_name -,t1.dosage_form -,t1.category_name -,t1.product_name -,t1.brand_name -,t1.zk_corp_des -,t1.zk_pack_des -,t1.counting_unit_a -,t1.app1_cod -,t1.app1_des -,t1.app1_des_c -,t1.app2_cod -,t1.app2_des -,t1.app2_des_c -,t1.app3_cod -,t1.app3_des -,t1.app3_des_c -,t1.atc1_cod -,t1.atc1_des -,t1.atc1_des_c -,t1.atc2_cod -,t1.atc2_des -,t1.atc2_des_c -,t1.atc3_cod -,t1.atc3_des -,t1.atc3_des_c -,t1.atc4_cod -,t1.atc4_des -,t1.atc4_des_c -,t1.bio_desc -, right(concat('000000', t1.CMPS_COD ),6 ) cmps_cod -,t1.cmps_des -,t1.cmps_des_c -,t1.corp_cod -,t1.corp_des -,t1.corp_des_c -,t1.edl_desc -,t1.eth_otc_desc -,t1.gene_orig_desc -,t1.gqce_desc -,t1.manu_cod -,t1.manu_des -,t1.manu_des_c -,t1.mnfl_cod -,t1.mnfl_des -,t1.nrdl_desc -,t1.pack_des -,t1.stgh_des -,t1.pack_lch -,t1.paed_desc -,t1.prod_des -,t1.prod_des_c -,t1.tcm_desc -,t1.vbp_desc -,t1.unit -,t1.counting_unit -,t1.dosage_unit -,nvl(MOLE.NRDL_Entry_Date,'') AS NRDL_ENTRY_DATE -,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio - from dwd.dwd_gnd_ext_dtp_pack_property t1 -LEFT JOIN dwd.dwd_ims_td_pack_additional_attribute MOLE ON t1.iqvia_pack_code = MOLE.Pack_Code -left join (select * from dwd.dwd_gnd_dtp_tblmarket WHERE Extend_Market IS NULL AND NOT_IN_FLAG = '0' ) t2 --- on t1.cmps_cod=right(concat('000000', Molecule_Code),6 ) - on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end - and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end - and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end - and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end - and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end - and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end - and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end - and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end - and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -and right(concat('000000000', t1.iqvia_prod_code ),9) = case when t2.Product_Code is null then right(concat('000000000', t1.iqvia_prod_code ),9) else right(concat('000000000', t2.Product_Code ),9) end -and if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) - = case when t2.Pack_Code is null then if( t1.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',t1.iqvia_pack_code),12),t1.iqvia_pack_code) - else if( t2.Pack_Code REGEXP '^[0-9]',right(concat('000000000000',t2.Pack_Code),12),t2.Pack_Code) end - and t1.STGH_DES = case when t2.Strength is null then t1.STGH_DES else t2.Strength end - and right(concat('000000', t1.CMPS_COD ),6 ) = case when t2.Molecule_Code is null then right(concat('000000', t1.CMPS_COD ),6 ) else right(concat('000000', Molecule_Code),6 ) end - where t2.market is not null - --- COMMAND ---------- - - --- --!!!注意此段是反选的规则,故执行的是从已经定义好的TempMKT中删除数据 --- --需要看TempMKT的字段结构,没有值的字段,在Value里面放个空值 -MERGE INTO tmp.tmp_zk_retail_dtp_market AS t1 -USING tmp.tmp_zk_retail_dtp_market_del AS t2 - on t1.ATC1_COD = t2.ATC1_COD - and t1.ATC2_COD = t2.ATC2_COD - and t1.ATC3_COD = t2.ATC3_COD - and t1.ATC4_COD = t2.ATC4_COD - and t1.APP1_COD = t2.APP1_COD - and t1.APP2_COD = t2.APP2_COD - and t1.APP3_COD = t2.APP3_COD - and t1.CORP_COD = t2.CORP_COD - and t1.MANU_COD = t2.MANU_COD - and t1.iqvia_prod_code = t2.iqvia_prod_code - and t1.iqvia_pack_code = t2.iqvia_pack_code - and t1.STGH_DES = t2.STGH_DES - and t1.CMPS_COD = t2.CMPS_COD - and t1.market = t2.market -WHEN MATCHED THEN DELETE -; - --- COMMAND ---------- - -------------------------将产品对应的公司重新归属 -insert overwrite table tmp.tmp_zk_retail_dtp_market_corp -select -A.region_type -,A.higher_level_region -,A.market -,A.iqvia_pack_code -,A.iqvia_prod_code -,A.iqvia_notes -,A.new_pack_flag -,A.is_exists_chpa -,A.prescription_nature -,A.common_name -,A.dosage_form -,A.category_name -,A.product_name -,A.brand_name -,A.zk_corp_des -,A.zk_pack_des -,A.counting_unit_a -,A.app1_cod -,A.app1_des -,A.app1_des_c -,A.app2_cod -,A.app2_des -,A.app2_des_c -,A.app3_cod -,A.app3_des -,A.app3_des_c -,A.atc1_cod -,A.atc1_des -,A.atc1_des_c -,A.atc2_cod -,A.atc2_des -,A.atc2_des_c -,A.atc3_cod -,A.atc3_des -,A.atc3_des_c -,A.atc4_cod -,A.atc4_des -,A.atc4_des_c -,A.bio_desc -,A.cmps_cod -,A.cmps_des -,A.cmps_des_c - ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) corp_cod - ,COALESCE(c.corp_des,b.corp_des,a.corp_des) corp_des - ,COALESCE(d.corp_des_c,a.corp_des_c ) corp_des_c -,A.edl_desc -,A.eth_otc_desc -,A.gene_orig_desc -,A.gqce_desc - ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod - ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des - ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c -,A.mnfl_cod -,A.mnfl_des -,A.nrdl_desc -,A.pack_des -,A.stgh_des -,A.pack_lch -,A.paed_desc -,A.prod_des -,A.prod_des_c -,A.tcm_desc -,A.vbp_desc -,A.unit -,A.counting_unit -,A.dosage_unit -,A.NRDL_ENTRY_DATE -,A.bu -,A.Market_Ratio -from tmp.tmp_zk_retail_dtp_market a -left join (select DISTINCT right(concat('000000000',prod_cod ),9) prod_cod,corp_cod,corp_des, right(concat('000000',manu_cod ),6) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is null ) b -on right(concat('000000000',A.iqvia_prod_code ),9)= b.prod_cod -left join (select DISTINCT if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod ,corp_cod,corp_des, right(concat('000000',manu_cod ),6) manu_cod,manu_des from dwd.dwd_gnd_tbl_corp_change where pack_cod is not null ) c -on a.iqvia_pack_code = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_ext_dtp_pack_property) d -on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct right(concat('000000',manu_cod ),6) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_ext_dtp_pack_property) e -On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## DTP 数据 - --- COMMAND ---------- - -/* -修改日期:20250515 -修改人:chenwu -修改内容:新增 Anti-HER2 mBC 直取逻辑 -*/ -create or replace temporary view dtp_rawdata_Anti -as -with all_data as ( - select - left(dtp.year, 4) year, - concat(left(dtp.year, 4), 'Q', cal.quarter) yq, - cast(dtp.`time` as int) yyyymm, - pack.iqvia_pack_code, - pack.corp_cod, - geo.geo_key, - cast(dtp.counting_unit as double) count_unit, - cast(dtp.average_price as double) average_price, - cast(dtp.sales_amount as double) sales_value, - cast(dtp.sales_volume as double) sales_unit, - cast(dtp.counting_units_obversion as double) counting_units_obversion, - cast(dtp.sales_volume * (pack.counting_unit / pack.unit) as double) counting_unit - ,target_points market --使用dtp pack中的靶向点 字段来判断是否是需要拆分的市场 - ,pack.product_name brand_name - from dwd.dwd_gnd_ext_retail_dtp_datasource dtp - left join ( - select - DISTINCT brand_name, - iqvia_pack_code, - corp_cod, - zk_pack_des, - product_name, - counting_unit, - unit - from - tmp.tmp_zk_retail_dtp_market_corp - ) pack on dtp.pack_des = pack.zk_pack_des - AND nvl(dtp.product_name, '') = nvl(pack.product_name, '') - and dtp.brand_name = pack.brand_name - left join dm.dm_zk_retail_geo geo on dtp.region = geo.province_name - left join ( select distinct yyyymm,quarter from dm.dm_td_calendar ) cal on cal.yyyymm = dtp.`time` - where dtp.target_points = 'Anti-HER2 mBC' -) - ---全国的数据 -,quanguo_data as ( - select - * - from all_data - where geo_key = 'CHT' -) ---省份数据 -,province_data as ( - select - * - from all_data - where geo_key <> 'CHT' -) -,province_sum_data as ( - select - A.year - ,A.yq - ,A.yyyymm - ,A.iqvia_pack_code - ,A.corp_cod - ,max(A.count_unit) count_unit - ,max(A.average_price) average_price - ,sum(A.sales_value) as sales_value - ,sum(A.sales_unit) as sales_unit - ,sum(A.counting_units_obversion) as counting_units_obversion - ,sum(A.counting_unit) as counting_unit - from province_data A - group by 1,2,3,4,5 -) --- select * from province_data ---倒减ROC部分 = 全国 - 省份 -,roc_data as ( - select - A.year - ,A.yq - ,A.yyyymm - ,A.iqvia_pack_code - ,A.corp_cod - ,'ROC' geo_key - ,A.count_unit - ,if(B.average_price is not null, 2*A.average_price- B.average_price,A.average_price) as average_price - ,A.sales_value - B.sales_value as sales_value - ,A.sales_unit - B.sales_unit as sales_unit - ,A.counting_units_obversion -B.counting_units_obversion AS counting_units_obversion - ,A.counting_unit - B.counting_unit AS counting_unit - from quanguo_data A - left join province_sum_data B on A.yyyymm = B.yyyymm and A.iqvia_pack_code = B.iqvia_pack_code and A.corp_cod = B.corp_cod -) - -select -A.year -,A.yq -,A.yyyymm -,A.iqvia_pack_code -,A.corp_cod -,A.geo_key -,A.count_unit -,A.average_price -,A.sales_value as sales_value -,A.sales_unit as sales_unit -,A.counting_units_obversion as counting_units_obversion -,A.counting_unit as counting_unit -,1 pack_flag -,1 brand_flag -from province_data A -union all -select -A.year -,A.yq -,A.yyyymm -,A.iqvia_pack_code -,A.corp_cod -,A.geo_key -,A.count_unit -,A.average_price -,A.sales_value as sales_value -,A.sales_unit as sales_unit -,A.counting_units_obversion as counting_units_obversion -,A.counting_unit as counting_unit -,1 pack_flag -,1 brand_flag -from roc_data A - --- COMMAND ---------- - ----------------------------------------------------------- -/* -修改时间:20250311 -修改人:chenwu -修改内容:新增手动拆分DTP逻辑修改 -*/ ----------------------------------------------------------- -create or replace table tmp.tmp_zk_retail_brandTotal_dtp -with dtp_egfr_tki_market(--brand中 EGFR TKI Market 的量 - select - YYYYMM - ,market - ,province_city - ,cast(sales_value * 1000000 as decimal(30,10)) AS sales_val - ,cast(sales_volume * 1000000 as decimal(30,10)) AS sales_vol - ,'EGFR TKI Market' marketmapping - ,'--' cmps_des_c - ,'--' prod_des_c - from dwd.dwd_gnd_ext_dtp_zk_brand - where type = '品类' --and TA = 'ONC' - and ranked_by = 'value' - and market = 'EGFR TKI' -) - -,dtp_brand(--brand数据中 brand的量 - select - YYYYMM - ,market - ,province_city - ,cast(sales_value * 1000000 as decimal(30,10)) AS sales_val - ,cast(sales_volume * 1000000 as decimal(30,10)) AS sales_vol - ,'EGFR TKI Market' marketmapping - ,case when zk_brand_category = '泰瑞沙' then '奥希替尼' - when zk_brand_category = '凯美纳' then '埃克替尼' - when zk_brand_category = '阿美乐' then '阿美替尼' - when zk_brand_category = '艾弗沙' then '伏美替尼' - else 'Others_cmps_EGFR TKI Market' end - as cmps_des_c - ,zk_brand_category as prod_des_c - - from dwd.dwd_gnd_ext_dtp_zk_brand - where type = '品牌' - and ranked_by = 'value' - and zk_brand_category in ('泰瑞沙','凯美纳','阿美乐','艾弗沙') -) - -,other_dtp_cmps(--其他的 - select - A.YYYYMM - ,A.market - ,A.province_city - ,A.sales_val - B.sales_val as sales_val - ,A.sales_vol - B.sales_vol as sales_vol - ,'other_EGFR TKI Market' marketmapping - ,concat('Others_cmps_',A.market ) as cmps_des_c - ,'Others_brand' as prod_des_c -from dtp_egfr_tki_market A -left join ( - select - YYYYMM - ,province_city - ,sum(sales_val) as sales_val - ,sum(sales_vol) as sales_vol - from dtp_brand group by 1,2 - ) B - ON A.YYYYMM = B.YYYYMM and A.province_city=B.province_city -) - ---合并所有 -,dtp_all as ( - select * from dtp_brand - union all - select * from other_dtp_cmps -) - ---计算ROC部分 -,dtp_roc( - select - A.YYYYMM - ,A.market - ,'Other Low Tiers' province_city - ,A.marketmapping - ,A.cmps_des_c - ,A.prod_des_c - ,A.sales_val-B.sales_val as sales_val - ,A.sales_vol-B.sales_vol as sales_vol - from dtp_all A - left join ( - select - YYYYMM - ,market - ,marketmapping - ,cmps_des_c - ,prod_des_c - ,sum(sales_val) sales_val - ,sum(sales_vol) sales_vol - from dtp_all - where province_city<>'全国' - group by YYYYMM, market, marketmapping, cmps_des_c, prod_des_c - ) B on A.YYYYMM=B.YYYYMM - and A.market=A.market - and A.marketmapping=B.marketmapping - and A.cmps_des_c=B.cmps_des_c - and A.prod_des_c=B.prod_des_c - where A.province_city = '全国' - - union all - --非全国部分 - select - YYYYMM - ,market - ,province_city - ,marketmapping - ,cmps_des_c - ,prod_des_c - ,sales_val - ,sales_vol - from dtp_all - where province_city <> '全国' -) -,default_rate as (select cast(1.0/count( distinct province_city ) as decimal(38,15)) as d_rate from dtp_roc ) -,geo as (select distinct geo_Key ,province_name from dm.dm_zk_retail_geo) -select - YYYYMM - ,market - ,geo.geo_Key - -- ,province_city - ,marketmapping - ,cmps_des_c - ,prod_des_c - ,sales_val - ,sales_vol - ,nvl(cast(sales_val as decimal(38,15)) / sum(sales_val) over(PARTITION BY YYYYMM,market,marketmapping,cmps_des_c,prod_des_c),default_rate.d_rate ) valRate - ,nvl(cast(sales_vol as decimal(38,15)) / sum(sales_vol) over(PARTITION BY YYYYMM,market,marketmapping,cmps_des_c,prod_des_c),default_rate.d_rate ) volRate -from dtp_roc -left join default_rate --取默认比率 -left join geo on geo.province_name = dtp_roc.province_city - - --- COMMAND ---------- - ----new dtp pack data -/* -修改人:chenwu -修改时间:20250415 -修改内容:新增市场时,可能出现 一个pack对应多个市场的情况,所以直接用 tmp.tmp_zk_retail_dtp_market_corp 取pack和market的对应关系会导致数据重复, -故使用dtp pack中的[靶向点]字段来判断是否是需要拆分的市场。 -*/ -create or replace temporary view new_dtp_pack_data -as -with dtp_pack_old (--原有逻辑 -select - left(dtp.year, 4) year, - concat(left(dtp.year, 4), 'Q', cal.quarter) yq, - cast(dtp.`time` as int) yyyymm, - pack.iqvia_pack_code, - pack.corp_cod, - geo.geo_key, - cast(dtp.counting_unit as double) count_unit, - cast(dtp.average_price as double) average_price, - cast(dtp.sales_amount as double) sales_value, - cast(dtp.sales_volume as double) sales_unit, - cast(dtp.counting_units_obversion as double) counting_units_obversion, - cast(dtp.sales_volume * (pack.counting_unit / pack.unit) as double) counting_unit - ,target_points market --使用dtp pack中的靶向点 字段来判断是否是需要拆分的市场 - ,pack.product_name brand_name -from - dwd.dwd_gnd_ext_retail_dtp_datasource dtp - left join ( - select - DISTINCT brand_name, - iqvia_pack_code, - corp_cod, - zk_pack_des, - product_name, - counting_unit, - unit - from - tmp.tmp_zk_retail_dtp_market_corp - ) pack on dtp.pack_des = pack.zk_pack_des - AND nvl(dtp.product_name, '') = nvl(pack.product_name, '') - and dtp.brand_name = pack.brand_name - left join dm.dm_zk_retail_geo geo on dtp.region = geo.province_name - left join ( select distinct yyyymm,quarter from dm.dm_td_calendar ) cal on cal.yyyymm = dtp.`time` - where dtp.target_points <> 'Anti-HER2 mBC' -) - -select -A.year -,A.yq -,A.yyyymm -,A.iqvia_pack_code -,A.corp_cod -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then a.geo_key - when B.YYYYMM IS NULL THEN C.geo_key ELSE B.geo_key end as geo_key -,A.count_unit -,A.average_price -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then 1 - when B.YYYYMM IS NULL THEN C.valRate ELSE B.valRate end * A.sales_value as sales_value -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then 1 - when B.YYYYMM IS NULL THEN C.volRate ELSE B.volRate end * A.sales_unit as sales_unit -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then 1 - when B.YYYYMM IS NULL THEN C.volRate ELSE B.volRate end * A.counting_units_obversion as counting_units_obversion -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then 1 - when B.YYYYMM IS NULL THEN C.volRate ELSE B.volRate end * A.counting_unit as counting_unit --- ,a.market -,1 pack_flag -,Case when B.YYYYMM IS NULL and C.YYYYMM IS NULL then 1 - when B.YYYYMM IS NULL THEN 2 else 1 end as brand_flag --如果 能够匹配上 brand的比例则 1,否则2 -from dtp_pack_old A -left join tmp.tmp_zk_retail_brandTotal_dtp B - on A.brand_name = B.prod_des_c and A.yyyymm = B.yyyymm -left join tmp.tmp_zk_retail_brandTotal_dtp C - on B.YYYYMM IS NULL AND C.prod_des_c = 'Others_brand' and A.yyyymm = C.yyyymm -where a.market = 'EGFR TKI' ---not EGFR TKI Market -union all -select -A.year -,A.yq -,A.yyyymm -,A.iqvia_pack_code -,A.corp_cod -,A.geo_key -,A.count_unit -,A.average_price -,A.sales_value as sales_value -,A.sales_unit as sales_unit -,A.counting_units_obversion as counting_units_obversion -,A.counting_unit as counting_unit --- ,a.market -,1 pack_flag -,2 brand_flag -from dtp_pack_old A -where a.market <> 'EGFR TKI' - ---有省份数据的pack数据 -UNION ALL -SELECT -A.year -,A.yq -,A.yyyymm -,A.iqvia_pack_code -,A.corp_cod -,A.geo_key -,A.count_unit -,A.average_price -,A.sales_value -,A.sales_unit -,A.counting_units_obversion -,A.counting_unit -,1 pack_flag -,1 brand_flag -FROM dtp_rawdata_Anti A - --- COMMAND ---------- - -insert overwrite table dws.dws_retail_dtp_sales -with pack_data as ( - --- 获取 dtp 底表数据 并进行格式转换---- - select * from new_dtp_pack_data -) -,AZ AS ( -SELECT -B.YQ -,A.yyyymm -,A.CORP_COD -,'DTP_AZ_OTHERS' iqvia_pack_code -,A.sales_amount -AZ_SALE sales_value -FROM (select cast(top_corp.sales_quarter as int ) yyyymm - ,top_corp.corp_name,top_corp.sales_amount *1000000.0 sales_amount ,pack.CORP_COD - from dwd.dwd_gnd_ext_retail_dtp_top_copd top_corp - left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total ) pack on replace(top_corp.corp_name,'-','')=pack.ZK_Corp_C - where pack.CORP_COD='A5Z') A - left join (SELECT YQ,yyyymm , CORP_COD ,SUM(sales_value) AZ_SALE FROM pack_data WHERE corp_cod ='A5Z' group by corp_cod,yyyymm,YQ) B ON A.CORP_COD=B.CORP_COD AND A.yyyymm=B.yyyymm -) -,total_dtp as ( - --获取total 数据-- -SELECT - dtp_name - ,sales_quarter - ,sales_amount*1000000.0 as sales_amount -FROM dwd.dwd_gnd_ext_retail_dtp_overall_market -) -select - year - ,yq - ,yyyymm - ,iqvia_pack_code - ,geo_key - ,count_unit - ,average_price - ,sales_value - ,sales_unit - ,counting_units_obversion - ,counting_unit - ,pack_flag - ,brand_flag -from pack_data -union all -select - year - ,yq - ,yyyymm - ,'DTP_OTHERS' iqvia_pack_code - ,'CHT' geo_key --赋给全国 - ,0 counting_unit - ,0 average_price - ,total_dtp.sales_amount - pack_data.sales_value sales_value - ,0 sales_volume - ,0 counting_units_obversion - ,0 - ,0 - ,0 -from ( ---修改人:chenwu,修改时间:20250415,修改内容:dtp_overall_market中没有geo信息,故给全国,去除geo_key的group by信息,并修改关联键 -SELECT year, yq,yyyymm,SUM(sales_value) sales_value -FROM ( select year,yq,yyyymm,geo_key,sum(sales_value) sales_value from pack_data GROUP BY 1,2,3,4 - UNION ALL - SELECT left(YYYYMM,4 ),YQ,YYYYMM,'CHT' ,sales_value FROM AZ ) -GROUP BY yq,yyyymm ,year - ) pack_data -left join total_dtp on pack_data.yyyymm=total_dtp.sales_quarter -UNION ALL -SELECT -left(yyyymm,4 ) ,YQ,yyyymm - ,iqvia_pack_code - ,'CHT' geo_key - ,0 count_unit - ,0 average_price - ,sales_value - ,0 sales_unit - ,0 counting_units_obversion - ,0 counting_unit - ,0 pack_flag - ,0 brand_flag -FROM AZ - - - --- COMMAND ---------- - --- dtp 数据获取本同期数据-- -insert overwrite table dm.dm_zk_retail_dtp_sales -select - year - ,yq - ,yyyymm - ,iqvia_pack_code - ,CASE WHEN geo_key ='CHT' then 'ROC' else geo_key end as AUDIT_COD - --- 全国写死为 ROC - -- ,'ROC' AUDIT_COD - ,sum(sales_value) sales_value - ,sum(sales_unit) sales_unit - ,sum(counting_unit) counting_unit - ,sum(sales_value_ly) sales_value_ly - ,sum(sales_unit_ly) sales_unit_ly - ,sum(counting_unit_ly) counting_unit_ly - ,pack_flag - ,brand_flag - from ( - select - year - ,yq - ,yyyymm - ,iqvia_pack_code - ,geo_key - ,sales_value - ,sales_unit - ,counting_unit counting_unit - ,0 sales_value_ly - ,0 sales_unit_ly - ,0 counting_unit_ly - ,brand_flag - ,pack_flag - from dws.dws_retail_dtp_sales - union all - select - cast(year+1 as int ) year - ,concat(cast(left(yq,4)+1 as int ),right(yq,2)) yq - ,cast(yyyymm+100 as int ) yyyymm - ,iqvia_pack_code - ,geo_key - ,0 sales_value - ,0 sales_unit - ,0 counting_unit - ,sales_value sales_value_ly - ,sales_unit sales_unit_ly - ,counting_unit counting_unit_ly - ,brand_flag - ,pack_flag - from dws.dws_retail_dtp_sales - where yyyymm +100 <= (select max(yyyymm) from dws.dws_retail_dtp_sales) - ) - group by 1,2,3,4,5,12,13 - - --- COMMAND ---------- - --- dtp 部分生成dws -insert overwrite table dws.dws_zk_retail_dtp_market -select distinct t1.* -from tmp.tmp_zk_retail_dtp_market_corp t1 -union -select - '' region_type -,'' higher_level_region -,'DTP_OTHER Market' market -,iqvia_pack_code -,'' iqvia_prod_code -,'' iqvia_notes -,'' new_pack_flag -,'' is_exists_chpa -,'' prescription_nature -,'' common_name -,'' dosage_form -,'' category_name -,'' product_name -,'' brand_name -,'' zk_corp_des -,'' zk_pack_des -,'' counting_unit_a -,'' app1_cod -,'' app1_des -,'' app1_des_c -,'' app2_cod -,'' app2_des -,'' app2_des_c -,'' app3_cod -,'' app3_des -,'' app3_des_c -,'' atc1_cod -,'' atc1_des -,'' atc1_des_c -,'' atc2_cod -,'' atc2_des -,'' atc2_des_c -,'' atc3_cod -,'' atc3_des -,'' atc3_des_c -,'' atc4_cod -,'' atc4_des -,'' atc4_des_c -,'' bio_desc -,'' cmps_cod -,'' cmps_des -,'' cmps_des_c -,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'A5Z' ELSE '' END corp_cod -,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN 'ASTRAZENECA' ELSE '' END corp_des -,CASE WHEN t1.iqvia_pack_code LIKE '%AZ%' THEN '阿斯利康制药集团' ELSE '' END 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 -,'' counting_unit -,'' dosage_unit -,null NRDL_ENTRY_DATE -,null -,'1' Market_Ratio -from dws.dws_retail_dtp_sales t1 -where iqvia_pack_code LIKE '%OTHERS' - --- COMMAND ---------- - --- dtp 部分生成 dm -------------获取对应class 及其他维度------- -insert overwrite table dm.dm_zk_retail_dtp_pack_property -select distinct - A.market ||'_'|| A.iqvia_pack_code MARKET_PACK_KEY -,A.iqvia_pack_code -,A.pack_des -,A.stgh_des -,A.pack_lch -,'' Family_cod -,'' Family_Name -,A.iqvia_prod_code PROD_COD -,A.prod_des -,A.prod_des_c -,A.cmps_cod -,A.cmps_des -,A.cmps_des_c -,A.atc1_cod -,A.atc2_cod -,A.atc3_cod -,A.atc4_cod -,A.app1_cod -,A.app2_cod -,A.app3_cod -,A.BIO_DESC -,A.gene_orig_desc -,A.eth_otc_desc -,A.nrdl_desc -,A.NRDL_ENTRY_DATE -,A.edl_desc -,A.TCM_DESC -,A.PAED_DESC -,A.GQCE_DESC -,A.VBP_DESC -,A.MANU_COD -,A.MANU_DES -,A.MANU_DES_C -,A.MNFL_COD -,A.MNFL_DES -,A.CORP_COD -,CASE WHEN A.corp_des LIKE '% GROUP%' THEN replace(A.corp_des,' GROUP','' ) ELSE A.corp_des END corp_des -,CORP_DES_C -,'' BrandType -,A.MARKET -,t5.KEY_COMPETITOR -,CASE WHEN CORP_COD ='A5Z' THEN 'Y' ELSE 'N' END IS_AZ -,'' AZ_MAIN -,case when dmt.TA is null then 'Others MKT' else 'AZ Related MKT' end as 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 -,ifnull(t3.class,'Others') as Class -,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from dws.dws_zk_retail_dtp_market A -left join dwd.dwd_gnd_ims_tblmarket_ta_map dmt on dmt.Market = A.Market -left join dwd.dwd_gnd_tblclass t3 - on A.market = ifnull(t3.market , A.market ) - and A.iqvia_pack_code = ifnull(if( t3.pack_code REGEXP '^[0-9]',right(concat('000000000000',t3.pack_code),12),t3.pack_code), A.iqvia_pack_code) - and A.iqvia_prod_code = ifnull(right(concat('000000000', t3.product_code),9 ) , A.iqvia_prod_code) - and A.cmps_cod = ifnull(right(concat('000000',t3.molecule_code ), 6) , A.cmps_cod) - and A.corp_cod = ifnull(t3.Corporation_code , A.corp_cod) - and A.manu_cod = ifnull(t3.Manufacturer_Code , A.manu_cod) - and A.ATC1_COD = ifnull(t3.ATC1_Code , A.ATC1_COD) - and A.ATC2_COD = ifnull(t3.ATC2_Code , A.ATC2_COD) - and A.ATC3_COD = ifnull(t3.ATC3_Code , A.ATC3_COD) - and A.ATC4_COD = ifnull(t3.ATC4_Code , A.ATC4_COD) - and A.APP1_COD = ifnull(t3.NFC1_Code , A.APP1_COD) - and A.APP2_COD = ifnull(t3.NFC2_Code , A.APP2_COD) - and A.APP3_COD = ifnull(t3.NFC3_Code , A.APP3_COD) - and A.STGH_DES = ifnull(t3.Strength , A.STGH_DES) -left join (select distinct MARKET,PACK_COD,KEY_COMPETITOR from dm.dm_ims_td_pack_property) t5 -on A.market = t5.MARKET -and A.iqvia_pack_code = t5.PACK_COD - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 其他 - --- COMMAND ---------- - -------------------------将品牌数据进行处理,获取同期值(有挺多冗余,但懒得改了)-------------------------------------- -insert overwrite table tmp.tmp_zk_retail_nataional_brand_union -select distinct - bq.brand_cat_type - ,bq.TA - ,bq.market market - ,bq.zk_brand_category zk_brand - -- ,IQVIA_PROD_CODE - ,coalesce(b.iqvia_pack_code,c.iqvia_pack_code,d.iqvia_pack_code ) iqvia_pack_code - ,coalesce(b.corp_cod,c.corp_cod,d.corp_cod ) corp_cod - ,t2.geo_key - ,bq.province_city - ,bq.YYYYMM - ,bq.year - ,bq.quarter - ,bq.zk_common_name - ,bq.zk_manu_des - ,bq.rc_name_en - ,bq.ytd - ,bq.yq - ,BQ.sales_val - ,bq.sales_vol - ,bq.price - ,bq.num_dist_rate - ,bq.weig_dist_rate - ,bq.val_share - ,bq.vol_share - ,tq.sales_val sales_val_ly - ,tq.sales_vol sales_vol_ly - ,tq.price price_ly - ,tq.num_dist_rate num_dist_rate_ly - ,tq.weig_dist_rate weig_dist_rate_ly - ,tq.val_share val_share_ly - ,tq.vol_share vol_share_ly - ,bq.key_brand_ytd - ,bq.key_brand_rank_ytd - ,bq.top_brand_ytd - ,bq.top_brand_ms_ytd - ,bq.top_brand_inc_ms_ytd - ,bq.top_brand_gr_ytd - ,bq.key_brand_qtd - ,bq.key_brand_rank_qtd - ,bq.top_brand_qtd - ,bq.top_brand_ms_qtd - ,bq.top_brand_inc_ms_qtd - ,bq.top_brand_gr_qtd - ,bq.ranked_by - ,kpi.key_brand_ytd_ly - ,kpi.key_brand_rank_ytd_ly - ,kpi.top_brand_ytd_ly - ,kpi.top_brand_ms_ytd_ly - ,kpi.top_brand_inc_ms_ytd_ly - ,kpi.top_brand_gr_ytd_ly - ,kpi.key_brand_qtd_ly - ,kpi.key_brand_rank_qtd_ly - ,kpi.top_brand_qtd_ly - ,kpi.top_brand_ms_qtd_ly - ,kpi.top_brand_inc_ms_qtd_ly - ,kpi.top_brand_gr_qtd_ly -from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all bq -left join dm.dm_zk_retail_geo t2 on bq.province_city = t2.province_city -left join (select distinct ZK_Prod_C,PROD_DES_C from dwd.dwd_inc_gnd_retail_b2c_label_total) t3 on zk_brand_category = t3.ZK_Prod_C -left join dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all tq -on bq.market =tq.market and bq.zk_brand_category =tq.zk_brand_category - and bq.YYYYMM = cast(tq.YYYYMM + 100 as int ) and bq.zk_common_name = tq.zk_common_name - and bq.zk_manu_des = tq.zk_manu_des and bq.province_city =tq.province_city - and bq.ranked_by = tq.ranked_by - and bq.brand_cat_type = tq.brand_cat_type - and tq.brand_cat_type ='品牌' -left join ( - select distinct - left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) ytd - ,market - ,province_city - ,key_brand_ytd key_brand_ytd_ly - ,key_brand_rank_ytd key_brand_rank_ytd_ly - ,top_brand_ytd top_brand_ytd_ly - ,top_brand_ms_ytd top_brand_ms_ytd_ly - ,top_brand_inc_ms_ytd top_brand_inc_ms_ytd_ly - ,top_brand_gr_ytd top_brand_gr_ytd_ly - ,key_brand_qtd key_brand_qtd_ly - ,key_brand_rank_qtd key_brand_rank_qtd_ly - ,top_brand_qtd top_brand_qtd_ly - ,top_brand_ms_qtd top_brand_ms_qtd_ly - ,top_brand_inc_ms_qtd top_brand_inc_ms_qtd_ly - ,top_brand_gr_qtd top_brand_gr_qtd_ly - ,ranked_by - from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all - where brand_cat_type='品类' and left(ytd,3) || cast(substr(ytd,4,2)+1 as int) || right( ytd,2 ) <= (select max(ytd) from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all where brand_cat_type='品类') -) kpi on bq.market = kpi.market and bq.ytd=kpi.ytd and bq.province_city =kpi.province_city - and bq.ranked_by = tq.ranked_by -left join (select max(iqvia_pack_code) iqvia_pack_code,prod_des_c,corp_cod from dwd.dwd_gnd_ext_retail_pack_property -where iqvia_pack_code in (select DISTINCT iqvia_pack_code from dm.dm_zk_retail_sales) -group by prod_des_c,corp_cod) b on t3.PROD_DES_C=b.prod_des_c -left join (select max(iqvia_pack_code) iqvia_pack_code,prod_des_c,corp_cod from dwd.dwd_gnd_ext_retail_pack_property -where iqvia_pack_code in (select DISTINCT iqvia_pack_code from dm.dm_zk_retail_sales) -group by prod_des_c,corp_cod) c on bq.zk_brand_category=c.prod_des_c -left join (select max(iqvia_pack_code) iqvia_pack_code,product_name,corp_cod from dwd.dwd_gnd_ext_retail_pack_property -where iqvia_pack_code in (select DISTINCT iqvia_pack_code from dm.dm_zk_retail_sales) - group by product_name,corp_cod) d on bq.zk_brand_category=d.product_name -where bq.brand_cat_type ='品牌' and bq.zk_brand_category not in ('多达一','天依宁','氨氯地平阿托伐他汀钙片' ,'OTHERS') - - --- COMMAND ---------- - -------------------------将RX市场数据合并并处理数据格式获取code -------------------------------------- ----------关联 corp code ----------是否total 数据打标 ----------格式处理 ----------dm 使用 niad 数据 ----------全国数据 地理编码 为 roc -insert overwrite table tmp.tmp_zk_retail_rx_ta_and_top_corp -select - distinct - case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type - ,case when replace(a.rx_type,' TTL','') ='NIAD' THEN 'DM' - when replace(a.rx_type,' TTL','') ='GI-Rx+OTC' then 'GI' - ELSE replace(a.rx_type,' TTL','') END ta - ,nvl(b.CORP_COD ,CORP_COD) CORP_COD - ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG - ,a.quarter_flag YTD - ,'ROC' GEO_KEY - ,replace(a.top1_brand_val,'-','') top1_brand_val - ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr - ,replace(a.top2_brand_val,'-','') top2_brand_val - ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr - ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand - ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr - ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand - ,coalesce(cast(a.top2_incremental_gr as double ),0 ) top2_incremental_gr - from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a - left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b - on a.corporation = b.ZK_Corp_C - WHERE rx_type <>'DM' -UNION ALL - select - distinct - case WHEN right(corporation,3) ='TTL' THEN 'ta_total' else 'ta_corp' end data_type - ,replace(a.rx_type,' TTL','') ta - ,nvl(b.CORP_COD ,CORP_COD) CORP_COD - ,CASE WHEN right(corporation,3) ='TTL' THEN 'Y' else 'N' end TOTAL_FLAG - ,a.quarter_flag YTD - ,'ROC' GEO_KEY - ,replace(a.top1_brand_val,'-','') top1_brand_val - ,coalesce(cast(a.top1_brand_gr as double ) ,0 ) top1_brand_gr - ,replace(a.top2_brand_val,'-','') top2_brand_val - ,coalesce(cast(a.top2_brand_gr as double ) ,0 ) top2_brand_gr - ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand - ,coalesce(cast(a.top1_incremental_gr as double ),0 ) top1_incremental_gr - ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand - ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr - from dwd.dwd_gnd_ext_retail_rx_ta_top_corp a - left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b - on a.corporation = b.ZK_Corp_C - WHERE rx_type ='NIAD' - union all - select distinct - 'top_corp' data_type - ,NULL ta - ,nvl(b.CORP_COD,a.corporation) CORP_COD - ,'Y' TOTAL_FLAG - ,a.quarter_flag - ,'ROC' GEO_KEY - ,replace(a.top1_brand_val,'-','') top1_brand_val - ,coalesce(cast(a.top1_brand_gr as double ),0 ) top1_brand_gr - ,replace(a.top2_brand_val,'-','') top2_brand_val - ,coalesce(cast(a.top2_brand_gr as double ),0 ) top2_brand_gr - ,replace(a.top1_incremental_brand,'-','') top1_incremental_brand - ,coalesce(cast(a.top1_incremental_gr as double ) ,0 ) top1_incremental_gr - ,replace(a.top2_incremental_brand,'-','') top2_incremental_brand - ,coalesce(cast(a.top2_incremental_gr as double ) ,0 ) top2_incremental_gr - from dwd.dwd_gnd_ext_retail_rx_top_corp a - left join (select ZK_Corp,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp ) b - on a.corporation = b.ZK_Corp - - --- COMMAND ---------- - ----------------------------------------将pack表的price 数据进行处理---------------------------------------- ----------关联 corp code ----------获取geo_key 后续的audit key ----------获取ta 值 ----------获取pack 文件中计算price 的所有指标 及加权铺货率、数字铺货率 -insert overwrite table tmp.tmp_zk_retail_price -with a as ( - select - df.brand_flag,df.zk_product_id,YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region - ,sum(sales_value) sales_value - ,sum(sales_unit) sales_unit - ,sum(weighted_spread_rate) weighted_spread_rate - ,sum(digital_spread_rate) digital_spread_rate - ,sum(sales_value_ly) sales_value_ly - ,sum(sales_unit_ly) sales_unit_ly - ,sum(weighted_spread_rate_ly) weighted_spread_rate_ly - ,sum(digital_spread_rate_ly) digital_spread_rate_ly -from ( - select YYYYMM,zk_product_id,zk_region - ,sales_value,sales_unit,weighted_spread_rate,digital_spread_rate - ,0 sales_value_ly - ,0 sales_unit_ly - ,0 weighted_spread_rate_ly - ,0 digital_spread_rate_ly - ,brand_flag - from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all - union all - select cast( YYYYMM + 100 as int ),zk_product_id,zk_region - ,0 sales_value - ,0 sales_unit - ,0 weighted_spread_rate - ,0 digital_spread_rate - ,sales_value sales_value_ly - ,sales_unit sales_unit_ly - ,weighted_spread_rate weighted_spread_rate_ly - ,digital_spread_rate digital_spread_rate_ly - ,brand_flag - from dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all - where YYYYMM + 100 <= (select max(yyyymm) FROM dwd.dwd_inc_gnd_ext_retail_nataional_pack_union_all) -) df -left join (select product_id,iqvia_pack_code from dwd.dwd_gnd_ext_retail_pack_property GROUP BY product_id,iqvia_pack_code) pack on pack.product_id = df.zk_product_id -left join tmp.tmp_zk_retail_pack_property_corp corp on pack.iqvia_pack_code = corp.iqvia_pack_code -group by YYYYMM,pack.iqvia_pack_code,corp.corp_cod,zk_region,df.brand_flag,df.zk_product_id -) -select distinct YYYYMM,zk_product_id,d.ta,c.geo_key,a.iqvia_pack_code,b.iqvia_prod_code,b.prod_des_c,corp_cod,zk_region -,sales_value,sales_value_ly,sales_unit,sales_unit_ly,weighted_spread_rate,weighted_spread_rate_ly,digital_spread_rate,digital_spread_rate_ly -from a -left join (select distinct iqvia_pack_code ,prod_des_c,prod_des,iqvia_prod_code from dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code -left join (select distinct geo_key,province_city from dm.dm_zk_retail_geo) c on a.zk_region = c.province_city -left join (select distinct iqvia_pack_code,ta from dm.dm_zk_retail_market_property ) d on a.iqvia_pack_code=d.iqvia_pack_code -where a.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_sales) - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 直取 - --- COMMAND ---------- - -/* -修改时间:20250311 -修改人:chenwu -修改内容: -sales_quarter 由原来的 yyyyQn 转换成 yyyymm -*/ ----------------------------------------将直取部分数据处理成KPI形式----------------------------------------- -insert overwrite table dws.dws_zk_retail_sales_kpi -with top_corp_total as ( - ----------------------处理top_corp 大数-------------------- ----------关联 corp code 特殊:dwd_inc_gnd_retail_b2c_label_total 这个表 az 公司有两个code ,需要取A5Z 那个 ----------是否total 数据打标 ----------格式处理 ----------dm 使用 niad 数据 ----------全国数据 地理编码 为 roc - select - a.corp_desc, - 'top_corp' data_type - ,b.CORP_COD - ,'Y' TOTAL_FLAG - ,a.sales_quarter - ,cast(a.sales_quarter as int) yyyymm - ,'ROC' geo_key - ,a.sales_amount*1000000 sales_amount - ,c.sales_amount*1000000 sales_amount_ly - ,a.rank1 - ,null ta - FROM dwd.dwd_gnd_ext_retail_nataional_top_corp a - left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b - on a.corp_desc= b.ZK_Corp_C - left join dwd.dwd_gnd_ext_retail_nataional_top_corp c - on a.corp_desc= c.corp_desc and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) and - cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 - where a.rank1 is not null - unioN all - -select - a.corp_desc, - 'top_ta_corp' data_type - ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code - ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG - ,a.sales_quarter - ,cast(a.sales_quarter as int) yyyymm - ,'ROC' geo_key - ,a.sales_amount*1000000 sales_amount - ,c.sales_amount*1000000 sales_amount_ly - ,a.rank1 - ,CASE WHEN trim(a.source_name) ='GI-Rx+OTC' THEN 'GI' ELSE trim(a.source_name) END ta - FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a - left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b - on a.corp_desc= b.ZK_Corp_C - left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c - on a.corp_desc= c.corp_desc and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) and - cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 - and a.source_name =c.source_name -WHERE trim(a.source_name) <>'DM' -UNION ALL - select - CASE WHEN a.corp_desc='NIAD' THEN 'DM' ELSE a.corp_desc END corp_desc, - 'top_ta_corp' data_type - ,B.CORP_COD --A.corp_name as CORP_COD, --自有的corp_name 是 corp_code - ,case when A.corp_name is null then 'Y' ELSE 'N' END TOTAL_FLAG - ,a.sales_quarter - ,cast(a.sales_quarter as int) yyyymm - ,'ROC' geo_key - ,a.sales_amount*1000000 sales_amount - ,c.sales_amount*1000000 sales_amount_ly - ,a.rank1 - ,'DM' ta - FROM dwd.dwd_gnd_ext_retail_nataional_ta_top_corp a - left join (select ZK_Corp_C,max(case when CORP_COD ='F+N' then 'A5Z' ELSE CORP_COD END ) CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total group by ZK_Corp_C ) b - on a.corp_desc= b.ZK_Corp_C - left join dwd.dwd_gnd_ext_retail_nataional_ta_top_corp c - on a.corp_desc= c.corp_desc and nvl(a.corp_type,'' ) = nvl(c.corp_type,'' ) and - cast(a.sales_quarter as int) =cast(c.sales_quarter as int)+100 - and a.source_name =c.source_name -WHERE trim(a.source_name) ='NIAD' -) - - -------- tmp_zk_retail_nataional_brand_union(品牌数据报表) 的数据ranked by这个字段 枚举值为 volume value ,这会导致部分指标重复,取数时任意其一就行,具体如代码取数情况 - - SELECT distinct - val.iqvia_pack_code pack_code - ,val.corp_cod corp_cod - ,val.YYYYMM - ,null ytd - ,val.geo_key - ,'share' KPI_name - ,val.val_share kpi_val - ,val.val_share_ly kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,val.vol_share kpi_vol - ,val.vol_share_ly kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_nataional_brand_union val - where val.ranked_by ='volume' - union all - SELECT distinct - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'key_brand_ytd' - ,NULL - ,NULL - ,val.key_brand_ytd - ,val.key_brand_ytd_ly - ,null - ,null - ,vol.key_brand_ytd - ,val.key_brand_ytd_ly - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null - -UNION all - SELECT distinct - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'key_brand_rank_ytd' - ,val.key_brand_rank_ytd - ,val.key_brand_rank_ytd_ly - ,NULL - ,NULL - ,vol.key_brand_rank_ytd - ,vol.key_brand_rank_ytd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null - union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'top_brand_ytd' - ,NULL - ,NULL - ,val.top_brand_ytd - ,val.top_brand_ytd_ly - ,null - ,null - ,vol.top_brand_ytd - ,val.top_brand_ytd_ly - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null - -- GROUP BY val.market,val.ytd,val.geo_key,val.top_brand_ytd,val.top_brand_ytd_ly,vol.top_brand_ytd,vol.top_brand_ytd_ly,val.ta - - union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'top_brand_ms_ytd' - ,val.top_brand_ms_ytd - ,val.top_brand_ms_ytd_ly - ,NULL - ,NULL - ,vol.top_brand_ms_ytd - ,vol.top_brand_ms_ytd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null -union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'top_brand_inc_ms_ytd' - ,val.top_brand_inc_ms_ytd - ,val.top_brand_inc_ms_ytd_ly - ,NULL - ,NULL - ,vol.top_brand_inc_ms_ytd - ,vol.top_brand_inc_ms_ytd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null -union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,null - ,val.ytd - ,val.geo_key - ,'top_brand_gr_ytd' - ,val.top_brand_gr_ytd - ,val.top_brand_gr_ytd_ly - ,NULL - ,NULL - ,vol.top_brand_gr_ytd - ,vol.top_brand_gr_ytd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.ytd = vol.ytd - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' and val.ytd is not null -union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'key_brand_qtd' - ,NULL - ,NULL - ,val.key_brand_qtd - ,val.key_brand_qtd_ly - ,null - ,null - ,vol.key_brand_qtd - ,val.key_brand_qtd_ly - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' -union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'key_brand_rank_qtd' - ,val.key_brand_rank_qtd - ,val.key_brand_rank_qtd_ly - ,NULL - ,NULL - ,vol.key_brand_rank_qtd - ,vol.key_brand_rank_qtd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' - union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'top_brand_qtd' - ,NULL - ,NULL - ,val.top_brand_qtd - ,val.top_brand_qtd_ly - ,null - ,null - ,vol.top_brand_qtd - ,val.top_brand_qtd_ly - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' - union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'top_brand_ms_qtd' - ,val.top_brand_ms_qtd - ,val.top_brand_ms_qtd_ly - ,NULL - ,NULL - ,vol.top_brand_ms_qtd - ,vol.top_brand_ms_qtd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' -union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'top_brand_inc_ms_qtd' - ,val.top_brand_inc_ms_qtd - ,val.top_brand_inc_ms_qtd_ly - ,NULL - ,NULL - ,vol.top_brand_inc_ms_qtd - ,vol.top_brand_inc_ms_qtd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' - union all - SELECT distinct - -- MAX(val.iqvia_pack_code) pack_code - -- ,MAX(val.corp_cod ) corp_cod - '' pack_code - ,'' corp_cod - ,val.YYYYMM - ,null - ,val.geo_key - ,'top_brand_gr_qtd' - ,val.top_brand_gr_qtd - ,val.top_brand_gr_qtd_ly - ,NULL - ,NULL - ,vol.top_brand_gr_qtd - ,vol.top_brand_gr_qtd_ly - ,NULL - ,NULL - ,'N' TOTAL_FLAG - ,val.ta - from tmp.tmp_zk_retail_nataional_brand_union val - left join tmp.tmp_zk_retail_nataional_brand_union vol - on val.market = vol.market - and val.YYYYMM = vol.YYYYMM - and val.geo_key = vol.geo_key - and vol.ranked_by ='volume' - where val.ranked_by ='value' ------------------------------------处理 top 数据 -union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top1_brand_val' kpi_name - ,null kpi_val - ,NULL kpi_val_ly - ,top1_brand_val str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - - - - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top1_brand_gr' kpi_name - ,top1_brand_gr kpi_val - ,NULL kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top2_brand_val' kpi_name - ,null kpi_val - ,NULL kpi_val_ly - ,top2_brand_val str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top2_brand_gr' kpi_name - ,top2_brand_gr kpi_val - ,NULL kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top1_incremental_brand' kpi_name - ,null kpi_val - ,NULL kpi_val_ly - ,top1_incremental_brand str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top1_incremental_gr' kpi_name - ,top1_incremental_gr kpi_val - ,NULL kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top2_incremental_brand' kpi_name - ,null kpi_val - ,NULL kpi_val_ly - ,top2_incremental_brand str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp - union all - SELECT distinct - '' pack_code - ,corp_cod - ,NULL YYYYMM - ,ytd - ,geo_key - ,'top2_incremental_gr' kpi_name - ,top2_incremental_gr kpi_val - ,NULL kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from tmp.tmp_zk_retail_rx_ta_and_top_corp ----------------处理增量数据 -union all -select distinct - '' pack_code - ,bq.type_name corp_cod - ,cast(bq.sales_quarter as int) yyyymm - ,null ytd - ,'ROC' geo_key - ,'corp_type_sales_amount' kpi_name - ,bq.sales_amount * 1000000 kpi_val - ,tq.sales_amount * 1000000 kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'Y' TOTAL_FLAG - ,null ta - from dwd.dwd_gnd_ext_retail_rx_market bq - left join dwd.dwd_gnd_ext_retail_rx_market tq on bq.type_name=tq.type_name - and cast(bq.sales_quarter as int)= cast(tq.sales_quarter+100 as int) - - union all - ---- 处理top corp 及 rank 数据 - select DISTINCT - '' pack_code - ,corp_cod - ,yyyymm - ,null ytd - ,geo_key - ,'top_corp_sales_amount' kpi_name - ,sales_amount kpi_val - ,sales_amount_ly kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from top_corp_total - union all - select distinct - '' pack_code - ,corp_cod - ,yyyymm - ,null ytd - ,geo_key - ,'top_corp_rank' kpi_name - ,rank1 kpi_val - ,null kpi_val_ly - ,NULL str_kpi_val - ,NULL str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - ,ta - from top_corp_total - where lower(rank1) <>'total' - - - - --- COMMAND ---------- - ----将dtp 数据转换成 kpi 格式--- -----品牌数据 初始 ----- 关联公司code ------处理pack code ------处理格式 ------total flag 打标 -----------------------------------------------------dtp 所有数据的ta 均为 ONCO----------------------------------------------------------------------------- -insert overwrite table dws.dws_zk_retail_dtp_sales_kpi - with tmp as ( - -------------获取dtp top brand 的 本同期数据-------------------------- - select - cast(top_corp.sales_quarter as int ) yyyymm - ,top_corp.sales_quarter - ,replace(top_corp.rank1,'-','') rank1 - ,replace(top_corp.corp_name,'-','') crp_name - ,top_corp.brand_name - ,case when top_corp.brand_name ='Others' then 'Others' else zk.IQVIA_PROD_CODE end iqvia_prod_code - ,case when top_corp.brand_name ='Others' then 'Others' else brand.iqvia_pack_code end iqvia_pack_code - ,zk.CORP_COD - -- ,top_corp.source_name - ,top_corp.sales_amount*1000000 sales_amount - ,tq.sales_amount*1000000 sales_amount_ly - ,'Y' TOTAL_FLAG -from dwd.dwd_gnd_ext_retail_dtp_top_brand top_corp -left join dwd.dwd_gnd_ext_retail_dtp_top_brand tq -on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) -and tq.rank1 =top_corp.rank1 and nvl(top_corp.brand_name,'' ) =nvl(tq.brand_name,'' ) -left join (select distinct ZK_Prod_C,IQVIA_PROD_CODE,ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total ) zk -on top_corp.brand_name = zk.ZK_Prod_C AND replace(top_corp.corp_name,'-','')=zk.ZK_Corp_C -left join (select PROD_COD IQVIA_PROD_CODE,max(PACK_COD) iqvia_pack_code,CORP_COD from dm.dm_ims_td_pack_property group by PROD_COD,CORP_COD) brand on zk.IQVIA_PROD_CODE = brand.iqvia_prod_code AND replace(zk.CORP_COD,'-','')=brand.corp_cod -UNION all - -------获取 dtp top corp 得 本同期数据------------ - select - cast(top_corp.sales_quarter as int ) yyyymm - ,top_corp.sales_quarter - ,replace(top_corp.rank1,'-','') rank1 - ,replace(top_corp.corp_name,'-','') corp_name - ,'' brand_name - ,''iqvia_prod_code - ,'' iqvia_pack_code - ,case when replace(top_corp.corp_name,'-','') ='Others' then '' else pack.corp_cod end corp_cod - -- ,top_corp.source_name - ,top_corp.sales_amount*1000000 sales_amount - ,tq.sales_amount*1000000 sales_amount_ly --- ,case when replace(top_corp.rank1,'-','') ='' then 'Y' ELSE 'N' END TOTAL_FLAG - ,'Y' TOTAL_FLAG -from dwd.dwd_gnd_ext_retail_dtp_top_copd top_corp -left join dwd.dwd_gnd_ext_retail_dtp_top_copd tq -on cast(top_corp.sales_quarter as int ) = cast(tq.sales_quarter+100 as int ) and nvl(top_corp.corp_name,'') = nvl(tq.corp_name,'' ) -and tq.rank1 =top_corp.rank1 --- left join (select zk_corp_des,max(corp_cod) corp_cod from dwd.dwd_inc_gnd_retail_b2c_label_total group by zk_corp_des) pack -left join (select distinct ZK_Corp_C,CORP_COD from dwd.dwd_inc_gnd_retail_b2c_label_total ) pack -on replace(top_corp.corp_name,'-','')=pack.ZK_Corp_C -) -select distinct - iqvia_prod_code pack_code - ,corp_cod - ,'ONCO' ta - ,yyyymm - ,null ytd - ,'ROC' geo_key - ,'top_corp_rank' kpi_name - ,cast(rank1 as double) kpi_val - ,null kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - , TOTAL_FLAG - -- ,null ta -from tmp where rank1 !='' -union all -select distinct - iqvia_prod_code pack_code - ,corp_cod - ,'ONCO' ta - ,yyyymm - ,null ytd - ,'ROC' geo_key - ,'top_corp_sales_amount' kpi_name - ,sales_amount kpi_val - ,sales_amount_ly kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,TOTAL_FLAG - -- ,null ta -from tmp - - --- COMMAND ---------- - -----------------------------------7月30日新增------------------------------- --------------------------retail 自有部分数据处理成kpi 形式-------------------- -insert overwrite table dws.dws_zk_retail_sales_own_kpi ---------在 retail 拆分好的结果表里获取pack 粒度的 price 分子 - select - a.iqvia_pack_code pack_code - ,a.corp_cod - ,YYYYMM - ,null ytd - ,a.AUDIT_COD geo_key - ,'pack_price_fz' KPI_name - ,sum(sales_value) kpi_val - ,sum(sales_value_ly) kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END ta - ,a.brand_flag - ,a.pack_flag - from dm.dm_zk_retail_sales a - GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END - ,a.brand_flag - ,a.pack_flag - having ta is not null and sum(sales_value)>0 -union all ---------在 retail 拆分好的结果表里获取pack 粒度的 price 分母 - select - a.iqvia_pack_code pack_code - ,a.corp_cod - ,YYYYMM - ,null ytd - ,a.AUDIT_COD geo_key - ,'pack_price_fm' KPI_name - ,sum(a.sales_unit) kpi_val - ,sum(a.sales_unit_ly) kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END ta - ,a.brand_flag - ,a.pack_flag - from dm.dm_zk_retail_sales a - GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END - ,a.brand_flag - ,a.pack_flag - having ta is not null and sum(sales_unit)>0 - -union all ---------在 retail 拆分好的结果表里获取pack 粒度的 by counting unit 的 price 分母 - - select - a.iqvia_pack_code pack_code - ,a.corp_cod - ,YYYYMM - ,null ytd - ,a.AUDIT_COD geo_key - ,'pack_price_by_counting_unit_fm' KPI_name - ,sum(a.counting_unit) kpi_val - ,sum(a.counting_unit_ly) kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END ta - ,a.brand_flag - ,a.pack_flag - from dm.dm_zk_retail_sales a - GROUP BY a.iqvia_pack_code ,a.corp_cod,YYYYMM ,a.AUDIT_COD - ,case when a.source[0] = '慢性阻塞性肺疾病' then 'RE' - WHEN A.source[0]= '慢性胃炎、胃溃疡' THEN 'GI' - WHEN A.source[0] = 'NIAD' THEN 'DM' - WHEN A.source[0] IN ('Brilinta Market','他汀类+血脂康','高血压用药','酒石酸美托洛尔') THEN 'CV' - WHEN A.source[0] ='RD Market' THEN 'RD' - END - ,a.brand_flag - ,a.pack_flag - having ta is not null and sum(counting_unit)>0 - - union all - --------在 retail pack 粒度的文件中获取加权铺货率 - -select distinct - iqvia_pack_code pack_code - ,corp_cod - ,YYYYMM - ,null ytd - ,geo_key - ,'weighted_spread_rate' KPI_name - ,weighted_spread_rate kpi_val - ,weighted_spread_rate_ly kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_price a - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on a.prod_des_c=prod.prod_des_c -union all - --------在 retail pack 粒度的文件中获取数字铺货率 - -select distinct - iqvia_pack_code - ,corp_cod - ,YYYYMM - ,null ytd - ,geo_key - ,'digital_spread_rate' KPI_name - ,digital_spread_rate kpi_val - ,digital_spread_rate_ly kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_price a - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on a.prod_des_c=prod.prod_des_c -union all - --------在 retail pack 粒度的文件中获取计算pack 粒度的price -select distinct - iqvia_pack_code - ,corp_cod - ,YYYYMM - ,null ytd - ,geo_key - ,'pack_price' KPI_name - ,round(sum(sales_value)/sum(sales_unit),3) kpi_val - ,round(sum(sales_value_ly)/sum(sales_unit_ly),3) kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_price a - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on a.prod_des_c=prod.prod_des_c - group by corp_cod,YYYYMM,geo_key,ta,iqvia_pack_code - ,case when prod.prod_des_c is null THEN 2 else 1 END - ,case when geo_key ='CHT' THEN 2 else 1 END - -union all - --------在 retail pack 粒度的文件中获取计算pack 粒度的price by counting unit - -select distinct - a.iqvia_pack_code - ,a.corp_cod - ,YYYYMM - ,null ytd - ,geo_key - ,'pack_price_by_counting_unit' KPI_name - ,round(sum(sales_value)/sum(sales_unit*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val - ,round(sum(sales_value_ly)/sum(sales_unit_ly*(b.counting_unit/coalesce(b.unit,1 ))),3) kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_price a - left join dwd.dwd_gnd_ext_retail_pack_property b on a.zk_product_id =b.product_id - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on a.prod_des_c=prod.prod_des_c - group by a.corp_cod,YYYYMM,geo_key,ta,a.iqvia_pack_code - ,case when prod.prod_des_c is null THEN 2 else 1 END - ,case when geo_key ='CHT' THEN 2 else 1 END -union all - --------在 retail brand 品牌文件中获取数字铺货率 并对re 特殊处理,re相关品牌优先取inhaled market 对应 pack - - SELECT distinct - nvl(B.iqvia_pack_code,val.iqvia_pack_code ) pack_code - ,val.corp_cod corp_cod - ,val.YYYYMM YYYYMM - ,null ytd - ,val.geo_key geo_key - ,'num_dist_rate' KPI_name - ,val.num_dist_rate kpi_val - ,val.num_dist_rate_ly kpi_val_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_nataional_brand_union val - left join (select distinct iqvia_pack_code ,prod_des_c from dm.dm_zk_retail_pack_property ) c on val.iqvia_pack_code=c.iqvia_pack_code - left join (select prod_des_c,max(iqvia_pack_code) iqvia_pack_code from dm.dm_zk_retail_pack_property - -- where market='Inhaled Extended Market by Brand' group by 1) b on c.prod_des_c =b.prod_des_c - where market='Inhaled Extended Market' group by 1) b on c.prod_des_c =b.prod_des_c - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on c.prod_des_c=prod.prod_des_c - where val.ranked_by ='volume' - union all - --------在 retail brand 品牌文件中获取加权铺货率 并对re 特殊处理,re相关品牌优先取inhaled market 对应 pack - - SELECT distinct - nvl(B.iqvia_pack_code,val.iqvia_pack_code ) pack_code - ,val.corp_cod corp_cod - ,val.YYYYMM YYYYMM - ,null ytd - ,val.geo_key geo_key - ,'weig_dist_rate' - ,val.weig_dist_rate - ,val.weig_dist_rate_ly - ,null str_kpi_val - ,null str_kpi_val_ly - ,null kpi_vol - ,null kpi_vol_ly - ,null str_kpi_vol - ,null str_kpi_vol_ly - ,'N' TOTAL_FLAG - ,ta ta - ,case when prod.prod_des_c is null THEN 2 else 1 END brand_flag - ,case when geo_key ='CHT' THEN 2 else 1 END pack_flag - from tmp.tmp_zk_retail_nataional_brand_union val - left join (select distinct iqvia_pack_code ,prod_des_c from dm.dm_zk_retail_pack_property ) c on val.iqvia_pack_code=c.iqvia_pack_code --- left join (select prod_des_c,max(iqvia_pack_code) iqvia_pack_code from dm.dm_zk_retail_pack_property where market='Inhaled Extended Market by Brand' group by 1) b on c.prod_des_c =b.prod_des_c - left join (select prod_des_c,max(iqvia_pack_code) iqvia_pack_code from dm.dm_zk_retail_pack_property where market='Inhaled Extended Market' group by 1) b - on c.prod_des_c =b.prod_des_c - left join (SELECT DISTINCT b.prod_des_c FROM TMP.tmp_zk_retail_nataional_brand_union A - LEFT JOIN (SELECT DISTINCT iqvia_pack_code,prod_des_c - FROM dm.dm_zk_retail_pack_property) b on a.iqvia_pack_code=b.iqvia_pack_code - ) prod on c.prod_des_c=prod.prod_des_c - where val.ranked_by ='volume' - --- COMMAND ---------- - ----------------将所有渠道kpi 数据汇总到dm -------------- ------KPI 表汇总 ------ytd 为是否ytd flag ------geo 将cht(全国) 改成 ROC ------DTP FLAG O 非dtp , 1 dtp 数据 -insert overwrite table dm.dm_zk_retail_sales_kpi -(pack_code -,corp_cod -,ta -,YYYYMM -,ytd -,geo_key -,KPI_name -,kpi_val -,kpi_val_ly -,str_kpi_val -,str_kpi_val_ly -,kpi_vol -,kpi_vol_ly -,str_kpi_vol -,str_kpi_vol_ly -,TOTAL_FLAG -,data_source -,dtp_flag -,brand_flag -,pack_flag -) ---------retail 渠道 kpi -select - nvl(pack_code,'') pack_code - ,nvl(corp_cod,'') corp_cod - ,nvl(ta,'') ta - ,nvl(YYYYMM,cast( if(length(ytd)=7 AND substr(ytd,6,1)<>'Q',concat('20',substr(ytd,4,2))*100 + right(ytd,2) ,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ) as int )) YYYYMM - ,if(ytd IS NOT NULL ,'Y' ,'N') YTD - ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key - ,nvl(kpi_name,'') as kpi_name - ,nvl(cast(kpi_val as double),0) kpi_val - ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly - ,nvl(str_kpi_val,'') - ,nvl(str_kpi_val_ly,'') - ,nvl(cast(kpi_vol as double),0) kpi_vol - ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly - ,nvl(str_kpi_vol,'') - ,nvl(str_kpi_vol_ly,'') - ,nvl(TOTAL_FLAG,'') - ,'Retail(Quarterly)' data_source - ,'0' dtp_flag - ,0 - , 0 - from dws.dws_zk_retail_sales_kpi - WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') - ---------------dtp 的kpi - union all -select - nvl(pack_code,'') pack_code - ,nvl(corp_cod,'') corp_cod - ,nvl(ta,'') ta - ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM - ,if(ytd IS NOT NULL ,'Y' ,'N') YTD - ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END - ,nvl(kpi_name,'') - ,nvl(kpi_val,0) - ,nvl(kpi_val_ly,0) - ,nvl(str_kpi_val,'') - ,nvl(str_kpi_val_ly,'') - ,nvl(kpi_vol,0) - ,nvl(kpi_vol_ly,0) - ,nvl(str_kpi_vol,'') - ,nvl(str_kpi_vol_ly,'') - ,nvl(TOTAL_FLAG,'') - ,'Retail(Quarterly)' data_source - ,'1' dtp_flag - ,0 - ,0 -from dws.dws_zk_retail_dtp_sales_kpi - WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') ---拼接retail 自有部分kpi - union all -select - nvl(pack_code,'') pack_code - ,nvl(corp_cod,'') corp_cod - ,nvl(ta,'') ta - ,nvl(YYYYMM,cast( if(length(ytd)=7,concat('20',substr(ytd,4,2))*100 + right(ytd,1) * 3 ,substr(ytd,4,4) * 100 + right(ytd,1) * 3 ) as int )) YYYYMM - ,if(ytd IS NOT NULL ,'Y' ,'N') YTD - ,case when geo_key ='CHT' THEN 'ROC' ELSE nvl(geo_key,'') END geo_key - ,nvl(kpi_name,'') - ,nvl(cast(kpi_val as double),0) kpi_val - ,nvl(cast(kpi_val_ly as double),0) kpi_val_ly - ,nvl(str_kpi_val,'') - ,nvl(str_kpi_val_ly,'') - ,nvl(cast(kpi_vol as double),0) kpi_vol - ,nvl(cast(kpi_vol_ly as double),0) kpi_vol_ly - ,nvl(str_kpi_vol,'') - ,nvl(str_kpi_vol_ly,'') - ,nvl(TOTAL_FLAG,'') - ,'Retail(Quarterly)' data_source - ,'0' dtp_flag - ,nvl(brand_flag,0) - ,nvl(pack_flag,0) - from dws.dws_zk_retail_sales_own_kpi - WHERE nvl(ta,'' ) NOT IN ('GI-Rx','GI-OTC') - - - - --- COMMAND ---------- - -/* -修改人:chenwu -修改时间:20250319 -修改内容:如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 -*/ -------------------------生产retail 的ratio 表,该表系数用于计算pdot-------- -insert overwrite table dm.dm_zk_retail_market_ratio -select distinct - a.market || a.iqvia_pack_code as market_pack_key - ,a.iqvia_pack_code as pack_cod - ,a.prod_des as prod_des - ,a.cmps_des as cmps_des - ,a.corp_cod as corp_cod - ,a.market as market - ,a.extend_market_ratio as value_market_ratio - ,a.extend_market_ratio as unit_market_ratio - ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.extend_market_ratio ,1 ) - else t4.ratio*coalesce(a.extend_market_ratio ,1 ) - end ,a.extend_market_ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt - from tmp.tmp_dm_zk_retail_pack_property a -left join (--COUNTINGUNIT - select distinct - market, - cmps_cod, - cmps_des, - pack_cod, - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' -)t4 on a.market=t4.market - and if( a.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',a.iqvia_pack_code),12),a.iqvia_pack_code) - = if( t4.PACK_COD REGEXP '^[0-9]',right(concat('000000000000',t4.PACK_COD),12),t4.PACK_COD) - --right(concat('0000000',a.iqvia_pack_code ), 7) = right(concat('0000000',t4.PACK_COD ),7 ) -left join (--COUNTINGUNIT - select distinct - market, - cmps_cod, - cmps_des, - pack_cod, - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' -) t5 on a.market=t5.market - and right(concat('000000',a.CMPS_COD ),6 )= right(concat('000000',t5.CMPS_COD ),6 ) -union all -select distinct - a.market || a.iqvia_pack_code as market_pack_key - ,a.iqvia_pack_code as pack_cod - ,a.prod_des as prod_des - ,a.cmps_des as cmps_des - ,a.corp_cod as corp_cod - ,a.market as market - ,a.Market_Ratio as value_market_ratio - ,a.Market_Ratio as unit_market_ratio - ,coalesce(case when t4.ratio is null then t5.ratio*coalesce(a.Market_Ratio ,1 ) - else t4.ratio*coalesce(a.Market_Ratio ,1 ) - end ,a.Market_Ratio ) countingunit_market_ratio --20250319如果tblbrandratio 里面的没有对应的 ratio 则用market_ratio兜底而不是直接1 - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') AS etl_update_dt - from dws.dws_zk_retail_dtp_market a -left join (--COUNTINGUNIT - select distinct - market, - cmps_cod, - cmps_des, - pack_cod, - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK' -)t4 on a.market=t4.market - -- and right(concat('0000000',a.iqvia_pack_code ), 7) = right(concat('0000000',t4.PACK_COD ),7 ) - and if( a.iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',a.iqvia_pack_code),12),a.iqvia_pack_code) - = if( t4.PACK_COD REGEXP '^[0-9]',right(concat('000000000000',t4.PACK_COD),12),t4.PACK_COD) -left join (--COUNTINGUNIT - select distinct - market, - cmps_cod, - cmps_des, - pack_cod, - pack_des, - level, - type, - cast(ratio as float) as ratio, - cast(starttime as int) starttime, - cast (endtime as int) endtime - from dwd.dwd_gnd_ims_tblbrandratio - where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE' -) t5 on a.market=t5.market - and right(concat('000000',a.CMPS_COD ),6 ) = right(concat('000000',t5.CMPS_COD ),6 ) - \ No newline at end of file diff --git a/EXTERNAL/Retail/z2 retail_load_data_作废.sql:Zone.Identifier b/EXTERNAL/Retail/z2 retail_load_data_作废.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/z2 retail_load_data_作废.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/Retail/z3 retail_overview_data_作废.sql b/EXTERNAL/Retail/z3 retail_overview_data_作废.sql deleted file mode 100644 index f378188..0000000 --- a/EXTERNAL/Retail/z3 retail_overview_data_作废.sql +++ /dev/null @@ -1,1201 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC 此代码主要加工 free report 中retail 自有部分的 overview 文件 和 b2c配置表维度 及品牌数据报表指标导出 --- MAGIC * 1.dm_zk_retail_overview_data overview 文件union 表格 --- MAGIC * 2.dm_zk_retail_product_info B2C 配置表的维度(底表直接抽) --- MAGIC * 3.dm_zk_retail_brand 品牌数据报表中的指标 --- MAGIC - --- COMMAND ---------- - ----------------------------------------------------------------------------------------- ---修改时间:20240821 ---修改人:FanXujia ---修改内容: ---导出模板整合,由原来的十几个文件改为3个文件 ----------------------------------------------------------------------------------------- - --- COMMAND ---------- - --- -------------------------------------------将所有overview 数据整合在同一张表里-------------------------------------------------------------- --- -- 注意事项: --- --rank1字段:Total行排名设为99,其他行如果数据源是null,则设为98。总之不能为null。 --- -- 每个数据源文件(file_name)判断是否Total行的方式不尽相同,具体参考代码。 --- --sales_quarter字段:数据源中有两种格式,24Q1以及2024Q1,因此需要统一成2024Q1这种格式。 --- -- 有些因为是YTD的值,源文件里sales_quarter是null,需将YTD字段中的时间拆出来作为sales_quarter字段的值 --- --最终表的source_name字段的内容是各个TA,RC字段是南区、北区等。而数据源文件中都叫source_name,每个源文件需按实际情况拆分成2列 --- --yyyymm字段:Q1是3月、Q2是6月、Q3是9月、Q4是12月。 -insert overwrite table dws.dws_zk_retail_overview_data -( -rank1 -,product_desc -,product_type -,common_name -,brand -,corp -,corporation -,corp_type -,sales_quarter -,yyyymm -,ytd -,sales_amount -,sales_amount_ly -,sales_amount_total -,sales_amount_ly_total -,rx_type -,top1_brand_val -,top1_brand_gr -,top2_brand_val -,top2_brand_gr -,top1_incremental_brand -,top1_incremental_gr -,top2_incremental_brand -,top2_incremental_gr -,ytd_gr -,ytd_ms -,ytd_delta_ms -,dtp_name -,file_name -,source_name -,rc -,rx_otc -,top_incre -,etl_insert_dt -,etl_update_dt -) -with overview as -( --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,corp_desc as corp --- ,corporation --- ,corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-Rx-TOP集团' file_name --- ,null source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_top_corp --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,product_desc --- ,product_type --- ,common_name --- ,brand --- ,corp --- ,corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-Rx-TOP产品' file_name --- ,null source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_top_product --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,product_desc --- ,product_type --- ,common_name --- ,brand --- ,corp --- ,corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-Rx-TOP增量产品' file_name --- ,null source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_top_incr_product --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,corp_desc corp --- ,corporation --- ,corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-Rx+OTC-TOP集团' file_name --- ,null source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_rx_otc_corp - --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,product_desc --- ,product_type --- ,common_name --- ,brand --- ,corp --- ,corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-Rx+OTC-TOP产品' file_name --- ,null source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_rx_otc_product - - --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,corp_desc as corp --- ,corp_name --- ,corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-分TA-TOP集团' file_name --- ,source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_ta_top_corp - --- union all - --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,product_desc --- ,null as product_type --- ,common_name --- ,null as brand --- ,corp --- ,corp_name corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-分TA-TOP产品' file_name --- ,source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_ta_top_product --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,product_desc --- ,null as product_type --- ,common_name --- ,null as brand --- ,corp --- ,corp_name as corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'全国-分TA-TOP增量产品' file_name --- ,source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_nataional_ta_incr_product - --- union all --- select --- case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' --- when rank1 is null then '98' --- else replace(rank1,' ','') end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,corp_desc as corp --- ,corporation --- ,corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,ytd_gr --- ,ytd_ms --- ,ytd_delta_ms --- ,null as dtp_name --- ,'分大区-Rx-TOP集团' file_name --- ,null source_name --- ,source_name rc --- from dwd.dwd_gnd_ext_retail_area_top_corp - --- union all --- select --- case when upper(type_name) = 'RX' then '99' --- else '98' end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,null as corp --- ,null as corporation --- ,type_name as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,null as ytd_gr --- ,null as ytd_ms --- ,null as ytd_delta_ms --- ,null as dtp_name --- ,'Rx市场' file_name --- ,null as source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_rx_market ---这个没有ytd 三个字段添加 - --- union all --- select --- case when upper(corporation) like 'TOTAL %' then '99' --- else '98' end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,null as corp --- ,corporation --- ,null as corp_type --- ,concat('20',trim(replace(quarter_flag,'YTD','' ))) as sales_quarter --- ,quarter_flag as ytd --- ,null as sales_amount --- ,null as rx_type --- ,replace(top1_brand_val,'-','') top1_brand_val --- ,top1_brand_gr top1_brand_gr --- ,replace(top2_brand_val,'-','') top2_brand_val --- ,top2_brand_gr top2_brand_gr --- ,replace(top1_incremental_brand,'-','') top1_incremental_brand --- ,top1_incremental_gr --- ,replace(top2_incremental_brand,'-','') top2_incremental_brand --- ,top2_incremental_gr --- ,null as ytd_gr --- ,null as ytd_ms --- ,null as ytd_delta_ms --- ,null as dtp_name --- ,'Rx-TOP集团' file_name --- ,null as source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_rx_top_corp ---这个没有ytd 三个字段添加 --- union all - --- select --- case when upper(corporation) like '% TTL' then '99' --- else '98' end as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,null as corp --- ,corporation --- ,null as corp_type --- ,concat('20',trim(replace(quarter_flag,'YTD','' ))) as sales_quarter --- ,quarter_flag as ytd --- ,NULL as sales_amount --- ,rx_type --- ,replace(top1_brand_val,'-','') as top1_brand_val --- ,top1_brand_gr --- ,replace(top2_brand_val,'-','') as top2_brand_val --- , top2_brand_gr --- ,replace(top1_incremental_brand,'-','') as top1_incremental_brand --- , top1_incremental_gr --- ,replace(top2_incremental_brand,'-','') as top2_incremental_brand --- ,top2_incremental_gr --- ,null as ytd_gr --- ,null as ytd_ms --- ,null as ytd_delta_ms --- ,null as dtp_name --- ,'分TA-TOP集团' file_name --- ,trim(replace(rx_type,' TTL','' ) ) as source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_rx_ta_top_corp ---这个没有ytd 三个字段添加 --- union all - --- select --- '99' as rank1 --- ,null as product_desc --- ,null as product_type --- ,null as common_name --- ,null as brand --- ,null as corp --- ,null as corporation --- ,null as corp_type --- ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) --- else sales_quarter --- end as sales_quarter --- ,null as ytd --- ,sales_amount --- ,null as rx_type --- ,null as top1_brand_val --- ,null as top1_brand_gr --- ,null as top2_brand_val --- ,null as top2_brand_gr --- ,null as top1_incremental_brand --- ,null as top1_incremental_gr --- ,null as top2_incremental_brand --- ,null as top2_incremental_gr --- ,null as ytd_gr --- ,null as ytd_ms --- ,null as ytd_delta_ms --- ,dtp_name --- ,'DTP 整体市场' file_name --- ,NULL as source_name --- ,null rc --- from dwd.dwd_gnd_ext_retail_dtp_overall_market ---这个没有ytd 三个字段添加 rx_type - - --- union all -select - case when replace(upper(corp_name),'-','') = 'DTP TOTAL' then '99' - when rank1 is null then '98' - else replace(rank1,' ','') end as rank1 - ,null as product_desc - ,null as product_type - ,null as common_name - ,null as brand - ,replace(corp_name,'-','') as corp - ,null as corporation - ,null as corp_type - ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) - else sales_quarter - end as sales_quarter - ,null as ytd - ,sales_amount - ,null as rx_type - ,null as top1_brand_val - ,null as top1_brand_gr - ,null as top2_brand_val - ,null as top2_brand_gr - ,null as top1_incremental_brand - ,null as top1_incremental_gr - ,null as top2_incremental_brand - ,null as top2_incremental_gr - ,null as ytd_gr - ,null as ytd_ms - ,null as ytd_delta_ms - ,null as dtp_name - ,'DTP TOP10企业排名' file_name - ,NULL as source_name - ,null rc - ,'Rx' as rx_otc - ,'TOP' as top_incre -from dwd.dwd_gnd_ext_retail_dtp_top_copd ---这个没有ytd 三个字段添加 -union all -select - case when replace(upper(brand_name),'-','') = 'DTP TOTAL' then '99' - when rank1 is null then '98' - else replace(rank1,' ','') end as rank1 - ,null as product_desc - ,null as product_type - ,null as common_name - ,brand_name as brand - ,replace(corp_name,'-','') as corp - ,null as corporation - ,null as corp_type - ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) - else sales_quarter - end as sales_quarter - ,null as ytd - ,sales_amount - ,null as rx_type - ,null as top1_brand_val - ,null as top1_brand_gr - ,null as top2_brand_val - ,null as top2_brand_gr - ,null as top1_incremental_brand - ,null as top1_incremental_gr - ,null as top2_incremental_brand - ,null as top2_incremental_gr - ,null as ytd_gr - ,null as ytd_ms - ,null as ytd_delta_ms - ,null as dtp_name - ,'DTP TOP10品牌排名' file_name - ,NULL as source_name - ,null rc - ,'Rx' as rx_otc - ,'TOP' as top_incre -from dwd.dwd_gnd_ext_retail_dtp_top_brand ---这个没有ytd 三个字段添加 -union all - -select - case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' - when rank1 is null then '98' - else replace(rank1,' ','') end as rank1 - ,null as product_desc - ,null as product_type - ,null as common_name - ,null as brand - ,corp_desc as corp - ,corporation - ,`type` as corp_type - ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) - else sales_quarter - end as sales_quarter - ,null as ytd - ,sales_amount - ,null as rx_type - ,null as top1_brand_val - ,null as top1_brand_gr - ,null as top2_brand_val - ,null as top2_brand_gr - ,null as top1_incremental_brand - ,null as top1_incremental_gr - ,null as top2_incremental_brand - ,null as top2_incremental_gr - ,null as ytd_gr - ,null as ytd_ms - ,null as ytd_delta_ms - ,null as dtp_name - ,'全国-集团排名' file_name - ,case when ta = 'GI' then concat(ta,'-',rx_otc) - when ta = 'NIAD-excl. GLP1' then 'DM' - else ta end as source_name - ,null rc - ,rx_otc - ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -from dwd.dwd_gnd_retail_national_corp_rank - -union all -select - case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' - when rank1 is null then '98' - else replace(rank1,' ','') end as rank1 - ,prod_desc as product_desc - ,`type` as product_type - ,cmps_desc as common_name - ,brand - ,corp_desc as corp - ,corporation - ,null as corp_type - ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) - else sales_quarter - end as sales_quarter - ,null as ytd - ,sales_amount - ,null as rx_type - ,null as top1_brand_val - ,null as top1_brand_gr - ,null as top2_brand_val - ,null as top2_brand_gr - ,null as top1_incremental_brand - ,null as top1_incremental_gr - ,null as top2_incremental_brand - ,null as top2_incremental_gr - ,null as ytd_gr - ,null as ytd_ms - ,null as ytd_delta_ms - ,null as dtp_name - ,'全国-产品排名' file_name - ,case when ta = 'GI' then concat(ta,'-',rx_otc) - when ta = 'NIAD-excl. GLP1' then 'DM' - else ta end as source_name - ,null rc - ,rx_otc - ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -from dwd.dwd_gnd_retail_national_prd_rank -union all -select - case when upper(replace(rank1,' ','')) = 'TOTAL' then '99' - when rank1 is null then '98' - else replace(rank1,' ','') end as rank1 - ,null as product_desc - ,null as product_type - ,null as common_name - ,null as brand - ,corp_desc as corp - ,corporation - ,`type` as corp_type - ,case when length(sales_quarter) = 4 then concat('20',sales_quarter) - else sales_quarter - end as sales_quarter - ,null as ytd - ,sales_amount - ,null as rx_type - ,null as top1_brand_val - ,null as top1_brand_gr - ,null as top2_brand_val - ,null as top2_brand_gr - ,null as top1_incremental_brand - ,null as top1_incremental_gr - ,null as top2_incremental_brand - ,null as top2_incremental_gr - ,null as ytd_gr - ,null as ytd_ms - ,null as ytd_delta_ms - ,null as dtp_name - ,'大区-集团排名' file_name - ,case when ta = 'GI' then concat(ta,'-',rx_otc) - when ta = 'NIAD-excl. GLP1' then 'DM' - else ta end as source_name - ,region rc - ,rx_otc - ,case when upper(top_top_incre) = 'TOP SALES' then 'TOP' else 'Incre' end as top_incre -from dwd.dwd_gnd_retail_region_corp_rank -) - --- --计算Total值,按文件、季度、TA、rx_otc、top_incre进行合计 --- --因为数据中本身就包含了Total行,因此直接筛选了rank1 = '99'(即筛选Total行)进行合计 -,overview_total as ( -select file_name, - source_name, - rx_otc, - top_incre, - sales_quarter, - rc, - sum(sales_amount) sales_amount_total -from overview -where rank1 = '99' -group by file_name,sales_quarter,rx_otc,top_incre,source_name,rc -) - --- --取到文件中的最大时间,在获取ly值的时候,用于限定时间范围 -,overview_maxyq as ( -select max(sales_quarter) max_sales_quarter - from overview -where sales_quarter is not null -) - --- --在数据源的基础上,增加yyyymm字段、sales_amount_ly、sales_amount_total、sales_amount_ly_total字段 -select case when max(rank1) < 10000 then max(rank1) else cast(max(rank1) as int) - 10000 end as rank1 -,product_desc -,product_type -,common_name -,brand -,corp -,corporation -,corp_type -,sales_quarter -,case when right(sales_quarter,1) = '1' then concat(left(sales_quarter,4),'03') - when right(sales_quarter,1) = '2' then concat(left(sales_quarter,4),'06') - when right(sales_quarter,1) = '3' then concat(left(sales_quarter,4),'09') - when right(sales_quarter,1) = '4' then concat(left(sales_quarter,4),'12') - end as yyyymm -,max(ytd) ytd -,sum(sales_amount) as sales_amount -,sum(sales_amount_ly) as sales_amount_ly -,sum(sales_amount_total) as sales_amount_total -,sum(sales_amount_ly_total) as sales_amount_ly_total -,rx_type -,max(top1_brand_val) top1_brand_val -,max(top1_brand_gr) top1_brand_gr -,max(top2_brand_val) top2_brand_val -,max(top2_brand_gr) top2_brand_gr -,max(top1_incremental_brand) top1_incremental_brand -,max(top1_incremental_gr) top1_incremental_gr -,max(top2_incremental_brand) top2_incremental_brand -,max(top2_incremental_gr) top2_incremental_gr -,max(ytd_gr) ytd_gr -,max(ytd_ms) ytd_ms -,max(ytd_delta_ms) ytd_delta_ms -,dtp_name -,file_name -,source_name -,rc -,rx_otc -,top_incre -,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt -,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from -( -select -cast(rank1 as int) + 10000 rank1 -,product_desc -,product_type -,common_name -,brand -,corp -,corporation -,corp_type -,t1.sales_quarter -,ytd -,sales_amount -,0 as sales_amount_ly -,t2.sales_amount_total -,0 as sales_amount_ly_total -,rx_type -,top1_brand_val -,top1_brand_gr -,top2_brand_val -,top2_brand_gr -,top1_incremental_brand -,top1_incremental_gr -,top2_incremental_brand -,top2_incremental_gr -,ytd_gr -,ytd_ms -,ytd_delta_ms -,dtp_name -,t1.file_name -,t1.source_name -,t1.rc -,t1.rx_otc -,t1.top_incre -from overview t1 -left join overview_total t2 -on t1.file_name = t2.file_name -and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'') -and t1.rx_otc = t2.rx_otc -and t1.top_incre = t2.top_incre -and NVL(t1.source_name,'') = NVL(t2.source_name,'') -and NVL(t1.rc,'') = NVL(t2.rc,'') -union all -select -cast(rank1 as int) rank1 -,product_desc -,product_type -,common_name -,brand -,corp -,corporation -,corp_type -,concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) as sales_quarter -,null as ytd -,0 as sales_amount -,sales_amount as sales_amount_ly -,0 as sales_amount_total -,t2.sales_amount_total as sales_amount_ly_total -,rx_type -,null as top1_brand_val -,null as top1_brand_gr -,null as top2_brand_val -,null as top2_brand_gr -,null as top1_incremental_brand -,null as top1_incremental_gr -,null as top2_incremental_brand -,null as top2_incremental_gr -,null as ytd_gr -,null as ytd_ms -,null as ytd_delta_ms -,dtp_name -,t1.file_name -,t1.source_name -,t1.rc -,t1.rx_otc -,t1.top_incre -from overview t1 -left join overview_total t2 -on t1.file_name = t2.file_name -and nvl(t1.sales_quarter,'') = nvl(t2.sales_quarter,'') -and t1.rx_otc = t2.rx_otc -and t1.top_incre = t2.top_incre -and NVL(t1.source_name,'') = NVL(t2.source_name,'') -and NVL(t1.rc,'') = NVL(t2.rc,'') -left join overview_maxyq t3 -on 1=1 -where concat(cast(left(t1.sales_quarter,4) as int) + 1,right(t1.sales_quarter,2)) <= t3.max_sales_quarter -) t -group by -product_desc -,product_type -,common_name -,brand -,corp -,corporation -,corp_type -,sales_quarter -,rx_type -,dtp_name -,file_name -,source_name -,rc -,rx_otc -,top_incre - --- COMMAND ---------- - --- --------将free report overview 导出的合并文件写入dm -insert overwrite table dm.dm_zk_retail_overview_data( -rank1, -product_desc, -product_type, -common_name, -brand, -corp, -corporation, -corp_type, -sales_quarter, -yyyymm, -ytd, -sales_amount, -sales_amount_ly, -sales_amount_total, -sales_amount_ly_total, -rx_type, -top1_brand_val, -top1_brand_gr, -top2_brand_val, -top2_brand_gr, -top1_incremental_brand, -top1_incremental_gr, -top2_incremental_brand, -top2_incremental_gr, -ytd_gr, -ytd_ms, -ytd_delta_ms, -dtp_name, -file_name, -source_name, -rc, -rx_otc, -top_incre, -etl_insert_dt, -etl_update_dt -) -select -trim(rank1) rank1 -,product_desc -,product_type -,common_name -,brand -,nvl(corp,'' ) corp -,corporation -,corp_type -,sales_quarter -,yyyymm -,case when ytd is null then 'N' ELSE 'Y' END ytd -,sales_amount -,sales_amount_ly -,sales_amount_total -,sales_amount_ly_total -,rx_type -,top1_brand_val -,cast(top1_brand_gr as double) top1_brand_gr -,top2_brand_val -,cast(top2_brand_gr as double) top2_brand_gr -,top1_incremental_brand -,cast(top1_incremental_gr as double) top1_incremental_gr -,top2_incremental_brand -,cast(top2_incremental_gr as double) top2_incremental_gr -,cast(ytd_gr as double ) ytd_gr -,cast(ytd_ms as double) ytd_ms -,cast(ytd_delta_ms as double) ytd_delta_ms -,dtp_name -,file_name -,trim(source_name) source_name -,rc -,rx_otc -,top_incre - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from dws.dws_zk_retail_overview_data - --- COMMAND ---------- - -------------------------------retail/EC原始维度,从b2c配置表直取----------------------------------------- -insert overwrite table dws.dws_zk_retail_product_info -select distinct - product_id - ,iqvia_pack_code - ,prescription_nature - ,medicine_type - ,zk_medicine_tier1 - ,zk_medicine_tier2 - ,zk_medicine_tier3 - ,zk_medicine_tier4 - ,common_name - ,dosage_form - ,user_type - ,category_name - ,product_name - ,brand_name - ,zk_manu_des - ,zk_corp_des - ,zk_pack_des - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from dwd.dwd_gnd_ext_retail_pack_property; -------------------------------retail/EC原始维度,从b2c直取 写入dm----------------------------------------- -insert overwrite table dm.dm_zk_retail_product_info -select distinct - product_id - ,iqvia_pack_code - ,prescription_nature - ,medicine_type - ,zk_medicine_tier1 - ,zk_medicine_tier2 - ,zk_medicine_tier3 - ,zk_medicine_tier4 - ,common_name - ,dosage_form - ,user_type - ,category_name - ,product_name - ,brand_name - ,zk_manu_des - ,zk_corp_des - ,zk_pack_des - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt - from dws.dws_zk_retail_product_info; - --- COMMAND ---------- - -------------------------------retail 自有部分需要导出数据,从品牌数据报表直取,无特殊加工----------------------------------------- ---注意事项: -----market 排除数据为:从pack 文件中通过比例拆分写入品牌数据的 品牌数据,包括多达一、天一宁等品牌,这些并非原始文件中的数据,故排除。 ----- (具体拆分代码详见:1 dwd_inc_gnd_ext_retail_nataional -insert overwrite table dws.dws_zk_retail_brand -with max_yq as ( -select TA,market,rc_name_en,province_city,ranked_by,max(yq) as yq -from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all -WHERE market NOT IN ('pack-CV-高血压-化学药-全国.xlsx','pack-CV-他汀类+血脂康-全国.xlsx') -group by TA,market,rc_name_en,province_city,ranked_by -) - -select distinct - t1.TA, - t1.market, - t1.rc_name_en, - t1.province_city - ,key_brand_ytd - ,key_brand_rank_ytd - ,top_brand_ytd - ,top_brand_ms_ytd - ,top_brand_inc_ms_ytd - ,top_brand_gr_ytd - ,key_brand_qtd - ,key_brand_rank_qtd - ,top_brand_qtd - ,top_brand_ms_qtd - ,top_brand_inc_ms_qtd - ,top_brand_gr_qtd - ,t1.ranked_by - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -from dwd.dwd_inc_gnd_ext_retail_nataional_brand_union_all t1 -inner join max_yq t2 -on t1.TA = t2.TA -and t1.market = t2.market -and t1.rc_name_en = t2.rc_name_en -and t1.province_city = t2.province_city -and t1.yq = t2.yq -and t1.ranked_by = t2.ranked_by -; - --- dm_zk_retail_brand - -------------------------------retail 自有部分需要导出数据,写入dm----------------------------------------- -insert overwrite table dm.dm_zk_retail_brand -select distinct - TA,market,rc_name_en,province_city - ,key_brand_ytd - ,cast(key_brand_rank_ytd as double) key_brand_rank_ytd - ,top_brand_ytd - ,cast(top_brand_ms_ytd as double) top_brand_ms_ytd - ,cast(top_brand_inc_ms_ytd as double) top_brand_inc_ms_ytd - ,cast(top_brand_gr_ytd as double) top_brand_gr_ytd - ,key_brand_qtd - ,cast(key_brand_rank_qtd as double ) key_brand_rank_qtd - ,top_brand_qtd - ,cast(top_brand_ms_qtd as double ) top_brand_ms_qtd - ,cast(top_brand_inc_ms_qtd as double ) top_brand_inc_ms_qtd - ,cast(top_brand_gr_qtd as double ) top_brand_gr_qtd - ,ranked_by -from dws.dws_zk_retail_brand ; - - - - - - --- COMMAND ---------- - ----------------------------------------------------------------------------------------- ---修改时间:20240821 ---修改人:FanXujia ---修改内容: ---导出模板整合,由原来的十几个文件改为3个文件 ---《全国-集团排名》:dwd.dwd_gnd_retail_national_corp_rank ---《全国-产品排名》:dwd.dwd_gnd_retail_national_prd_rank ---《大区-集团排名》:dwd.dwd_gnd_retail_region_corp_rank ----------------------------------------------------------------------------------------- -insert overwrite table dws.dws_zk_retail_export -( -ta, -rx_otc, -top_top_incre, -rank1, -corp_desc, -corporation, -type, -prod_desc, -cmps_desc, -brand, -region, -sales_quarter, -sales_amount, -file_name, -etl_insert_dt, -etl_update_dt -) ---《全国-集团排名》 -select distinct -ta, -rx_otc, -top_top_incre, -case when upper(trim(rank1)) = 'TOTAL' then '99' - when rank1 is null then '98' - else trim(rank1) end as rank1, -corp_desc, -corporation, -type, -null as prod_desc, -null as cmps_desc, -null as brand, -null as region, -sales_quarter, -sales_amount, -'全国-集团排名' as file_name, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -from dwd.dwd_gnd_retail_national_corp_rank -union all ---《全国-产品排名》 -select distinct -ta, -rx_otc, -top_top_incre, -case when upper(trim(rank1)) = 'TOTAL' then '99' - when rank1 is null then '98' - else trim(rank1) end as rank1, -corp_desc, -corporation, -type, -prod_desc, -cmps_desc, -brand, -null as region, -sales_quarter, -sales_amount, -'全国-产品排名' as file_name, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -from dwd.dwd_gnd_retail_national_prd_rank -union all ---《大区-集团排名》 -select distinct -ta, -rx_otc, -top_top_incre, -case when upper(trim(rank1)) = 'TOTAL' then '99' - when rank1 is null then '98' - else trim(rank1) end as rank1, -corp_desc, -corporation, -type, -null as prod_desc, -null as cmps_desc, -null as brand, -region, -sales_quarter, -sales_amount, -'大区-集团排名' as file_name, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp(),'UTC+8') as etl_update_dt -from dwd.dwd_gnd_retail_region_corp_rank; - - ---写入dm表 -insert overwrite table dm.dm_zk_retail_export -( -ta, -rx_otc, -top_top_incre, -rank1, -corp_desc, -corporation, -type, -prod_desc, -cmps_desc, -brand, -region, -sales_quarter, -sales_amount, -file_name, -etl_insert_dt, -etl_update_dt -) -select -ta, -rx_otc, -top_top_incre, -rank1, -corp_desc, -corporation, -type, -prod_desc, -cmps_desc, -brand, -region, -sales_quarter, -sales_amount, -file_name, -etl_insert_dt, -etl_update_dt -from dws.dws_zk_retail_export; \ No newline at end of file diff --git a/EXTERNAL/Retail/z3 retail_overview_data_作废.sql:Zone.Identifier b/EXTERNAL/Retail/z3 retail_overview_data_作废.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/Retail/z3 retail_overview_data_作废.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/01 dm_thc_pack_property.sql b/EXTERNAL/THC/01 dm_thc_pack_property.sql deleted file mode 100644 index 04e6185..0000000 --- a/EXTERNAL/THC/01 dm_thc_pack_property.sql +++ /dev/null @@ -1,231 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE dm.dm_thc_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, --- countingunit STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_thc_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_thc_pack_property'; - --- COMMAND ---------- - -update dwd.dwd_gnd_ext_thc_pack_property -set iqvia_pack_code = if( iqvia_pack_code REGEXP '^[0-9]',right(concat('000000000000',iqvia_pack_code),12),iqvia_pack_code) -,iqvia_prod_code = right(concat('000000000',iqvia_prod_code),9) - --- COMMAND ---------- - -create or replace temporary view dwd_pack_property -as -select distinct - iqvia_pack_code , - iqvia_prod_code , - pack_cod , - app1_cod , - app1_des , - app1_des_c , - app2_cod , - app2_des , - app2_des_c , - app3_cod , - app3_des , - app3_des_c , - atc1_cod , - atc1_des , - atc1_des_c , - atc2_cod , - atc2_des , - atc2_des_c , - atc3_cod , - atc3_des , - atc3_des_c , - atc4_cod , - atc4_des , - atc4_des_c , - bio_desc , - cmps_cod , - cmps_des , - cmps_des_c , - corp_cod , - corp_des , - corp_des_c , - edl_desc , - eth_otc_desc , - gene_orig_desc , - gqce_desc , - manu_cod , - manu_des , - manu_des_c , - mnfl_cod , - mnfl_des , - nrdl_desc , - pack_des , - stgh_des , - pack_lch , - paed_desc , - prod_des , - prod_des_c , - tcm_desc , - vbp_desc , - builtinarchivedate , - source_file_path , - source_file_name , - etl_insert_dt , - countingunit -from dwd.dwd_gnd_ext_thc_pack_property - --- COMMAND ---------- - --- create or replace table dm.dm_chc_pack_property --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_chc_pack_property' --- as -insert overwrite table dm.dm_thc_pack_property -WITH dedup_l AS ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY iqvia_pack_code ORDER BY iqvia_pack_code) AS rn - FROM dwd_pack_property - 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.countingunit, - 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 \ No newline at end of file diff --git a/EXTERNAL/THC/01 dm_thc_pack_property.sql:Zone.Identifier b/EXTERNAL/THC/01 dm_thc_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/01 dm_thc_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/02 dm_ext_thc_sales.sql b/EXTERNAL/THC/02 dm_ext_thc_sales.sql deleted file mode 100644 index 4f7237e..0000000 --- a/EXTERNAL/THC/02 dm_ext_thc_sales.sql +++ /dev/null @@ -1,354 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_THC_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_sales'; - --- COMMAND ---------- - --------------------------------------------------------------------------- ---修改时间:20241106 ---修改人:Fanxujia ---修改内容: ---THC原本只有全国数据,现在增加14个省份的数据。 ---但是全国数据是半年提供一次,省份数据一个季度提供一次 ---目前需求是将季度数据放入模型,而全国数据单独成一个事实表,供PBI单独展示 ---这里生成的事实表里全国和省份都包含了,在写入模型的时候用where条件筛选 ---------------------------------------------------------------------------- - --- COMMAND ---------- - ---rawdata年月处理 -CREATE OR REPLACE TEMPORARY VIEW thc_rawdata1 -AS -select case when right(yq,2) = 'Q1' then concat(left(yq,4),'03') - when right(yq,2) = 'Q2' then concat(left(yq,4),'06') - when right(yq,2) = 'Q3' then concat(left(yq,4),'09') - when right(yq,2) = 'Q4' then concat(left(yq,4),'12') - else yq - end as yyyymm, - city_c, - pack_cod, - prod_cod, - value, - totalunit, - countingunit -from dwd.dwd_gnd_ext_thc_rawdata - --- COMMAND ---------- - ---CHPA渠道对应的公司编码以及名称 -CREATE OR REPLACE TEMPORARY VIEW chpa_corp -AS -select distinct -PACK_COD, -CORP_COD, -CORP_DES -from dm.dm_ims_td_pack_property - --- COMMAND ---------- - ---从thc渠道的pack_property里取到对应的iqvia_pack_code、countingunit ---然后corp_cod优先取CHPA渠道的 -CREATE OR REPLACE TEMPORARY VIEW thc_corp -AS -select t1.pack_cod, -t1.iqvia_pack_code, -t1.countingunit, -coalesce(t2.CORP_COD, t1.CORP_COD) as CORP_COD , -coalesce(t2.CORP_DES,t1.CORP_DES ) as CORP_DES -from dwd.dwd_gnd_ext_thc_pack_property t1 -left join chpa_corp t2 -on t1.iqvia_pack_code = t2.PACK_COD - --- COMMAND ---------- - ---编辑thc渠道的audit_cod ---全国数据设置成CHT ---省份数据使用公共的地理维表里的省份编码作为audit_cod -CREATE OR REPLACE TEMPORARY VIEW thc_geo -AS -select -t1.city_c, -t1.city_e, -t1.province_c, -t1.province_e, -case when t1.province_c = '全国' then 'CHT' - when t2.geo_key is null then t1.province_e - else t2.geo_key -end as AUDIT_COD -from dwd.dwd_gnd_ext_thc_geo t1 -left join dm.dm_td_geography t2 ---THC最细到省,用省关联 -on t1.province_c = t2.province_name -and t2.geo_key = t2.province_code - --- COMMAND ---------- - ---将上面的rawdata、corp、audit信息合到一起 -CREATE OR REPLACE TEMPORARY VIEW thc_rawdata2 -AS -select t1.yyyymm, -t1.city_c, -t1.pack_cod as pack_cod_old, -t2.iqvia_pack_code as pack_cod, -t2.CORP_COD, -t3.AUDIT_COD, -t1.prod_cod, -t1.value, -t1.totalunit, -t1.totalunit * t2.countingunit as countingunit -from thc_rawdata1 t1 -left join thc_corp t2 -on t1.pack_cod = t2.pack_cod -left join thc_geo t3 -on t1.city_c = t3.city_c - --- COMMAND ---------- - ---最大的月份,计算ly时会需要 -CREATE OR REPLACE TEMPORARY VIEW max_thc_rawdata -AS -select max(cast(yyyymm as int)) as max_ym -from thc_rawdata2 - --- COMMAND ---------- - ---计算ly -CREATE OR REPLACE TEMPORARY VIEW thc_rawdata3 -AS -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -value, -totalunit, -countingunit, -0 as value_ly, -0 as totalunit_ly, -0 as countingunit_ly -from thc_rawdata2 -union all -select cast(t1.yyyymm as int) + 100 as yyyymm, -t1.AUDIT_COD, -t1.pack_cod, -t1.CORP_COD, -0 as value, -0 as totalunit, -0 as countingunit, -t1.value as value_ly, -t1.totalunit as totalunit_ly, -t1.countingunit as countingunit_ly -from thc_rawdata2 t1 -cross join max_thc_rawdata t2 -where cast(t1.yyyymm as int) + 100 <= t2.max_ym - --- COMMAND ---------- - ---按年月、audit_cod、pack_cod、Corp_cod汇总 -CREATE OR REPLACE TEMPORARY VIEW thc_rawdata4 -AS -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -sum(value) as SALES_VALUE_CAL, -sum(totalunit) as SALES_UNIT_CAL, -sum(countingunit) as COUNTING_UNIT, -sum(value_ly) as SALES_VALUE_CAL_LY, -sum(totalunit_ly) as SALES_UNIT_CAL_LY, -sum(countingunit_ly) as COUNTING_UNIT_LY -from thc_rawdata3 -group by yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW THC_SALES -AS -SELECT - A.YYYYMM, - A.PACK_COD AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'THC(Quarterly)' DATA_SOURCE, - ------------------------------------- - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - COUNTING_UNIT, - COUNTING_UNIT_LY , - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 - ------------------------------------- -FROM - thc_rawdata4 A --- 条件后移到 unionall_sales --- WHERE --- AUDIT_COD = 'CHT' - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_THC_SALES -( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) -SELECT - YYYYMM, - NVL ( - NULLIF(PACK_CODE, ''), - CONCAT ('PACK_CODE_', DATA_SOURCE) - ) AS PACK_CODE, - NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - COUNTING_UNIT, - COUNTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - THC_SALES -; - --- COMMAND ---------- - -insert overwrite table dm.dm_ext_thc_sales -( -yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -SALES_VALUE_CAL, -SALES_UNIT_CAL, -COUNTING_UNIT, -SALES_VALUE_CAL_LY, -SALES_UNIT_CAL_LY, -COUNTING_UNIT_LY -) -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -SALES_VALUE_CAL, -SALES_UNIT_CAL, -COUNTING_UNIT, -SALES_VALUE_CAL_LY, -SALES_UNIT_CAL_LY, -COUNTING_UNIT_LY -from thc_rawdata4 ---取2018年之后的数 -where yyyymm >= '201801' \ No newline at end of file diff --git a/EXTERNAL/THC/02 dm_ext_thc_sales.sql:Zone.Identifier b/EXTERNAL/THC/02 dm_ext_thc_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/02 dm_ext_thc_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql b/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql deleted file mode 100644 index a06733f..0000000 --- a/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql +++ /dev/null @@ -1,178 +0,0 @@ --- Databricks notebook source --- create table dm.dm_ext_thc_sales --- ( --- yyyymm STRING, --- audit_cod STRING, --- pack_cod STRING, --- corp_cod STRING, --- sales_value_cal decimal(38,10), --- sales_unit_cal decimal(38,10), --- counting_unit decimal(38,10), --- sales_value_cal_ly decimal(38,10), --- sales_unit_cal_ly decimal(38,10), --- counting_unit_ly decimal(38,10) --- ) --- using delta - --- COMMAND ---------- - --------------------------------------------------------------------------- ---修改时间:20241106 ---修改人:Fanxujia ---修改内容: ---THC原本只有全国数据,现在增加14个省份的数据。 ---但是全国数据是半年提供一次,省份数据一个季度提供一次 ---目前需求是将季度数据放入模型,而全国数据单独成一个事实表,供PBI单独展示 ---这里生成的事实表里全国和省份都包含了,在写入模型的时候用where条件筛选 ---------------------------------------------------------------------------- ---rawdata年月处理 -with thc_rawdata1 as ( -select case when right(yq,2) = 'Q1' then concat(left(yq,4),'03') - when right(yq,2) = 'Q2' then concat(left(yq,4),'06') - when right(yq,2) = 'Q3' then concat(left(yq,4),'09') - when right(yq,2) = 'Q4' then concat(left(yq,4),'12') - else yq - end as yyyymm, - city_c, - pack_cod, - prod_cod, - value, - totalunit, - countingunit -from dwd.dwd_gnd_ext_thc_rawdata -) ---CHPA渠道对应的公司编码以及名称 -,chpa_corp as ( -select distinct -PACK_COD, -CORP_COD, -CORP_DES -from dm.dm_ims_td_pack_property -) ---从thc渠道的pack_property里取到对应的iqvia_pack_code、countingunit ---然后corp_cod优先取CHPA渠道的 -,thc_corp as ( -select t1.pack_cod, -t1.iqvia_pack_code, -t1.countingunit, -coalesce(t2.CORP_COD, t1.CORP_COD) as CORP_COD , -coalesce(t2.CORP_DES,t1.CORP_DES ) as CORP_DES -from dwd.dwd_gnd_ext_thc_pack_property t1 -left join chpa_corp t2 -on t1.iqvia_pack_code = t2.PACK_COD -) ---编辑thc渠道的audit_cod ---全国数据设置成CHT ---省份数据使用公共的地理维表里的省份编码作为audit_cod -,thc_geo as ( -select -t1.city_c, -t1.city_e, -t1.province_c, -t1.province_e, -case when t1.province_c = '全国' then 'CHT' - when t2.geo_key is null then t1.province_e - else t2.geo_key -end as AUDIT_COD -from dwd.dwd_gnd_ext_thc_geo t1 -left join dm.dm_td_geography t2 ---THC最细到省,用省关联 -on t1.province_c = t2.province_name -and t2.geo_key = t2.province_code -) ---将上面的rawdata、corp、audit信息合到一起 -,thc_rawdata2 as ( -select t1.yyyymm, -t1.city_c, -t1.pack_cod as pack_cod_old, -t2.iqvia_pack_code as pack_cod, -t2.CORP_COD, -t3.AUDIT_COD, -t1.prod_cod, -t1.value, -t1.totalunit, -t1.totalunit * t2.countingunit as countingunit -from thc_rawdata1 t1 -left join thc_corp t2 -on t1.pack_cod = t2.pack_cod -left join thc_geo t3 -on t1.city_c = t3.city_c -) ---最大的月份,计算ly时会需要 -,max_thc_rawdata as ( -select max(cast(yyyymm as int)) as max_ym -from thc_rawdata2 -) ---计算ly -,thc_rawdata3 as ( -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -value, -totalunit, -countingunit, -0 as value_ly, -0 as totalunit_ly, -0 as countingunit_ly -from thc_rawdata2 -union all -select cast(t1.yyyymm as int) + 100 as yyyymm, -t1.AUDIT_COD, -t1.pack_cod, -t1.CORP_COD, -0 as value, -0 as totalunit, -0 as countingunit, -t1.value as value_ly, -t1.totalunit as totalunit_ly, -t1.countingunit as countingunit_ly -from thc_rawdata2 t1 -cross join max_thc_rawdata t2 -where cast(t1.yyyymm as int) + 100 <= t2.max_ym -) ---按年月、audit_cod、pack_cod、Corp_cod汇总 -,thc_rawdata4 as ( -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -sum(value) as SALES_VALUE_CAL, -sum(totalunit) as SALES_UNIT_CAL, -sum(countingunit) as COUNTING_UNIT, -sum(value_ly) as SALES_VALUE_CAL_LY, -sum(totalunit_ly) as SALES_UNIT_CAL_LY, -sum(countingunit_ly) as COUNTING_UNIT_LY -from thc_rawdata3 -group by yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD -) - -insert overwrite table dm.dm_ext_thc_sales -( -yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -SALES_VALUE_CAL, -SALES_UNIT_CAL, -COUNTING_UNIT, -SALES_VALUE_CAL_LY, -SALES_UNIT_CAL_LY, -COUNTING_UNIT_LY -) -select yyyymm, -AUDIT_COD, -pack_cod, -CORP_COD, -SALES_VALUE_CAL, -SALES_UNIT_CAL, -COUNTING_UNIT, -SALES_VALUE_CAL_LY, -SALES_UNIT_CAL_LY, -COUNTING_UNIT_LY -from thc_rawdata4 ---取2018年之后的数 -where yyyymm >= '201801' \ No newline at end of file diff --git a/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql:Zone.Identifier b/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/02 dm_ext_thc_sales_bakup_20260327.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql b/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql deleted file mode 100644 index ba8bf4f..0000000 --- a/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql +++ /dev/null @@ -1,109 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_THC_MARKET_SALES_CHT ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- DATA_SOURCE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- CMPS_FLAG STRING COMMENT '分子式标签', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- INST_CODE STRING COMMENT '内部机构编码', --- AIA_HP_FLAG STRING, --- DEPT_NAME STRING COMMENT '科室名称', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_TYPE STRING COMMENT '处方来源', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- VA DOUBLE, --- UT DOUBLE, --- CU DOUBLE, --- PT DOUBLE, --- SALES_UNIT_CAL DECIMAL(35,6), --- SALES_UNIT_CAL_LY DECIMAL(35,6), --- SALES_VALUE_CAL DECIMAL(35,6), --- SALES_VALUE_CAL_LY DECIMAL(35,6), --- CONUTING_UNIT DECIMAL(35,6), --- CONUTING_UNIT_LY DECIMAL(35,6), --- PDOT DECIMAL(35,6), --- PDOT_LY DECIMAL(35,6), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_market_sales_cht'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_market_sales_cht'; - --- COMMAND ---------- - -INSERT OVERWRITE DM.DM_TF_EXT_THC_MARKET_SALES_CHT -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY, -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_TF_EXT_THC_SALES t1 -LEFT JOIN DM.dm_td_ext_THC_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_THC_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'THC(Quarterly)' -and AUDIT_CODE <> 'CHT' \ No newline at end of file diff --git a/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql:Zone.Identifier b/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/03 DM_TF_EXT_THC_MARKET_SALES_CHT.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql b/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql deleted file mode 100644 index a63b210..0000000 --- a/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql +++ /dev/null @@ -1,115 +0,0 @@ --- Databricks notebook source --- CREATE or replace TABLE spark_catalog.dm.dm_tf_external_sales_thc ( --- YYYYMM STRING, --- PACK_COD STRING, --- CORP_COD STRING, --- AUDIT_COD STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- inst_code STRING COMMENT '内部机构编码', --- cmps_flag STRING COMMENT '分子式标签', --- dept_name STRING COMMENT '科室名称', --- prescription DECIMAL(38,10) COMMENT '处方张数', --- prescription_ly DECIMAL(38,10) COMMENT '去年同期处方张数', --- new_code STRING COMMENT '主数据关联code', --- area STRING COMMENT '城市', --- h_level STRING COMMENT '医院类型', --- reimburse STRING COMMENT '报销情况', --- reimburse_type STRING COMMENT '报销类型', --- prescription_source STRING COMMENT '处方来源') --- USING delta --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_external_sales' --- TBLPROPERTIES ( --- 'Type' = 'EXTERNAL', --- 'delta.deletedFileRetentionDuration' = 'interval 31 days', --- 'delta.logRetentionDuration' = 'interval 31 days', --- 'delta.minReaderVersion' = '1', --- 'delta.minWriterVersion' = '2') - - --- COMMAND ---------- - --- DBTITLE 1,待禁用 --------------------------------------------------------------------------------------- ---修改时间:20241106 ---修改人:Fanxujia ---修改内容: ---THC的全国数据半年给一次,省份数据是一个季度给一次。 ---目前需求是将省份数据写入模型,全国数据单独成一张事实表 --------------------------------------------------------------------------------------- -insert OVERWRITE table dm.dm_tf_external_sales_thc ( - YYYYMM, - PACK_COD, - CORP_COD, - AUDIT_COD, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - inst_code, - cmps_flag, - dept_name, - prescription, - prescription_ly, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source - ) -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - '' as PLATFORM_TYPE, - '' as STORE_NAME, - '' as STORE_TYPE, - '' as REGION_TYPE, - 'THC(Quarterly)' as DATA_SOURCE, - 1 as PACK_FLAG, - 1 as PROD_FLAG, - 0 as DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - '' as inst_code, - '' as cmps_flag, - '' as dept_name, - null as prescription, - null as prescription_ly, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source -FROM - DM.DM_TF_EXT_THC_SALES -where AUDIT_CODE <> 'CHT' \ No newline at end of file diff --git a/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql:Zone.Identifier b/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/04 dm_tf_external_sales_thc.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql b/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql deleted file mode 100644 index 60592eb..0000000 --- a/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_PACK_PROPERTY --- ( --- -- -- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- -- MARKET STRING, --- -- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- -- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- -- CLASS STRING, --- -- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_THC_PACK_PROPERTY -SELECT - -- MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - -- MARKET, - -- KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - -- AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - -- CLASS, - -- NULL AS MARKET_RATIO, - COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_THC_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/05 DM_TD_EXT_THC_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql b/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql deleted file mode 100644 index 747a1bb..0000000 --- a/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql +++ /dev/null @@ -1,326 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_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_thc_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market'; - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_thc_PACK2MARKET_KEYCOMPETITOR ( --- KEY_COMPETITOR STRING, --- MARKET STRING, --- PACK_CODE STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market_keycompetitor'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market_keycompetitor'; - --- COMMAND ---------- - --- CREATE or REPLACE TABLE DM.DM_TD_EXT_thc_PACK2MARKET_CLASS ( --- MARKET STRING, --- PACK_CODE STRING, --- CLASS STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market_class'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market_class'; - --- COMMAND ---------- - --- 使用 EXCEPT(集合差操作)简化逻辑 -INSERT OVERWRITE TABLE DM.DM_TD_EXT_THC_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_THC_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_THC_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_thc_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_thc_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 ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_thc_PACK2MARKET_CLASS -SELECT - /*+ BROADCAST(T2) */ - DISTINCT - T1.MARKET, - T1.PACK_CODE, - COALESCE( T2.CLASS, 'OTHERS') AS CLASS -FROM DM.DM_TD_EXT_thc_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) \ No newline at end of file diff --git a/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/06 DM_TD_EXT_THC_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql b/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql deleted file mode 100644 index 633759a..0000000 --- a/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_thc_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_THC_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_THC_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/07 DM_TD_EXT_THC_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql b/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 529609d..0000000 --- a/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_THC_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_THC_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/08 DM_TD_EXT_THC_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql b/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql deleted file mode 100644 index d601386..0000000 --- a/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_THC_MARKET_PACK_MAPPING - SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T4.CLASS, - T5.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_THC_PACK2MARKET T1 - LEFT JOIN DM.DM_TD_EXT_THC_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET - AND T1.PACK_CODE = T2.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_THC_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET - AND T1.PACK_CODE = T3.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_THC_PACK2MARKET_CLASS T4 - ON T1.PACK_CODE = T4.PACK_CODE - AND T1.MARKET = T4.MARKET - LEFT JOIN DM.DM_TD_EXT_THC_PACK2MARKET_KEYCOMPETITOR T5 - ON T1.PACK_CODE = T5.PACK_CODE - AND T1.MARKET = T5.MARKET - WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/THC/09 DM_TD_EXT_THC_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql b/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql deleted file mode 100644 index 18623d9..0000000 --- a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,541 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- DATASOURCE STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'AIA(Monthly)' AS DATASOURCE, - 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_AIA_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'IQVIA-CHPA(Monthly)' AS DATASOURCE, - 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_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'Retail(Quarterly)' AS DATASOURCE, - 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_RETAIL_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'DTP(Quarterly)' AS DATASOURCE, - 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_DTP_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'CHC(Quarterly)' AS DATASOURCE, - 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_CHC_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'IQVIA-COUNTY(Quarterly)' AS DATASOURCE, - 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_COUNTY_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'XH Data(Quarterly)' AS DATASOURCE, - 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_XIEHE_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'EC(Monthly)' AS DATASOURCE, - 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_EC_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' - -UNION ALL - -SELECT - PACK_CODE, - MARKET, - CLASS, - KEY_COMPETITOR, - MARKET_RATIO, - STARTTIME, - ENDTIME, - VALUE_BRAND_RATIO, - VALUE_BRAND_RATIO_START, - VALUE_BRAND_RATIO_END, - UNIT_BRAND_RATIO, - UNIT_BRAND_START, - UNIT_BRAND_END, - COUNTINGUNIT_BRAND_RATIO, - COUNTINGUNIT_BRAND_START, - COUNTINGUNIT_BRAND_END, - PDOT_BRAND_RATIO, - PDOT_BRAND_START, - PDOT_BRAND_END, - 'THC(Quarterly)' AS DATASOURCE, - 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_THC_MARKET_PACK_MAPPING -WHERE UPPER(MARKET) NOT LIKE '%ALL%' - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market' AS MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'EC(Monthly)' AS DATASOURCE, - 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_EC_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market' AS MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'CHC(Quarterly)' AS DATASOURCE, - 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_CHC_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'Retail(Quarterly)' AS DATASOURCE, - 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_RETAIL_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'DTP(Quarterly)' AS DATASOURCE, - 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_DTP_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'THC(Quarterly)' AS DATASOURCE, - 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_THC_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'IQVIA-CHPA(Monthly)' AS DATASOURCE, - 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_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'XH Data(Quarterly)' AS DATASOURCE, - 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_XIEHE_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'AIA(Monthly)' AS DATASOURCE, - 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_AIA_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - -UNION ALL - -SELECT - PACK_CODE, - 'ALL Market'MARKET, - 'Others' AS CLASS, - 'OTHERS' AS KEY_COMPETITOR, - 1 AS MARKET_RATIO, - 200001 AS STARTTIME, - 299912 AS ENDTIME, - 1 AS VALUE_BRAND_RATIO, - 200001 AS VALUE_BRAND_RATIO_START, - 299912 AS VALUE_BRAND_RATIO_END, - 1 AS UNIT_BRAND_RATIO, - 200001 AS UNIT_BRAND_START, - 299912 AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - 1 AS PDOT_BRAND_RATIO, - 200001 AS PDOT_BRAND_START, - 299912 AS PDOT_BRAND_END, - 'IQVIA-COUNTY(Quarterly)' AS DATASOURCE, - 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_COUNTY_MARKET_PACK_MAPPING -GROUP BY - PACK_CODE - --- COMMAND ---------- - -update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING set class = 'Others' where lower(CLASS) = 'others' or CLASS IS null \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql b/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql deleted file mode 100644 index 2e5efcd..0000000 --- a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql +++ /dev/null @@ -1,1837 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_PACKINFO ( --- PACK_CODE STRING COMMENT '包装编码', --- PACK_DESC STRING COMMENT '包装描述', --- PACK_LCH STRING COMMENT '包装上市时间,示例"Y2024M05"', --- PROD_CODE STRING COMMENT '产品编码', --- PROD_DESC STRING COMMENT '产品描述', --- PROD_DESC_C STRING COMMENT '产品中文描述', --- CMPS_CODE STRING COMMENT '成分代码', --- CMPS_DESC STRING COMMENT '成分描述', --- CMPS_DESC_C STRING COMMENT '成分中文描述', --- VBP_BATCH STRING COMMENT '带量采购批次号', --- VBP_IMPLEMENTING_TIME STRING COMMENT '带量采购实施时间', --- STGH_DESC STRING COMMENT '储存方式描述', --- BIO_DESC STRING COMMENT '生物制药描述', --- ETH_OTC_DESC STRING COMMENT '处方/非处方药描述', --- NRDL_DESC STRING COMMENT '国家医保目录状态描述', --- NRDL_ENTRY_DATE STRING COMMENT '国家医保目录纳入日期', --- EDL_DESC STRING COMMENT '基本药物目录状态描述', --- TCM_DESC STRING COMMENT '中医药分类描述', --- PAED_DESC STRING COMMENT '儿童用药标志描述', --- GQCE_DESC STRING COMMENT '绿色/质量/认证/应急标志描述', --- MANU_CODE STRING COMMENT '生产企业编码', --- MANU_DESC STRING COMMENT '生产企业名称描述', --- MANU_DESC_C STRING COMMENT '生产企业名称中文描述', --- MNFL_CODE STRING COMMENT '跨国/本地企业标志编码', --- ATC1_CODE STRING COMMENT '解剖学治疗学化学分类1编码', --- ATC1_DESC STRING COMMENT '解剖学治疗学化学分类1描述', --- ATC1_DESC_C STRING COMMENT '解剖学治疗学化学分类1中文描述', --- ATC2_CODE STRING COMMENT '解剖学治疗学化学分类2编码', --- ATC2_DESC STRING COMMENT '解剖学治疗学化学分类2描述', --- ATC2_DESC_C STRING COMMENT '解剖学治疗学化学分类2中文描述', --- ATC3_CODE STRING COMMENT '解剖学治疗学化学分类3编码', --- ATC3_DESC STRING COMMENT '解剖学治疗学化学分类3描述', --- ATC3_DESC_C STRING COMMENT '解剖学治疗学化学分类3中文描述', --- ATC4_CODE STRING COMMENT '解剖学治疗学化学分类4编码', --- ATC4_DESC STRING COMMENT '解剖学治疗学化学分类4描述', --- ATC4_DESC_C STRING COMMENT '解剖学治疗学化学分类4中文描述', --- APP1_CODE STRING COMMENT '审批/申请分类(3个层级)', --- APP1_DESC STRING COMMENT '', --- APP1_DESC_C STRING COMMENT '', --- APP2_CODE STRING COMMENT '', --- APP2_DESC STRING COMMENT '', --- APP2_DESC_C STRING COMMENT '', --- APP3_CODE STRING COMMENT '', --- APP3_DESC STRING COMMENT '', --- APP3_DESC_C STRING COMMENT '', --- GENE_ORIG_DESC STRING COMMENT '原研/仿制/中药药物来源描述', --- VBP_DESC STRING COMMENT '带量采购状态(VBP-IN/VBP-OUT/Non VBP)描述', --- CORP_CODE STRING COMMENT '公司编码', --- GEN_RN INT COMMENT '原研/仿制排名(1-5)', --- CORP_DESC STRING COMMENT '公司名称描述', --- CORP_DESC_C STRING COMMENT '公司名称中文描述', --- PACK_RN INT COMMENT '包装排名(按销售量)', --- PROD_RN INT COMMENT '产品排名(按销售量)', --- CMPS_RN INT COMMENT '成分排名(按销售量)', --- DATA_SOURCE STRING COMMENT '数据来源渠道', --- ATC STRING COMMENT 'ATC分类代码', --- NEW_CODE STRING COMMENT '新编码', --- COMMON_NAME STRING COMMENT '通用名称', --- PRODUCT_NAME STRING COMMENT '产品名称', --- MANU_DES_XIEHE STRING COMMENT '协和渠道生产企业名称', --- PACK_DES_XIEHE STRING COMMENT '协和渠道包装描述', --- DRUG_DELIVERY_ROUTE STRING COMMENT '给药途径', --- NFC STRING COMMENT '国家处方集代码', --- CORP_TYPE STRING COMMENT '企业类型(本地/跨国)', --- LAUNCHTIME STRING COMMENT '产品上市时间', --- VBP_BRAND STRING COMMENT '品牌带量采购状态汇总', --- REPLENISH_FALG STRING COMMENT '后续补充标志', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_packinfo'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_packinfo'; - --- COMMAND ---------- - --- 数据源1 CHPA -CREATE OR REPLACE TEMPORARY VIEW VIEW_CHPA_PACK_INFO -AS -SELECT - PACK_CODE as PACK_CODE, - MAX(PACK_DESC) as PACK_DESC, - MAX(PACK_LCH) as PACK_LCH, - MAX(PROD_CODE) as PROD_CODE, - MAX(PROD_DESC) as PROD_DESC, - MAX(PROD_DESC_C) as PROD_DESC_C, - MAX(CMPS_CODE) as CMPS_CODE, - MAX(CMPS_DESC) as CMPS_DESC, - MAX(CMPS_DESC_C) as CMPS_DESC_C, - NULL as VBP_BATCH, - NULL as VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) as STGH_DESC, - MAX(BIO_DESC) as BIO_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, - MAX(MANU_CODE) as MANU_CODE, - MAX(MANU_DESC) as MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) as MNFL_CODE, - MAX(ATC1_CODE) as ATC1_CODE, - MAX(ATC1_DESC) as ATC1_DESC, - MAX(ATC1_DESC_C) as ATC1_DESC_C, - MAX(ATC2_CODE) as ATC2_CODE, - MAX(ATC2_DESC) as ATC2_DESC, - MAX(ATC2_DESC_C) as ATC2_DESC_C, - MAX(ATC3_CODE) as ATC3_CODE, - MAX(ATC3_DESC) as ATC3_DESC, - MAX(ATC3_DESC_C) as ATC3_DESC_C, - MAX(ATC4_CODE) as ATC4_CODE, - MAX(ATC4_DESC) as ATC4_DESC, - MAX(ATC4_DESC_C) as ATC4_DESC_C, - MAX(APP1_CODE) as APP1_CODE, - MAX(APP1_DESC) as APP1_DESC, - MAX(APP1_DESC_C) as APP1_DESC_C, - MAX(APP2_CODE) as APP2_CODE, - MAX(APP2_DESC) as APP2_DESC, - MAX(APP2_DESC_C) as APP2_DESC_C, - MAX(APP3_CODE) as APP3_CODE, - MAX(APP3_DESC) as APP3_DESC, - MAX(APP3_DESC_C) as APP3_DESC_C, - MAX(GENE_ORIG_DESC) as GENE_ORIG_DESC, - CASE - WHEN MAX(VBP_DESC_V) = 'VBP-IN' THEN 'VBP-IN' - WHEN MAX(VBP_DESC_V) LIKE '%VBP%' THEN 'VBP-OUT' - WHEN MAX(VBP_DESC_V) IS NOT NULL THEN 'Non VBP' - ELSE NULL END AS VBP_DESC, - MAX(CORP_CODE) as CORP_CODE, - 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, - -- 后面数据都还没有,暂时不搞 - NULL as CORP_DESC, - NULL as CORP_DESC_C, - NULL as PACK_RN, - NULL as PROD_RN, - NULL as CMPS_RN, - NULL as DATA_SOURCE, - NULL as ATC, - NULL 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 CORP_TYPE, - NULL as LAUNCHTIME, - NULL as VBP_BRAND -from DM.DM_TD_EXT_CHPA_PACK_PROPERTY -where NVL(PACK_CODE, '') <> '' -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源2 COUNTY -CREATE OR REPLACE TEMPORARY VIEW VIEW_COUNTY_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - CASE - WHEN MAX(VBP_DESC) = 'VBP-IN' THEN 'VBP-IN' - WHEN MAX(VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' - WHEN MAX(VBP_DESC) IS NOT NULL THEN 'Non VBP' - ELSE NULL END AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_COUNTY_PACK_PROPERTY b -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源3 THC -CREATE OR REPLACE TEMPORARY VIEW VIEW_THC_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_DESC, - MAX(ETH_OTC_DESC) AS ETH_OTC_DESC, - MAX(NRDL_DESC) AS NRDL_DESC, - NULL 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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - MAX(VBP_DESC) AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM DM.DM_TD_EXT_THC_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源4 CHC -CREATE OR REPLACE TEMPORARY VIEW VIEW_CHC_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_DESC, - MAX(ETH_OTC_DESC) AS ETH_OTC_DESC, - MAX(NRDL_DESC) AS NRDL_DESC, - NULL 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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - MAX(VBP_DESC) AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM DM.DM_TD_EXT_CHC_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源5 retail -CREATE OR REPLACE TEMPORARY VIEW VIEW_RETAIL_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - CASE - WHEN MAX(VBP_DESC) = 'VBP-IN' then 'VBP-IN' - WHEN MAX(VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' - WHEN MAX(VBP_DESC) IS NOT NULL THEN 'Non VBP' - ELSE NULL END AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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 GEN_RN, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_RETAIL_PACK_PROPERTY -GROUP BY PACK_CODE -UNION -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - CASE - WHEN MAX(VBP_DESC) = 'VBP-IN' then 'VBP-IN' - WHEN MAX(VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' - WHEN MAX(VBP_DESC) IS NOT NULL THEN 'Non VBP' - ELSE NULL END as VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源6 EC -CREATE OR REPLACE TEMPORARY VIEW VIEW_EC_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - CASE - WHEN MAX(VBP_DESC) = 'VBP-IN' then 'VBP-IN' - WHEN MAX(VBP_DESC) LIKE '%VBP%' THEN 'VBP-OUT' - WHEN MAX(VBP_DESC) IS NOT NULL THEN 'Non VBP' - ELSE NULL END AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_EC_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源7 AIA -CREATE OR REPLACE TEMPORARY VIEW VIEW_AIA_PACK_INFO -AS -SELECT - CASE - WHEN PACK_CODE like '%OTHERS%' - OR length(PACK_CODE) >= 12 - OR (not PACK_CODE REGEXP '^[0-9]') THEN PACK_CODE - ELSE right(concat('000000000000', PACK_CODE), 12) END AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - NULL AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_AIA_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 数据源8 XIEHE -CREATE OR REPLACE TEMPORARY VIEW VIEW_XIEHE_PACK_INFO -AS -SELECT - PACK_CODE AS PACK_CODE, - MAX(PACK_DESC) AS PACK_DESC, - MAX(PACK_LCH) AS PACK_LCH, - MAX(PROD_CODE) AS PROD_CODE, - MAX(PROD_DESC) AS PROD_DESC, - MAX(PROD_DESC_C) AS PROD_DESC_C, - MAX(CMPS_CODE) AS CMPS_CODE, - MAX(CMPS_DESC) AS CMPS_DESC, - MAX(CMPS_DESC_C) AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - MAX(STGH_DESC) AS STGH_DESC, - MAX(BIO_DESC) AS BIO_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, - MAX(MANU_CODE) AS MANU_CODE, - MAX(MANU_DESC) AS MANU_DESC, - MAX(MANU_DESC_C) as MANU_DESC_C, - MAX(MNFL_CODE) AS MNFL_CODE, - MAX(ATC1_CODE) AS ATC1_CODE, - MAX(ATC1_DESC) AS ATC1_DESC, - MAX(ATC1_DESC_C) AS ATC1_DESC_C, - MAX(ATC2_CODE) AS ATC2_CODE, - MAX(ATC2_DESC) AS ATC2_DESC, - MAX(ATC2_DESC_C) AS ATC2_DESC_C, - MAX(ATC3_CODE) AS ATC3_CODE, - MAX(ATC3_DESC) AS ATC3_DESC, - MAX(ATC3_DESC_C) AS ATC3_DESC_C, - MAX(ATC4_CODE) AS ATC4_CODE, - MAX(ATC4_DESC) AS ATC4_DESC, - MAX(ATC4_DESC_C) AS ATC4_DESC_C, - MAX(APP1_CODE) AS APP1_CODE, - MAX(APP1_DESC) AS APP1_DESC, - MAX(APP1_DESC_C) AS APP1_DESC_C, - MAX(APP2_CODE) AS APP2_CODE, - MAX(APP2_DESC) AS APP2_DESC, - MAX(APP2_DESC_C) AS APP2_DESC_C, - MAX(APP3_CODE) AS APP3_CODE, - MAX(APP3_DESC) AS APP3_DESC, - MAX(APP3_DESC_C) AS APP3_DESC_C, - MAX(GENE_ORIG_DESC) AS GENE_ORIG_DESC, - NULL AS VBP_DESC, - MAX(CORP_CODE) AS CORP_CODE, - 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, - MAX(CORP_DESC) AS CORP_DESC, - MAX(CORP_DESC_C) AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND -FROM dm.DM_TD_EXT_XIEHE_PACK_PROPERTY -GROUP BY PACK_CODE - --- COMMAND ---------- - --- 获取所有的PACK_CODE,以CHPA为主,其他数据源不存在与CHPA一样的,再取。 -CREATE OR REPLACE TEMPORARY VIEW VIEW_PACK_INFO_TEMP1 -AS -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_CHPA_PACK_INFO AS T1 -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_COUNTY_PACK_INFO AS T2 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_THC_PACK_INFO AS T3 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_CHC_PACK_INFO AS T4 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_RETAIL_PACK_INFO AS T5 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_EC_PACK_INFO AS T6 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_AIA_PACK_INFO AS T7 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM VIEW_XIEHE_PACK_INFO AS T8 -WHERE PACK_CODE not in (select PACK_CODE from VIEW_CHPA_PACK_INFO) - --- COMMAND ---------- - --- 4. 如果PACK_CODE在2~8多个表都有,任选一个(row_number()取第一个) -CREATE OR REPLACE TEMPORARY VIEW VIEW_PACK_INFO_TEMP2 -AS -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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 -FROM ( - SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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, - row_number() over (partition by PACK_CODE order by PACK_DESC) as rn - FROM VIEW_PACK_INFO_TEMP1 -) t -where rn = 1 - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW VIEW_PACK_INFO_TEMP3 -AS -SELECT - T1.PACK_CODE, - T1.PACK_DESC, - T1.PACK_LCH, - T1.PROD_CODE, - T1.PROD_DESC, - T1.PROD_DESC_C, - T1.CMPS_CODE, - T1.CMPS_DESC, - CASE - WHEN UPPER(T1.CMPS_DESC) = 'TRADITIONAL CHINESE MEDICINE' THEN '传统中药' - ELSE T1.CMPS_DESC_C END AS CMPS_DESC_C, - NVL(T2.VBP_BATCH, '') VBP_BATCH, - NVL(T2.VBP_IMPLEMENTING_TIME, '') VBP_IMPLEMENTING_TIME, - T1.STGH_DESC, - T1.BIO_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.MANU_CODE, - T1.MANU_DESC, - T1.MANU_DESC_C, - T1.MNFL_CODE, - T1.ATC1_CODE, - T1.ATC1_DESC, - T1.ATC1_DESC_C, - T1.ATC2_CODE, - T1.ATC2_DESC, - T1.ATC2_DESC_C, - T1.ATC3_CODE, - T1.ATC3_DESC, - T1.ATC3_DESC_C, - T1.ATC4_CODE, - T1.ATC4_DESC, - T1.ATC4_DESC_C, - T1.APP1_CODE, - T1.APP1_DESC, - T1.APP1_DESC_C, - T1.APP2_CODE, - T1.APP2_DESC, - T1.APP2_DESC_C, - T1.APP3_CODE, - T1.APP3_DESC, - T1.APP3_DESC_C, - T1.GENE_ORIG_DESC, - NVL(T1.VBP_DESC, 'Non VBP') AS VBP_DESC, - T1.CORP_CODE, - T1.GEN_RN, - T1.CORP_DESC, - T1.CORP_DESC_C, - T1.PACK_RN, - T1.PROD_RN, - T1.CMPS_RN, - T1.DATA_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.CORP_TYPE, - T1.LAUNCHTIME, - T1.VBP_BRAND -FROM VIEW_PACK_INFO_TEMP2 AS T1 -LEFT JOIN dwd.dwd_gnd_ims_vbp_information AS T2 ON T1.PACK_CODE = T2.PACK_CODE - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW FINAL -AS -SELECT - PACK_CODE AS PACK_CODE, - NULL AS PACK_DESC, - NULL AS PACK_LCH, - NULL AS PROD_CODE, - NULL AS PROD_DESC, - NULL AS PROD_DESC_C, - NULL AS CMPS_CODE, - NULL AS CMPS_DESC, - NULL AS CMPS_DESC_C, - NULL AS VBP_BATCH, - NULL AS VBP_IMPLEMENTING_TIME, - NULL AS STGH_DESC, - NULL AS BIO_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 MANU_CODE, - NULL AS MANU_DESC, - NULL AS MANU_DESC_C, - NULL AS MNFL_CODE, - NULL AS ATC1_CODE, - NULL AS ATC1_DESC, - NULL AS ATC1_DESC_C, - NULL AS ATC2_CODE, - NULL AS ATC2_DESC, - NULL AS ATC2_DESC_C, - NULL AS ATC3_CODE, - NULL AS ATC3_DESC, - NULL AS ATC3_DESC_C, - NULL AS ATC4_CODE, - NULL AS ATC4_DESC, - NULL AS ATC4_DESC_C, - NULL AS APP1_CODE, - NULL AS APP1_DESC, - NULL AS APP1_DESC_C, - NULL AS APP2_CODE, - NULL AS APP2_DESC, - NULL AS APP2_DESC_C, - NULL AS APP3_CODE, - NULL AS APP3_DESC, - NULL AS APP3_DESC_C, - NULL AS GENE_ORIG_DESC, - NULL AS VBP_DESC, - NULL AS CORP_CODE, - NULL AS GEN_RN, - NULL AS CORP_DESC, - NULL AS CORP_DESC_C, - NULL AS PACK_RN, - NULL AS PROD_RN, - NULL AS CMPS_RN, - NULL AS DATA_SOURCE, - NULL AS ATC, - NULL 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 CORP_TYPE, - NULL AS LAUNCHTIME, - NULL AS VBP_BRAND, - 1 AS REPLENISH_FALG -FROM -( - SELECT - PACK_CODE - FROM DM.DM_TF_EXT_UNIONALL_SALES - GROUP BY - PACK_CODE -) AS T1 -WHERE PACK_CODE NOT IN (SELECT PACK_CODE FROM VIEW_PACK_INFO_TEMP3) -UNION ALL -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - PROD_DESC, - PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CORP_DESC, - CORP_DESC_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, - 0 AS REPLENISH_FALG -FROM VIEW_PACK_INFO_TEMP3 - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_UNIONALL_PACKINFO -SELECT - PACK_CODE, - PACK_DESC, - PACK_LCH, - PROD_CODE, - CASE - WHEN PROD_DESC IS NULL THEN 'OTHERS' - ELSE PROD_DESC END AS PROD_DESC, - CASE - WHEN PROD_DESC_C IS NULL THEN 'OTHERS' - ELSE PROD_DESC_C END AS PROD_DESC_C, - CMPS_CODE, - CMPS_DESC, - CMPS_DESC_C, - VBP_BATCH, - VBP_IMPLEMENTING_TIME, - STGH_DESC, - BIO_DESC, - ETH_OTC_DESC, - NRDL_DESC, - NRDL_ENTRY_DATE, - EDL_DESC, - TCM_DESC, - PAED_DESC, - GQCE_DESC, - MANU_CODE, - MANU_DESC, - MANU_DESC_C, - MNFL_CODE, - ATC1_CODE, - ATC1_DESC, - ATC1_DESC_C, - ATC2_CODE, - ATC2_DESC, - ATC2_DESC_C, - ATC3_CODE, - ATC3_DESC, - ATC3_DESC_C, - ATC4_CODE, - ATC4_DESC, - ATC4_DESC_C, - APP1_CODE, - APP1_DESC, - APP1_DESC_C, - APP2_CODE, - APP2_DESC, - APP2_DESC_C, - APP3_CODE, - APP3_DESC, - APP3_DESC_C, - GENE_ORIG_DESC, - VBP_DESC, - CORP_CODE, - GEN_RN, - CASE - WHEN CORP_DESC IS NULL THEN 'OTHERS' - ELSE CORP_DESC END AS CORP_DESC, - CASE - WHEN CORP_DESC_C IS NULL THEN 'OTHERS' - ELSE CORP_DESC_C END AS CORP_DESC_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, - REPLENISH_FALG, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM FINAL \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TD_EXT_UNIONALL_PACKINFO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql deleted file mode 100644 index 1bfcb94..0000000 --- a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql +++ /dev/null @@ -1,363 +0,0 @@ --- Databricks notebook source --- DBTITLE 1,分区优化 --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_MARKET_SALES ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_COD STRING, --- CORP_COD STRING, --- AUDIT_COD STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- DATA_SOURCE STRING, --- PACK_FLAG STRING, --- PROD_FLAG STRING, --- DTP_FLAG STRING, --- CMPS_FLAG STRING, --- NEW_CODE STRING COMMENT '主数据关联CODE', --- INST_CODE STRING COMMENT '内部机构编码', --- AIA_HP_FLAG STRING, --- DEPT_NAME STRING COMMENT '科室名称', --- H_LEVEL STRING, --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_TYPE STRING COMMENT '处方来源', --- PRESCRIPTION DECIMAL(35,10), --- PRESCRIPTION_LY DECIMAL(35,10), --- VA STRING, --- UT STRING, --- CU STRING, --- PT STRING, --- SALES_UNIT_CAL DECIMAL(35,6), --- SALES_UNIT_CAL_LY DECIMAL(35,6), --- SALES_VALUE_CAL DECIMAL(35,6), --- SALES_VALUE_CAL_LY DECIMAL(35,6), --- CONUTING_UNIT DECIMAL(35,6), --- CONUTING_UNIT_LY DECIMAL(35,6), --- PDOT DECIMAL(35,6), --- PDOT_LY DECIMAL(35,6), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- PARTITIONED BY (DATA_SOURCE) --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; - - --- COMMAND ---------- - --- DBTITLE 1,性能优化 --- -- 按最常用的过滤和 JOIN 字段做 Z-Order 聚簇 --- OPTIMIZE DM.DM_TF_EXT_UNIONALL_SALES --- ZORDER BY (DATA_SOURCE, PACK_CODE, YYYYMM); - --- -- 收集统计信息,帮助优化器选择更好的执行计划 --- ANALYZE TABLE DM.DM_TF_EXT_UNIONALL_SALES COMPUTE STATISTICS FOR ALL COLUMNS; --- ANALYZE TABLE DM.dm_td_ext_unionall_market_pack_mapping COMPUTE STATISTICS FOR ALL COLUMNS; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE - DM.DM_TF_EXT_UNIONALL_MARKET_SALES -WITH - t1_filtered AS ( - SELECT - * - FROM - DM.DM_TF_EXT_UNIONALL_SALES - WHERE - DATA_SOURCE IN ( - 'IQVIA-CHPA(Monthly)', - 'AIA(Monthly)', - 'CHC(Quarterly)', - 'IQVIA-COUNTY(Quarterly)', - 'THC(Quarterly)', - 'Retail(Quarterly)', - 'DTP(Quarterly)', - 'EC(Monthly)', - 'XH Data(Quarterly)' - ) -- 谓词下推,最先过滤 - ), - mapping_cleaned AS ( - SELECT - * - FROM - ( - SELECT - PACK_CODE, - DATASOURCE, - MARKET, - KEY_COMPETITOR, - CLASS, - MARKET_RATIO, - Value_brand_Ratio, - Unit_brand_Ratio, - CountingUnit_brand_Ratio, - PDOT_brand_Ratio, - GREATEST ( - starttime, - Value_brand_Ratio_start, - Unit_brand_start, - CountingUnit_brand_start, - PDOT_brand_start - ) AS eff_start, - LEAST ( - endtime, - Value_brand_Ratio_end, - Unit_brand_end, - CountingUnit_brand_end, - PDOT_brand_end - ) AS eff_end - FROM - DM.dm_td_ext_unionall_market_pack_mapping - ) tmp - WHERE - eff_start <= eff_end -- 在外层子查询中过滤 - ), - joined AS ( - SELECT - /*+ BROADCAST(t2, t3) */ - t1.*, - -- 当年 ratio - t2.MARKET, - t2.KEY_COMPETITOR, - t2.CLASS, - t2.MARKET_RATIO AS cy_market_ratio, - t2.Value_brand_Ratio AS cy_value_ratio, - t2.Unit_brand_Ratio AS cy_unit_ratio, - t2.CountingUnit_brand_Ratio AS cy_cu_ratio, - t2.PDOT_brand_Ratio AS cy_pdot_ratio, - -- 去年 ratio - t3.MARKET_RATIO AS ly_market_ratio, - t3.Value_brand_Ratio AS ly_value_ratio, - t3.Unit_brand_Ratio AS ly_unit_ratio, - t3.CountingUnit_brand_Ratio AS ly_cu_ratio, - t3.PDOT_brand_Ratio AS ly_pdot_ratio - FROM - t1_filtered t1 - LEFT JOIN mapping_cleaned t2 ON t1.PACK_CODE = t2.PACK_CODE - AND t1.DATA_SOURCE = t2.DATASOURCE - AND t1.YYYYMM >= t2.eff_start - AND t1.YYYYMM <= t2.eff_end - LEFT JOIN mapping_cleaned t3 ON t1.PACK_CODE = t3.PACK_CODE - AND t1.DATA_SOURCE = t3.DATASOURCE - AND (t1.YYYYMM - 100) >= t3.eff_start - AND (t1.YYYYMM - 100) <= t3.eff_end - AND t2.MARKET = t3.MARKET -- 保持原逻辑 - ) -SELECT - NVL(MARKET, 'ALL Market') AS MARKET, - NVL(KEY_COMPETITOR, 'OTHERS') AS KEY_COMPETITOR, - CASE - WHEN trim(lower(CLASS)) = 'others' THEN 'OTHERS' - WHEN CLASS IS NULL THEN 'OTHERS' - ELSE CLASS - END AS CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - NULL AS AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - -- 预计算公用因子,避免重复计算 - NVL(NVL(cy_market_ratio, 1) * cy_value_ratio, 1) AS VA, - NVL(NVL(cy_market_ratio, 1) * cy_unit_ratio, 1) AS UT, - NVL(NVL(cy_market_ratio, 1) * cy_cu_ratio, 1) AS CU, - NVL(NVL(cy_market_ratio, 1) * cy_pdot_ratio, 1) AS PT, - CAST( - SALES_UNIT_CAL * NVL(cy_unit_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL, - CAST( - SALES_UNIT_CAL_LY * NVL(ly_unit_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL_LY, - CAST( - SALES_VALUE_CAL * NVL(cy_value_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL, - CAST( - SALES_VALUE_CAL_LY * NVL(ly_value_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL_LY, - CAST( - CONUTING_UNIT * NVL(cy_cu_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT, - CAST( - CONUTING_UNIT_LY * NVL(ly_cu_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT_LY, - CAST( - CONUTING_UNIT * NVL(cy_pdot_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT, - CAST( - CONUTING_UNIT_LY * NVL(ly_pdot_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - joined; - --- COMMAND ---------- - --- DBTITLE 1,maket_sales_cht -INSERT OVERWRITE TABLE - DM.DM_TF_EXT_THC_MARKET_SALES_CHT -WITH - t1_filtered AS ( - SELECT - * - FROM - DM.DM_TF_EXT_THC_SALES - WHERE DATA_SOURCE = 'THC(Quarterly)' - and AUDIT_CODE <> 'CHT' - -- 谓词下推,最先过滤 - ), - mapping_cleaned AS ( - SELECT - * - FROM - ( - SELECT - PACK_CODE, - 'THC(Quarterly)' as DATASOURCE, - MARKET, - KEY_COMPETITOR, - CLASS, - MARKET_RATIO, - Value_brand_Ratio, - Unit_brand_Ratio, - CountingUnit_brand_Ratio, - PDOT_brand_Ratio, - GREATEST ( - starttime, - Value_brand_Ratio_start, - Unit_brand_start, - CountingUnit_brand_start, - PDOT_brand_start - ) AS eff_start, - LEAST ( - endtime, - Value_brand_Ratio_end, - Unit_brand_end, - CountingUnit_brand_end, - PDOT_brand_end - ) AS eff_end - FROM - DM.dm_td_ext_THC_market_pack_mapping - ) tmp - WHERE - eff_start <= eff_end -- 在外层子查询中过滤 - ), - joined AS ( - SELECT - /*+ BROADCAST(t2, t3) */ - t1.*, - -- 当年 ratio - t2.MARKET, - t2.KEY_COMPETITOR, - t2.CLASS, - t2.MARKET_RATIO AS cy_market_ratio, - t2.Value_brand_Ratio AS cy_value_ratio, - t2.Unit_brand_Ratio AS cy_unit_ratio, - t2.CountingUnit_brand_Ratio AS cy_cu_ratio, - t2.PDOT_brand_Ratio AS cy_pdot_ratio, - -- 去年 ratio - t3.MARKET_RATIO AS ly_market_ratio, - t3.Value_brand_Ratio AS ly_value_ratio, - t3.Unit_brand_Ratio AS ly_unit_ratio, - t3.CountingUnit_brand_Ratio AS ly_cu_ratio, - t3.PDOT_brand_Ratio AS ly_pdot_ratio - FROM - t1_filtered t1 - LEFT JOIN mapping_cleaned t2 ON t1.PACK_CODE = t2.PACK_CODE - AND t1.DATA_SOURCE = t2.DATASOURCE - AND t1.YYYYMM >= t2.eff_start - AND t1.YYYYMM <= t2.eff_end - LEFT JOIN mapping_cleaned t3 ON t1.PACK_CODE = t3.PACK_CODE - AND t1.DATA_SOURCE = t3.DATASOURCE - AND (t1.YYYYMM - 100) >= t3.eff_start - AND (t1.YYYYMM - 100) <= t3.eff_end - AND t2.MARKET = t3.MARKET -- 保持原逻辑 - ) -SELECT - NVL(MARKET, 'ALL Market') AS MARKET, - NVL(KEY_COMPETITOR, 'OTHERS') AS KEY_COMPETITOR, - CASE - WHEN trim(lower(CLASS)) = 'others' THEN 'OTHERS' - WHEN CLASS IS NULL THEN 'OTHERS' - ELSE CLASS - END AS CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - NULL AS AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - -- 预计算公用因子,避免重复计算 - NVL(NVL(cy_market_ratio, 1) * cy_value_ratio, 1) AS VA, - NVL(NVL(cy_market_ratio, 1) * cy_unit_ratio, 1) AS UT, - NVL(NVL(cy_market_ratio, 1) * cy_cu_ratio, 1) AS CU, - NVL(NVL(cy_market_ratio, 1) * cy_pdot_ratio, 1) AS PT, - CAST( - SALES_UNIT_CAL * NVL(cy_unit_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL, - CAST( - SALES_UNIT_CAL_LY * NVL(ly_unit_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_UNIT_CAL_LY, - CAST( - SALES_VALUE_CAL * NVL(cy_value_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL, - CAST( - SALES_VALUE_CAL_LY * NVL(ly_value_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS SALES_VALUE_CAL_LY, - CAST( - CONUTING_UNIT * NVL(cy_cu_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT, - CAST( - CONUTING_UNIT_LY * NVL(ly_cu_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS CONUTING_UNIT_LY, - CAST( - CONUTING_UNIT * NVL(cy_pdot_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT, - CAST( - CONUTING_UNIT_LY * NVL(ly_pdot_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6) - ) AS PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT -FROM - joined; \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql deleted file mode 100644 index 73b3689..0000000 --- a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql +++ /dev/null @@ -1,1012 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_MARKET_SALES ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_COD STRING, --- CORP_COD STRING, --- AUDIT_COD STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- DATA_SOURCE STRING, --- PACK_FLAG STRING, --- PROD_FLAG STRING, --- DTP_FLAG STRING, --- CMPS_FLAG STRING, --- NEW_CODE STRING COMMENT '主数据关联CODE', --- INST_CODE STRING COMMENT '内部机构编码', --- AIA_HP_FLAG STRING, --- DEPT_NAME STRING COMMENT '科室名称', --- H_LEVEL STRING, --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_TYPE STRING COMMENT '处方来源', --- PRESCRIPTION DECIMAL(35,10), --- PRESCRIPTION_LY DECIMAL(35,10), --- VA STRING, --- UT STRING, --- CU STRING, --- PT STRING, --- SALES_UNIT_CAL DECIMAL(35,6), --- SALES_UNIT_CAL_LY DECIMAL(35,6), --- SALES_VALUE_CAL DECIMAL(35,6), --- SALES_VALUE_CAL_LY DECIMAL(35,6), --- CONUTING_UNIT DECIMAL(35,6), --- CONUTING_UNIT_LY DECIMAL(35,6), --- PDOT DECIMAL(35,6), --- PDOT_LY DECIMAL(35,6), --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; - --- COMMAND ---------- - --- DBTITLE 1,CHPA -CREATE OR REPLACE TEMPORARY VIEW CHPA -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' - --- COMMAND ---------- - --- DBTITLE 1,AIA -CREATE OR REPLACE TEMPORARY VIEW AIA -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'AIA(Monthly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,CHC -CREATE OR REPLACE TEMPORARY VIEW CHC -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'CHC(Quarterly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,COUNTY -CREATE OR REPLACE TEMPORARY VIEW COUNTY -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,THC -CREATE OR REPLACE TEMPORARY VIEW THC -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'THC(Quarterly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,RETAIL -CREATE OR REPLACE TEMPORARY VIEW RETAIL -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'Retail(Quarterly)' and t1.DTP_FLAG<>1 --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,RETAIL_DTP -CREATE OR REPLACE TEMPORARY VIEW RETAIL_DTP -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'DTP(Quarterly)' and t1.DTP_FLAG=1 --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,EC -CREATE OR REPLACE TEMPORARY VIEW EC -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'EC(Monthly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - --- DBTITLE 1,XIEHE -CREATE OR REPLACE TEMPORARY VIEW XIEHE -AS -SELECT -nvl(t2.market,'ALL Market') MARKET -,nvl(t2.KEY_COMPETITOR,'OTHERS') as KEY_COMPETITOR -,nvl(t2.CLASS,'Others') as CLASS -,t1.YYYYMM -,t1.PACK_CODE -,t1.CORP_CODE -,t1.AUDIT_CODE -,t1.PLATFORM_TYPE -,t1.STORE_NAME -,t1.STORE_TYPE -,t1.REGION_TYPE -,t1.DATA_SOURCE -,t1.PACK_FLAG -,t1.PROD_FLAG -,t1.DTP_FLAG -,t1.CMPS_FLAG -,t1.NEW_CODE -,t1.INST_CODE -,NULL AS AIA_HP_FLAG -,t1.DEPT_NAME -,t1.H_LEVEL -,t1.REIMBURSE -,t1.REIMBURSE_TYPE -,PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE -,t1.PRESCRIPTION -,t1.PRESCRIPTION_LY -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Value_brand_Ratio,1) as VA -,nvl(nvl(t2.MARKET_RATIO,1)*t2.Unit_brand_Ratio,1) AS UT -,nvl(nvl(t2.MARKET_RATIO,1)*t2.CountingUnit_brand_Ratio,1) AS CU -,nvl(nvl(t2.MARKET_RATIO,1)*t2.PDOT_brand_Ratio,1) AS PT -,cast(t1.SALES_UNIT_CAL * nvl(t2.Unit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL -,cast(t1.SALES_UNIT_CAL_LY * nvl(t3.Unit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_UNIT_CAL_LY -,cast(t1.SALES_VALUE_CAL * nvl(t2.Value_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL -,cast(t1.SALES_VALUE_CAL_LY * nvl(t3.Value_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS SALES_VALUE_CAL_LY -,cast(t1.CONUTING_UNIT * nvl(t2.CountingUnit_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.CountingUnit_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS CONUTING_UNIT_LY -,cast(t1.CONUTING_UNIT * nvl(t2.PDOT_brand_Ratio,1) *nvl(t2.MARKET_RATIO,1) as decimal(35,6)) AS PDOT -,cast(t1.CONUTING_UNIT_LY * nvl(t3.PDOT_brand_Ratio,1) *nvl(t3.MARKET_RATIO,1) as decimal(35,6)) AS PDOT_LY -FROM DM.DM_TF_EXT_UNIONALL_SALES t1 -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t2 -on t1.PACK_CODE = t2.PACK_CODE and t1.DATA_SOURCE = t2.DATASOURCE -and t1.YYYYMM >=t2.starttime and t1.YYYYMM <=t2.endtime -and t1.YYYYMM >= t2.Value_brand_Ratio_start and t1.YYYYMM <=t2.Value_brand_Ratio_end -and t1.YYYYMM >= t2.Unit_brand_start and t1.YYYYMM <=t2.Unit_brand_end -and t1.YYYYMM >= t2.CountingUnit_brand_start and t1.YYYYMM <=t2.CountingUnit_brand_end -and t1.YYYYMM >= t2.PDOT_brand_start and t1.YYYYMM <=t2.PDOT_brand_end -LEFT JOIN DM.dm_td_ext_unionall_market_pack_mapping t3 -on t1.PACK_CODE = t3.PACK_CODE and t1.DATA_SOURCE = t3.DATASOURCE -and (t1.YYYYMM-100) >=t3.starttime and (t1.YYYYMM-100) <=t3.endtime -and (t1.YYYYMM-100) >= t3.Value_brand_Ratio_start and (t1.YYYYMM-100) <=t3.Value_brand_Ratio_end -and (t1.YYYYMM-100) >= t3.Unit_brand_start and (t1.YYYYMM-100) <=t3.Unit_brand_end -and (t1.YYYYMM-100) >= t3.CountingUnit_brand_start and (t1.YYYYMM-100) <=t3.CountingUnit_brand_end -and (t1.YYYYMM-100) >= t3.PDOT_brand_start and (t1.YYYYMM-100) <=t3.PDOT_brand_end -and t2.market = t3.MARKET -where t1.DATA_SOURCE = 'XH Data(Quarterly)' --- and YYYYMM >=202501 - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_UNIONALL_MARKET_SALES -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - CHPA -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - AIA -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - CHC -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - COUNTY -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - THC -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - RETAIL -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - RETAIL_DTP -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - EC -UNION ALL -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - NEW_CODE, - INST_CODE, - AIA_HP_FLAG, - DEPT_NAME, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - PRESCRIPTION, - PRESCRIPTION_LY, - VA, - UT, - CU, - PT, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PDOT, - PDOT_LY, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - XIEHE \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_MARKET_SALES_v1.0.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql deleted file mode 100644 index 7e02e1e..0000000 --- a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql +++ /dev/null @@ -1,349 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_UNIONALL_SALES -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_AIA_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_CHC_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_CHPA_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_COUNTY_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_EC_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_RETAIL_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_RETAIL_DTP_SALES -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_THC_SALES -WHERE - AUDIT_CODE = 'CHT'--只放全国数据 -UNION ALL -SELECT - YYYYMM, - PACK_CODE, - CORP_CODE, - AUDIT_CODE, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - DATA_SOURCE, - INST_CODE, - CMPS_FLAG, - DEPT_NAME, - PRESCRIPTION, - PRESCRIPTION_LY, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - 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_TF_EXT_XIEHE_SALES -; \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql deleted file mode 100644 index 34a0e11..0000000 --- a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql +++ /dev/null @@ -1,517 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING --- ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_COD STRING, --- CORP_COD STRING, --- AUDIT_COD STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- DATA_SOURCE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- CMPS_FLAG INT, --- NEW_CODE STRING COMMENT '主数据关联CODE', --- INST_CODE STRING COMMENT '内部机构编码', --- AIA_HP_FLAG INT, --- DEPT_NAME STRING COMMENT '科室名称', --- H_LEVEL INT, --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_TYPE STRING COMMENT '处方来源', --- VA decimal(35,10), --- UT decimal(35,10), --- CU decimal(35,10), --- PT decimal(35,10), --- SALES_UNIT_CAL decimal(35,10), --- SALES_UNIT_CAL_LY decimal(35,10), --- SALES_VALUE_CAL decimal(35,10), --- SALES_VALUE_CAL_LY decimal(35,10), --- CONUTING_UNIT decimal(35,10), --- CONUTING_UNIT_LY decimal(35,10), --- PDOT decimal(35,10), --- PDOT_LY decimal(35,10), --- PRESCRIPTION INT, --- PRESCRIPTION_LY INT, --- AIA_REMOVE INT, --- MERGEDATA_FLAG STRING, --- MERGEDATA_FLAG_MKT STRING, --- MERGEDATA_FLAG_CHPA_DTP INT, --- MERGEDATA_FLAG_DTP_NOROC INT, --- MERGED_DATA_DTP_OTHERS INT, --- EGFR_FLAG INT --- -- , --- -- ETL_INSERT_DT TIMESTAMP, --- -- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping'; - --- COMMAND ---------- - --- CREATE OR REPLACE TEMPORARY VIEW ALL_EGFR_PACK --- AS --- SELECT DISTINCT --- PACK_CODE --- FROM --- DM.dm_td_ext_unionall_market_pack_mapping --- WHERE --- DATASOURCE = 'DTP(Quarterly)' --- AND MARKET = 'EGFR TKI Market' - --- COMMAND ---------- - --- CREATE OR REPLACE TEMPORARY VIEW OTHERBRAND --- AS --- SELECT --- PACK_CODE --- FROM --- ALL_EGFR_PACK --- WHERE --- PACK_CODE NOT IN ( --- '000097342002', --- '000097017002', --- '000066722002', --- '000097414002' --- ) --- GROUP BY --- PACK_CODE - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW ALL_EXTERNAL_SALES AS ---DTP -SELECT - T0.MARKET, - T0.KEY_COMPETITOR, - T0.CLASS, - T0.YYYYMM, - T0.PACK_COD, - T0.CORP_COD, - T0.AUDIT_COD, - T0.PLATFORM_TYPE, - T0.STORE_NAME, - T0.STORE_TYPE, - T0.REGION_TYPE, - T0.DATA_SOURCE, - T0.PACK_FLAG, - T0.PROD_FLAG, - T0.DTP_FLAG, - T0.CMPS_FLAG, - T0.NEW_CODE, - T0.INST_CODE, - T0.AIA_HP_FLAG, - T0.DEPT_NAME, - T0.H_LEVEL, - T0.REIMBURSE, - T0.REIMBURSE_TYPE, - T0.PRESCRIPTION_TYPE, - T0.VA, - T0.UT, - T0.CU, - T0.PT, - T0.SALES_UNIT_CAL, - T0.SALES_UNIT_CAL_LY, - T0.SALES_VALUE_CAL, - T0.SALES_VALUE_CAL_LY, - T0.CONUTING_UNIT, - T0.CONUTING_UNIT_LY, - T0.PDOT, - T0.PDOT_LY, - T0.PRESCRIPTION, - T0.PRESCRIPTION_LY, - 1 MERGED_DATA_DTP_OTHERS -FROM - DM.DM_TF_EXT_UNIONALL_MARKET_SALES AS T0 - -- LEFT JOIN OTHERBRAND T1 - -- ON T1.PACK_CODE = T0.PACK_COD -WHERE - T0.DATA_SOURCE = 'DTP(Quarterly)' --- UNION ALL --- SELECT --- MARKET, --- KEY_COMPETITOR, --- CLASS, --- YYYYMM, --- PACK_COD, --- CORP_COD, --- AUDIT_COD, --- PLATFORM_TYPE, --- STORE_NAME, --- STORE_TYPE, --- REGION_TYPE, --- DATA_SOURCE, --- PACK_FLAG, --- PROD_FLAG, --- DTP_FLAG, --- CMPS_FLAG, --- NEW_CODE, --- INST_CODE, --- '' AS AIA_HP_FLAG, --- DEPT_NAME, --- H_LEVEL, --- REIMBURSE, --- REIMBURSE_TYPE, --- PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE, --- '' AS VA, --- '' AS UT, --- '' AS CU, --- '' AS PT, --- SALES_UNIT_CAL, --- SALES_UNIT_CAL_LY, --- SALES_VALUE_CAL, --- SALES_VALUE_CAL_LY, --- CONUTING_UNIT, --- CONUTING_UNIT_LY, --- PDOT, --- PDOT_LY, --- PRESCRIPTION, --- PRESCRIPTION_LY, --- -- AREA --- 3 AS MERGED_DATA_DTP_OTHERS --- FROM --- DM.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth ---Retail -UNION ALL -SELECT - T0.MARKET, - T0.KEY_COMPETITOR, - T0.CLASS, - T0.YYYYMM, - T0.PACK_COD, - T0.CORP_COD, - T0.AUDIT_COD, - T0.PLATFORM_TYPE, - T0.STORE_NAME, - T0.STORE_TYPE, - T0.REGION_TYPE, - T0.DATA_SOURCE, - T0.PACK_FLAG, - T0.PROD_FLAG, - T0.DTP_FLAG, - T0.CMPS_FLAG, - T0.NEW_CODE, - T0.INST_CODE, - T0.AIA_HP_FLAG, - T0.DEPT_NAME, - T0.H_LEVEL, - T0.REIMBURSE, - T0.REIMBURSE_TYPE, - T0.PRESCRIPTION_TYPE, - T0.VA, - T0.UT, - T0.CU, - T0.PT, - T0.SALES_UNIT_CAL, - T0.SALES_UNIT_CAL_LY, - T0.SALES_VALUE_CAL, - T0.SALES_VALUE_CAL_LY, - T0.CONUTING_UNIT, - T0.CONUTING_UNIT_LY, - T0.PDOT, - T0.PDOT_LY, - T0.PRESCRIPTION, - T0.PRESCRIPTION_LY, - 1 MERGED_DATA_DTP_OTHERS -FROM - DM.DM_TF_EXT_UNIONALL_MARKET_SALES AS T0 - LEFT JOIN ( - SELECT - OTHERS_MONTH - FROM - tmp.tmp_dm_td_ext_retail_niad_month - ) T1 --Retail取非niad先来数据部分 -WHERE - T0.DATA_SOURCE = 'Retail(Quarterly)' - AND T0.YYYYMM <= T1.OTHERS_MONTH ---EC -UNION ALL -SELECT - T0.MARKET, - T0.KEY_COMPETITOR, - T0.CLASS, - T0.YYYYMM, - T0.PACK_COD, - T0.CORP_COD, - T0.AUDIT_COD, - T0.PLATFORM_TYPE, - T0.STORE_NAME, - T0.STORE_TYPE, - T0.REGION_TYPE, - T0.DATA_SOURCE, - T0.PACK_FLAG, - T0.PROD_FLAG, - T0.DTP_FLAG, - T0.CMPS_FLAG, - T0.NEW_CODE, - T0.INST_CODE, - T0.AIA_HP_FLAG, - T0.DEPT_NAME, - T0.H_LEVEL, - T0.REIMBURSE, - T0.REIMBURSE_TYPE, - T0.PRESCRIPTION_TYPE, - T0.VA, - T0.UT, - T0.CU, - T0.PT, - T0.SALES_UNIT_CAL, - T0.SALES_UNIT_CAL_LY, - T0.SALES_VALUE_CAL, - T0.SALES_VALUE_CAL_LY, - T0.CONUTING_UNIT, - T0.CONUTING_UNIT_LY, - T0.PDOT, - T0.PDOT_LY, - T0.PRESCRIPTION, - T0.PRESCRIPTION_LY, - 1 MERGED_DATA_DTP_OTHERS -FROM - DM.DM_TF_EXT_UNIONALL_MARKET_SALES AS T0 - LEFT JOIN ( - SELECT - OTHERS_MONTH - FROM - tmp.tmp_dm_td_ext_ec_niad_month - ) T1 --EC取非niad先来数据部分 -WHERE - T0.DATA_SOURCE = 'EC(Monthly)' - AND T0.YYYYMM <= T1.others_month ---OTHERS DATA SOURCE -UNION ALL -SELECT - T0.MARKET, - T0.KEY_COMPETITOR, - T0.CLASS, - T0.YYYYMM, - T0.PACK_COD, - T0.CORP_COD, - T0.AUDIT_COD, - T0.PLATFORM_TYPE, - T0.STORE_NAME, - T0.STORE_TYPE, - T0.REGION_TYPE, - T0.DATA_SOURCE, - T0.PACK_FLAG, - T0.PROD_FLAG, - T0.DTP_FLAG, - T0.CMPS_FLAG, - T0.NEW_CODE, - T0.INST_CODE, - T0.AIA_HP_FLAG, - T0.DEPT_NAME, - T0.H_LEVEL, - T0.REIMBURSE, - T0.REIMBURSE_TYPE, - T0.PRESCRIPTION_TYPE, - T0.VA, - T0.UT, - T0.CU, - T0.PT, - T0.SALES_UNIT_CAL, - T0.SALES_UNIT_CAL_LY, - T0.SALES_VALUE_CAL, - T0.SALES_VALUE_CAL_LY, - T0.CONUTING_UNIT, - T0.CONUTING_UNIT_LY, - T0.PDOT, - T0.PDOT_LY, - T0.PRESCRIPTION, - T0.PRESCRIPTION_LY, - 1 MERGED_DATA_DTP_OTHERS -FROM - DM.DM_TF_EXT_UNIONALL_MARKET_SALES AS T0 -WHERE - T0.DATA_SOURCE NOT IN ('Retail(Quarterly)', 'EC(Monthly)', 'DTP(Quarterly)') - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW DM_TF_EXT_UNIONALL_SALES_MAPPING -AS -SELECT - A.MARKET, - A.KEY_COMPETITOR, - A.CLASS, - A.YYYYMM, - A.PACK_COD AS PACK_COD, - A.CORP_COD AS CORP_COD, - A.AUDIT_COD AS AUDIT_COD, - A.PLATFORM_TYPE, - A.STORE_NAME, - A.STORE_TYPE, - A.REGION_TYPE, - A.DATA_SOURCE, - A.PACK_FLAG, - A.PROD_FLAG, - A.DTP_FLAG, - INT(A.CMPS_FLAG) AS CMPS_FLAG, - A.NEW_CODE, - A.INST_CODE, - B.AIA_HP_FLAG, - A.DEPT_NAME, - ROUND(A.H_LEVEL, 0) AS H_LEVEL, - A.REIMBURSE, - A.REIMBURSE_TYPE, - A.PRESCRIPTION_TYPE, - A.VA, - A.UT, - A.CU, - A.PT, - CASE - WHEN A.SALES_UNIT_CAL = 0 THEN NULL - ELSE CAST(A.SALES_UNIT_CAL AS DECIMAL(35, 10)) - END AS SALES_UNIT_CAL, - CASE - WHEN A.SALES_UNIT_CAL_LY = 0 THEN NULL - ELSE CAST(A.SALES_UNIT_CAL_LY AS DECIMAL(35, 10)) - END AS SALES_UNIT_CAL_LY, - CASE - WHEN A.SALES_VALUE_CAL = 0 THEN NULL - ELSE CAST(A.SALES_VALUE_CAL AS DECIMAL(35, 10)) - END AS SALES_VALUE_CAL, - CASE - WHEN A.SALES_VALUE_CAL_LY = 0 THEN NULL - ELSE CAST(A.SALES_VALUE_CAL_LY AS DECIMAL(35, 10)) - END AS SALES_VALUE_CAL_LY, - CASE - WHEN A.CONUTING_UNIT = 0 THEN NULL - ELSE CAST(A.CONUTING_UNIT AS DECIMAL(35, 10)) - END AS CONUTING_UNIT, - CASE - WHEN A.CONUTING_UNIT_LY = 0 THEN NULL - ELSE CAST(A.CONUTING_UNIT_LY AS DECIMAL(35, 10)) - END AS CONUTING_UNIT_LY, - CASE - WHEN A.PDOT = 0 THEN NULL - ELSE CAST(A.PDOT AS DECIMAL(35, 10)) - END AS PDOT, - CASE - WHEN A.PDOT_LY = 0 THEN NULL - ELSE CAST(A.PDOT_LY AS DECIMAL(35, 10)) - END AS PDOT_LY, - CASE - WHEN A.PRESCRIPTION = 0 THEN NULL - ELSE CAST(A.PRESCRIPTION AS DECIMAL(35, 10)) - END AS PRESCRIPTION, - CASE - WHEN A.PRESCRIPTION_LY = 0 THEN NULL - ELSE CAST(A.PRESCRIPTION_LY AS DECIMAL(35, 10)) - END PRESCRIPTION_LY - --AIA remove ins which is wrong -, - IF (D.ins_code IS NULL, 1, 0) AS AIA_REMOVE - --Merged Data part -, - null as MERGEDATA_FLAG -, - CASE - when A.DATA_SOURCE='IQVIA-CHPA(Monthly)' and A.AUDIT_COD = 'ROC' THEN 'CHPA' - WHEN A.DTP_FLAG = '1' THEN 'DTP' - WHEN F.SOURCENAME IS NULL THEN 'Normal' - ELSE F.SOURCENAME - END AS MERGEDATA_FLAG_MKT --mark ins and pack by markettable -, - CASE - WHEN A.DTP_FLAG = '1' THEN 1 - WHEN A.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' THEN 1 - ELSE 0 - END AS MERGEDATA_FLAG_CHPA_DTP --mark chap and dtp data -, - CASE - WHEN A.DTP_FLAG = '1' - AND A.AUDIT_COD = 'ROC' THEN 0 - ELSE 1 - END AS MERGEDATA_FLAG_DTP_NOROC --mark dtp roc with 0 -FROM - ALL_EXTERNAL_SALES AS A - LEFT JOIN DM.DM_AIA_HP_FLAG AS B ON A.INST_CODE = B.INST_CODE - AND A.DATA_SOURCE = B.DATA_SOURCE - LEFT JOIN dm.dm_ext_aia_data_remove_flag D ON A.market = D.market - AND A.audit_cod = D.ins_code - LEFT JOIN dws.dws_td_ext_merge_data_config F ON A.DATA_SOURCE = F.data_source - AND A.AUDIT_COD = F.audit_cod - AND A.MARKET = F.market - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING --- INSERT INTO TABLE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING -SELECT - MARKET, - KEY_COMPETITOR, - CLASS, - YYYYMM, - PACK_COD, - CORP_COD, - AUDIT_COD, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - DATA_SOURCE, - CAST(PACK_FLAG AS INT) AS PACK_FLAG, - CAST(PROD_FLAG AS INT) AS PROD_FLAG, - CAST(DTP_FLAG AS INT) AS DTP_FLAG, - CAST(CMPS_FLAG AS INT) AS CMPS_FLAG, - NEW_CODE, - INST_CODE, - CAST(AIA_HP_FLAG AS INT) AS AIA_HP_FLAG, - DEPT_NAME, - CAST(H_LEVEL AS INT) AS H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_TYPE, - CAST(VA AS decimal(35,10)) AS VA, - CAST(UT AS decimal(35,10) ) AS UT, - CAST(CU AS decimal(35,10) ) AS CU, - CAST(PT AS decimal(35,10) ) AS PT, - CAST(SALES_UNIT_CAL AS decimal(35,10) ) AS SALES_UNIT_CAL, - CAST(SALES_UNIT_CAL_LY AS decimal(35,10) ) AS SALES_UNIT_CAL_LY, - CAST(SALES_VALUE_CAL AS decimal(35,10) ) AS SALES_VALUE_CAL, - CAST(SALES_VALUE_CAL_LY AS decimal(35,10) ) AS SALES_VALUE_CAL_LY, - CAST(CONUTING_UNIT AS decimal(35,10) ) AS CONUTING_UNIT, - CAST(CONUTING_UNIT_LY AS decimal(35,10) ) AS CONUTING_UNIT_LY, - CAST(PDOT AS decimal(35,10) ) AS PDOT, - CAST(PDOT_LY AS decimal(35,10) ) AS PDOT_LY, - CAST(PRESCRIPTION AS INT) AS PRESCRIPTION, - CAST(PRESCRIPTION_LY AS INT) AS PRESCRIPTION_LY, - CAST(AIA_REMOVE AS INT) AS AIA_REMOVE, - null MERGEDATA_FLAG, - MERGEDATA_FLAG_MKT MERGEDATA_FLAG_MKT, - CAST(MERGEDATA_FLAG_CHPA_DTP AS INT) AS MERGEDATA_FLAG_CHPA_DTP, - CAST(MERGEDATA_FLAG_DTP_NOROC AS INT) AS MERGEDATA_FLAG_DTP_NOROC, - null AS MERGED_DATA_DTP_OTHERS, - null as EGFR_FLAG - -- , - -- FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_INSERT_DT, - -- FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(),'UTC+8') AS ETL_UPDATE_DT -FROM - DM_TF_EXT_UNIONALL_SALES_MAPPING - --- WHERE DATA_SOURCE ='AIA(Monthly)' - --- COMMAND ---------- - --- delete from dm.DM_TF_EXT_UNIONALL_SALES_MAPPING where DATA_SOURCE = 'AIA(Monthly)' - --- COMMAND ---------- - --- update DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING --- set class = 'OTHERS', MARKET_RATIO = 1,STARTTIME='200001',ENDTIME='299912',VALUE_BRAND_RATIO=1.0,VALUE_BRAND_RATIO_START='200001',VALUE_BRAND_RATIO_END='299912',UNIT_BRAND_RATIO=1.0, --- UNIT_BRAND_START='200001', --- UNIT_BRAND_END='299912', --- COUNTINGUNIT_BRAND_RATIO=1.0, --- COUNTINGUNIT_BRAND_START='200001', --- COUNTINGUNIT_BRAND_END='299912', --- PDOT_BRAND_RATIO=1.0, --- PDOT_BRAND_START='200001', --- PDOT_BRAND_END='299912' --- where CLASS is null \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql deleted file mode 100644 index e779c9d..0000000 --- a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql +++ /dev/null @@ -1,112 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD ( --- MARKET STRING, --- KEY_COMPETITOR STRING, --- CLASS STRING, --- YYYYMM STRING, --- PACK_COD STRING, --- AUDIT_COD STRING, --- DATA_SOURCE STRING, --- VA decimal(35,10), --- UT decimal(35,10), --- CU decimal(35,10), --- PT decimal(35,10), --- SALES_UNIT_CAL decimal(35,10), --- SALES_UNIT_CAL_LY decimal(35,10), --- SALES_VALUE_CAL decimal(35,10), --- SALES_VALUE_CAL_LY decimal(35,10), --- CONUTING_UNIT decimal(35,10), --- CONUTING_UNIT_LY decimal(35,10), --- PDOT decimal(35,10), --- PDOT_LY decimal(35,10), --- PRESCRIPTION INT, --- PRESCRIPTION_LY INT, --- PACK_SOURCE STRING, --- AUDIT_SOURCE STRING, --- MARKET_SOURCE STRING, --- CLASS_SOURCE STRING, --- DATE_KEY DATE, --- PLATFORM STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping_niad'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping_niad'; - --- COMMAND ---------- - --- DBTITLE 1,NIAD单独页面 --- **************************************************** --- 功能说明:提取NIAD(非胰岛素类抗糖尿病药物)市场的销售数据并创建映射表 --- 数据源:EC(Monthly)月度电商数据 + Retail(Quarterly)季度零售数据 --- 创建日期:2026-04-02 --- 修改日期:2026-04-02 --- **************************************************** - -INSERT OVERWRITE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD - -WITH - --- CTE 1:获取NIAD市场的产品编码集合 --- 注:直接下推双重过滤条件,减少扫描数据量 -niad_pack_cods AS ( - SELECT DISTINCT PACK_COD - FROM DM.DM_TF_EXT_UNIONALL_MARKET_SALES - WHERE MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' - AND DATA_SOURCE IN ('EC(Monthly)', 'Retail(Quarterly)') -) - --- 主查询:提取所有关联市场的完整销售数据 --- BROADCAST 小表 niad_markets,避免大表 shuffle -SELECT /*+ BROADCAST(m) */ - - -- 业务维度 - t.MARKET, - t.KEY_COMPETITOR, - t.CLASS, - t.YYYYMM, - - -- 产品标识 - t.PACK_COD, - t.AUDIT_COD, - - -- 数据来源 - t.DATA_SOURCE, - - -- 调整系数 - t.VA, -- Value Adjustment - t.UT, -- Unit Adjustment - t.CU, -- Counting Unit Adjustment - t.PT, -- PDOT Adjustment - - -- 当期销售指标 - t.SALES_UNIT_CAL, - t.SALES_VALUE_CAL, - t.CONUTING_UNIT, -- 注:字段名原始拼写保持不变 - t.PDOT, - - -- 去年同期指标 - t.SALES_UNIT_CAL_LY, - t.SALES_VALUE_CAL_LY, - t.CONUTING_UNIT_LY, - t.PDOT_LY, - - -- 处方指标 - t.PRESCRIPTION, - t.PRESCRIPTION_LY, - - -- 衍生组合键 - CONCAT(t.PACK_COD, t.DATA_SOURCE) AS PACK_SOURCE, - CONCAT(t.AUDIT_COD, t.DATA_SOURCE) AS AUDIT_SOURCE, - CONCAT(t.MARKET, t.DATA_SOURCE) AS MARKET_SOURCE, - CONCAT(t.MARKET,t.CLASS, t.DATA_SOURCE) AS CLASS_SOURCE, - - -- 时间维度:优化为 TO_DATE 直接解析 yyyyMM 格式,避免字符串拼接 - TO_DATE(t.YYYYMM, 'yyyyMM') AS DATE_KEY, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE -FROM DM.DM_TF_EXT_UNIONALL_MARKET_SALES t -LEFT SEMI JOIN niad_pack_cods m ON t.PACK_COD = m.PACK_COD -WHERE t.DATA_SOURCE IN ('EC(Monthly)', 'Retail(Quarterly)') \ No newline at end of file diff --git a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql:Zone.Identifier b/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/UNIONALL/DM_TF_EXT_UNIONALL_SALES_MAPPING_NIAD.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py b/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py deleted file mode 100644 index a4f5e11..0000000 --- a/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py +++ /dev/null @@ -1,194 +0,0 @@ -# Databricks notebook source -# MAGIC %md -# MAGIC ### 从blob读取csv文件作为xiehe的事实表 - -# COMMAND ---------- - -# MAGIC %run ../../../Common/config - -# COMMAND ---------- - -from datetime import datetime, timedelta -import pandas as pd - -# COMMAND ---------- - -if ENVIRONMENT == PRD_ENVIRONMENT_VALUE: - factsales_file_path_template = "abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" -elif ENVIRONMENT == TEST_ENVIRONMENT_VALUE: - factsales_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" - -# COMMAND ---------- - -# 计算时间得到当天的路径 -current_date = datetime.utcnow() + timedelta(hours=8) -date_path = current_date.strftime("%Y/%m/%d/") -base_path = factsales_file_path_template + date_path - -# COMMAND ---------- - -# 路径是否存在 -def path_exists(path): - try: - dbutils.fs.ls(path) - return True - except Exception as e: - if "java.io.FileNotFoundException" in str(e): - return False - else: - print(f"检查路径 {path} 时出错: {e}") - raise - -# COMMAND ---------- - -# 列出blob上的文件列表 -def list_file_name(path): - first_path_list = [i.path for i in dbutils.fs.ls(path)] - second_path_list = [dbutils.fs.ls(i)[0] for i in first_path_list ] - return second_path_list - -# COMMAND ---------- - -# 从blob下载文件到local -def download_file(file_path, local_path): - # dbutils.fs.cp(file_path, local_path.replace("/dbfs", "")) - dbutils.fs.cp(file_path, local_path) - print(f"已下载 {file_path} 到 {local_path}") - return local_path - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 获取路径下的文件名称 -# MAGIC - 并挑出符合条件的文件路径 - -# COMMAND ---------- - -try: - if path_exists(base_path): - all_file_list = list_file_name(base_path) - # 生成df来筛选内容 - files_df = pd.DataFrame([{ - 'path':f.path, - 'modificationtime': f.modificationTime, - 'name': f.name - } for f in all_file_list]) - print(f"{base_path} 路径存在") - else: - print(f"{base_path} 路径不存在") -except Exception as e: - print(e) - -# COMMAND ---------- - -try: - files_df = files_df.sort_values('modificationtime', ascending=False).drop_duplicates('name').sort_index() - files_df = files_df[files_df['name'].str.match(r'^Dept_Fact.*\.csv$')] - files_df -except Exception as e: - print(e) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 读取文件内容 - -# COMMAND ---------- - -import os - -# COMMAND ---------- - -# 下载数据到local -try: - if files_df['path'].tolist(): - # 如果列表不为空 - df_all = [] - for file in files_df['path'].tolist(): - local_path = download_file(file, f"/Volumes/{NGBI_CATALOG}/tmp/volume_tmp/tmp/{os.path.basename(file)}") - file_df = (spark.read.option("header", "true").option("quote", '"').option("escape", '"').option("multiLine", "true").option("mode", "PERMISSIVE").csv(local_path)) - print(f'已读取{local_path}') - df_all.append(file_df) - # df_combine = pd.concat(df_all) - df_ifexists = True - else: - print('没有符合条件的文件') - df_ifexists= False -except Exception as e: - print(e) - -# COMMAND ---------- - -try: - if df_ifexists: # 如果不为空 - spark.sql(f"TRUNCATE table tmp.tmp_xiehe_raw_data") - num = 1 - for i in df_all: - df_renamed = i.withColumnRenamed('区域','area') \ - .withColumnRenamed('城市','city') \ - .withColumnRenamed('年&季度','yyyyqq') \ - .withColumnRenamed('月','yyyymm') \ - .withColumnRenamed('医保类型','reimburse') \ - .withColumnRenamed('处方来源','prescription_source') \ - .withColumnRenamed('处方科室_lv1','prescription_dept_lv1') \ - .withColumnRenamed('处方科室_lv2','prescription_dept_lv2') \ - .withColumnRenamed('处方科室_lv3','prescription_dept_lv3') \ - .withColumnRenamed('ATC','ATC') \ - .withColumnRenamed('PHCD标准码','new_code') \ - .withColumnRenamed('药品通用名','common_name') \ - .withColumnRenamed('药品商品名','product_name') \ - .withColumnRenamed('规格','pack_des') \ - .withColumnRenamed('PackSize','PackSize') \ - .withColumnRenamed('PackageType','PackageType') \ - .withColumnRenamed('给药途径','nfc') \ - .withColumnRenamed('药品厂家','manu_des') \ - .withColumnRenamed('药品剂型','drug_delivery_route') \ - .withColumnRenamed('处方张数','prescription') \ - .withColumnRenamed('取药数量','sales_vol') \ - .withColumnRenamed('处方金额','sales_value') - # i.columns = ['area','city','yyyyqq','yyyymm','reimburse','prescription_source','prescription_dept_lv1','prescription_dept_lv2','prescription_dept_lv3','ATC','new_code','common_name','product_name','pack_des','PackSize','PackageType','nfc','manu_des','drug_delivery_route','prescription','sales_vol','sales_value'] #'h_level', - # sdf = spark.createDataFrame(i) - df_renamed.createOrReplaceTempView('fact_sales') - spark.sql(f"INSERT into tmp.tmp_xiehe_raw_data SELECT area,city,yyyyqq,yyyymm,reimburse,prescription_source,prescription_dept_lv1,prescription_dept_lv2,prescription_dept_lv3,ATC,new_code,common_name,product_name,pack_des,PackSize,PackageType,nfc,manu_des,drug_delivery_route,prescription,sales_vol,sales_value FROM fact_sales") - print(f'第{num}个') - num +=1 -except Exception as e: - print(e) - -# COMMAND ---------- - -# MAGIC %md -# MAGIC ### 将读取到的dataframe写入表中 - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC -- 全量覆盖 -# MAGIC insert overwrite dwd.dwd_gnd_ext_xiehe_raw_data -# MAGIC select -# MAGIC area , -# MAGIC city , -# MAGIC yyyyqq , -# MAGIC yyyymm , -# MAGIC null h_level , -# MAGIC reimburse , -# MAGIC prescription_source , -# MAGIC prescription_dept_lv1 , -# MAGIC prescription_dept_lv2 , -# MAGIC prescription_dept_lv3 , -# MAGIC ATC , -# MAGIC new_code , -# MAGIC common_name , -# MAGIC product_name , -# MAGIC pack_des , -# MAGIC cast ( PackSize as BIGINT) PackSize , -# MAGIC PackageType , -# MAGIC nfc , -# MAGIC manu_des , -# MAGIC drug_delivery_route, -# MAGIC cast ( prescription as BIGINT) prescription , -# MAGIC cast ( sales_vol as DECIMAL(38,8)) sales_vol, -# MAGIC cast ( sales_value as DECIMAL(38,8)) sales_value , -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from tmp.tmp_xiehe_raw_data \ No newline at end of file diff --git a/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py:Zone.Identifier b/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/01 xiehe_blob_to_dwd.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql b/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql deleted file mode 100644 index c09f954..0000000 --- a/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql +++ /dev/null @@ -1,232 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ### xiehe的 pack property - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE dm.dm_xiehe_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, --- countingunit STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_xiehe_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_xiehe_pack_property'; - --- COMMAND ---------- - -create or replace temporary view dwd_pack_property -as - select - t1.iqvia_pack_code , - t1.PACK_DES, - t1.STGH_DES, - t1.PACK_LCH, - null as Family_Code, - null as Family_Name, - t1.iqvia_prod_code , - 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 , - null as 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 , - null as BrandType, - null as IS_AZ, - null as AZ_MAIN, - null as AZ_Related, - 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 , - countingunit - from dwd.dwd_gnd_dept_pack_property t1 - --- COMMAND ---------- - --- create or replace table dm.dm_xiehe_pack_property --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_xiehe_pack_property' --- as -insert overwrite table dm.dm_xiehe_pack_property -WITH dedup_l AS ( - SELECT *, - ROW_NUMBER() OVER (PARTITION BY iqvia_pack_code ORDER BY iqvia_pack_code) AS rn - FROM dwd_pack_property - 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.countingunit, - 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 \ No newline at end of file diff --git a/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql:Zone.Identifier b/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/02 dm_xiehe_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql b/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql deleted file mode 100644 index 64aaaac..0000000 --- a/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql +++ /dev/null @@ -1,76 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ### dws层xiehegeo - --- COMMAND ---------- - - -insert overwrite dws.dws_ext_xiehe_geo -with geo_xiehe as (-- dwd层表 - select fact_province,fact_city,geo_city,nvl(geo_province,'') geo_province - from dwd.dwd_gnd_xiehe_geo - group by fact_province,fact_city,geo_city,nvl(geo_province,'') -) - --- 特殊区域:'黑吉辽','云贵川青','湖北','甘肃','其他地区' -select - -- a.*, - concat('xiehe_',nvl(b.AUDIT_COD,concat(a.geo_province,a.fact_province,a.fact_city))) as AUDIT_COD - ,nvl(b.CITY,a.geo_city) CITY - ,nvl(b.CITY_C,a.geo_city) CITY_C - ,'City' CITY_TYPE - ,'4' AZ_CITY_TIER - ,a.geo_province PROVINCE - ,a.geo_province PROVINCE_C - ,concat('xiehe_',nvl(b.PROVINCE_CODE,a.geo_province)) PROVINCE_CODE - ,a.fact_city as CITY_MAP - ,a.fact_province as PROVINCE_MAP - ,case when a.geo_province='' then a.fact_province else a.geo_province end as REGION_CENTER - ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_INSERT_DT - ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT -from geo_xiehe a -left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C -where fact_province in ('黑吉辽','云贵川青','湖北','甘肃','其他地区') - -union all --- 非特殊区域 -select - -- a.* , - concat('xiehe_',nvl(b.AUDIT_COD,concat(a.geo_province,a.fact_province,a.fact_city))) as AUDIT_COD - ,nvl(b.CITY,a.geo_city) CITY - ,nvl(b.CITY_C,a.geo_city) CITY_C - ,'City' CITY_TYPE - ,nvl(b.AZ_CITY_TIER,'4') AZ_CITY_TIER - ,a.geo_province PROVINCE - ,a.geo_province PROVINCE_C - ,concat('xiehe_',nvl(b.PROVINCE_CODE,a.geo_province)) PROVINCE_CODE - ,a.fact_city as CITY_MAP - ,a.fact_province as PROVINCE_MAP - ,a.geo_province as REGION_CENTER - ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_INSERT_DT - ,from_utc_timestamp(current_timestamp(),'UTC+8') ETL_UPDATE_DT -from geo_xiehe a -left join dm.dm_ims_td_geo b on a.geo_city = b.CITY_C -where fact_province not in ('黑吉辽','云贵川青','湖北','甘肃','其他地区') - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### dm - --- COMMAND ---------- - -insert overwrite dm.dm_ext_xiehe_geo -select - AUDIT_COD - ,CITY - ,CITY_C - ,CITY_TYPE - ,AZ_CITY_TIER - ,PROVINCE - ,PROVINCE_C - ,PROVINCE_CODE - ,CITY_MAP - ,PROVINCE_MAP - ,REGION_CENTER -from dws.dws_ext_xiehe_geo \ No newline at end of file diff --git a/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql:Zone.Identifier b/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/03 dm_ext_xiehe_geo.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql b/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql deleted file mode 100644 index fb9e0a8..0000000 --- a/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql +++ /dev/null @@ -1,219 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ### dws - --- COMMAND ---------- - -/* -修改时间:20250707 -修改人:chenwu -内容:xiehe数据源变更,逻辑调整 -*/ -insert overwrite dws.dws_ext_xiehe_raw_data -with ---法伯的code 和 iqviacode 的对应关系 -pack_cod_2_iqvia_pack_code( - select - pack_cod - ,max(IQVIA_PACK_CODE) IQVIA_PACK_CODE - from dwd.dwd_gnd_dept_pack_property - group by 1 -) -,geo_mapping( - select - province_map fact_province - ,city_map fact_city - ,max(city_c) city - ,max(province_c) province - ,max(audit_cod) audit_cod - from dm.dm_ext_xiehe_geo - group by 1,2 -) -,pack_countingunit( - select - pack_cod - ,max(countingunit) countingunit - from dm.dm_xiehe_pack_property - group by 1 -) - -,underlying_ly_data( - select - c.audit_cod - ,b.iqvia_pack_code - ,c.city - ,c.province - ,a.yyyymm - ,a.h_level - ,a.reimburse - ,a.prescription_source - ,a.prescription_dept_lv1 - ,a.prescription_dept_lv2 - ,a.prescription_dept_lv3 - ,a.new_code - ,a.atc - ,a.common_name - ,a.product_name - ,a.manu_des - ,a.pack_des - ,a.drug_delivery_route - ,a.nfc - ,a.PackSize - ,a.PackageType - ,a.prescription - ,a.sales_vol*nvl(d.countingunit,0) as sales_vol - -- ,a.price - ,a.sales_value - ,0 as prescription_ly - ,0 as sales_vol_ly - -- ,0 as price_ly - ,0 as sales_value_ly - from dwd.dwd_gnd_ext_xiehe_raw_data a - left join pack_cod_2_iqvia_pack_code b - on upper(a.new_code) = upper(b.pack_cod) - left join geo_mapping c - on a.area = c.fact_province - and a.city = c.fact_city - left join pack_countingunit d - on b.iqvia_pack_code = d.pack_cod - union all - select - c.audit_cod - ,b.iqvia_pack_code - ,c.city - ,c.province - ,(a.yyyymm + 100) yyyymm - ,a.h_level - ,a.reimburse - ,a.prescription_source - ,a.prescription_dept_lv1 - ,a.prescription_dept_lv2 - ,a.prescription_dept_lv3 - ,a.new_code - ,a.atc - ,a.common_name - ,a.product_name - ,a.manu_des - ,a.pack_des - ,a.drug_delivery_route - ,a.nfc - ,a.PackSize - ,a.PackageType - ,0 as prescription - ,0 as sales_vol - -- ,0 as price - ,0 as sales_value - ,a.prescription as prescription_ly - ,a.sales_vol*nvl(d.countingunit,0) as sales_vol_ly - -- ,a.price as price_ly - ,a.sales_value as sales_value_ly - from dwd.dwd_gnd_ext_xiehe_raw_data a - left join pack_cod_2_iqvia_pack_code b - on upper(a.new_code) = upper(b.pack_cod) - left join geo_mapping c - on a.area = c.fact_province - and a.city = c.fact_city - left join pack_countingunit d - on b.iqvia_pack_code = d.pack_cod - where (a.yyyymm + 100) <= (select max(yyyymm) from dwd.dwd_gnd_ext_xiehe_raw_data) -) - - select - yyyymm - ,iqvia_pack_code - ,AUDIT_COD - ,city - ,province - ,replace(h_level,'.0','') h_level - ,reimburse - ,null as reimburse_type - ,prescription_source - ,prescription_dept_lv1 - ,prescription_dept_lv2 - ,prescription_dept_lv3 - ,prescription_dept_lv3 dept_name - ,new_code - ,atc - ,common_name - ,product_name - ,manu_des - ,pack_des - ,drug_delivery_route - ,nfc - ,PackSize - ,PackageType - ,sum(prescription) prescription - ,SUM(sales_vol) counting_unit - ,null as price - ,SUM(sales_value) sales_value - ,sum(prescription_ly) prescription_ly - ,SUM(sales_vol_ly) counting_unit_ly - ,null as price_ly - ,SUM(sales_value_ly) sales_value_ly - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt - from underlying_ly_data - group by - yyyymm - ,iqvia_pack_code - ,AUDIT_COD - ,city - ,province - ,h_level - ,reimburse - -- ,null as reimburse_type - ,prescription_source - ,prescription_dept_lv1 - ,prescription_dept_lv2 - ,prescription_dept_lv3 - ,prescription_dept_lv3 - ,new_code - ,atc - ,common_name - ,product_name - ,manu_des - ,pack_des - ,drug_delivery_route - ,nfc - ,PackSize - ,PackageType - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### dm - --- COMMAND ---------- - -insert overwrite dm.dm_ext_xiehe_sales -select - yyyymm - ,iqvia_pack_code - ,AUDIT_COD - ,city - ,province - ,h_level - ,reimburse - ,reimburse_type - ,prescription_source - ,prescription_dept_lv1 - ,prescription_dept_lv2 - ,prescription_dept_lv3 - ,dept_name - ,new_code - ,atc - ,common_name - ,product_name - ,manu_des - ,pack_des - ,drug_delivery_route - ,nfc - ,prescription - ,counting_unit - ,price - ,sales_value - ,prescription_ly - ,counting_unit_ly - ,price_ly - ,sales_value_ly -from dws.dws_ext_xiehe_raw_data \ No newline at end of file diff --git a/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql:Zone.Identifier b/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/04 dm_ext_xiehe_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql b/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql deleted file mode 100644 index b2354db..0000000 --- a/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql +++ /dev/null @@ -1,8 +0,0 @@ --- Databricks notebook source -insert overwrite table dm.dm_td_xiehe_core_dept -select distinct -MarketName as MARKET, -Dept_NAME as DEPT_NAME, -Defined_Dept as CORE_DEPT, -'XH Data(Quarterly)' as DATA_SOURCE -from dwd.dwd_gnd_xiehe_core_dept \ No newline at end of file diff --git a/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql:Zone.Identifier b/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/05 dm_td_xiehe_core_dept.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql b/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql deleted file mode 100644 index 1a4d51e..0000000 --- a/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql +++ /dev/null @@ -1,170 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_XIEHE_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_xiehe_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_xiehe_sales'; - --- COMMAND ---------- - -CREATE OR REPLACE TEMPORARY VIEW TF_XIEHE -AS - SELECT - A.YYYYMM, - A.iqvia_pack_code AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'XH Data(Quarterly)' DATA_SOURCE, - ------------------------------------- - 0 SALES_UNIT_CAL, - 0 SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) SALES_VALUE_CAL_LY, - SUM(A.counting_unit) CONUTING_UNIT, - SUM(A.counting_unit_ly) CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - NVL(A.dept_name, '') dept_name, - NVL(A.new_code, '') new_code, - NVL(A.province, '') area, - NVL(A.h_level, '') h_level, - NVL(A.reimburse, '') reimburse, - NVL(A.reimburse_type, '') reimburse_type, - NVL(A.prescription_source, '') prescription_source, - ------------------------------------- - '' as CORP_CODE --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_ext_xiehe_sales A - WHERE - A.YYYYMM >= '202001' - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.dept_name, - A.new_code, - A.province, - A.h_level, - A.reimburse, - A.reimburse_type, - A.prescription_source - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_XIEHE_SALES ( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) - SELECT - YYYYMM, - NVL(NULLIF(PACK_CODE, ''), CONCAT('PACK_CODE_', DATA_SOURCE)) AS PACK_CODE, - NVL(NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, - FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT - FROM - TF_XIEHE; \ No newline at end of file diff --git a/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql:Zone.Identifier b/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/06 DM_TF_EXT_XIEHE_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql b/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql deleted file mode 100644 index 44f423d..0000000 --- a/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_PACK_PROPERTY --- ( --- -- -- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- -- MARKET STRING, --- -- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- -- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- -- CLASS STRING, --- -- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_XIEHE_PACK_PROPERTY -SELECT - -- MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - CMPS_DES_C AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - MANU_DES_C AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - -- MARKET, - -- KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - -- AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - -- CLASS, - -- NULL AS MARKET_RATIO, - COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_XIEHE_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/07 DM_TD_EXT_XIEHE_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql b/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql deleted file mode 100644 index b11ccfb..0000000 --- a/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql +++ /dev/null @@ -1,326 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_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_xiehe_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market'; - --- COMMAND ---------- - --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_KEYCOMPETITOR ( --- KEY_COMPETITOR STRING, --- MARKET STRING, --- PACK_CODE STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market_keycompetitor'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market_keycompetitor'; - --- COMMAND ---------- - --- CREATE or REPLACE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_CLASS ( --- MARKET STRING, --- PACK_CODE STRING, --- CLASS STRING) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market_class'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market_class'; - --- COMMAND ---------- - --- 使用 EXCEPT(集合差操作)简化逻辑 -INSERT OVERWRITE TABLE DM.DM_TD_EXT_XIEHE_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_XIEHE_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_XIEHE_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_xiehe_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_xiehe_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 ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_xiehe_PACK2MARKET_CLASS -SELECT - /*+ BROADCAST(T2) */ - DISTINCT - T1.MARKET, - T1.PACK_CODE, - COALESCE( T2.CLASS, 'OTHERS') AS CLASS -FROM DM.DM_TD_EXT_xiehe_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) \ No newline at end of file diff --git a/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/08 DM_TD_EXT_XIEHE_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql b/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql deleted file mode 100644 index d690b32..0000000 --- a/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_xiehe_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_XIEHE_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_XIEHE_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/09 DM_TD_EXT_XIEHE_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql b/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql deleted file mode 100644 index b700136..0000000 --- a/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_XIEHE_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/10 DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql b/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql deleted file mode 100644 index da53454..0000000 --- a/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,71 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING - SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T4.CLASS, - T5.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_XIEHE_PACK2MARKET T1 - LEFT JOIN DM.DM_TD_EXT_XIEHE_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET - AND T1.PACK_CODE = T2.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET - AND T1.PACK_CODE = T3.PACK_CODE - LEFT JOIN DM.DM_TD_EXT_XIEHE_PACK2MARKET_CLASS T4 - ON T1.PACK_CODE = T4.PACK_CODE - AND T1.MARKET = T4.MARKET - LEFT JOIN DM.DM_TD_EXT_XIEHE_PACK2MARKET_KEYCOMPETITOR T5 - ON T1.PACK_CODE = T5.PACK_CODE - AND T1.MARKET = T5.MARKET - WHERE - UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/11 DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py b/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py deleted file mode 100644 index ac64014..0000000 --- a/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py +++ /dev/null @@ -1,478 +0,0 @@ -# Databricks notebook source -# MAGIC %run ../../../Common/config - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC insert overwrite dwd.dwd_gnd_xiehe_config_table_mapping -# MAGIC select id,file_name, -# MAGIC concat('dwd.dwd_gnd_xiehe_', id) as table_name, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') as etl_insert_dt -# MAGIC from dwd.dwd_gnd_xiehe_config_table - -# COMMAND ---------- - -# MAGIC %md -# MAGIC + 20250415 kzzh331 uc_upgrade uc兼容调整: -# MAGIC 1. 将代码中的`DBFS`路径根调整为`Volume`路径 -# MAGIC 2. 将`session`中安装的`mdb`工具调整到集群`init-script`中,`uc`集群可能需要`admin`权限才能在集群中安装程序 -# MAGIC 3. 清理重复的`access_file_path_template`赋值,根据环境自动设置`Blob Container` - -# COMMAND ---------- - -# %sh -# # 安装 mdbtools -# sudo apt-get update -# sudo apt-get install -y apt-utils -# sudo DEBIAN_FRONTEND=noninteractive apt-get install -y mdbtools - -# COMMAND ---------- - -# import os -# from pyspark.sql import SparkSession - -# # 初始化SparkSession -# spark = SparkSession.builder.getOrCreate() - -# # 列出最新日期目录下的所有 Blob 文件 -# def list_latest_blob_files(base_path_template): -# try: -# current_date = datetime.utcnow() + timedelta(hours=8) -# date_path = current_date.strftime("%Y/%m/%d/") -# base_path = base_path_template + date_path - -# if path_exists(base_path): -# all_files = list_files_recursive(base_path) -# access_files = [file for file in all_files if is_access_file(file)] -# if not access_files: -# print("最新日期目录下未找到 Access 文件。") -# return [] -# else: -# return access_files -# else: -# print(f"指定路径不存在: {base_path}") -# return [] -# except Exception as e: -# print(f"列出路径模板 {base_path_template} 中的最新 Blob 文件时出错: {e}") -# raise - - -# # 设置原始路径模板 -# # 测试路径 -# # access_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" -# # 生产路径 -# access_file_path_template = "abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" - - -# # Blob存储的文件夹路径 -# blob_folder_path = list_latest_blob_files(access_file_path_template) - -# # 遍历Blob存储上的文件夹和子文件夹 -# file_list = [] -# for root, dirs, files in os.walk(blob_folder_path): -# for file in files: -# file_list.append((root, file)) - -# # 创建DataFrame -# df = spark.createDataFrame(file_list, ["folder_path", "file_name"]) - -# # 将DataFrame写入临时表 -# df.createOrReplaceTempView("temp_table") - - -# COMMAND ---------- - -# # 730 修改在一半版本 -# from io import StringIO -# import pandas as pd -# from pyspark.sql import SparkSession -# from subprocess import run, PIPE -# import subprocess -# from pyspark.sql import SparkSession -# from datetime import datetime - -# #获取所有blob文件目录地址并复制到 dbfs 的指定目录下 -# def get_access_file_path_dbfs_list(access_file_path_blob,target_path): -# access_file_path_dbfs_list =[] -# # 使用 dbutils.fs.ls 遍历目录 -# for file_info in dbutils.fs.ls(access_file_path_blob): -# if file_info.isDir() and file_info.path.endswith('/') : -# # 确保是目录 -# blob_path = file_info.path -# for file_name in dbutils.fs.ls(file_info.path): -# if file_name.path.lower().endswith('xiehe.accdb') & file_name.name.lower().startswith('database') : -# dbutils.fs.cp(file_name.path,f"{target_path}/{file_name.name}" ) -# access_file_path_dbfs_list.append(f"{target_path}/{file_name.name}") -# return access_file_path_dbfs_list - -# import subprocess - -# # 将access 文件转化成csv -# def access_file_to_csv(access_file_path_blob,target_path,output_dir): -# access_file_path_dbfs_list = get_access_file_path_dbfs_list(access_file_path_blob,target_path) -# print(access_file_path_dbfs_list) -# for access_path in access_file_path_dbfs_list: -# # 首先列出所有表名 -# result = subprocess.run(['mdb-tables', '-1', f"/dbfs{access_path}"], stdout=subprocess.PIPE, text=True) -# print(result.returncode) -# if result.returncode != 0: -# print(f"Error listing tables: {result.stderr}") -# return -# table_names = result.stdout.strip().split('\n') -# print(table_names) -# # 遍历表,并保存至csv ,以下代码有问题----修需改 -# for table_name in table_names: -# csv_path = f"{output_dir}/{table_name}.csv" -# export_result = subprocess.run(['mdb-export', f"/dbfs{access_path}", table_name], stdout=subprocess.PIPE, text=True) -# with open(csv_path, 'w') as file: -# file.write(export_result.stdout) -# if export_result.returncode != 0: -# print(f"Error exporting {table_name} to {csv_path}: {export_result.stderr}") - -# # 以上代码有问题----修需改 -# # 还需功能,实现 读取csv 文件,写入对应DWD 表,并基于数据时间对 结果表数据进行数据覆盖 - - -# def main(access_file_path_blob,target_path,output_dir): -# access_file_to_csv(access_file_path_blob,target_path,output_dir) - -# if __name__ == "__main__": - -# # 原始路径模板,使用年月日替换 -# access_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/{date}/" -# today = datetime.now().strftime("%Y/%m/%d") -# access_file_path_blob = access_file_path_template.format(date=today) - -# main(access_file_path_blob,"/dbfs/tmp" ,"/dbfs/tmp") - -# COMMAND ---------- - -import os -import subprocess -import pandas as pd -from datetime import datetime, timedelta -from concurrent.futures import ThreadPoolExecutor -from pyspark.sql.functions import expr, date_format, lit -from queue import Queue - -# 增加一个全局变量,保存线程中生成的临时文件名称 -TEMP_FILES = Queue() - -# 下载 Access 文件到本地 -def download_access_file(file_path, local_path): - # dbutils.fs.cp(file_path, local_path.replace("/dbfs", "")) - dbutils.fs.cp(file_path, local_path) - print(f"已下载 {file_path} 到 {local_path}") - return local_path - -# 检查文件是否存在 -def file_exists(local_path): - return os.path.exists(local_path) - -# 列出 Access 文件中的表 -def list_tables_in_access_file(local_path): - if not file_exists(local_path): - raise FileNotFoundError(f"文件未找到: {local_path}") - - result = subprocess.run(['mdb-tables', '-1', local_path], stdout=subprocess.PIPE, stderr=subprocess.PIPE) - if result.returncode != 0: - error_message = result.stderr.decode('utf-8') - raise RuntimeError(f"列出表名时出错: {error_message}") - - table_names = result.stdout.decode('utf-8').strip().split('\n') - print(f"{local_path} 中的表: {table_names}") - return table_names - -# 读取每个表的数据并转换为 Pandas DataFrame -def read_table_from_access(local_path, table_name): - local_dirname = os.path.dirname(local_path) - local_filename = os.path.basename(local_path).split('.')[0] - temp_file_path = f"{local_dirname}/mdb_export_{local_filename}_{table_name}.csv" - - try: - # 将数据导出到临时文件 - result = subprocess.run( - ["mdb-export", local_path, table_name], stdout=open(temp_file_path, "w") - ) - - # 读取csv文件并清理列名 - df = ( - spark.read.option("header", "true") - .option("quote", '"') - .option("escape", '"') - .option("multiLine", "true") - .option("mode", "PERMISSIVE") - .csv(temp_file_path) - ) - # 清理列名 - for col in df.columns: - clean_col = ( - col.replace(" ", "_") - .replace(",", "_") - .replace(";", "_") - .replace("{", "_") - .replace("}", "_") - .replace("(", "_") - .replace(")", "_") - .replace("\n", "_") - .replace("\t", "_") - .replace("=", "_") - ) - if clean_col != col: - df = df.withColumnRenamed(col, clean_col) - return df - finally: - TEMP_FILES.put(temp_file_path) - -# 并行处理表 -def process_table_parallel(local_path, table_name, column_mapping, target_columns): - try: - df = read_table_from_access(local_path, table_name) - - # 映射列名 - if column_mapping: - for old_col, new_col in column_mapping.items(): - df = df.withColumnRenamed(old_col, new_col) - - # 确保列对齐 - for col in target_columns: - if col not in df.columns: - df = df.withColumn(col, lit(None)) - - # 添加 ETL 字段 - df = df.withColumn("etl_insert_dt", date_format(expr("current_timestamp() + INTERVAL 8 HOURS"), "yyyy-MM-dd HH:mm:ss")) - df = df.withColumn("etl_update_dt", date_format(expr("current_timestamp() + INTERVAL 8 HOURS"), "yyyy-MM-dd HH:mm:ss")) - - # 重新排序列 - spark_df = df.select(target_columns) - - return spark_df - except Exception as e: - print(f"处理表 {table_name} 时出错: {e}") - return None - -# 处理 Access 文件并转换为 Spark DataFrame -def process_access_files_with_config(access_files, config_df, column_mapping): - all_dataframes = [] - - # 获取目标表的列名 - target_columns = list(column_mapping.values()) + ['etl_insert_dt', 'etl_update_dt'] - - with ThreadPoolExecutor(max_workers=8) as executor: - futures = [] - - # 读取配置文件中的配置信息 - for index, row in config_df.iterrows(): - file_name = row['file_name'] - table_name = row['table_name'] - - # 找到匹配的文件 - matching_files = [file for file in access_files if file_name in file] - if not matching_files: - print(f"未找到匹配的文件: {file_name}") - continue - - # 读取匹配文件中的数据并合并 - for file in matching_files: - try: - local_path = download_access_file(file, f"/Volumes/{NGBI_CATALOG}/tmp/volume_tmp/tmp/{os.path.basename(file)}") - table_names = list_tables_in_access_file(local_path) - - for table in table_names: - futures.append(executor.submit(process_table_parallel, local_path, table, column_mapping, target_columns)) - except Exception as e: - print(f"处理文件 {file} 时出错: {e}") - continue - - for future in futures: - result = future.result() - if result: - all_dataframes.append((result, table_name)) - - return all_dataframes - -# 设置原始路径模板 -# 测试路径 -# access_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" -# 生产路径 -if ENVIRONMENT == PRD_ENVIRONMENT_VALUE: - access_file_path_template = "abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" -elif ENVIRONMENT == TEST_ENVIRONMENT_VALUE: - access_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" - -# 列出最新日期目录下的所有 Blob 文件 -def list_latest_blob_files(base_path_template): - try: - current_date = datetime.utcnow() + timedelta(hours=8) - date_path = current_date.strftime("%Y/%m/%d/") - base_path = base_path_template + date_path - - if path_exists(base_path): - all_files = list_files_recursive(base_path) - access_files = [file for file in all_files if is_access_file(file)] - if not access_files: - print("最新日期目录下未找到 Access 文件。") - return [] - else: - return access_files - else: - print(f"指定路径不存在: {base_path}") - return [] - except Exception as e: - print(f"列出路径模板 {base_path_template} 中的最新 Blob 文件时出错: {e}") - raise - -# 检查路径是否存在 -def path_exists(path): - try: - dbutils.fs.ls(path) - return True - except Exception as e: - if "java.io.FileNotFoundException" in str(e): - return False - else: - print(f"检查路径 {path} 时出错: {e}") - raise - -# 判断文件是否为 Access 文件 -def is_access_file(file_path): - return file_path.lower().endswith('.accdb') - -# 递归遍历目录以列出所有文件 -def list_files_recursive(path): - try: - files = [] - if path_exists(path): - for file_info in dbutils.fs.ls(path): - if file_info.isDir(): - files.extend(list_files_recursive(file_info.path)) - else: - files.append(file_info.path) - return files - except Exception as e: - print(f"列出路径 {path} 中的文件时出错: {e}") - raise - -# 设置原始路径模板 -# 测试路径 -# access_file_path_template = "abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" -# 生产路径 -# access_file_path_template = "abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/ODS/GND/UserUpload/" - -# 列出最新日期目录下的 Blob 文件 -latest_access_files = list_latest_blob_files(access_file_path_template) - -if latest_access_files: - try: - # 从配置表中读取配置数据 - config_df = spark.table("dwd.dwd_gnd_xiehe_config_table_mapping").toPandas() - - # 字段映射 - column_mapping = { - 'AREA': 'area', - 'Date': 'yq', - '医院级别': 'h_level', - 'DEPT_NAME': 'dept_name', - '报销': 'reimburse', - '报销类型': 'reimburse_type', - '处方来源': 'prescription_source', - 'ATC': 'atc', - '新code': 'new_code', - '通用名': 'common_name', - '商品名称': 'product_name', - '厂家': 'manu_des', - '规格': 'pack_des', - '给药途径': 'drug_delivery_route', - '剂型': 'nfc', - '处方张数': 'prescription', - '取药数量': 'sales_vol', - '单价': 'price', - '金额': 'sales_value' - } - - # 处理并合并最新的 Access 文件的数据 - all_dataframes = process_access_files_with_config(latest_access_files, config_df, column_mapping) - - if all_dataframes: - combined_spark_df = None - - for df, table_name in all_dataframes: - # 将更改字段名后的 DataFrame 转换为 Spark DataFrame - df.createOrReplaceTempView("temp_access_table") - spark.sql(f"CREATE TABLE IF NOT EXISTS {table_name} AS SELECT * FROM temp_access_table") - spark.sql(f"INSERT overwrite {table_name} SELECT * FROM temp_access_table") - - if combined_spark_df is None: - combined_spark_df = df - else: - combined_spark_df = combined_spark_df.union(df) - - # 合并所有写入的表成一个结果表 result - if combined_spark_df: - combined_spark_df.createOrReplaceTempView("combined_table") - spark.sql("create table if not exists dwd.dwd_inc_gnd_ext_xiehe_union_all as select * from combined_table") - spark.sql("insert overwrite dwd.dwd_inc_gnd_ext_xiehe_union_all select * from combined_table") - else: - print("Access 文件中没有找到数据。") - except Exception as e: - print(f"处理 Access 文件时出错: {e}") -else: - print("没有 Access 文件需要处理。") - - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC delete from dwd.dwd_gnd_ext_xiehe_raw_data -# MAGIC where yq in ( -# MAGIC select yq from dwd.dwd_inc_gnd_ext_xiehe_union_all t1 -# MAGIC where left(t1.etl_insert_dt, 10) = left(from_utc_timestamp(current_timestamp(),'UTC+8'),10) -# MAGIC ); -# MAGIC -# MAGIC insert into dwd.dwd_gnd_ext_xiehe_raw_data -# MAGIC ( -# MAGIC area, -# MAGIC yq, -# MAGIC h_level, -# MAGIC dept_name, -# MAGIC reimburse, -# MAGIC reimburse_type, -# MAGIC prescription_source, -# MAGIC atc, -# MAGIC new_code, -# MAGIC common_name, -# MAGIC product_name, -# MAGIC manu_des, -# MAGIC pack_des, -# MAGIC drug_delivery_route, -# MAGIC nfc, -# MAGIC prescription, -# MAGIC sales_vol, -# MAGIC price, -# MAGIC sales_value, -# MAGIC etl_insert_dt, -# MAGIC etl_update_dt -# MAGIC ) -# MAGIC select area, -# MAGIC yq, -# MAGIC h_level, -# MAGIC dept_name, -# MAGIC reimburse, -# MAGIC reimburse_type, -# MAGIC prescription_source, -# MAGIC atc, -# MAGIC new_code, -# MAGIC common_name, -# MAGIC product_name, -# MAGIC manu_des, -# MAGIC pack_des, -# MAGIC drug_delivery_route, -# MAGIC nfc, -# MAGIC prescription, -# MAGIC sales_vol, -# MAGIC price, -# MAGIC sales_value, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt, -# MAGIC from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt -# MAGIC from dwd.dwd_inc_gnd_ext_xiehe_union_all -# MAGIC where left(etl_insert_dt, 10) = left(from_utc_timestamp(current_timestamp(),'UTC+8'),10); diff --git a/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py:Zone.Identifier b/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/bkp_01 xiehe_blob2dwd.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql b/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql deleted file mode 100644 index 64a8e10..0000000 --- a/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql +++ /dev/null @@ -1,115 +0,0 @@ --- Databricks notebook source --------------------------------------------------------------------------------- ---修改时间:20241025 ---修改人:FanXujia ---修改内容: ---协和的报销情况、报销类型、处方来源等字段与产品无关,不能放packinfo表,因此放事实表里 --------------------------------------------------------------------------------- ---------------------------------------对协和raw data 数据挂上pack geo信息,并获取本同期数据--------------------------------------------------- -insert overwrite table dws.dws_ext_xiehe_raw_data -select - yyyymm - ,IQVIA_PACK_CODE - ,AUDIT_COD - ,h_level - ,reimburse - ,reimburse_type - ,prescription_source - ,area - ,dept_name - ,new_code - ,sum(prescription) prescription - ,SUM(sales_vol) counting_unit - ,SUM(price) price - ,SUM(sales_value) sales_value - ,sum(prescription_ly) prescription_ly - ,SUM(sales_vol_ly) counting_unit_ly - ,SUM(price_ly) price_ly - ,SUM(sales_value_ly) sales_value_ly - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_insert_dt - ,from_utc_timestamp(current_timestamp(),'UTC+8') etl_update_dt - FROM ( - select - cast(concat('20',left(yq,2))*100 + right(yq,1)*3 as int ) yyyymm - ,if( b.IQVIA_PACK_CODE REGEXP '^[0-9]',right(concat('000000000000',b.IQVIA_PACK_CODE),12),b.IQVIA_PACK_CODE) IQVIA_PACK_CODE --right(concat('0000000',b.IQVIA_PACK_CODE),7 ) - ,c.AUDIT_COD - ,a.h_level - ,a.reimburse - ,a.reimburse_type - ,a.prescription_source - ,a.area - ,a.dept_name - ,a.new_code - ,a.prescription - ,a.sales_vol - ,a.price - ,a.sales_value - ,0 as prescription_ly - ,0 as sales_vol_ly - ,0 as price_ly - ,0 as sales_value_ly - from dwd.dwd_gnd_ext_xiehe_raw_data a - left join (select DISTINCT pack_code,IQVIA_PACK_CODE from dwd.dwd_gnd_xiehe_pack_info) b on upper(b.pack_code) = upper(a.new_code) - left join dm.dm_ims_td_geo c on c.CITY_C = a.area - union all - select - cast(concat('20',left(yq,2))*100 + right(yq,1)*3 +100 as int ) yyyymm - ,if( b.IQVIA_PACK_CODE REGEXP '^[0-9]',right(concat('000000000000',b.IQVIA_PACK_CODE),12),b.IQVIA_PACK_CODE) IQVIA_PACK_CODE --right(concat('0000000',b.IQVIA_PACK_CODE),7 ) - ,c.AUDIT_COD - ,a.h_level - ,a.reimburse - ,a.reimburse_type - ,a.prescription_source - ,a.area - ,a.dept_name - ,a.new_code - ,0 as prescription - ,0 as sales_vol - ,0 as price - ,0 as sales_value - ,a.prescription as prescription_ly - ,a.sales_vol as sales_vol_ly - ,a.price as price_ly - ,a.sales_value as sales_value_ly - from dwd.dwd_gnd_ext_xiehe_raw_data a - left join (select DISTINCT pack_code,IQVIA_PACK_CODE from dwd.dwd_gnd_xiehe_pack_info) b on upper(b.pack_code) = upper(a.new_code) - left join dm.dm_ims_td_geo c on c.CITY_C = a.area - where cast(concat('20',left(yq,2))*100 + right(yq,1)*3 +100 as int ) - <=(SELECT MAX(cast(concat('20',left(yq,2))*100 + right(yq,1)*3 as int )) from dwd.dwd_gnd_ext_xiehe_raw_data ) - ) -GROUP BY - yyyymm - ,IQVIA_PACK_CODE - ,AUDIT_COD - ,h_level - ,reimburse - ,reimburse_type - ,prescription_source - ,area - ,dept_name - ,new_code - --- COMMAND ---------- - -----------raw data 数据抽取到dm------------ -insert overwrite table dm.dm_ext_xiehe_sales -select - yyyymm - ,IQVIA_PACK_CODE - ,AUDIT_COD - ,h_level - ,reimburse - ,reimburse_type - ,prescription_source - ,area - ,dept_name - ,new_code - ,prescription - ,counting_unit - ,price - ,sales_value - ,prescription_ly - ,counting_unit_ly - ,price_ly - ,sales_value_ly -from dws.dws_ext_xiehe_raw_data diff --git a/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql:Zone.Identifier b/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/bkp_02 dm_ext_xiehe_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql b/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql deleted file mode 100644 index b17dc59..0000000 --- a/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql +++ /dev/null @@ -1,776 +0,0 @@ --- Databricks notebook source ----------------------------------------------在配置表中提取所需字段去重,并对编码类数据补位、公司名称简化、产品重新归属公司------------------------------------ -insert overwrite table tmp.tmp_ext_xiehe_pack_property_tmp -----code 补码 ----重新归属公司 -select - distinct - --20250428 chenwu iqivacode扩到12位,brandcode 扩到9位 - if( IQVIA_PACK_CODE REGEXP '^[0-9]',right(concat('000000000000',IQVIA_PACK_CODE),12),IQVIA_PACK_CODE) as IQVIA_PACK_CODE --right(concat('0000000', IQVIA_PACK_CODE),7) - ,right(concat('000000000', IQVIA_PROD_CODE),9) as IQVIA_PROD_CODE --right(concat('00000', IQVIA_PROD_CODE),5) - ,a.pack_des - ,a.APP1_COD - ,a.APP1_DES - ,a.APP1_DES_C - ,a.APP2_COD - ,a.APP2_DES - ,a.APP2_DES_C - ,a.APP3_COD - ,a.APP3_DES - ,a.APP3_DES_C - ,a.ATC1_COD - ,a.ATC1_DES - ,a.ATC1_DES_C - ,a.ATC2_COD - ,a.ATC2_DES - ,a.ATC2_DES_C - ,a.ATC3_COD - ,a.ATC3_DES - ,a.ATC3_DES_C - ,a.ATC4_COD - ,a.ATC4_DES - ,a.ATC4_DES_C - ,a.BIO_DESC - ,right(concat('000000', a.CMPS_COD),6) AS CMPS_COD - ,a.CMPS_DES - ,a.CMPS_DES_C - ,COALESCE(c.corp_cod,b.corp_cod,a.corp_cod) as corp_cod - ,COALESCE(c.corp_des,b.corp_des,case when a.CORP_DES like '% GROUP%' then replace(a.CORP_DES,' GROUP','') else a.CORP_DES end) as CORP_DES - ,COALESCE(d.corp_des_c,a.corp_des_c ) as corp_des_c - ,a.EDL_DESC - ,a.ETH_OTC_DESC - ,a.GENE_ORIG_DESC - ,a.GQCE_DESC - ,COALESCE(c.manu_cod,b.manu_cod,a.manu_cod) manu_cod - ,COALESCE(c.manu_des,b.manu_des,a.manu_des) manu_des - ,COALESCE(e.manu_des_c,a.manu_des_c) manu_des_c - ,case when a.MNFL_COD = 'L' then 'L' else 'M' end MNFL_COD --chpa逻辑 - ,case when a.MNFL_DES='Local' then 'LOCAL' else 'MNC' end MNFL_DES --chpa逻辑 - -- ,a.MNFL_COD - -- ,a.MNFL_DES - ,a.NRDL_DESC - ,a.STGH_DES - ,a.PACK_LCH - ,a.PAED_DESC - ,a.PROD_DES - ,a.PROD_DES_C - ,a.TCM_DESC - ,CASE WHEN a.VBP_DESC IN ('VBP-IN','VBP-N/A') THEN 'VBP' ELSE 'Non VBP' END VBP_DESC --chpa逻辑 - -- ,a.VBP_DESC - ,a.Unit - ,a.Counting_Unit - ,a.Dosage_Unit -from dwd.dwd_gnd_xiehe_pack_info a -left join (select right(concat('000000000',prod_cod ),9) prod_cod,corp_cod - ,case when CORP_DES like '% GROUP%' then replace(CORP_DES,' GROUP','') else CORP_DES end corp_des,right(concat('000000',manu_cod ),6) manu_cod,manu_des - from dwd.dwd_gnd_tbl_corp_change - where pack_cod is null -) b on right(concat('000000000', IQVIA_PROD_CODE),9)= b.prod_cod ---right(concat('00000',A.IQVIA_PROD_CODE ),5)= b.prod_cod -left join (select if( pack_cod REGEXP '^[0-9]',right(concat('000000000000',pack_cod),12),pack_cod) pack_cod,corp_cod - ,case when CORP_DES like '% GROUP%' then replace(CORP_DES,' GROUP','') else CORP_DES end corp_des,right(concat('000000',manu_cod ),6) manu_cod,manu_des - from dwd.dwd_gnd_tbl_corp_change - where pack_cod is not null -) c on if( IQVIA_PACK_CODE REGEXP '^[0-9]',right(concat('000000000000',IQVIA_PACK_CODE),12),IQVIA_PACK_CODE) = c.pack_cod ---right(concat('0000000', IQVIA_PACK_CODE),7) = c.pack_cod -left join (select distinct corp_cod,corp_des_c from dwd.dwd_gnd_xiehe_pack_info) d on coalesce(C.corp_cod,B.corp_cod ) = d.corp_cod -Left join (select distinct right(concat('000000',manu_cod ),6) manu_cod,manu_des,manu_des_c from dwd.dwd_gnd_xiehe_pack_info) e On coalesce(C.manu_cod,B.manu_cod ) = e.manu_cod - -; - ---------关联tblmarket 数据 ------MARKET ---第一步:先处理 Extend_Market 和 NOT_IN_FLAG 都为空的数据,代表有明确定义得市场 -insert overwrite table tmp.tmp_ext_xiehe_pack_property -select distinct - t2.market,t1.*, -t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio -from tmp.tmp_ext_xiehe_pack_property_tmp t1 -left join (select * from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NULL AND ( NOT_IN_FLAG IS NULL or NOT_IN_FLAG = '1' )) t2 -on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end -and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end -and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end -and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end -and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end -and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end -and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end -and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end -and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end -and right(concat('000000000', coalesce(t1.IQVIA_PROD_CODE,'')),9) = case when t2.Product_Code is null then right(concat('000000000', coalesce(t1.IQVIA_PROD_CODE,'')),9) else right(concat('000000000', coalesce(t2.Product_Code,'')),9) end --- and t1.IQVIA_PACK_CODE = case when t2.Pack_Code is null then t1.IQVIA_PACK_CODE else t2.Pack_Code end -and nvl(t1.STGH_DES,'') = case when t2.Strength is null then nvl(t1.STGH_DES,'') else nvl(t2.Strength,'') end -and right(concat('000000', coalesce(t1.CMPS_COD,'')),6) = case when t2.Molecule_Code is null then right(concat('000000', coalesce(t1.CMPS_COD,'')),6) else right(concat('000000', coalesce( t2.Molecule_Code ,'')),6) end -and if( coalesce(t1.IQVIA_PACK_CODE,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t1.IQVIA_PACK_CODE,'')),12),coalesce(t1.IQVIA_PACK_CODE,'')) -= case when t2.pack_code is null -then if( coalesce(t1.IQVIA_PACK_CODE,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t1.IQVIA_PACK_CODE,'')),12),coalesce(t1.IQVIA_PACK_CODE,'')) -else if( coalesce(t2.pack_code,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t2.pack_code,'')),12),coalesce(t2.pack_code,'')) end -where t2.market is not null -; - ---第二步: ---处理 Extend_Market 为空,并且 NOT_IN_FLAG 有值的数据,代表反选定义市场的规则 -insert overwrite table tmp.tmp_ext_xiehe_pack_property_del -select distinct t2.market,t1.*,t2.bu,CASE WHEN t2.extend_market_ratio IS NULL THEN '1' ELSE t2.extend_market_ratio END AS Market_Ratio - from tmp.tmp_ext_xiehe_pack_property_tmp t1 - left join (select * from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NULL AND NOT_IN_FLAG = '0' ) t2 - on t1.ATC1_COD = case when t2.ATC1_Code is null then t1.ATC1_COD else t2.ATC1_Code end - and t1.ATC2_COD = case when t2.ATC2_Code is null then t1.ATC2_COD else t2.ATC2_Code end - and t1.ATC3_COD = case when t2.ATC3_Code is null then t1.ATC3_COD else t2.ATC3_Code end - and t1.ATC4_COD = case when t2.ATC4_Code is null then t1.ATC4_COD else t2.ATC4_Code end - and t1.APP1_COD = case when t2.NFC1_Code is null then t1.APP1_COD else t2.NFC1_Code end - and t1.APP2_COD = case when t2.NFC2_Code is null then t1.APP2_COD else t2.NFC2_Code end - and t1.APP3_COD = case when t2.NFC3_Code is null then t1.APP3_COD else t2.NFC3_Code end - and t1.CORP_COD = case when t2.corporation_code is null then t1.CORP_COD else t2.corporation_code end - and t1.MANU_COD = case when t2.Manufacturer_Code is null then t1.MANU_COD else t2.Manufacturer_Code end - and right(concat('000000000', coalesce(t1.IQVIA_PROD_CODE,'')),9) = case when t2.Product_Code is null then right(concat('000000000', coalesce(t1.IQVIA_PROD_CODE,'')),9) else right(concat('000000000', coalesce(t2.Product_Code,'')),9) end - and nvl(t1.STGH_DES,'') = case when t2.Strength is null then nvl(t1.STGH_DES,'') else nvl(t2.Strength,'') end - and right(concat('000000', coalesce(t1.CMPS_COD,'')),6) = case when t2.Molecule_Code is null then right(concat('000000', coalesce(t1.CMPS_COD,'')),6) else right(concat('000000', coalesce( t2.Molecule_Code ,'')),6) end - and if( coalesce(t1.IQVIA_PACK_CODE,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t1.IQVIA_PACK_CODE,'')),12),coalesce(t1.IQVIA_PACK_CODE,'')) - = case when t2.pack_code is null - then if( coalesce(t1.IQVIA_PACK_CODE,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t1.IQVIA_PACK_CODE,'')),12),coalesce(t1.IQVIA_PACK_CODE,'')) - else if( coalesce(t2.pack_code,'') REGEXP '^[0-9]',right(concat('000000000000', coalesce(t2.pack_code,'')),12),coalesce(t2.pack_code,'')) end - where t2.market is not null - ; - ---!!!注意此段是反选的规则,故执行的是从已经定义好的TempMKT中删除数据 ---需要看TempMKT的字段结构,没有值的字段,在Value里面放个空值 -MERGE INTO tmp.tmp_ext_xiehe_pack_property AS t1 -USING tmp.tmp_ext_xiehe_pack_property_del AS t2 - on t1.ATC1_COD = t2.ATC1_COD - and t1.ATC2_COD = t2.ATC2_COD - and t1.ATC3_COD = t2.ATC3_COD - and t1.ATC4_COD = t2.ATC4_COD - and t1.APP1_COD = t2.APP1_COD - and t1.APP2_COD = t2.APP2_COD - and t1.APP3_COD = t2.APP3_COD - and t1.CORP_COD = t2.CORP_COD - and t1.MANU_COD = t2.MANU_COD - and t1.IQVIA_PROD_CODE = t2.IQVIA_PROD_CODE - and t1.IQVIA_PACK_CODE = t2.IQVIA_PACK_CODE - and t1.STGH_DES = t2.STGH_DES - and t1.CMPS_COD = t2.CMPS_COD - and t1.market = t2.market -WHEN MATCHED THEN DELETE -; - - ----第三步: ---处理 Extend_Market 有值得数据,用已有市场,定义新的市场,带上系数 -insert into tmp.tmp_ext_xiehe_pack_property -select distinct - t2.Market, - t1.iqvia_pack_code , - t1.iqvia_prod_code - ,t1.pack_des - ,t1.APP1_COD - ,t1.APP1_DES - ,t1.APP1_DES_C - ,t1.APP2_COD - ,t1.APP2_DES - ,t1.APP2_DES_C - ,t1.APP3_COD - ,t1.APP3_DES - ,t1.APP3_DES_C - ,t1.ATC1_COD - ,t1.ATC1_DES - ,t1.ATC1_DES_C - ,t1.ATC2_COD - ,t1.ATC2_DES - ,t1.ATC2_DES_C - ,t1.ATC3_COD - ,t1.ATC3_DES - ,t1.ATC3_DES_C - ,t1.ATC4_COD - ,t1.ATC4_DES - ,t1.ATC4_DES_C - ,t1.BIO_DESC - ,t1.CMPS_COD - ,t1.CMPS_DES - ,t1.CMPS_DES_C - ,t1.corp_cod - ,t1.CORP_DES - ,t1.corp_des_c - ,t1.EDL_DESC - ,t1.ETH_OTC_DESC - ,t1.GENE_ORIG_DESC - ,t1.GQCE_DESC - ,t1.manu_cod - ,t1.manu_des - ,t1.manu_des_c - ,t1.MNFL_COD - ,t1.MNFL_DES - ,t1.NRDL_DESC - ,t1.STGH_DES - ,t1.PACK_LCH - ,t1.PAED_DESC - ,t1.PROD_DES - ,t1.PROD_DES_C - ,t1.TCM_DESC - ,t1.VBP_DESC - ,t1.Unit - ,t1.Counting_Unit - ,t1.Dosage_Unit - ,t2.BU - ,case when t2.Extend_Market_Ratio is null then '1' end AS Market_Ratio --市场的系数若没有维护,默认为1 -from tmp.tmp_ext_xiehe_pack_property t1 -left join (select Market, BU,Extend_Market,Extend_Market_Ratio from dwd.dwd_gnd_ims_tblmarket WHERE Extend_Market IS NOT NULL) t2 on t1.Market=t2.Extend_Market -where t2.Market is not null -; - --- COMMAND ---------- - ---补上未匹配到Market的pack -insert into tmp.tmp_ext_xiehe_pack_property -( -Market, -IQVIA_PACK_CODE, -IQVIA_PROD_CODE, -pack_des, -APP1_COD, -APP1_DES, -APP1_DES_C, -APP2_COD, -APP2_DES, -APP2_DES_C, -APP3_COD, -APP3_DES, -APP3_DES_C, -ATC1_COD, -ATC1_DES, -ATC1_DES_C, -ATC2_COD, -ATC2_DES, -ATC2_DES_C, -ATC3_COD, -ATC3_DES, -ATC3_DES_C, -ATC4_COD, -ATC4_DES, -ATC4_DES_C, -BIO_DESC, -CMPS_COD, -CMPS_DES, -CMPS_DES_C, -corp_cod, -CORP_DES, -corp_des_c, -EDL_DESC, -ETH_OTC_DESC, -GENE_ORIG_DESC, -GQCE_DESC, -manu_cod, -manu_des, -manu_des_c, -MNFL_COD, -MNFL_DES, -NRDL_DESC, -STGH_DES, -PACK_LCH, -PAED_DESC, -PROD_DES, -PROD_DES_C, -TCM_DESC, -VBP_DESC, -Unit, -Counting_Unit, -Dosage_Unit, -bu, -Market_Ratio -) -select distinct -'Non Market' as Market, -t1.IQVIA_PACK_CODE, -t1.IQVIA_PROD_CODE, -t1.pack_des, -t1.APP1_COD, -t1.APP1_DES, -t1.APP1_DES_C, -t1.APP2_COD, -t1.APP2_DES, -t1.APP2_DES_C, -t1.APP3_COD, -t1.APP3_DES, -t1.APP3_DES_C, -t1.ATC1_COD, -t1.ATC1_DES, -t1.ATC1_DES_C, -t1.ATC2_COD, -t1.ATC2_DES, -t1.ATC2_DES_C, -t1.ATC3_COD, -t1.ATC3_DES, -t1.ATC3_DES_C, -t1.ATC4_COD, -t1.ATC4_DES, -t1.ATC4_DES_C, -t1.BIO_DESC, -t1.CMPS_COD, -t1.CMPS_DES, -t1.CMPS_DES_C, -t1.corp_cod, -t1.CORP_DES, -t1.corp_des_c, -t1.EDL_DESC, -t1.ETH_OTC_DESC, -t1.GENE_ORIG_DESC, -t1.GQCE_DESC, -t1.manu_cod, -t1.manu_des, -t1.manu_des_c, -t1.MNFL_COD, -t1.MNFL_DES, -t1.NRDL_DESC, -t1.STGH_DES, -t1.PACK_LCH, -t1.PAED_DESC, -t1.PROD_DES, -t1.PROD_DES_C, -t1.TCM_DESC, -t1.VBP_DESC, -t1.Unit, -t1.Counting_Unit, -t1.Dosage_Unit, -'' as bu, -'1' as Market_Ratio -from tmp.tmp_ext_xiehe_pack_property_tmp t1 -left join tmp.tmp_ext_xiehe_pack_property t2 -on t1.IQVIA_PACK_CODE = t2.IQVIA_PACK_CODE -where t2.IQVIA_PACK_CODE is null - --- COMMAND ---------- - -----------------------------------------------------补齐维度信息--------------------------- -------对属于az 的产品打上 is az 标识 -insert overwrite table dws.dws_ext_xiehe_pack_property -select - concat(t1.Market,'_',T1.IQVIA_PACK_CODE) as MARKET_PACK_KEY - ,t1.market - ,t1.IQVIA_PACK_CODE - ,t1.IQVIA_PROD_CODE - ,t1.pack_des - ,t1.APP1_COD - ,t1.APP1_DES - ,t1.APP1_DES_C - ,t1.APP2_COD - ,t1.APP2_DES - ,t1.APP2_DES_C - ,t1.APP3_COD - ,t1.APP3_DES - ,t1.APP3_DES_C - ,t1.ATC1_COD - ,t1.ATC1_DES - ,t1.ATC1_DES_C - ,t1.ATC2_COD - ,t1.ATC2_DES - ,t1.ATC2_DES_C - ,t1.ATC3_COD - ,t1.ATC3_DES - ,t1.ATC3_DES_C - ,t1.ATC4_COD - ,t1.ATC4_DES - ,t1.ATC4_DES_C - ,t1.BIO_DESC - ,t1.CMPS_COD - ,t1.CMPS_DES - ,t1.CMPS_DES_C - ,t1.corp_cod - ,t1.CORP_DES - ,t1.corp_des_c - ,t1.EDL_DESC - ,t1.ETH_OTC_DESC - ,t1.GENE_ORIG_DESC - ,t1.GQCE_DESC - ,t1.manu_cod - ,t1.manu_des - ,t1.manu_des_c - ,t1.MNFL_COD - ,t1.MNFL_DES - ,t1.NRDL_DESC - ,t1.STGH_DES - ,t1.PACK_LCH - ,t1.PAED_DESC - ,t1.PROD_DES - ,t1.PROD_DES_C - ,t1.TCM_DESC - ,t1.VBP_DESC - ,t1.Unit - ,t1.Counting_Unit - ,t1.Dosage_Unit - ,t1.bu - ,t1.Market_Ratio - ,NRDL_ENTRY_DATE - ,case when ta.prod_code is null then 'N' ELSE 'Y' END IS_AZ - ,null as AZ_MAIN - ,BRANDTYPE.brand_type AS BRANDTYPE -from tmp.tmp_ext_xiehe_pack_property t1 -left join (select distinct Pack_Code,NRDL_ENTRY_DATE from dwd.dwd_ims_td_pack_additional_attribute ) t2 on t1.IQVIA_PACK_CODE =t2.Pack_Code -left join (select distinct IQVIA_PROD_CODE prod_code from tmp.tmp_ext_xiehe_pack_property where corp_cod='A5Z' ) ta on t1.IQVIA_PROD_CODE=ta.prod_code -LEFT JOIN dwd.dwd_gnd_ims_tblbrandtype BRANDTYPE ON t1.IQVIA_PACK_CODE = BRANDTYPE.PACK_COD -; - - --- COMMAND ---------- - -----------------------------------------------------补齐维度信息--------------------------- -insert overwrite table tmp.tmp_dm_ext_xiehe_pack_property -select - t1.MARKET_PACK_KEY - ,t1.market - ,t1.IQVIA_PACK_CODE - ,t1.IQVIA_PROD_CODE - ,t1.pack_des - ,t1.APP1_COD - ,t1.APP1_DES - ,t1.APP1_DES_C - ,t1.APP2_COD - ,t1.APP2_DES - ,t1.APP2_DES_C - ,t1.APP3_COD - ,t1.APP3_DES - ,t1.APP3_DES_C - ,t1.ATC1_COD - ,t1.ATC1_DES - ,t1.ATC1_DES_C - ,t1.ATC2_COD - ,t1.ATC2_DES - ,t1.ATC2_DES_C - ,t1.ATC3_COD - ,t1.ATC3_DES - ,t1.ATC3_DES_C - ,t1.ATC4_COD - ,t1.ATC4_DES - ,t1.ATC4_DES_C - ,t1.BIO_DESC - ,t1.CMPS_COD - ,t1.CMPS_DES - ,t1.CMPS_DES_C - ,t1.corp_cod - ,t1.CORP_DES - ,t1.corp_des_c - ,t1.EDL_DESC - ,t1.ETH_OTC_DESC - ,t1.GENE_ORIG_DESC - ,t1.GQCE_DESC - ,t1.manu_cod - ,t1.manu_des - ,t1.manu_des_c - ,t1.MNFL_COD - ,t1.MNFL_DES - ,t1.NRDL_DESC - ,t1.STGH_DES - ,t1.PACK_LCH - ,t1.PAED_DESC - ,t1.PROD_DES - ,t1.PROD_DES_C - ,t1.TCM_DESC - ,t1.VBP_DESC - ,t1.Unit - ,t1.Counting_Unit - ,t1.Dosage_Unit - ,t1.bu - ,t1.Market_Ratio - ,t1.NRDL_ENTRY_DATE - ,t1.IS_AZ - ,t1.AZ_MAIN - ,t1.BRANDTYPE - ,nvl(cla.class,'Others') class - ,ta.ta -from dws.dws_ext_xiehe_pack_property t1 -left join dwd.dwd_gnd_ext_retail_dim_ta ta on t1.market = ta.market -left join dwd.dwd_gnd_tblclass cla on t1.MARKET = case when cla.market is null then t1.market else cla.market end - and nvl(t1.iqvia_pack_code,'') = case when cla.pack_code is null then nvl(t1.iqvia_pack_code,'') - else if( cla.pack_code REGEXP '^[0-9]',right(concat('000000000000',cla.pack_code),12),cla.pack_code) end --right(concat('0000000',cla.pack_code ), 7) - and nvl(t1.IQVIA_PROD_CODE,'') = case when cla.product_code is null then nvl(t1.IQVIA_PROD_CODE ,'') - else right(concat('000000000',cla.product_code ),9 ) end --right(concat('00000',cla.product_code ),5 ) - and nvl(t1.CMPS_COD,'') = case when cla.molecule_code is null then nvl(t1.cmps_cod ,'') else right(concat('000000', cla.molecule_code),6 ) end - and nvl(t1.corp_cod,'') = case when cla.Corporation_code is null then nvl(t1.corp_cod ,'') else cla.Corporation_code end - and nvl(t1.manu_cod,'')= case when cla.Manufacturer_Code is null then nvl(t1.manu_cod,'') else cla.Manufacturer_Code end - and nvl(t1.atc1_cod,'')= case when cla.ATC1_Code is null then nvl(t1.atc1_cod ,'') else cla.ATC1_Code end - and nvl(t1.ATC2_COD,'') = case when cla.ATC2_Code is null then nvl(t1.ATC2_COD ,'') else cla.ATC2_Code end - and nvl(t1.ATC3_COD,'') = case when cla.ATC3_Code is null then nvl(t1.ATC3_COD ,'') else cla.ATC3_Code end - and nvl(t1.ATC4_COD,'') = case when cla.ATC4_Code is null then nvl(t1.ATC4_COD ,'') else cla.ATC4_Code end - and nvl(t1.app1_cod,'') = case when cla.NFC1_Code is null then nvl(t1.app1_cod ,'') else cla.NFC1_Code end - and nvl(t1.APP2_COD,'') = case when cla.NFC2_Code is null then nvl(t1.APP2_COD ,'') else cla.NFC2_Code end - and nvl(t1.APP3_COD,'') = case when cla.NFC3_Code is null then nvl(t1.APP3_COD ,'') else cla.NFC3_Code end - and nvl(t1.stgh_des,'') = case when cla.Strength is null then nvl(t1.stgh_des ,'') else cla.Strength end -; - - --- COMMAND ---------- - -with ims_pack_property as ( -select - MARKET_PACK_KEY, - max(PACK_COD) as PACK_COD, - max(PACK_DES) as PACK_DES, - max(STGH_DES) as STGH_DES, - max(PACK_LCH) as PACK_LCH, - max(Family_Code) as Family_Code, - max(Family_Name) as Family_Name, - 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, - max(VBP_DESC) 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(MARKET) as MARKET, - max(KEY_COMPETITOR) as KEY_COMPETITOR, - max(IS_AZ) as IS_AZ, - max(AZ_MAIN) as AZ_MAIN, - max(AZ_Related) as AZ_Related, - 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, - max(Class) as Class -from dm.dm_ims_td_pack_property -group by MARKET_PACK_KEY -) - -insert overwrite table dm.dm_ext_xiehe_pack_property ( -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, -MARKET, -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, -bu, -Dosage_Unit, -ta -) -select distinct - t1.market_pack_key, - t1.iqvia_pack_code as PACK_COD, - coalesce(t2.PACK_DES,t1.pack_des) as PACK_DES, - coalesce(t2.STGH_DES,t1.stgh_des) as STGH_DES, - coalesce(t2.PACK_LCH,t1.pack_lch) as PACK_LCH, - t2.Family_Code, - t2.Family_Name, - coalesce(t2.PROD_COD,t1.iqvia_prod_code) as PROD_COD, - coalesce(t2.PROD_DES,t1.prod_des) as PROD_DES, - coalesce(t2.PROD_DES_C,t1.prod_des_c) as PROD_DES_C, - coalesce(t2.CMPS_COD,t1.cmps_cod) as CMPS_COD, - coalesce(t2.CMPS_DES,t1.cmps_des) as CMPS_DES, - coalesce(t2.CMPS_DES_C,t1.cmps_des_c) as CMPS_DES_C, - coalesce(t2.ATC1_COD,t1.atc1_cod) as ATC1_COD, - coalesce(t2.ATC2_COD,t1.atc2_cod) as ATC2_COD, - coalesce(t2.ATC3_COD,t1.atc3_cod) as ATC3_COD, - coalesce(t2.ATC4_COD,t1.atc4_cod) as ATC4_COD, - coalesce(t2.APP1_COD,t1.app1_cod) as APP1_COD, - coalesce(t2.APP2_COD,t1.app2_cod) as APP2_COD, - coalesce(t2.APP3_COD,t1.app3_cod) as APP3_COD, - coalesce(t2.BIO_DESC,t1.bio_desc) as BIO_DESC, - coalesce(t2.GENE_ORIG_DESC,t1.gene_orig_desc) as GENE_ORIG_DESC, - coalesce(t2.ETH_OTC_DESC,t1.eth_otc_desc) as ETH_OTC_DESC, - coalesce(t2.NRDL_DESC,t1.nrdl_desc) as NRDL_DESC, - coalesce(t2.NRDL_Entry_Date,t1.NRDL_Entry_Date) as NRDL_Entry_Date, - coalesce(t2.EDL_DESC,t1.edl_desc) as EDL_DESC, - coalesce(t2.TCM_DESC,t1.tcm_desc) as TCM_DESC, - coalesce(t2.PAED_DESC,t1.paed_desc) as PAED_DESC, - coalesce(t2.GQCE_DESC,t1.gqce_desc) as GQCE_DESC, - coalesce(t2.VBP_DESC,t1.vbp_desc) as VBP_DESC, - coalesce(t2.MANU_COD,t1.manu_cod) as MANU_COD, - coalesce(t2.MANU_DES,t1.manu_des) as MANU_DES, - coalesce(t2.MANU_DES_C,t1.manu_des_c) as MANU_DES_C, - coalesce(t2.MNFL_COD,t1.mnfl_cod) as MNFL_COD, - coalesce(t2.MNFL_DES,t1.mnfl_des) as MNFL_DES, - coalesce(t2.CORP_COD,t1.corp_cod) as CORP_COD, - coalesce(t2.CORP_DES,t1.corp_des) as CORP_DES, - coalesce(t2.CORP_DES_C,t1.corp_des_c) as CORP_DES_C, - coalesce(t2.BrandType,t1.BrandType) as BrandType, - t1.market, - t2.KEY_COMPETITOR, - coalesce(t2.IS_AZ,t1.IS_AZ) as IS_AZ, - coalesce(t2.AZ_MAIN,t1.AZ_MAIN) as AZ_MAIN, - t2.AZ_Related, - coalesce(t2.atc1_des,t1.atc1_des) as atc1_des, - coalesce(t2.atc1_des_c,t1.atc1_des_c) as atc1_des_c, - coalesce(t2.atc2_des,t1.atc2_des) as atc2_des, - coalesce(t2.atc2_des_c,t1.atc2_des_c) as atc2_des_c, - coalesce(t2.atc3_des,t1.atc3_des) as atc3_des, - coalesce(t2.atc3_des_c,t1.atc3_des_c) as atc3_des_c, - coalesce(t2.atc4_des,t1.atc4_des) as atc4_des, - coalesce(t2.atc4_des_c,t1.atc4_des_c) as atc4_des_c, - coalesce(t2.app1_des,t1.app1_des) as app1_des, - coalesce(t2.app1_des_c,t1.app1_des_c) as app1_des_c, - coalesce(t2.app2_des,t1.app2_des) as app2_des, - coalesce(t2.app2_des_c,t1.app2_des_c) as app2_des_c, - coalesce(t2.app3_des,t1.app3_des) as app3_des, - coalesce(t2.app3_des_c,t1.app3_des_c) as app3_des_c, - coalesce(t2.Class,t1.Class) as Class, - from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_INSERT_DT, - from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_UPDATE_DT, - cast(t1.market_ratio as decimal(30,10)) as market_ratio, - coalesce(cast(t1.counting_unit / coalesce(t1.unit,1) as decimal(30,10)),1) as counting_unit, - t1.bu, - t1.Dosage_Unit, - t1.ta -from tmp.tmp_dm_ext_xiehe_pack_property t1 -left join ims_pack_property t2 -on t1.market_pack_key = t2.market_pack_key -where t1.market <> 'Non Market' -union -select distinct - concat('XIEHE ALL Market_',t1.iqvia_pack_code) as market_pack_key, - t1.iqvia_pack_code as PACK_COD, - max(coalesce(t2.PACK_DES,t1.pack_des)) as PACK_DES, - max(coalesce(t2.STGH_DES,t1.stgh_des)) as STGH_DES, - max(coalesce(t2.PACK_LCH,t1.pack_lch)) as PACK_LCH, - max(t2.Family_Code) as Family_Code, - max(t2.Family_Name) as Family_Name, - max(coalesce(t2.PROD_COD,t1.iqvia_prod_code)) as PROD_COD, - max(coalesce(t2.PROD_DES,t1.prod_des)) as PROD_DES, - max(coalesce(t2.PROD_DES_C,t1.prod_des_c)) as PROD_DES_C, - max(coalesce(t2.CMPS_COD,t1.cmps_cod)) as CMPS_COD, - max(coalesce(t2.CMPS_DES,t1.cmps_des)) as CMPS_DES, - max(coalesce(t2.CMPS_DES_C,t1.cmps_des_c)) as CMPS_DES_C, - max(coalesce(t2.ATC1_COD,t1.atc1_cod)) as ATC1_COD, - max(coalesce(t2.ATC2_COD,t1.atc2_cod)) as ATC2_COD, - max(coalesce(t2.ATC3_COD,t1.atc3_cod)) as ATC3_COD, - max(coalesce(t2.ATC4_COD,t1.atc4_cod)) as ATC4_COD, - max(coalesce(t2.APP1_COD,t1.app1_cod)) as APP1_COD, - max(coalesce(t2.APP2_COD,t1.app2_cod)) as APP2_COD, - max(coalesce(t2.APP3_COD,t1.app3_cod)) as APP3_COD, - max(coalesce(t2.BIO_DESC,t1.bio_desc)) as BIO_DESC, - max(coalesce(t2.GENE_ORIG_DESC,t1.gene_orig_desc)) as GENE_ORIG_DESC, - max(coalesce(t2.ETH_OTC_DESC,t1.eth_otc_desc)) as ETH_OTC_DESC, - max(coalesce(t2.NRDL_DESC,t1.nrdl_desc)) as NRDL_DESC, - max(coalesce(t2.NRDL_Entry_Date,t1.NRDL_Entry_Date)) as NRDL_Entry_Date, - max(coalesce(t2.EDL_DESC,t1.edl_desc)) as EDL_DESC, - max(coalesce(t2.TCM_DESC,t1.tcm_desc)) as TCM_DESC, - max(coalesce(t2.PAED_DESC,t1.paed_desc)) as PAED_DESC, - max(coalesce(t2.GQCE_DESC,t1.gqce_desc)) as GQCE_DESC, - max(coalesce(t2.VBP_DESC,t1.vbp_desc)) as VBP_DESC, - max(coalesce(t2.MANU_COD,t1.manu_cod)) as MANU_COD, - max(coalesce(t2.MANU_DES,t1.manu_des)) as MANU_DES, - max(coalesce(t2.MANU_DES_C,t1.manu_des_c)) as MANU_DES_C, - max(coalesce(t2.MNFL_COD,t1.mnfl_cod)) as MNFL_COD, - max(coalesce(t2.MNFL_DES,t1.mnfl_des)) as MNFL_DES, - max(coalesce(t2.CORP_COD,t1.corp_cod)) as CORP_COD, - max(coalesce(t2.CORP_DES,t1.corp_des)) as CORP_DES, - max(coalesce(t2.CORP_DES_C,t1.corp_des_c)) as CORP_DES_C, - max(coalesce(t2.BrandType,t1.BrandType)) as BrandType, - 'XIEHE ALL Market' as MARKET, - max(t2.KEY_COMPETITOR) as KEY_COMPETITOR, - max(coalesce(t2.IS_AZ,t1.IS_AZ)) as IS_AZ, - max(coalesce(t2.AZ_MAIN,t1.AZ_MAIN)) as AZ_MAIN, - max(t2.AZ_Related) as AZ_Related, - max(coalesce(t2.atc1_des,t1.atc1_des)) as atc1_des, - max(coalesce(t2.atc1_des_c,t1.atc1_des_c)) as atc1_des_c, - max(coalesce(t2.atc2_des,t1.atc2_des)) as atc2_des, - max(coalesce(t2.atc2_des_c,t1.atc2_des_c)) as atc2_des_c, - max(coalesce(t2.atc3_des,t1.atc3_des)) as atc3_des, - max(coalesce(t2.atc3_des_c,t1.atc3_des_c)) as atc3_des_c, - max(coalesce(t2.atc4_des,t1.atc4_des)) as atc4_des, - max(coalesce(t2.atc4_des_c,t1.atc4_des_c)) as atc4_des_c, - max(coalesce(t2.app1_des,t1.app1_des)) as app1_des, - max(coalesce(t2.app1_des_c,t1.app1_des_c)) as app1_des_c, - max(coalesce(t2.app2_des,t1.app2_des)) as app2_des, - max(coalesce(t2.app2_des_c,t1.app2_des_c)) as app2_des_c, - max(coalesce(t2.app3_des,t1.app3_des)) as app3_des, - max(coalesce(t2.app3_des_c,t1.app3_des_c)) as app3_des_c, - max(coalesce(t2.Class,t1.Class)) as Class, - from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_INSERT_DT, - from_utc_timestamp(current_timestamp(),'UTC+8') as ETL_UPDATE_DT, - max(cast(t1.market_ratio as decimal(30,10))) as market_ratio, - coalesce(max(cast(t1.counting_unit / coalesce(t1.unit,1) as decimal(30,10))),1) as counting_unit, - max(t1.bu) as bu, - max(t1.Dosage_Unit) as Dosage_Unit, - max(t1.ta) as ta -from tmp.tmp_dm_ext_xiehe_pack_property t1 -left join ims_pack_property t2 -on t1.market_pack_key = t2.market_pack_key -group by t1.iqvia_pack_code diff --git a/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql:Zone.Identifier b/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/XIEHE/bkp_03 dm_ext_xiehe_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql b/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql deleted file mode 100644 index c544c56..0000000 --- a/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql +++ /dev/null @@ -1,60 +0,0 @@ --- Databricks notebook source ---笛卡尔积生成PKAU维度表 -insert overwrite table tmp.tmp_ims_county_pack_audit -SELECT - PACK.Pack_ID, - if( Pack_Code REGEXP '^[0-9]',right(concat('000000000000',Pack_Code),12),Pack_Code) as PACK_CODE,--RIGHT(concat('0000000',Pack_Code),7) - AUDI.Audit_ID, - AUDI.Audit_Name AS AUDIT_COD, - concat(REPLACE(AUDI.Audit_Name,' ','') , '_', if( Pack_Code REGEXP '^[0-9]',right(concat('000000000000',Pack_Code),12),Pack_Code))as PKAU_INDEX, - from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, - from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -FROM dwd.dwd_gnd_county_dim_pack PACK -CROSS JOIN ( - SELECT - Audit_ID, - Audit_Type, - Audit_Name - FROM dwd.dwd_gnd_county_dim_audit -) AUDI - --- COMMAND ---------- - ----------------------------------------------事实表添加lastyear的KPI字段--------------------------------------------- -insert overwrite table tmp.tmp_ims_county_fact_sales_sum -select -distinct -t1.qtr -,left(t1.qtr,4)*100+right(t1.qtr,1)*3 as yyyymm -,t2.pack_code as pack_cod -,t2.audit_cod as region_cod -,sum(SalesValue_LC ) as SalesValue_LC -,sum(SalesValue_LC_LY) as SalesValue_LC_LY -,sum(Counting_Unit ) as Counting_Unit -,sum(Counting_Unit_LY) as Counting_Unit_LY -,sum(Sales_Unit ) as Sales_Unit -,sum(Sales_Unit_LY) as Sales_Unit_LY -,from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt -,from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from( - select DISTINCT left(concat(year,'Q',month/3),6) as qtr,pack_id,audit_id, - nvl(SalesValue_LC,0) AS SalesValue_LC, - 0 AS SalesValue_LC_LY, - nvl(Counting_Unit,0) AS Counting_Unit, - 0 AS Counting_Unit_LY, - nvl(Sales_Unit,0) AS Sales_Unit, - 0 AS Sales_Unit_LY - from dwd.dwd_gnd_county_fact_sales - union all - select DISTINCT left(concat(left(year,4),'Q',month/3),6) as qtr,pack_id,audit_id, - 0 AS SalesValue_LC, - nvl(SalesValue_LC,0) AS SalesValue_LC_LY, - 0 AS Counting_Unit, - nvl(Counting_Unit,0) AS Counting_Unit_LY, - 0 AS Sales_Unit, - nvl(Sales_Unit,0) AS Sales_Unit_LY - from (select DISTINCT year+1 as year,month,SalesValue_LC,Counting_Unit,Sales_Unit,pack_id,audit_id from dwd.dwd_gnd_county_fact_sales) fact_ly - where year*100+month in (select distinct year*100+month from dwd.dwd_gnd_county_fact_sales) -)t1 -left join tmp.tmp_ims_county_pack_audit t2 on t1.pack_id=t2.pack_id and t1.audit_id=t2.audit_id -group by t1.qtr,t2.pack_code,t2.audit_cod diff --git a/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql:Zone.Identifier b/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/01 tmp_ims_county_fact_sales_sum.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/02 tmp_imscounty_Result.sql b/EXTERNAL/county/02 tmp_imscounty_Result.sql deleted file mode 100644 index 659b4e2..0000000 --- a/EXTERNAL/county/02 tmp_imscounty_Result.sql +++ /dev/null @@ -1,64 +0,0 @@ --- Databricks notebook source --------------------------------------county新倒减拆分需求代码示例之KPI递减------------------------------------- -insert overwrite table tmp.tmp_imscounty_Result -with ObuEast5 as ( - --取OBU 东五的数据(仅包含L01+L02) - SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY -FROM tmp.tmp_ims_county_fact_sales_sum -WHERE region_cod = 'County2' -),CountyProv as ( - --得到省份的数据 -SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY -FROM tmp.tmp_ims_county_fact_sales_sum -WHERE region_cod NOT IN ('County','County2','National') -) -,CountyProvSH as ( - --取河南、四川的数据(肿瘤+非肿瘤) - SELECT YYYYMM,pack_cod,SUM(Counting_Unit) Counting_Unit,sum(Counting_Unit_LY) Counting_Unit_LY,SUM(Sales_Unit) Sales_Unit,sum(Sales_Unit_LY) Sales_Unit_LY,SUM(SalesValue_LC) SalesValue_LC,sum(SalesValue_LC_LY) SalesValue_LC_LY - FROM CountyProv - WHERE region_cod IN ('Sichuan','Henan') - GROUP BY YYYYMM,pack_cod -),BBU_Other as ( - --减去重复的四川河南部分的BBU County数据,即可得到BBU Others数据 - --BBU County = BBU_OtherProv+四川+河南(肿瘤+非肿瘤产品) - SELECT A.YYYYMM,'BBU_OtherProv' region_cod,A.pack_cod,A.Counting_Unit-NVL(B.Counting_Unit,0) Counting_Unit,A.Counting_Unit_LY-NVL(B.Counting_Unit_LY,0) Counting_Unit_LY, - A.Sales_Unit-NVL(B.Sales_Unit,0) Sales_Unit, A.Sales_Unit_LY-NVL(B.Sales_Unit_LY,0) Sales_Unit_LY,A.SalesValue_LC-NVL(B.SalesValue_LC,0) SalesValue_LC,A.SalesValue_LC_LY-NVL(B.SalesValue_LC_LY,0) SalesValue_LC_LY - FROM tmp.tmp_ims_county_fact_sales_sum A - LEFT JOIN CountyProvSH B ON A.YYYYMM = B.YYYYMM AND - A.pack_cod = B.pack_cod - WHERE A.region_cod = 'County' -),CountyProvOthers_tmp as ( - --取山东、江苏、浙江、广东四省数据 - SELECT YYYYMM,pack_cod,SUM(Counting_Unit) Counting_Unit,sum(Counting_Unit_LY) Counting_Unit_LY,SUM(Sales_Unit) Sales_Unit,sum(Sales_Unit_LY) Sales_Unit_LY,SUM(SalesValue_LC) SalesValue_LC,sum(SalesValue_LC_LY) SalesValue_LC_LY - FROM CountyProv - WHERE region_cod IN ('Shandong','Jiangsu','Zhejiang','Guangdong') - GROUP BY YYYYMM,pack_cod -),CountyProvFJ as ( - --通过OBU东五的数据倒减四省数据,得到福建省的数据 - SELECT A.YYYYMM, 'OBU_OtherProv' region_cod,A.pack_cod,A.Counting_Unit-NVL(B.Counting_Unit,0) Counting_Unit,A.Counting_Unit_LY-NVL(B.Counting_Unit_LY,0) Counting_Unit_LY, - A.Sales_Unit-NVL(B.Sales_Unit,0) Sales_Unit, A.Sales_Unit_LY-NVL(B.Sales_Unit_LY,0) Sales_Unit_LY,A.SalesValue_LC-NVL(B.SalesValue_LC,0) SalesValue_LC,A.SalesValue_LC_LY-NVL(B.SalesValue_LC_LY,0) SalesValue_LC_LY - FROM ObuEast5 A - LEFT JOIN CountyProvOthers_tmp B ON A.YYYYMM = B.YYYYMM AND A.pack_cod = B.pack_cod -),Result_NonOthers as ( - --汇总省份+BBU other+obu otter - SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY - FROM CountyProv - UNION ALL - SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY - FROM CountyProvFJ - UNION ALL - SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY - FROM BBU_Other -),Result_NonOthersGroup AS ( - --用于全国产品数据倒减,得到other省份数据 - SELECT YYYYMM,pack_cod,SUM(Counting_Unit) Counting_Unit,sum(Counting_Unit_LY) Counting_Unit_LY,SUM(Sales_Unit) Sales_Unit,sum(Sales_Unit_LY) Sales_Unit_LY,SUM(SalesValue_LC) SalesValue_LC,sum(SalesValue_LC_LY) SalesValue_LC_LY - FROM Result_NonOthers - GROUP BY YYYYMM,pack_cod -) -SELECT YYYYMM,region_cod,pack_cod,SalesValue_LC,SalesValue_LC_LY,Counting_Unit,Counting_Unit_LY,Sales_Unit,Sales_Unit_LY - FROM Result_NonOthers - UNION ALL - SELECT A.YYYYMM,'Others' region_cod,A.pack_cod,A.SalesValue_LC-NVL(B.SalesValue_LC,0) SalesValue_LC,A.SalesValue_LC_LY-NVL(B.SalesValue_LC_LY,0) SalesValue_LC_LY,A.Counting_Unit-NVL(B.Counting_Unit,0) Counting_Unit,A.Counting_Unit_LY-NVL(B.Counting_Unit_LY,0) Counting_Unit_LY, - A.Sales_Unit-NVL(B.Sales_Unit,0) Sales_Unit, A.Sales_Unit_LY-NVL(B.Sales_Unit_LY,0) Sales_Unit_LY - FROM (SELECT * from tmp.tmp_ims_county_fact_sales_sum WHERE region_cod = 'National') A - LEFT JOIN Result_NonOthersGroup B ON A.YYYYMM = B.YYYYMM AND A.pack_cod = B.pack_cod diff --git a/EXTERNAL/county/02 tmp_imscounty_Result.sql:Zone.Identifier b/EXTERNAL/county/02 tmp_imscounty_Result.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/02 tmp_imscounty_Result.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/03 dm_ims_td_county_geo.sql b/EXTERNAL/county/03 dm_ims_td_county_geo.sql deleted file mode 100644 index 8adad6b..0000000 --- a/EXTERNAL/county/03 dm_ims_td_county_geo.sql +++ /dev/null @@ -1,24 +0,0 @@ --- Databricks notebook source ------------------------------------------------创建county geo表----------------------------------------------- -insert overwrite table dm.dm_ims_td_county_geo -with geo as ( - select - distinct - REGION_COD -from tmp.tmp_imscounty_Result -) -select distinct -case when A.PROVINCE_CODE is not null then A.PROVINCE_CODE - when A.PROVINCE_CODE is null and geo.REGION_COD = 'Others' then 'ROC' - when A.PROVINCE_CODE is null and geo.REGION_COD = 'OBU_OtherProv' then 'OBUROC' - when A.PROVINCE_CODE is null and geo.REGION_COD = 'BBU_OtherProv' then 'BBUROC' - end AUDIT_COD, -geo.REGION_COD, -nvl(A.PROVINCE_C,geo.REGION_COD ) PROVINCE_C, -nvl(A.PROVINCE_MAP,geo.REGION_COD ) PROVINCE_MAP, -nvl(INITCAP(A.REGION_CENTER),geo.REGION_COD ) REGION_CENTER -from geo -left join (select * from dm.dm_ims_td_geo where PROVINCE_CODE is not null) A -on geo.REGION_COD = A.PROVINCE - - diff --git a/EXTERNAL/county/03 dm_ims_td_county_geo.sql:Zone.Identifier b/EXTERNAL/county/03 dm_ims_td_county_geo.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/03 dm_ims_td_county_geo.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/04 dws_ext_county_tf_sales.sql b/EXTERNAL/county/04 dws_ext_county_tf_sales.sql deleted file mode 100644 index 290f248..0000000 --- a/EXTERNAL/county/04 dws_ext_county_tf_sales.sql +++ /dev/null @@ -1,36 +0,0 @@ --- Databricks notebook source ----------------------------------bbu county、obu county拆分需求代码示例之事实表字段开发--------------------------------- -insert overwrite table dws.dws_ext_county_tf_sales -select -distinct -cast(cast(t1.YYYYMM as int) as string) as YYYYMM -,concat(left(cast(t1.YYYYMM as int),4 ),'-',right(cast(t1.YYYYMM as int),2),'-01') as DAY_DATE -,t1.pack_cod as PACK_COD -,t1.region_cod as REGION_COD -,geo.AUDIT_COD -,'ALL' as RELATED_FLAG -,'' as ORG_KEY -,'IMS ALL Market' as MARKET -, concat('IMS ALL Market','_',t1.pack_cod ) as MARKET_PACK_KEY -,'' as MARKET_AUDIT_KEY -,'' as SALES_VALUE -,'' as SALES_VALUE_LY -,'' as SALES_VALUE_L2Y -,'' as SALES_UNIT -,'' as SALES_UNIT_LY -,'' as SALES_UNIT_L2Y -,t1.Counting_Unit as CONUTING_UNIT -,t1.Counting_Unit_LY as CONUTING_UNIT_LY -,'' as CONUTING_UNIT_L2Y -,t1.Counting_Unit as PDOT -,'' as PDOT_LY -,'' as PDOT_L2Y -,t1.SalesValue_LC as SALES_VALUE_CAL -,t1.SalesValue_LC_LY as SALES_VALUE_CAL_LY -,t1.Sales_Unit as SALES_UNIT_CAL -,t1.Sales_Unit_LY as SALES_UNIT_CAL_LY -,from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt -,from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from tmp.tmp_imscounty_Result t1 -left join dm.dm_ims_td_county_geo geo -on t1.region_cod = geo.REGION_COD diff --git a/EXTERNAL/county/04 dws_ext_county_tf_sales.sql:Zone.Identifier b/EXTERNAL/county/04 dws_ext_county_tf_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/04 dws_ext_county_tf_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql b/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql deleted file mode 100644 index a914f2f..0000000 --- a/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql +++ /dev/null @@ -1,236 +0,0 @@ --- Databricks notebook source --- county 自己的维度表 dm_ext_county_td_pack_property -insert overwrite table dm.dm_ext_county_td_pack_property --------------------------------------------county事实表中与CHPA匹配到的维度信息-------------------------------------------- - with county_matched_value as ( - select - concat(t2.MARKET,t1.PACK_COD) as MARKET_PACK_KEY, - t1.PACK_COD, - t1.PACK_DES, - t1.STGH_DES, - t1.PACK_LCH, - t1.Family_Code, - t1.Family_Name, - t1.PROD_COD, - t1.PROD_DES, - t1.PROD_DES_C, - 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.CORP_DES_C, - t1.BrandType, - t2.MARKET, - t2.KEY_COMPETITOR, - t1.IS_AZ, - t1.AZ_MAIN, - null AZ_Related, - 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, - t2.Class, - t1.ETL_INSERT_DT, - t1.ETL_UPDATE_DT - from - dm.dm_ims_td_pack_property t1 -left join DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING t2 on t1.PACK_COD = t2.PACK_CODE ---事实表中有yyyymm字段,故要去重,防止数据发散 - - inner join ( - select distinct - PACK_COD - from - dws.dws_ext_county_tf_sales - ) t3 on t1.PACK_COD = t3.PACK_COD - ), - -------------------------------county事实表中与CHPA没有匹配到的维度信息取county维度表里的维度信息------------------------------- - --获取county表与CHPA没有匹配到的MARKET_PACK_KEY - county_notmatched_key as (select - t3.PACK_COD - from - ( - select distinct - PACK_COD - from - dws.dws_ext_county_tf_sales - ) t3 - where - not exists ( - select - 1 - from - dm.dm_ims_td_pack_property t4 - where - t3.PACK_COD = t4.PACK_COD - ) - ), - county_notmatched_value as (--获取county维度表里的维度信息 - select - distinct - t6.MARKET_PACK_KEY, - t6.PACK_COD, - t6.PACK_DES, - t6.STGH_DES, - t6.PACK_LCH, - t6.Family_Code, - t6.Family_Name, - t6.PROD_COD, - t6.PROD_DES, - t6.PROD_DES_C, - t6.CMPS_COD, - t6.CMPS_DES, - t6.ATC1_COD, - t6.ATC2_COD, - t6.ATC3_COD, - t6.ATC4_COD, - t6.APP1_COD, - t6.APP2_COD, - t6.APP3_COD, - t6.BIO_DESC, - t6.GENE_ORIG_DESC, - t6.ETH_OTC_DESC, - t6.NRDL_DESC, - t6.NRDL_Entry_Date, - t6.EDL_DESC, - t6.TCM_DESC, - t6.PAED_DESC, - t6.GQCE_DESC, - t6.VBP_DESC, - t6.MANU_COD, - t6.MANU_DES, - t6.MNFL_COD, - t6.MNFL_DES, - t6.CORP_COD, - t6.CORP_DES, - t6.CORP_DES_C, - t6.BrandType, - t6.MARKET, - t6.KEY_COMPETITOR, - t6.IS_AZ, - t6.AZ_MAIN, - t6.AZ_Related, - t6.atc1_des, - t6.atc1_des_c, - t6.atc2_des, - t6.atc2_des_c, - t6.atc3_des, - t6.atc3_des_c, - t6.atc4_des, - t6.atc4_des_c, - t6.app1_des, - t6.app1_des_c, - t6.app2_des, - t6.app2_des_c, - t6.app3_des, - t6.app3_des_c, - t6.Class, - from_utc_timestamp(current_timestamp, 'UTC+8') ETL_INSERT_DT, - from_utc_timestamp(current_timestamp, 'UTC+8') ETL_UPDATE_DT - from - county_notmatched_key t5 - left join dm.dm_ims_county_td_pack_property t6 --此表有重复数据(etl时间不同) - on t5.PACK_COD = t6.PACK_COD - ), - county_total_pack_property as (select - * - from - county_matched_value - union - select - * - from - county_notmatched_value - ) - 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, - 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, - MNFL_COD, - MNFL_DES, - CORP_COD, - CORP_DES, - CORP_DES_C, - BrandType, - MARKET, - upper(NVL(KEY_COMPETITOR, 'Others')) as 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 - from - county_total_pack_property \ No newline at end of file diff --git a/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql:Zone.Identifier b/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/05 dm_ext_county_td_pack_property.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/06 dm_td_county_pack_region.sql b/EXTERNAL/county/06 dm_td_county_pack_region.sql deleted file mode 100644 index fa14bdd..0000000 --- a/EXTERNAL/county/06 dm_td_county_pack_region.sql +++ /dev/null @@ -1,106 +0,0 @@ --- Databricks notebook source --- --OBU COUNTY 改为 OBU EAST5、OBU_BU_COUNTY 改为 OBU NON EAST5 --- drop table if exists dm.dm_td_county_pack_region; --- create table if not exists dm.dm_td_county_pack_region --- using delta --- as --- with tmp as ( --- select --- t1.pack_cod, --- t1.region_cod, --- t2.ATC1_COD, --- t2.ATC2_COD --- from (select distinct PACK_COD,REGION_COD from dws.dws_ext_county_tf_sales) t1 --- left join (select distinct PACK_COD,ATC1_COD,ATC2_COD from dm.dm_ext_county_td_pack_property) t2 --- on t1.PACK_COD = t2.pack_cod --- ),obu_county as ( --- select pack_cod,region_cod,'OBU East5' region_type from tmp where region_cod in ('Shandong','Jiangsu','Zhejiang','Guangdong','OBU_OtherProv') and (ATC2_COD = 'L01' OR ATC2_COD = 'L02')--ATC1_COD = 'L' --- ),bbu_county as ( --- select pack_cod,region_cod,'BBU COUNTY' region_type from tmp where region_cod in('Henan','Sichuan','BBU_OtherProv') --- and ATC1_COD <> 'L' --- ),bbu_bu_county as ( --- select pack_cod,region_cod,'BBU_BU_COUNTY' region_type from tmp where region_cod in ('Guangdong','Zhejiang','Shandong','Jiangsu','Others') and ATC1_COD <> 'L' --- ),obu_bu_county as ( --- select pack_cod,region_cod,'OBU NonEast5' region_type from tmp where region_cod in ('Henan','Sichuan','Others','BBU_OtherProv') and (ATC2_COD = 'L01' OR ATC2_COD = 'L02') --- ),county_all as ( --- select * from obu_county --- union --- select * from bbu_county --- union --- select * from bbu_bu_county --- union --- select * from obu_bu_county --- ) --- select --- pack_cod, --- region_cod, --- region_type --- from county_all order by region_type - --- COMMAND ---------- - ----------------------------------------------------------------------------------- ---修改时间:20240913 ---修改人:FanXujia ---修改内容: ---划分BBU_COUNTY、BBU_BU_COUNTY两个区域时,去掉ATC1_COD <> 'L'的限制 ---这个需求使得BBU和OBU会有一部分重叠的区域 ---因此对区域划分逻辑进行调整 ------几个region_cod的含义 ---OBU_OtherProv:福建的ATC2=L01、L02 ---BBU_OtherProv:BBU_COUNTY的18个省减去四川、河南 ---Others:其他省份,这里面包含了福建的ATC2<>L01、L02的数 ----------------------------------------------------------------------------------- -insert overwrite table dm.dm_td_county_pack_region -with tmp as ( - select - t1.pack_cod, - t1.region_cod, - t2.ATC1_COD, - t2.ATC2_COD -from (select distinct PACK_COD,REGION_COD from dws.dws_ext_county_tf_sales) t1 -left join (select distinct PACK_COD,ATC1_COD,ATC2_COD from dm.dm_ext_county_td_pack_property) t2 -on t1.PACK_COD = t2.pack_cod -) ---单独bbu_bu_county -,bbu_bu_county as ( - select pack_cod,region_cod,'BBU_BU_COUNTY' region_type from tmp - where region_cod in ('Guangdong','Jiangsu','Others','Shandong','Zhejiang') and ATC2_COD NOT IN ('L01','L02') -) ---bbu_bu_county与OBU East5共有 -,bbu_bu_county_obu_East5 as ( - select pack_cod,region_cod,'bbu_bu_county_obu_East5' region_type from tmp - where region_cod in ('Guangdong','Jiangsu','Shandong','Zhejiang','OBU_OtherProv') and ATC2_COD in ('L01','L02') -) ---bbu_bu_county与OBU NonEast5共有 -,bbu_bu_county_obu_nonEast5 as ( - select pack_cod,region_cod,'bbu_bu_county_obu_nonEast5' region_type from tmp - where region_cod in ('Others') and ATC2_COD in ('L01','L02') -) ---bbu_county与OBU NonEast5共有 -,bbu_county_obu_nonEast5 as ( - select pack_cod,region_cod,'bbu_county_obu_nonEast5' region_type from tmp - where region_cod in ('BBU_OtherProv','Henan','Sichuan') and ATC2_COD in ('L01','L02') -) ---单独bbu_county -,bbu_county as ( - select pack_cod,region_cod,'BBU County' region_type from tmp - where region_cod in('BBU_OtherProv','Henan','Sichuan') and ATC2_COD NOT IN ('L01','L02') -) ---全部 -,county_all as ( - select * from bbu_bu_county - union - select * from bbu_bu_county_obu_East5 - union - select * from bbu_bu_county_obu_nonEast5 - union - select * from bbu_county_obu_nonEast5 - union - select * from bbu_county -) -select - pack_cod, - region_cod, - region_type -from county_all order by region_type diff --git a/EXTERNAL/county/06 dm_td_county_pack_region.sql:Zone.Identifier b/EXTERNAL/county/06 dm_td_county_pack_region.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/06 dm_td_county_pack_region.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql b/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql deleted file mode 100644 index 73ec3f4..0000000 --- a/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql +++ /dev/null @@ -1,37 +0,0 @@ --- Databricks notebook source ---county事实表加上region_type字段 -insert overwrite table dm.dm_ext_county_tf_sales_region -select - A.YYYYMM, - A.DAY_DATE, - A.PACK_COD, - A.REGION_COD, - A.AUDIT_COD, - A.RELATED_FLAG, - A.ORG_KEY, - A.MARKET, - A.MARKET_PACK_KEY, - A.MARKET_AUDIT_KEY, - A.SALES_VALUE, - A.SALES_VALUE_LY, - A.SALES_VALUE_L2Y, - A.SALES_UNIT, - A.SALES_UNIT_LY, - A.SALES_UNIT_L2Y, - A.CONUTING_UNIT, - A.CONUTING_UNIT_LY, - A.CONUTING_UNIT_L2Y, - A.PDOT, - A.PDOT_LY, - A.PDOT_L2Y, - A.SALES_VALUE_CAL, - A.SALES_VALUE_CAL_LY, - A.SALES_UNIT_CAL, - A.SALES_UNIT_CAL_LY, - A.etl_insert_dt, - A.etl_update_dt, - B.region_type as REGION_TYPE -from dws.dws_ext_county_tf_sales A -left join dm.dm_td_county_pack_region B -on A.PACK_COD = B.pack_cod and A.REGION_COD = B.region_cod -order by region_type diff --git a/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql:Zone.Identifier b/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/07 dm_ext_county_tf_sales_region.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql b/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql deleted file mode 100644 index 2d48521..0000000 --- a/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql +++ /dev/null @@ -1,146 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK_PROPERTY --- ( --- MARKET_PACK_KEY STRING, --- PACK_CODE STRING, --- PACK_DESC STRING, --- STGH_DESC STRING, --- PACK_LCH STRING, --- FAMILY_CODE STRING, --- FAMILY_NAME STRING, --- PROD_CODE STRING, --- PROD_DESC STRING, --- PROD_DESC_C STRING, --- CMPS_CODE STRING, --- CMPS_DESC STRING, --- CMPS_DESC_C 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_V STRING, --- VBP_DESC STRING, --- MANU_CODE STRING, --- MANU_DESC STRING, --- MANU_DESC_C STRING, --- MNFL_CODE STRING, --- MNFL_DESC STRING, --- CORP_CODE STRING, --- CORP_DESC STRING, --- CORP_DESC_C STRING, --- BRANDTYPE STRING, --- MARKET STRING, --- KEY_COMPETITOR STRING, --- IS_AZ STRING, --- AZ_MAIN STRING, --- AZ_RELATED STRING, --- ATC1_DESC STRING, --- ATC1_DESC_C STRING, --- ATC2_DESC STRING, --- ATC2_DESC_C STRING, --- ATC3_DESC STRING, --- ATC3_DESC_C STRING, --- ATC4_DESC STRING, --- ATC4_DESC_C STRING, --- APP1_DESC STRING, --- APP1_DESC_C STRING, --- APP2_DESC STRING, --- APP2_DESC_C STRING, --- APP3_DESC STRING, --- APP3_DESC_C STRING, --- CLASS STRING, --- MARKET_RATIO STRING, --- COUNTINGUNIT STRING, --- VBP_BRAND STRING, --- REPLENISH_FALG STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack_property'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack_property'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_PACK_PROPERTY -SELECT - MARKET_PACK_KEY, - PACK_COD AS PACK_CODE, - PACK_DES AS PACK_DESC, - STGH_DES AS STGH_DESC, - PACK_LCH, - FAMILY_CODE, - FAMILY_NAME, - PROD_COD AS PROD_CODE, - PROD_DES AS PROD_DESC, - PROD_DES_C AS PROD_DESC_C, - CMPS_COD AS CMPS_CODE, - CMPS_DES AS CMPS_DESC, - NULL AS CMPS_DESC_C, - ATC1_COD AS ATC1_CODE, - ATC2_COD AS ATC2_CODE, - ATC3_COD AS ATC3_CODE, - ATC4_COD AS ATC4_CODE, - APP1_COD AS APP1_CODE, - APP2_COD AS APP2_CODE, - APP3_COD AS APP3_CODE, - 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_V, - VBP_DESC, - MANU_COD AS MANU_CODE, - MANU_DES AS MANU_DESC, - NULL AS MANU_DESC_C, - MNFL_COD AS MNFL_CODE, - MNFL_DES AS MNFL_DESC, - CORP_COD AS CORP_CODE, - CORP_DES AS CORP_DESC, - CORP_DES_C AS CORP_DESC_C, - BRANDTYPE, - MARKET, - KEY_COMPETITOR, - IS_AZ, - AZ_MAIN, - AZ_RELATED, - ATC1_DES AS ATC1_DESC, - ATC1_DES_C AS ATC1_DESC_C, - ATC2_DES AS ATC2_DESC, - ATC2_DES_C AS ATC2_DESC_C, - ATC3_DES AS ATC3_DESC, - ATC3_DES_C AS ATC3_DESC_C, - ATC4_DES AS ATC4_DESC, - ATC4_DES_C AS ATC4_DESC_C, - APP1_DES AS APP1_DESC, - APP1_DES_C AS APP1_DESC_C, - APP2_DES AS APP2_DESC, - APP2_DES_C AS APP2_DESC_C, - APP3_DES AS APP3_DESC, - APP3_DES_C AS APP3_DESC_C, - CLASS, - NULL AS MARKET_RATIO, - NULL AS COUNTINGUNIT, - NULL AS VBP_BRAND, - NULL AS REPLENISH_FALG, - 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_EXT_COUNTY_TD_PACK_PROPERTY; \ No newline at end of file diff --git a/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql:Zone.Identifier b/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/08 DM_TD_EXT_COUNTY_PACK_PROPERTY.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql b/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql deleted file mode 100644 index da495ff..0000000 --- a/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql +++ /dev/null @@ -1,128 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TF_EXT_COUNTY_SALES ( --- YYYYMM STRING, --- PACK_CODE STRING, --- CORP_CODE STRING, --- AUDIT_CODE STRING, --- PLATFORM_TYPE STRING, --- STORE_NAME STRING, --- STORE_TYPE STRING, --- REGION_TYPE STRING, --- PACK_FLAG INT, --- PROD_FLAG INT, --- DTP_FLAG INT, --- SALES_UNIT_CAL DECIMAL(38,10), --- SALES_UNIT_CAL_LY DECIMAL(38,10), --- SALES_VALUE_CAL DECIMAL(38,10), --- SALES_VALUE_CAL_LY DECIMAL(38,10), --- CONUTING_UNIT DECIMAL(38,10), --- CONUTING_UNIT_LY DECIMAL(38,10), --- DATA_SOURCE STRING, --- INST_CODE STRING COMMENT '内部机构编码', --- CMPS_FLAG STRING COMMENT '分子式标签', --- DEPT_NAME STRING COMMENT '科室名称', --- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', --- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', --- NEW_CODE STRING COMMENT '主数据关联CODE', --- AREA STRING COMMENT '城市', --- H_LEVEL STRING COMMENT '医院类型', --- REIMBURSE STRING COMMENT '报销情况', --- REIMBURSE_TYPE STRING COMMENT '报销类型', --- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES ( - YYYYMM, - PACK_CODE, - AUDIT_CODE, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - PRESCRIPTION, - PRESCRIPTION_LY, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - CMPS_FLAG, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - INST_CODE, - DEPT_NAME, - NEW_CODE, - AREA, - H_LEVEL, - REIMBURSE, - REIMBURSE_TYPE, - PRESCRIPTION_SOURCE, - CORP_CODE, - ETL_INSERT_DT, - ETL_UPDATE_DT -) - SELECT - A.YYYYMM, - A.PACK_COD AS PACK_CODE, - A.AUDIT_COD AS AUDIT_CODE, - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(SALES_UNIT_CAL) SALES_UNIT_CAL, - SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY, - SUM(SALES_VALUE_CAL) SALES_VALUE_CAL, - SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - SUM(CONUTING_UNIT) CONUTING_UNIT, - SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - NVL(A.REGION_TYPE, '') REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_CODE, --可以移除,报告没有使用 - ------------------------------------- - 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_ext_county_tf_sales_region A - where - A.YYYYMM >= '202001' - AND A.MARKET = 'IMS ALL Market' - GROUP BY - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - A.REGION_TYPE \ No newline at end of file diff --git a/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql:Zone.Identifier b/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/09 DM_TF_EXT_COUNTY_SALES.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql b/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql deleted file mode 100644 index ac83197..0000000 --- a/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql +++ /dev/null @@ -1,208 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_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_county_pack2market'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market'; - --- COMMAND ---------- - --- 使用 EXCEPT(集合差操作)简化逻辑 -INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_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_COUNTY_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_COUNTY_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; \ No newline at end of file diff --git a/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql:Zone.Identifier b/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/10 DM_TD_EXT_COUNTY_PACK2MARKET.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql b/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql deleted file mode 100644 index ffb3d31..0000000 --- a/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql +++ /dev/null @@ -1,30 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- CMPS_CODE 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_county_market_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_RATIO -SELECT - DISTINCT - MARKET, - PACK_CODE, - CMPS_CODE, - STARTTIME, - ENDTIME, - 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_COUNTY_PACK2MARKET -WHERE UPPER(MARKET) NOT LIKE '%ALL%' \ No newline at end of file diff --git a/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql:Zone.Identifier b/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/11 DM_TD_EXT_COUNTY_MARKET_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql b/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql deleted file mode 100644 index 79bdb7e..0000000 --- a/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql +++ /dev/null @@ -1,163 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO ( --- MARKET STRING, --- PACK_CODE STRING, --- VALUE_BRAND_RATIO FLOAT, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO FLOAT, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO FLOAT, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO FLOAT, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_brand_ratio'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_brand_ratio'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO -SELECT - DISTINCT - T1.MARKET, - T1.PACK_CODE, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.RATIO - ELSE NVL(T5.RATIO, 1) END AS VALUE_BRAND_RATIO, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.STARTTIME - ELSE NVL(T5.STARTTIME, 200001) END AS VALUE_BRAND_RATIO_START, - CASE - WHEN T2.RATIO IS NOT NULL THEN T2.ENDTIME - ELSE NVL(T5.ENDTIME, 299912) END AS VALUE_BRAND_RATIO_END, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.RATIO - ELSE NVL(T6.RATIO, 1) END AS UNIT_BRAND_RATIO, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.STARTTIME - ELSE NVL(T6.STARTTIME, 200001) END AS UNIT_BRAND_START, - CASE - WHEN T3.RATIO IS NOT NULL THEN T3.ENDTIME - ELSE NVL(T6.ENDTIME, 299912) END AS UNIT_BRAND_END, - 1 AS COUNTINGUNIT_BRAND_RATIO, - 200001 AS COUNTINGUNIT_BRAND_START, - 299912 AS COUNTINGUNIT_BRAND_END, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.RATIO - ELSE NVL(T7.RATIO, 1) END AS PDOT_BRAND_RATIO, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.STARTTIME - ELSE NVL(T7.STARTTIME, 200001) END AS PDOT_BRAND_START, - CASE - WHEN T4.RATIO IS NOT NULL THEN T4.ENDTIME - ELSE NVL(T7.ENDTIME, 299912) END AS PDOT_BRAND_END, - 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_COUNTY_MARKET_RATIO T1 -LEFT JOIN ( --VALUE--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'PACK' -) T2 ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_COD -LEFT JOIN ( --UNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'PACK' -) T3 ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_COD -LEFT JOIN ( --COUNTINGUNIT--PACK - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'PACK' -) T4 ON T1.MARKET = T4.MARKET AND T1.PACK_CODE = T4.PACK_COD -LEFT JOIN ( --VALUE--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'VALUE' AND UPPER(LEVEL) = 'MOLECULE' -) T5 ON T1.MARKET = T5.MARKET AND T1.CMPS_CODE = T5.CMPS_COD -LEFT JOIN ( --UNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'UNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T6 ON T1.MARKET = T6.MARKET AND T1.CMPS_CODE = T6.CMPS_COD -LEFT JOIN ( --COUNTINGUNIT--MOLECULE - SELECT - DISTINCT - MARKET, - CMPS_COD, - CMPS_DES, - PACK_COD, - PACK_DES, - LEVEL, - TYPE, - CAST(RATIO AS FLOAT) AS RATIO, - CAST(STARTTIME AS INT) STARTTIME, - CAST(ENDTIME AS INT) ENDTIME - FROM DWD.DWD_GND_IMS_TBLBRANDRATIO_BYMONTH - WHERE UPPER(TYPE) = 'COUNTINGUNIT' AND UPPER(LEVEL) = 'MOLECULE' -) T7 ON T1.MARKET = T7.MARKET -AND T1.CMPS_CODE = T7.CMPS_COD - --- COMMAND ---------- - diff --git a/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql:Zone.Identifier b/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/12 DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql b/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql deleted file mode 100644 index b5a5502..0000000 --- a/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql +++ /dev/null @@ -1,62 +0,0 @@ --- Databricks notebook source --- CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING --- ( --- PACK_CODE STRING, --- MARKET STRING, --- CLASS STRING, --- KEY_COMPETITOR STRING, --- MARKET_RATIO STRING, --- STARTTIME STRING, --- ENDTIME STRING, --- VALUE_BRAND_RATIO STRING, --- VALUE_BRAND_RATIO_START STRING, --- VALUE_BRAND_RATIO_END STRING, --- UNIT_BRAND_RATIO STRING, --- UNIT_BRAND_START STRING, --- UNIT_BRAND_END STRING, --- COUNTINGUNIT_BRAND_RATIO STRING, --- COUNTINGUNIT_BRAND_START STRING, --- COUNTINGUNIT_BRAND_END STRING, --- PDOT_BRAND_RATIO STRING, --- PDOT_BRAND_START STRING, --- PDOT_BRAND_END STRING, --- ETL_INSERT_DT TIMESTAMP, --- ETL_UPDATE_DT TIMESTAMP --- ) --- USING delta --- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_pack_mapping'; --- -- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_pack_mapping'; - --- COMMAND ---------- - -INSERT OVERWRITE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING -SELECT DISTINCT - T1.PACK_CODE, - T1.MARKET, - T1.CLASS, - T1.KEY_COMPETITOR, - T2.MARKET_RATIO, - T2.STARTTIME, - T2.ENDTIME, - T3.VALUE_BRAND_RATIO, - T3.VALUE_BRAND_RATIO_START, - T3.VALUE_BRAND_RATIO_END, - T3.UNIT_BRAND_RATIO, - T3.UNIT_BRAND_START, - T3.UNIT_BRAND_END, - T3.COUNTINGUNIT_BRAND_RATIO, - T3.COUNTINGUNIT_BRAND_START, - T3.COUNTINGUNIT_BRAND_END, - T3.PDOT_BRAND_RATIO, - T3.PDOT_BRAND_START, - T3.PDOT_BRAND_END, - 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_COUNTY_PACK_PROPERTY T1 -LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_RATIO T2 - ON T1.MARKET = T2.MARKET AND T1.PACK_CODE = T2.PACK_CODE -LEFT JOIN DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO T3 - ON T1.MARKET = T3.MARKET AND T1.PACK_CODE = T3.PACK_CODE -WHERE UPPER(T1.MARKET) NOT LIKE "%ALL%" \ No newline at end of file diff --git a/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql:Zone.Identifier b/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/county/13 DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql b/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql deleted file mode 100644 index 667d2f6..0000000 --- a/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql +++ /dev/null @@ -1,237 +0,0 @@ --- Databricks notebook source -------------------------------------------------------------------------------------------- ---修改时间:20241021 ---修改人:Fanxujia ---修改内容: ---提供给AIA Dashboard的机构维度表 ---机构 + 市场粒度 -------------------------------------------------------------------------------------------- - --- COMMAND ---------- - -insert overwrite table dm.dm_td_aia_inst_mkt --Pack_cod以及对应的market -WITH ALL_pack_mkt AS ( - SELECT DISTINCT - PACK_CODE AS PACK_COD, - MARKET - FROM DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING -), - --- 销量表里所有机构 + 市场维度 -ALL_INS_mkt AS ( - SELECT DISTINCT - AUDIT_COD AS inst_code, - MARKET - FROM dm.dm_tf_ext_unionall_market_sales - WHERE DATA_SOURCE = 'AIA(Monthly)' -), - --- SalesDetail报告用的潜力事实表 --- 其中的潜力市场名字与外部数据报告里的市场的名字不同,不能直接关联 --- 关联思路:潜力市场 ---> 内部产品 ---> 外部产品 ---> 外部市场 -potential_decile1 AS ( - SELECT DISTINCT - p1.inst_code, - p1.mkt_code, - p1.mkt_name, - p1.potential_type, - p1.potential_type_name, - p1.is_defult_potential_type, - INT(p1.decile) AS decile, - p1.potential_value, - IFNULL(p1.default_decile, 10) AS default_decile - FROM dm.dm_tf_potential p1 - WHERE yyyymm = ( - SELECT KEY_VALUE - FROM dm.dm_td_date_config - WHERE key_code = 'pfmc_latest_mon' - ) -), - --- 潜力市场与内部Brand的mapping -brand_market_mapping AS ( - SELECT DISTINCT - brand_code, - market_code - FROM dwd.dwd_gnd_link_family_imsmkt - WHERE active_status = 1 -), - --- 内外部产品编码映射表:获取内部Brand与外部pack的mapping -imscode_azcode AS ( - SELECT DISTINCT - brandcode, - CASE - WHEN LENGTH(ims_pack_cod) < 7 AND ims_pack_cod REGEXP '^[0-9]' - THEN RIGHT(CONCAT('000000000000', ims_pack_cod), 12) - ELSE ims_pack_cod - END AS ims_pack_cod - FROM dwd.dwd_td_imscode_azcode - WHERE ims_pack_cod IS NOT NULL -), - --- 将潜力数据、Decile数据对应到外部的market -potential_decile2 AS ( - SELECT DISTINCT - t1.inst_code, - t1.mkt_code AS potential_mkt_code, - t1.mkt_name AS potential_mkt_name, - t4.market, - t1.potential_type, - t1.potential_type_name, - t1.is_defult_potential_type, - t1.potential_value, - t1.decile, - CASE - WHEN t1.decile <= 3 THEN 'Decile 1-3' - WHEN t1.decile <= 5 THEN 'Decile 4-5' - WHEN t1.decile <= 8 THEN 'Decile 6-8' - WHEN t1.decile <= 10 THEN 'Decile 9-10' - END AS decile_group - FROM potential_decile1 t1 - INNER JOIN brand_market_mapping t2 - ON t1.mkt_code = t2.market_code - INNER JOIN imscode_azcode t3 - ON t2.brand_code = t3.brandcode - INNER JOIN ALL_pack_mkt t4 - ON t3.ims_pack_cod = t4.pack_cod -), - --- 外部市场与默认潜力市场的mapping关系(一对一的关系) --- 增加对手工数据的处理 -default_potential_market AS ( - SELECT DISTINCT - REPLACE(REPLACE(REPLACE(UPPER(market), '(', '('), ')', ')'), ' (', '(') AS market, - REPLACE( - REPLACE(REPLACE(UPPER(Default_Potential_Market), '(', '('), ')', ')'), - ' (', - '(' - ) AS Default_Potential_Market - FROM dwd.dwd_gnd_ext_default_potential_market_link -), - --- 潜力数据只到机构 + 市场,不到产品 -potential_decile3 AS ( - SELECT DISTINCT - t1.inst_code, - t1.market, - NVL(t2.potential_mkt_code, '') AS potential_mkt_code, - NVL(t2.potential_mkt_name, '') AS potential_mkt_name, - CASE - WHEN t2.potential_mkt_name IS NOT NULL AND t3.default_potential_market IS NULL - THEN '0' - WHEN t2.potential_mkt_name IS NULL - THEN '' - ELSE '1' - END AS is_defult_potential_mkt, - NVL(t2.potential_type, '') AS potential_type_code, - NVL(t2.potential_type_name, '') AS potential_type_name, - NVL(t2.is_defult_potential_type, '') AS is_defult_potential_type, - -- 潜力值字段类型decimal(25,8),不转成空字符串了 - t2.potential_value, - NVL(t2.decile, '') AS decile, - NVL(t2.decile_group, '') AS decile_group - FROM ALL_INS_mkt t1 - LEFT JOIN potential_decile2 t2 - ON t1.inst_code = t2.inst_code - AND t1.market = t2.market - LEFT JOIN default_potential_market t3 - ON REPLACE(REPLACE(REPLACE(UPPER(t1.market), '(', '('), ')', ')'), ' (', '(') = t3.market - AND REPLACE(REPLACE(REPLACE(UPPER(t2.potential_mkt_name), '(', '('), ')', ')'), ' (', '(') = t3.Default_Potential_Market -) - -SELECT DISTINCT - t1.inst_code, - t1.market, - t2.potential_mkt_code, - t2.potential_mkt_name, - t2.is_defult_potential_mkt, - t2.potential_type_code, - t2.potential_type_name, - t2.is_defult_potential_type, - t2.potential_value, - t2.decile, - t2.decile_group, - CASE - WHEN t2.decile = '' THEN 99 - ELSE CAST(t2.decile AS INT) - END AS decile_order, - CASE - WHEN t1.inst_code IS NULL OR t1.inst_code = '' THEN 'ROC' - ELSE t1.inst_code - END AS audit_cod, - 'AIA(Monthly)' AS DATA_SOURCE -FROM ALL_INS_mkt t1 -LEFT JOIN potential_decile3 t2 - ON t1.inst_code = t2.inst_code - AND t1.MARKET = t2.MARKET; - --- COMMAND ---------- - ---没有默认潜力市场的市场,增加一条假的默认潜力市场数据 -with mkt1 as ( - select distinct - market - from - dm.dm_td_aia_inst_mkt -), -mkt2 as ( - select distinct - market - from - dm.dm_td_aia_inst_mkt - where - is_defult_potential_mkt = '1' -), -mkt as ( - select - a.market - from - mkt1 a - left join mkt2 b - on a.market = b.market - where - b.market is null -), -all_inst_mkt as ( - select distinct - t1.inst_code, - t1.audit_cod, - t1.market - from - dm.dm_td_aia_inst_mkt t1 - inner join mkt t2 - on t1.market = t2.market -) insert into dm.dm_td_aia_inst_mkt ( - inst_code, - market, - potential_mkt_code, - potential_mkt_name, - is_defult_potential_mkt, - potential_type_code, - potential_type_name, - is_defult_potential_type, - potential_value, - decile, - decile_group, - decile_order, - audit_cod, - DATA_SOURCE -) - select distinct - inst_code, - market, - '' as potential_mkt_code, - '' as potential_mkt_name, - '1' as is_defult_potential_mkt, - '' as potential_type_code, - '' as potential_type_name, - '1' as is_defult_potential_type, - null as potential_value, - '' as decile, - '' as decile_group, - 99 as decile_order, - audit_cod, - 'AIA(Monthly)' as DATA_SOURCE - from - all_inst_mkt \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/01 dm_td_aia_inst_mkt.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql b/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql deleted file mode 100644 index 179ea10..0000000 --- a/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql +++ /dev/null @@ -1,293 +0,0 @@ --- Databricks notebook source --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - -------------------------------------------------------------------------------------------- ---修改时间:20250109 ---修改人:Caoyining ---修改内容: ---提供给AIA Dashboard的权限表 ---销售人员给自己岗位对应的数据,针对部分AIA Org N+1特殊岗位给予特定DSM角色RSM的岗位权限 -------------------------------------------------------------------------------------------- -create or replace temporary view aia_auth_sales -as ---从销量表取到全部的机构、市场组合 -with ALL_AUDIT_Market as ( -select distinct t1.AUDIT_COD,NVL(t2.market,'ALL Market') market -from dm.dm_ext_aia_sales t1 -left join DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING t2 -on t1.pack_cod = t2.PACK_CODE -) - ---CVH架构月 -,CVH_YM as ( -select key_value as yyyymm -from dm.dm_td_date_config -where key_code = 'pfmc_cvh' -) ---获取特定dsm的rsm岗位号 -,org_dsmforrsm as ( - select distinct rsm_trty_code - from dm.dm_td_org org - inner join CVH_YM ym - on org.yyyymm = ym.yyyymm - where dsm_trty_code in( - 'DM_EG0072' - ,'DM_EG0089' - ,'DM_EG0101' - ,'DM_EG0141' - ,'DM_EG0066' - ,'DM_EG0173' - ,'DM_EG0090' - ,'DM_EG0045' - ,'DM_EG0011' - ,'DM_EG0102') -) -,dsm_rsm_kcode as ( - select distinct dsm_kcode,dsm_name,rsm_kcode - from dm.dm_td_org org - inner join CVH_YM ym - on org.yyyymm = ym.yyyymm - where dsm_trty_code in( - 'DM_EG0072' - ,'DM_EG0089' - ,'DM_EG0101' - ,'DM_EG0141' - ,'DM_EG0066' - ,'DM_EG0173' - ,'DM_EG0090' - ,'DM_EG0045' - ,'DM_EG0011' - ,'DM_EG0102') -) ---特定dsm岗位org表 -,org_dsm as ( -select distinct -t1.yyyymm, -t1.bu_code, -t1.nsd_kcode, -t1.nsd_name, -t1.rsd_kcode, -t1.rsd_name, -t1.rsm_kcode, -t1.rsm_name, -t1.dsm_kcode, -t1.dsm_name, -t1.mr_trty_code -from dm.dm_td_org t1 -inner join CVH_YM t2 -on t1.yyyymm = t2.yyyymm -inner join org_dsmforrsm t3 -on t1.rsm_trty_code = t3.rsm_trty_code -) -,dsm_rsm_all as ( - select - t2.yyyymm, - t2.bu_code, - t2.nsd_kcode, - t2.nsd_name, - t2.rsd_kcode, - t2.rsd_name, - t2.rsm_kcode, - t2.rsm_name, - t1.dsm_kcode, - t1.dsm_name, - t2.mr_trty_code - from dsm_rsm_kcode t1 - left join org_dsm t2 - on t1.rsm_kcode = t2.rsm_kcode -) ---剔除特定dsm岗位org表 -,orgWithoutDsm as ( -select distinct -t1.yyyymm, -t1.bu_code, -t1.nsd_kcode, -t1.nsd_name, -t1.rsd_kcode, -t1.rsd_name, -t1.rsm_kcode, -t1.rsm_name, -t1.dsm_kcode, -t1.dsm_name, -t1.mr_trty_code -from dm.dm_td_org t1 -inner join CVH_YM t2 -on t1.yyyymm = t2.yyyymm -where t1.dsm_trty_code not in ( -'DM_EG0072' -,'DM_EG0089' -,'DM_EG0101' -,'DM_EG0141' -,'DM_EG0066' -,'DM_EG0173' -,'DM_EG0090' -,'DM_EG0045' -,'DM_EG0011' -,'DM_EG0102') -) ---territory表 -,territory as ( -select distinct -t1.yyyymm, -t1.trty_code, -t1.inst_code, -t1.family_code -from dm.dm_td_sd_territory_indication t1 -inner join CVH_YM t2 -on t1.yyyymm = t2.yyyymm -where t1.bu not in ('CUBE','KA') -) ---PACK与market的mapping关系表 -,pack_market as ( -select distinct pack_code as pack_cod,market -from DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING -) ---将内部的Family_code转为外部的pack_cod -,inst_market as ( -select distinct -t1.yyyymm, -t1.trty_code, -t1.inst_code, -t5.market -from territory t1 -left join dwd.dwd_td_institution t2 -on t1.inst_code = t2.inst_code -left join cdw_dwd_dim_product_wide t3 -on t1.family_code = t3.prd_family_cd -left join dwd.dwd_td_imscode_azcode t4 -on t3.prd_brand_cd = t4.brandcode -left join pack_market t5 -on t4.ims_pack_cod = t5.pack_cod -) - -select distinct -t2.dsm_kcode as KCODE, -'dsm' as role, -t2.mr_trty_code, -concat(t0.AUDIT_COD,'AIA(Monthly)') as AUDIT_SOURCE, -concat(t0.MARKET,'AIA(Monthly)') as MKT_SOURCE, -concat(t2.bu_code,'AIA(Monthly)') as BU_CODE_AUTH, -concat(t3.pack_cod,'AIA(Monthly)') as PACK_SOURCE -from ALL_AUDIT_Market t0 -inner join inst_market t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -inner join orgWithoutDsm t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -inner join pack_market t3 -on t1.market = t3.market --- where t2.dsm_name <> 'Vacant' - -union all -select distinct -t2.dsm_kcode as KCODE, -'dsm' as role, -t2.mr_trty_code, -concat(t0.AUDIT_COD,'AIA(Monthly)') as AUDIT_SOURCE, -concat(t0.MARKET,'AIA(Monthly)') as MKT_SOURCE, -concat(t2.bu_code,'AIA(Monthly)') as BU_CODE_AUTH, -concat(t3.pack_cod,'AIA(Monthly)') as PACK_SOURCE -from ALL_AUDIT_Market t0 -inner join inst_market t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -inner join dsm_rsm_all t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -inner join pack_market t3 -on t1.market = t3.market --- where t2.dsm_name <> 'Vacant' - -union all -select distinct -t2.rsm_kcode as KCODE, -'rsm' as role, -t2.mr_trty_code, -concat(t0.AUDIT_COD,'AIA(Monthly)') as AUDIT_SOURCE, -concat(t0.MARKET,'AIA(Monthly)') as MKT_SOURCE, -concat(t2.bu_code,'AIA(Monthly)') as BU_CODE_AUTH, -concat(t3.pack_cod,'AIA(Monthly)') as PACK_SOURCE -from ALL_AUDIT_Market t0 -inner join inst_market t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -inner join orgWithoutDsm t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -inner join pack_market t3 -on t1.market = t3.market --- where t2.rsm_name <> 'Vacant' -union all -select distinct -t2.rsd_kcode as KCODE, -'rsd' as role, -t2.mr_trty_code, -concat(t0.AUDIT_COD,'AIA(Monthly)') as AUDIT_SOURCE, -concat(t0.MARKET,'AIA(Monthly)') as MKT_SOURCE, -concat(t2.bu_code,'AIA(Monthly)') as BU_CODE_AUTH, -concat(t3.pack_cod,'AIA(Monthly)') as PACK_SOURCE -from ALL_AUDIT_Market t0 -inner join inst_market t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -inner join orgWithoutDsm t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -inner join pack_market t3 -on t1.market = t3.market --- where t2.rsd_name <> 'Vacant' -union all -select distinct -t2.nsd_kcode as KCODE, -'nsd' as role, -t2.mr_trty_code, -concat(t0.AUDIT_COD,'AIA(Monthly)') as AUDIT_SOURCE, -concat(t0.MARKET,'AIA(Monthly)') as MKT_SOURCE, -concat(t2.bu_code,'AIA(Monthly)') as BU_CODE_AUTH, -concat(t3.pack_cod,'AIA(Monthly)') as PACK_SOURCE -from ALL_AUDIT_Market t0 -inner join inst_market t1 -on t0.AUDIT_COD = t1.inst_code -and t0.market = t1.market -inner join orgWithoutDsm t2 -on t1.trty_code = t2.mr_trty_code -and t1.yyyymm = t2.yyyymm -inner join pack_market t3 -on t1.market = t3.market --- where t2.nsd_name <> 'Vacant' - --- COMMAND ---------- - -insert overwrite table dm.dm_auth_aia_sales_geo -select distinct KCODE,AUDIT_SOURCE -from aia_auth_sales - --- COMMAND ---------- - -insert overwrite table dm.dm_auth_aia_sales_mkt -select distinct KCODE,MKT_SOURCE -from aia_auth_sales - --- COMMAND ---------- - -insert overwrite table dm.dm_auth_aia_sales_org -select distinct -KCODE, -role, -mr_trty_code, -concat(mr_trty_code,'AIA(Monthly)') as trty_source -from aia_auth_sales - --- COMMAND ---------- - -insert overwrite table dm.dm_auth_aia_sales_pack -select distinct KCODE,PACK_SOURCE -from aia_auth_sales \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/02 dm_td_aia_auth_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql b/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql deleted file mode 100644 index 710fc95..0000000 --- a/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql +++ /dev/null @@ -1,23 +0,0 @@ --- Databricks notebook source -insert overwrite table dm.dm_td_aia_original_col -select distinct -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 PACK_COD, --- case when length(trim(IQVIA_PACK_CODE)) < 7 then right(concat('0000000',trim(IQVIA_PACK_CODE)),7) --- else trim(IQVIA_PACK_CODE) end as PACK_COD, -'AIA(Monthly)' as DATA_SOURCE, -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 -from dwd.dwd_gnd_ext_aia_cpt_data; diff --git a/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/03 dm_td_aia_original_col.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql b/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql deleted file mode 100644 index 62af838..0000000 --- a/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql +++ /dev/null @@ -1,161 +0,0 @@ --- Databricks notebook source ---------------------------------------------------------------------------------------- ---修改时间:20241113 ---修改人:Fanxujia ---修改内容: ---无销量机构列表 ---以CPA机构表为主表,根据事实表判断每个月销量是否为0 ---------------------------------------------------------------------------------------- -insert overwrite table dm.dm_td_aia_nosales_inst( -year, -cpa_ins_code, -az_ins_code, -az_ins_name, -January, -February, -March, -April, -May, -June, -July, -August, -September, -October, -November, -December, -etl_insert_dt, -etl_update_dt -) - ---12个月 -with MM as ( -select explode(array('01','02','03','04','05','06','07','08','09','10','11','12')) as MM -) ---机构名称 -,inst_name as ( -select distinct -inst_code, -inst_name -from dm.dm_td_institution -) ---全部CPA机构,year -,ALL_INS_year as ( -select distinct -t1.year, -t1.cpa_hospital_code, -t1.ins_cd_nl as inst_code, -t2.inst_name -from dwd.dwd_gnd_hospital_not_provided t1 -left join inst_name t2 -on t1.ins_cd_nl = t2.inst_code -) ---全部CPA机构,yyyymm -,ALL_INS_yyyymm as ( -select distinct -concat(t1.year,t2.MM) as yyyymm, -t1.cpa_hospital_code, -t1.ins_cd_nl as inst_code, -t3.inst_name -from dwd.dwd_gnd_hospital_not_provided t1 -cross join MM t2 -left join inst_name t3 -on t1.ins_cd_nl = t3.inst_code -) ---有销量的机构 -,sales_ins as ( -select -YYYYMM, -inst_code -from dm.dm_tf_external_sales -where data_source = 'AIA(Monthly)' -group by YYYYMM,inst_code -having sum(SALES_VALUE_CAL) <> 0 -) ---销量最大月 -,sales_maxym as ( -select max(yyyymm) as max_ym -from dm.dm_tf_external_sales -where data_source = 'AIA(Monthly)' -) ---无销量的机构,by yyyymm -,no_sales_ins_yyyymm as ( -select t1.YYYYMM, -t1.cpa_hospital_code, -t1.inst_code, -t1.inst_name, -left(t1.yyyymm,4) as year, -right(t1.yyyymm,2) as MM -from ALL_INS_yyyymm t1 -left join sales_ins t2 -on t1.inst_code = t2.inst_code -and t1.YYYYMM = t2.YYYYMM -cross join sales_maxym t3 -where t2.inst_code is null -and t1.YYYYMM <= t3.max_ym -) ---无销量的机构,by year -,no_sales_ins_year1 as ( -select distinct -year, -cpa_hospital_code, -inst_code, -inst_name, -case when MM = '01' then 'N' end as January, -case when MM = '02' then 'N' end as February, -case when MM = '03' then 'N' end as March, -case when MM = '04' then 'N' end as April, -case when MM = '05' then 'N' end as May, -case when MM = '06' then 'N' end as June, -case when MM = '07' then 'N' end as July, -case when MM = '08' then 'N' end as August, -case when MM = '09' then 'N' end as September, -case when MM = '10' then 'N' end as October, -case when MM = '11' then 'N' end as November, -case when MM = '12' then 'N' end as December -from no_sales_ins_yyyymm -) -,no_sales_ins_year2 as ( -select -year, -cpa_hospital_code, -inst_code, -inst_name, -MAX(January) as January, -MAX(February) as February, -MAX(March) as March, -MAX(April) as April, -MAX(May) as May, -MAX(June) as June, -MAX(July) as July, -MAX(August) as August, -MAX(September) as September, -MAX(October) as October, -MAX(November) as November, -MAX(December) as December -from no_sales_ins_year1 -group by year,cpa_hospital_code,inst_code,inst_name -) - -select distinct -t1.year, -t1.cpa_hospital_code as cpa_ins_code, -t1.inst_code as az_ins_code, -t1.inst_name as az_ins_name, -NVL(t2.January,'') as January, -NVL(t2.February,'') as February, -NVL(t2.March,'') as March, -NVL(t2.April,'') as April, -NVL(t2.May,'') as May, -NVL(t2.June,'') as June, -NVL(t2.July,'') as July, -NVL(t2.August,'') as August, -NVL(t2.September,'') as September, -NVL(t2.October,'') as October, -NVL(t2.November,'') as November, -NVL(t2.December,'') as December, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_insert_dt, -from_utc_timestamp(current_timestamp,'UTC+8') as etl_update_dt -from ALL_INS_year t1 -left join no_sales_ins_year2 t2 -on t1.year = t2.year -and t1.cpa_hospital_code = t2.cpa_hospital_code diff --git a/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/04 dm_td_aia_nosales_inst.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql b/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql deleted file mode 100644 index 0ed57df..0000000 --- a/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql +++ /dev/null @@ -1,61 +0,0 @@ --- Databricks notebook source ------------------------------------------------------------------------------------- ---修改时间:20241128 ---修改人:Fanxujia ---修改内容: ---新增is_eagle字段,参考Eagle BI报告 ---粒度是机构+市场 ------------------------------------------------------------------------------------- - --- COMMAND ---------- - --- MAGIC %run ../../../Common/config - --- COMMAND ---------- - --- MAGIC %python --- MAGIC spark.read.table(f'`{CDW_CATALOG}`.`dwd`.`dim_product_wide`').createOrReplaceTempView('cdw_dwd_dim_product_wide') - --- COMMAND ---------- - -insert overwrite table dm.dm_td_aia_is_eagle_flag -WITH cvh_org AS ( - SELECT key_value - FROM dm.dm_td_date_config - WHERE key_code = 'pfmc_cvh' -), -pack_mkt AS ( - SELECT DISTINCT pack_code as pack_cod, MARKET - FROM DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING -), -famil_mkt AS ( - SELECT - DISTINCT - t1.prd_family_cd, - t3.MARKET - FROM cdw_dwd_dim_product_wide t1 - INNER JOIN dwd.dwd_td_imscode_azcode t2 - ON t1.prd_brand_cd = t2.brandcode - INNER JOIN pack_mkt t3 - ON t2.ims_pack_cod = t3.pack_cod -), -base AS ( - -- 谓词下推:先过滤主表,减少 JOIN 数据量 - SELECT inst_code, project_name, family_code, yyyymm - FROM dm.dm_td_sd_territory_indication - WHERE project_name <> 'NA' -) - -SELECT - base.inst_code, - famil_mkt.market, - base.project_name, - 'AIA(Monthly)' DATA_SOURCE, - base.inst_code AUDIT_COD -FROM base -INNER JOIN cvh_org - ON base.yyyymm = cvh_org.key_value -LEFT SEMI JOIN dm.dm_ext_aia_sales t_aia -- 替代 DISTINCT + INNER JOIN - ON base.inst_code = t_aia.inst_code -INNER JOIN famil_mkt - ON base.family_code = famil_mkt.prd_family_cd \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/05 dm_td_aia_is_eagle_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql b/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql deleted file mode 100644 index 0897668..0000000 --- a/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql +++ /dev/null @@ -1,133 +0,0 @@ --- Databricks notebook source ------------------------------------------------------------------- ---修改时间:20241209 ---修改人:Fanxujia ---修改内容: ---新增产品排序表,供PBI使用 ------------------------------------------------------------------- - --- COMMAND ---------- - ---brand的排名 -insert overwrite table dm.dm_td_aia_brand_rank -WITH max_month AS ( - SELECT MAX(yyyymm) AS max_yyyymm - FROM (SELECT DISTINCT yyyymm FROM dm.dm_tf_ext_aia_sales) t -), -pack_prod AS ( - -- 过滤前移,缩小维表体积再 BROADCAST - SELECT DISTINCT PACK_COD, PROD_DES_C - FROM dm.dm_td_external_packinfo - WHERE DATA_SOURCE = 'AIA(Monthly)' - AND PROD_DES_C <> 'OTHERS' -), -prod_sales AS ( - SELECT /*+ BROADCAST(pack_prod) */ - p.PROD_DES_C, - SUM(s.SALES_VALUE_CAL) AS SALES_VALUE_CAL - FROM dm.dm_tf_ext_aia_sales s - INNER JOIN pack_prod p ON s.PACK_CODE = p.PACK_COD - WHERE s.yyyymm BETWEEN CONCAT(LEFT((SELECT max_yyyymm FROM max_month), 4), '01') - AND (SELECT max_yyyymm FROM max_month) - GROUP BY p.PROD_DES_C -) -SELECT PROD_DES_C, - DENSE_RANK() OVER (ORDER BY SALES_VALUE_CAL DESC, PROD_DES_C) AS RANK -FROM prod_sales -UNION ALL SELECT 'Market', -1 -UNION ALL SELECT 'AZ Total', 0 -UNION ALL SELECT 'OTHERS', (SELECT COUNT(*) + 1 FROM prod_sales) - --- COMMAND ---------- - ---Class的排名 -insert overwrite table dm.dm_td_aia_class_rank -WITH max_month AS ( - SELECT MAX(yyyymm) AS max_yyyymm - FROM (SELECT DISTINCT yyyymm FROM dm.dm_tf_ext_aia_sales) t -), -pack_class AS ( - SELECT DISTINCT PACK_CODE, upper(class) class - FROM dm.dm_td_ext_aia_market_pack_mapping - WHERE class <> '-' -), -class_sales AS ( - SELECT /*+ BROADCAST(pack_class) */ - c.class, - SUM(s.SALES_VALUE_CAL) AS SALES_VALUE_CAL - FROM dm.dm_tf_ext_aia_sales s - INNER JOIN pack_class c ON s.PACK_CODE = c.PACK_CODE - WHERE s.yyyymm BETWEEN CONCAT(LEFT((SELECT max_yyyymm FROM max_month), 4), '01') - AND (SELECT max_yyyymm FROM max_month) - GROUP BY c.class -) -SELECT class, - DENSE_RANK() OVER (ORDER BY SALES_VALUE_CAL DESC, class) AS RANK -FROM class_sales -UNION ALL SELECT 'Market', -1 -UNION ALL SELECT 'AZ Total', 0 -UNION ALL SELECT '-', (SELECT COUNT(*) + 1 FROM class_sales) - --- COMMAND ---------- - -INSERT OVERWRITE TABLE dm.dm_td_aia_key_competitor_rank -WITH max_month AS ( - SELECT MAX(yyyymm) AS max_yyyymm - FROM (SELECT DISTINCT yyyymm FROM dm.dm_tf_ext_aia_sales) t -), -pack_key_competitor AS ( - SELECT DISTINCT L.PACK_CODE, R.KEY_COMPETITOR_CN - FROM dm.dm_td_ext_aia_market_pack_mapping l - INNER JOIN (SELECT DISTINCT - PROD_DESC,max(PROD_DESC_C) KEY_COMPETITOR_CN - FROM dm.dm_td_ext_aia_pack_property - GROUP BY 1) r on UPPER(l.KEY_COMPETITOR) = UPPER(r.PROD_DESC) - WHERE KEY_COMPETITOR <> 'OTHERS' -), -key_competitor_sales AS ( - SELECT /*+ BROADCAST(pack_key_competitor) */ - k.KEY_COMPETITOR_CN, - SUM(s.SALES_VALUE_CAL) AS SALES_VALUE_CAL - FROM dm.dm_tf_ext_aia_sales s - INNER JOIN pack_key_competitor k ON s.PACK_CODE = k.PACK_CODE - WHERE s.yyyymm BETWEEN CONCAT(LEFT((SELECT max_yyyymm FROM max_month), 4), '01') - AND (SELECT max_yyyymm FROM max_month) - GROUP BY k.KEY_COMPETITOR_CN -) -SELECT KEY_COMPETITOR_CN, - DENSE_RANK() OVER (ORDER BY SALES_VALUE_CAL DESC, KEY_COMPETITOR_CN) AS RANK -FROM key_competitor_sales -UNION ALL SELECT 'Market', -1 -UNION ALL SELECT 'AZ Total', 0 -UNION ALL SELECT 'OTHERS', (SELECT COUNT(*) + 1 FROM key_competitor_sales) - --- COMMAND ---------- - ---molecule的排名 -insert overwrite table dm.dm_td_aia_molecule_rank -WITH max_month AS ( - SELECT MAX(yyyymm) AS max_yyyymm - FROM (SELECT DISTINCT yyyymm FROM dm.dm_tf_ext_aia_sales) t -), -pack_CMPS AS ( - -- 过滤前移,缩小维表体积再 BROADCAST - SELECT DISTINCT PACK_CODE, CMPS_DESC_C - FROM DM.dm_td_ext_aia_pack_property - WHERE PROD_DESC_C <> 'OTHERS' -), -prod_sales AS ( - SELECT /*+ BROADCAST(pack_prod) */ - p.CMPS_DESC_C, - SUM(s.SALES_VALUE_CAL) AS SALES_VALUE_CAL - FROM dm.dm_tf_ext_aia_sales s - INNER JOIN pack_CMPS p ON s.PACK_CODE = p.PACK_CODE - WHERE s.yyyymm BETWEEN CONCAT(LEFT((SELECT max_yyyymm FROM max_month), 4), '01') - AND (SELECT max_yyyymm FROM max_month) - GROUP BY p.CMPS_DESC_C -) -SELECT CMPS_DESC_C, - DENSE_RANK() OVER (ORDER BY SALES_VALUE_CAL DESC, CMPS_DESC_C) AS RANK -FROM prod_sales -UNION ALL SELECT 'Market', -1 -UNION ALL SELECT 'AZ Total', 0 -UNION ALL SELECT 'OTHERS', (SELECT COUNT(*) + 1 FROM prod_sales) \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/06 dm_td_aia_rank.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql b/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql deleted file mode 100644 index b679651..0000000 --- a/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql +++ /dev/null @@ -1,111 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC - dwd_gnd_aia_mark_ins_data_by_brand --> brand 转换成 market --- MAGIC - dwd_gnd_aia_mark_ins_data_by_mkt 与 brand 的进行拼接 得到 market ins data all market --- MAGIC - 生成 dm.dm_ext_td_mark_ins_data_remove - --- COMMAND ---------- - --- DBTITLE 1,创建brand的dwd临时视图 -create or replace temporary view temp_by_brand as -select - azinscode as ins_code - ,upper(azbrandnamee) as brand_name -from dwd.dwd_gnd_aia_mark_ins_data_by_brand -group by 1,2 - --- COMMAND ---------- - --- DBTITLE 1,创建mkt 的临时dwd视图 -create or replace temporary view temp_by_mkt as -select - azinscode as azinscode - ,market -from dwd.dwd_gnd_aia_mark_ins_data_by_mkt -group by 1,2 - --- COMMAND ---------- - --- DBTITLE 1,将brand转换成market -create or replace temporary view temp_aia_data_flag as -with pack_and_brand ( --brand 转 pack - select - upper(brandnamee) brand_name - ,ims_pack_cod PACK_COD --取所有code带出market - from dwd.dwd_td_imscode_azcode - where ims_pack_cod is not null and startswith(ims_pack_cod,'0') - and upper(brandnamee) in (select brand_name from temp_by_brand group by 1 )--取出在配置表中的pack - group by 1,2 - ) -,pack_to_market ( - select - a.PACK_CODE - ,a.MARKET - from dm.dm_td_ext_aia_market_pack_mapping a - where --只取 AIA中的市场 - lower(a.MARKET) not like '%all market%' - group by 1,2 -) - -select distinct - t1.brand_name - ,t1.ins_code - ,t3.market -from temp_by_brand t1 -left join pack_and_brand t2 on t1.brand_name = t2.brand_name -inner join pack_to_market t3 on t2.pack_cod = t3.pack_code -where t1.ins_code in (select distinct audit_code from dm.dm_tf_ext_aia_sales ) --没有销量的机构不展示 - -union all - -select - 'remove_directly_by_mkt' as brand_name - ,azinscode - ,market -from temp_by_mkt--dwd.dwd_gnd_aia_mark_ins_data_by_mkt -where azinscode in (select distinct audit_code from dm.dm_tf_ext_aia_sales ) --没有销量的机构不展示 -GROUP BY azinscode,market - --- COMMAND ---------- - --- DBTITLE 1,写入dws层 -insert overwrite dws.dws_ext_aia_data_remove_flag -select - ins_code - ,brand_name - ,market - ,from_utc_timestamp(current_timestamp,'UTC+8') etl_insert_dt -from temp_aia_data_flag - --- COMMAND ---------- - --- DBTITLE 1,写入dm层并去重 -insert overwrite dm.dm_ext_aia_data_remove_flag -select - ins_code - ,market - ,from_utc_timestamp(current_timestamp,'UTC+8') etl_insert_dt -from dws.dws_ext_aia_data_remove_flag -group by - ins_code - ,market - --- COMMAND ---------- - --- DBTITLE 1,DDL 语句 --- CREATE OR REPLACE TABLE dm.dm_ext_aia_data_remove_flag ( --- ins_code STRING COMMENT '机构编码', --- market STRING COMMENT '市场', --- etl_insert_dt TIMESTAMP COMMENT 'ETL时间') --- USING delta --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ext_aia_data_remove_flag' --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_ext_aia_data_remove_flag'; - --- CREATE OR REPLACE TABLE dws.dws_ext_aia_data_remove_flag ( --- ins_code STRING COMMENT '机构编码', --- brand_name STRING COMMENT '产品名称,用来区分配置表来源', --- market STRING COMMENT '市场', --- etl_insert_dt TIMESTAMP) --- USING delta --- -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_ext_aia_data_remove_flag' --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_ext_aia_data_remove_flag' \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/07 dm_ext_aia_data_remove_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py b/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py deleted file mode 100644 index 0633380..0000000 --- a/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py +++ /dev/null @@ -1,56 +0,0 @@ -# Databricks notebook source -# MAGIC %sql -# MAGIC create or replace temporary view ins_mkt_distinct -# MAGIC as -# MAGIC select distinct -# MAGIC azinscode as ins_code -# MAGIC ,market as mkt -# MAGIC from dwd.dwd_gnd_aia_mark_ins_data_by_mkt - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC create or replace temporary view mkt_pack_mapping_distinct -# MAGIC as --pack code, prod desc, market 的关系 -# MAGIC select distinct -# MAGIC PACK_COD -# MAGIC ,MARKET -# MAGIC ,PROD_DES -# MAGIC from dm.dm_td_external_market_pack_mapping -# MAGIC -- where DATA_SOURCE = 'AIA(Monthly)' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC create or replace temporary view ins_pack_result as -# MAGIC -# MAGIC select distinct -# MAGIC a.ins_code -# MAGIC ,b.PACK_COD -# MAGIC from ins_mkt_distinct a -# MAGIC left join ( --pack 和 market 的mapping -# MAGIC select -# MAGIC PACK_COD -# MAGIC ,MARKET -# MAGIC from mkt_pack_mapping_distinct -# MAGIC ) b -# MAGIC on a.mkt = b.MARKET - -# COMMAND ---------- - -# %sql -# CREATE TABLE dm.dm_td_aia_remove_special_ins ( -# ins_code STRING, -# pack_cod STRING) -# USING delta -# -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_aia_remove_special_ins' -# LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_aia_remove_special_ins' - -# COMMAND ---------- - -# MAGIC %sql -# MAGIC insert overwrite dm.dm_td_aia_remove_special_ins -# MAGIC select -# MAGIC ins_code -# MAGIC ,pack_cod -# MAGIC from ins_pack_result diff --git a/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/07 dm_td_aia_remove_special_ins_bkp.py:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql b/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql deleted file mode 100644 index a53213c..0000000 --- a/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql +++ /dev/null @@ -1,218 +0,0 @@ --- Databricks notebook source --- %python --- import pandas as pd --- # 读取上传的新增机构 --- df = pd.read_excel('AIA_DATA_FLAG_NEWLY_ADDED_INS.xlsx') --- sdf = spark.createDataFrame(df) --- sdf.createOrReplaceTempView('newly_added_ins') --- df = pd.read_excel('AIA_DATA_FLAG_LIGHT.xlsx') --- sdf = spark.createDataFrame(df) --- sdf.createOrReplaceTempView('light_ins') - --- COMMAND ---------- - --- DBTITLE 1,创建dwd的临时视图 -create or replace temporary view newly_added_ins as -select - inscode - ,is_newly_added -from dwd.dwd_gnd_aia_data_flag_newly_added_ins - --- COMMAND ---------- - --- DBTITLE 1,创建dwd的临时视图 -create or replace temporary view light_ins as -select - brand_name - ,inst_code - ,inst_name - ,light -from dwd.dwd_gnd_aia_data_flag_light - --- COMMAND ---------- - --- DBTITLE 1,处理新增机构的标签 --- 外部的机构编码 转换成 AZ 的机构编码 -create or replace temporary view temp_extinscode_2_azinscode as -select - t1.inscode - ,t1.IS_NEWLY_ADDED - ,nvl( t2.ins_cd_nl , t1.inscode) az_inscode -from newly_added_ins t1 -left join ( - select - distinct ins_cd_nl,cpa_hospital_code - from dwd.dwd_gnd_hospital_not_provided - ) t2 - on t1.inscode = t2.cpa_hospital_code - -where t2.ins_cd_nl is not null or len(t1.inscode)<9 --存在转换表中数据不全的情况,考虑过滤掉 - --- COMMAND ---------- - --- DBTITLE 1,处理AIA数据质量标签表 --- 格式化一下表,将红绿转换成数字供后续的排序做铺垫 -create or replace temporary view light_ins_formatted as -select -upper(brand_name) brand_name -,inst_code --- ,inst_name -,case when trim(light) = '绿灯' then 3 - when trim(light) = '黄灯' then 2 - when trim(light) = '红灯' then 1 -end as light_num -from light_ins -group by 1,2,3 - --- COMMAND ---------- - --- DBTITLE 1,AIA数据质量标签临时表 -create or replace temporary view temp_aia_data_flag as -with pack_and_brand ( --brand 转 pack - select - upper(brandnamee) brand_name - ,ims_pack_cod PACK_COD --取所有code带出market - from dwd.dwd_td_imscode_azcode - where ims_pack_cod is not null and startswith(ims_pack_cod,'0') - and upper(brandnamee) in (select brand_name from light_ins_formatted group by 1 )--取出在配置表中的pack - group by 1,2 - ) -,pack_to_market ( - select - a.PACK_CODE - ,MARKET - from dm.dm_td_ext_aia_market_pack_mapping a - inner join pack_and_brand b on a.PACK_CODE = b.pack_cod --取出配置表中的brand对应的 market - where lower(a.MARKET) not like '%all market%' - group by 1,2 -) - -select - t1.brand_name - ,t1.inst_code as ins_code - ,t1.light_num - ,t3.market -from light_ins_formatted t1 -left join pack_and_brand t2 on t1.brand_name = t2.brand_name -inner join pack_to_market t3 on t2.pack_cod = t3.pack_code -where t1.inst_code in (select distinct AUDIT_CODE from dm.dm_tf_ext_aia_sales ) --没有销量的机构不展示 -group by 1,2,3,4 ---增加直接剔除表中的信息(需求:剔除数据异常机构的INS+MKT均为“红灯”,其余INS+MKT根据配置表进行判断) -union all -select - 'remove_directly_by_mkt' as brand_name - ,azinscode - ,1 as light_num - ,market -from dwd.dwd_gnd_aia_mark_ins_data_by_mkt -where azinscode in (select distinct AUDIT_CODE from dm.dm_tf_ext_aia_sales ) --没有销量的机构不展示 -GROUP BY azinscode,market - --- COMMAND ---------- - --- DBTITLE 1,dws 层结果 -insert overwrite dws.dws_ext_aia_data_quality_flag -with market_ins_light_flag ( - select - ins_code - ,market - ,brand_name - ,min(light_num) light - from temp_aia_data_flag - group by 1,2,3 - -- having count( distinct light_num) >1 -) -select - t1.ins_code - ,t1.market - ,t1.light - ,case when t2.az_inscode is not null then 1 else 0 end as is_newly_added - ,'AIA(Monthly)' data_source - ,from_utc_timestamp(current_timestamp,'UTC+8') etl_insert_dt -from market_ins_light_flag t1 -left join temp_extinscode_2_azinscode t2 on t1.ins_code = t2.az_inscode -- 是否是新增机构 --- where t2.az_inscode is not null -group by 1,2,3,4,5 - --- COMMAND ---------- - --- DBTITLE 1,dm层 -insert overwrite dm.dm_ext_aia_data_quality_flag -select - t1.ins_code - ,t2.province_name - ,t2.city_name - ,t1.market - ,t1.light - ,t1.is_newly_added - ,t1.data_source - ,from_utc_timestamp(current_timestamp,'UTC+8') etl_insert_dt -from dws.dws_ext_aia_data_quality_flag t1 -left join dm.dm_td_institution t2 on t1.ins_code = t2.inst_code --获取机构地理信息中的省份和城市 - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### pbi 语句 - --- COMMAND ---------- - --- with mapping( --- select 1 as o_value,'Y' as display_value --- union all --- select 0,'' --- ) --- select --- ins_code --- ,province_name --- ,city_name --- ,market --- -- ,pack_cod --- -- ,concat(pack_cod ,data_source) pack_key --- ,b.display_value as is_newly_added --- ,concat(ins_code ,data_source) audit_key --- ,case --- when min(light) = 1 then '红灯' --- when min(light) = 2 then '黄灯' --- else '绿灯' --- end as light --- from dm.dm_ext_aia_data_quality_flag a --- left join mapping b on a.is_newly_added = b.o_value --- group by 1,2,3,4,5,6 - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ### ddl 语句 - --- COMMAND ---------- - --- drop table dws.dws_ext_aia_data_quality_flag - --- COMMAND ---------- - --- CREATE or REPLACE TABLE dws.dws_ext_aia_data_quality_flag ( --- ins_code STRING, --- market STRING, --- light INT COMMENT '0 red 1 yellow 2 green', --- is_newly_added INT COMMENT '1 newly_added 0 old', --- data_source STRING, --- etl_insert_dt TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DWS/dws_ext_aia_data_quality_flag' --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWS/dws_ext_aia_data_quality_flag' - --- COMMAND ---------- - --- CREATE or REPLACE TABLE dm.dm_ext_aia_data_quality_flag ( --- ins_code STRING, --- province_name STRING, --- city_name STRING, --- market STRING, --- light INT COMMENT '0 red 1 yellow 2 green', --- is_newly_added INT COMMENT '1 newly_added 0 old', --- data_source STRING, --- etl_insert_dt TIMESTAMP) --- USING delta --- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_ext_aia_data_quality_flag' --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_ext_aia_data_quality_flag' \ No newline at end of file diff --git a/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql:Zone.Identifier b/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/for_AIA_Dashboard/08 dm_ext_aia_data_quality_flag.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/z 01 dm_tf_external_sales.sql b/EXTERNAL/z 01 dm_tf_external_sales.sql deleted file mode 100644 index 359ca4a..0000000 --- a/EXTERNAL/z 01 dm_tf_external_sales.sql +++ /dev/null @@ -1,1187 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC ## 清空表 - --- COMMAND ---------- - -TRUNCATE TABLE dm.dm_tf_external_sales - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 各渠道逻辑 - --- COMMAND ---------- - --- DBTITLE 1,CHPA --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'IQVIA-CHPA(Monthly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - 'IQVIA-CHPA(Monthly)' DATA_SOURCE, - ------------------------------------- - SUM(SALES_UNIT_CAL) SALES_UNIT_CAL, - SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY, - SUM(SALES_VALUE_CAL) SALES_VALUE_CAL, - SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - SUM(CONUTING_UNIT) CONUTING_UNIT, - SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_ims_tf_sales A - where - A.YYYYMM >= '202001' - AND A.MARKET = 'IMS ALL Market' - GROUP BY - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD - --- COMMAND ---------- - --- DBTITLE 1,COUNTY --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - 'IQVIA-COUNTY(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(SALES_UNIT_CAL) SALES_UNIT_CAL, - SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY, - SUM(SALES_VALUE_CAL) SALES_VALUE_CAL, - SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY, - SUM(CONUTING_UNIT) CONUTING_UNIT, - SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - NVL(A.REGION_TYPE, '') REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - DM.dm_ext_county_tf_sales_region A - where - A.YYYYMM >= '202001' - AND A.MARKET = 'IMS ALL Market' - GROUP BY - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - A.REGION_TYPE - --- COMMAND ---------- - --- DBTITLE 1,THC --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'THC(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - 'THC(Quarterly)' DATA_SOURCE, - ------------------------------------- - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - COUNTING_UNIT, - COUNTING_UNIT_LY , - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_ext_thc_sales A - where - AUDIT_COD = 'CHT' - --- COMMAND ---------- - --- DBTITLE 1,CHC_RAW_DATA -------------------------------------------------------------------------------CHC------------------------------------------------------------------- -CREATE OR REPLACE TEMPORARY VIEW V_CHC_RAW_DATA AS -with exchc_rawdata_temp as ( --主表数据 - select - CASE - WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03') - WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06') - WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09') - WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12') - ELSE yq - END AS yq, - city_c, - pack_cod, - prod_cod, - value, - totalunit, - countingunit - from dwd.dwd_gnd_chc_rawdata - where year >= '2021' -), -temp_corp as ( - select - PACK_COD, - CORP_COD, - CORP_DES - from dm.dm_ims_td_pack_property - group by PACK_COD,CORP_COD,CORP_DES -), -chc_pack_property_clean as ( -select distinct - iqvia_pack_code , - iqvia_prod_code , - pack_cod , - app1_cod , - app1_des , - app1_des_c , - app2_cod , - app2_des , - app2_des_c , - app3_cod , - app3_des , - app3_des_c , - atc1_cod , - atc1_des , - atc1_des_c , - atc2_cod , - atc2_des , - atc2_des_c , - atc3_cod , - atc3_des , - atc3_des_c , - atc4_cod , - atc4_des , - atc4_des_c , - bio_desc , - cmps_cod , - cmps_des , - cmps_des_c , - corp_cod , - corp_des , - corp_des_c , - edl_desc , - eth_otc_desc , - gene_orig_desc , - gqce_desc , - manu_cod , - manu_des , - manu_des_c , - mnfl_cod , - mnfl_des , - nrdl_desc , - pack_des , - stgh_des , - pack_lch , - paed_desc , - prod_des , - prod_des_c , - tcm_desc , - vbp_desc , - builtinarchivedate , - source_file_path , - source_file_name , - etl_insert_dt , - countingunit -from dwd.dwd_gnd_ext_chc_pack_property -), -temp_corp_temp as ( -- chc本身唯独表 存在corp_cod以及 CORP_DES 与手工数据不一致的问题 - select - t1.pack_cod, - t1.iqvia_pack_code, - t1.countingunit, - coalesce(t2.CORP_COD, t1.CORP_COD) as CORP_COD , - coalesce(t2.CORP_DES,t1.CORP_DES ) as CORP_DES - from chc_pack_property_clean t1 - left join temp_corp t2 - on t1.iqvia_pack_code = t2.PACK_COD -), -dim_exchc_geo as ( - -- geo相关信息 在CHPA中没有 苏州、无锡、福州等数据,根据业务反馈,按照 city_c当作AUDIT_COD - select - t1.city_e, - concat( t1.city_c , '市') as city_c, - upper( nvl(t2.AUDIT_COD ,t1.city_e) ) as AUDIT_COD - from dwd.dwd_gnd_ext_chc_geo t1 - left join dm.dm_ims_td_geo t2 - on t1.city_e= t2.city --- --20260122 按照新的业务逻辑,直接用城市名称匹配获得省份code --- SELECT DISTINCT city_name,province_code,province_name FROM DM.dm_td_geography --- WHERE nvl(city_code,'')!='' and nvl(province_code,'')!='' and nvl(province_name,'')!='' -), -exchc_rawdata_iqvia as ( - select - t1.yq , - t1.city_c, - -- t1.pack_cod pack_cod_old, - t3.iqvia_pack_code as pack_cod, - t3.CORP_COD as CORP_COD, - C.AUDIT_COD as AUDIT_COD, - t1.prod_cod, - t1.value, - t1.totalunit, - -- t1.countingunit, - t1.totalunit * nvl(t3.countingunit,1 ) as countingunit - -- t2.countingunit as tt - from exchc_rawdata_temp t1 - left join temp_corp_temp t3 - on t1.pack_cod = t3.pack_cod - LEFT JOIN dim_exchc_geo C - ON t1.CITY_C = C.city_c -), -value_temp as( - select - a.yq, - a.AUDIT_COD, - a.pack_cod, - --t1.prod_cod, - a.CORP_COD, - sum(a.value) value, - sum(a.totalunit) totalunit, - sum(a.countingunit) countingunit, - sum(value_ly) value_ly, - sum(totalunit_ly) totalunit_ly, - sum(countingunit_ly) countingunit_ly - from ( - select - t1.yq, - t1.AUDIT_COD, - t1.pack_cod, - --t1.prod_cod, - t1.CORP_COD, - t1.value, - t1.totalunit, - t1.countingunit, - 0 value_ly, - 0 totalunit_ly, - 0 countingunit_ly - from exchc_rawdata_iqvia t1 - union all - select - cast(t1.yq+100 as int), - t1.AUDIT_COD, - t1.pack_cod, - --t1.prod_cod, - t1.CORP_COD, - 0 value, - 0 totalunit, - 0 countingunit, - t1.value value_ly, - t1.totalunit totalunit_ly, - t1.countingunit countingunit_ly - from exchc_rawdata_iqvia t1 - WHERE T1.YQ+100 <= (SELECT MAX(YQ) FROM exchc_rawdata_iqvia) - ) a - group by a.yq, - a.AUDIT_COD, - a.pack_cod, - --t1.prod_cod, - a.CORP_COD -) - -select - t1.yq as YYYYMM , - t1.AUDIT_COD, - t1.pack_cod, - t1.CORP_COD - --t1.prod_cod - ,sum(totalunit) AS SALES_UNIT_CAL -- totalunit - ,sum(totalunit_ly) AS SALES_UNIT_CAL_LY --totalunit_ly - ,sum(value) AS SALES_VALUE_CAL --value - ,sum(value_ly ) AS SALES_VALUE_CAL_LY - ,sum(countingunit) AS CONUTING_UNIT --countingunit - ,sum(countingunit_ly) AS CONUTING_UNIT_LY - ,'CHC(Quarterly)' as DATA_SOURCE - from value_temp t1 - group by 1,2,3,4 - --- COMMAND ---------- - --- DBTITLE 1,CHC --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'CHC(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.PACK_COD, - A.AUDIT_COD, - 'CHC(Quarterly)' DATA_SOURCE, - ------------------------------------- - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - V_CHC_RAW_DATA A - WHERE - YYYYMM >= ( - SELECT - CAST((LEFT(MAX(YYYYMM), 4) - 3) * 100 + 1 AS INT) - FROM - V_CHC_RAW_DATA - ) - --- COMMAND ---------- - --- DBTITLE 1,Retail --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'Retail(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) -SELECT - A.YYYYMM, - A.iqvia_pack_code, - trim(A.AUDIT_COD) AS AUDIT_COD, - 'Retail(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) as SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) as SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - A.PACK_FLAG, - A.brand_flag PROD_FLAG, - 0 DTP_FLAG, - case - when - max(lower(C.CMPS_DES)) in ('atorvastatin', 'rosuvastatin', 'esomeprazole', 'omeprazole') - then - 1 - else 0 - end as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 -------------------------------------- -FROM - dm.dm_zk_retail_sales A - LEFT JOIN ( - select DISTINCT - iqvia_pack_code, - CMPS_DES - from - dm.dm_zk_retail_pack_property - ) C - ON A.iqvia_pack_code = C.iqvia_pack_code -------------------------------------- -LEFT JOIN (SELECT OTHERS_MONTH FROM tmp.tmp_dm_td_ext_retail_niad_month) D -------------------------------------- -where - A.YYYYMM >= '202001' AND A.YYYYMM <= D.OTHERS_MONTH -GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.PACK_FLAG, - A.brand_flag - --- COMMAND ---------- - --- DBTITLE 1,DTP --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'DTP(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.iqvia_pack_code, - trim(A.AUDIT_COD) AS AUDIT_COD, - 'DTP(Quarterly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) as SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) as SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - brand_flag AS PROD_FLAG, - 1 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_zk_retail_dtp_sales A - where - A.YYYYMM >= '202001' - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.brand_flag, - A.pack_flag - --- COMMAND ---------- - --- DBTITLE 1,EC --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'EC(Monthly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - 'EC(Monthly)' DATA_SOURCE, - ------------------------------------- - SUM(sales_unit) SALES_UNIT_CAL, - SUM(sales_unit_ly) SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) SALES_VALUE_CAL_LY, - SUM(counting_unit) CONUTING_UNIT, - SUM(counting_unit_LY) CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - A.PLATFORM, - A.STORE_NAME, - A.STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_zk_ec_sales A - LEFT JOIN (SELECT OTHERS_MONTH FROM tmp.tmp_dm_td_ext_ec_niad_month) D - where - A.YYYYMM >= '202001' and A.YYYYMM<=D.others_month - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.PLATFORM, - A.STORE_NAME, - A.STORE_TYPE, - A.PACK_FLAG, - A.PROD_FLAG - --- COMMAND ---------- - --- DBTITLE 1,AIA --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'AIA(Monthly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.ym, - A.PACK_COD, - A.AUDIT_COD, - 'AIA(Monthly)' DATA_SOURCE, - ------------------------------------- - sum(volume) as SALES_UNIT_CAL, - sum(volume_ly) as SALES_UNIT_CAL_LY, - sum(value) as SALES_VALUE_CAL, - sum(value_ly) as SALES_VALUE_CAL_LY, - sum(counting_unit) as CONUTING_UNIT, - sum(counting_unit_ly) as CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - inst_code AS inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - '' as dept_name, - '' as new_code, - '' as area, - '' as h_level, - '' as reimburse, - '' as reimburse_type, - '' as prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - from - dm.dm_ext_aia_sales A - --取202401年之后的数 - where - ym >= '202401' - group by - ym, - pack_cod, - corp_cod, - AUDIT_COD, - inst_code - --- COMMAND ---------- - --- DBTITLE 1,XIEHE --- DELETE FROM --- dm.dm_tf_external_sales --- WHERE --- DATA_SOURCE = 'XH Data(Quarterly)'; - -INSERT INTO dm.dm_tf_external_sales ( - YYYYMM, - PACK_COD, - AUDIT_COD, - DATA_SOURCE, - SALES_UNIT_CAL, - SALES_UNIT_CAL_LY, - SALES_VALUE_CAL, - SALES_VALUE_CAL_LY, - CONUTING_UNIT, - CONUTING_UNIT_LY, - prescription, - prescription_ly, - PACK_FLAG, - PROD_FLAG, - DTP_FLAG, - cmps_flag, - PLATFORM_TYPE, - STORE_NAME, - STORE_TYPE, - REGION_TYPE, - inst_code, - dept_name, - new_code, - area, - h_level, - reimburse, - reimburse_type, - prescription_source, - CORP_COD - ) - SELECT - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - 'XH Data(Quarterly)' DATA_SOURCE, - ------------------------------------- - 0 SALES_UNIT_CAL, - 0 SALES_UNIT_CAL_LY, - SUM(sales_value) SALES_VALUE_CAL, - SUM(sales_value_LY) SALES_VALUE_CAL_LY, - SUM(A.counting_unit) CONUTING_UNIT, - SUM(A.counting_unit_ly) CONUTING_UNIT_LY, - null as prescription, - null as prescription_ly, - ------------------------------------- - --Retail藏数逻辑标签------------------ - 1 PACK_FLAG, - 1 PROD_FLAG, - 0 DTP_FLAG, - null as cmps_flag, - ------------------------------------- - --EC数据标签-------------------------- - '' PLATFORM_TYPE, - '' STORE_NAME, - '' STORE_TYPE, - ------------------------------------- - --COUNTY数据标签---------------------- - '' REGION_TYPE, - ------------------------------------- - --AIA数据标签------------------------- - null inst_code, --可以移除,报告没有使用 - ------------------------------------- - --XIE HE 数据标签--------------------- - NVL(A.dept_name, '') dept_name, - NVL(A.new_code, '') new_code, - NVL(A.province, '') area, - NVL(A.h_level, '') h_level, - NVL(A.reimburse, '') reimburse, - NVL(A.reimburse_type, '') reimburse_type, - NVL(A.prescription_source, '') prescription_source, - ------------------------------------- - '' as CORP_COD --可以移除,报告没有使用 - ------------------------------------- - FROM - dm.dm_ext_xiehe_sales A - WHERE - A.YYYYMM >= '202001' - GROUP BY - A.YYYYMM, - A.iqvia_pack_code, - A.AUDIT_COD, - A.dept_name, - A.new_code, - A.province, - A.h_level, - A.reimburse, - A.reimburse_type, - A.prescription_source - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## 特殊逻辑 - --- COMMAND ---------- - --- DBTITLE 1,更新pack code -update dm.dm_tf_external_sales set PACK_COD = concat('PACK_COD_',DATA_SOURCE) -where PACK_COD is null or PACK_COD = ''; -update dm.dm_tf_external_sales set AUDIT_COD = 'ROC' -where AUDIT_COD is null or AUDIT_COD = ''; - - --- COMMAND ---------- - --- MAGIC %md --- MAGIC ## NIAD单独页面数据 - --- COMMAND ---------- - -update dm.dm_zk_retail_sales set DATA_SOURCE = 'Retail(Quarterly)' - --- COMMAND ---------- - --- DBTITLE 1,NIAD --- ============================================================================= --- 脚本名称: dm.dm_tf_external_sales_niad 数据装载脚本 --- 功能描述: 将零售和电商的销售数据(仅限NIAD市场)插入目标表 --- 数据来源: dm.dm_zk_retail_sales, dm.dm_zk_ec_sales, dm.dm_td_external_market_pack_mapping_temp --- 目标表: dm.dm_tf_external_sales_niad --- 更新方式: INSERT OVERWRITE(全量覆盖) --- 创建时间: 2026-03-09 --- ============================================================================= - -INSERT OVERWRITE TABLE dm.dm_tf_external_sales_niad -( - YYYYMM, -- 年月分区键 - PACK_COD, -- 药品包装代码 - AUDIT_COD, -- 审计代码 - SALES_UNIT_CAL, -- 本期销量(单位) - SALES_UNIT_CAL_LY, -- 去年同期销量(单位) - SALES_VALUE_CAL, -- 本期销售额 - SALES_VALUE_CAL_LY, -- 去年同期销售额 - CONUTING_UNIT, -- 计数单位(本期) - CONUTING_UNIT_LY, -- 计数单位(去年同期) - DATA_SOURCE, -- 数据来源(零售/电商) - DATE_KEY, -- 日期键(转换为日期类型) - PACK_SOURCE, -- 包装来源唯一标识 - AUDIT_SOURCE -- 审计来源唯一标识 -) - -WITH mkt_pack AS ( - SELECT DISTINCT - PACK_COD, - DATA_SOURCE - FROM dm.dm_td_external_market_pack_mapping_temp - WHERE DATA_SOURCE IN ('Retail(Quarterly)', 'EC(Monthly)') -- 仅限零售和电商 - AND MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' -- NIAD市场过滤 -), - -sales AS ( - -- 零售数据(季度) - SELECT - YYYYMM, - iqvia_pack_code AS PACK_COD, - AUDIT_COD, - sales_unit AS SALES_UNIT_CAL, - sales_unit_ly AS SALES_UNIT_CAL_LY, - sales_value AS SALES_VALUE_CAL, - sales_value_ly AS SALES_VALUE_CAL_LY, - counting_unit AS CONUTING_UNIT, - counting_unit_ly AS CONUTING_UNIT_LY, - DATA_SOURCE, - -- 将日期转换放在CTE中统一处理,避免重复解析 - TO_DATE(YYYYMM, 'yyyyMM') AS DATE_KEY, - CONCAT(iqvia_pack_code, DATA_SOURCE) AS PACK_SOURCE, - CONCAT(AUDIT_COD, DATA_SOURCE) AS AUDIT_SOURCE - FROM dm.dm_zk_retail_sales - WHERE YYYYMM >= '202001' -- 仅保留2020年及以后数据 - - UNION ALL - - -- 电商数据(月度) - SELECT - YYYYMM, - iqvia_pack_code AS PACK_COD, - AUDIT_COD, - sales_unit AS SALES_UNIT_CAL, - sales_unit_ly AS SALES_UNIT_CAL_LY, - sales_value AS SALES_VALUE_CAL, - sales_value_ly AS SALES_VALUE_CAL_LY, - counting_unit AS CONUTING_UNIT, - counting_unit_ly AS CONUTING_UNIT_LY, - DATA_SOURCE, - TO_DATE(YYYYMM, 'yyyyMM') AS DATE_KEY, - CONCAT(iqvia_pack_code, DATA_SOURCE) AS PACK_SOURCE, - CONCAT(AUDIT_COD, DATA_SOURCE) AS AUDIT_SOURCE - FROM dm.dm_zk_ec_sales - WHERE YYYYMM >= '202001' -- 仅保留2020年及以后数据 -) -SELECT - a.YYYYMM, - a.PACK_COD, - a.AUDIT_COD, - a.SALES_UNIT_CAL, - a.SALES_UNIT_CAL_LY, - a.SALES_VALUE_CAL, - a.SALES_VALUE_CAL_LY, - a.CONUTING_UNIT, - a.CONUTING_UNIT_LY, - a.DATA_SOURCE, - a.DATE_KEY, - a.PACK_SOURCE, - a.AUDIT_SOURCE - FROM sales a - INNER JOIN mkt_pack b - ON a.PACK_COD = b.PACK_COD - AND a.DATA_SOURCE = b.DATA_SOURCE; \ No newline at end of file diff --git a/EXTERNAL/z 01 dm_tf_external_sales.sql:Zone.Identifier b/EXTERNAL/z 01 dm_tf_external_sales.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/z 01 dm_tf_external_sales.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql b/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql deleted file mode 100644 index 0e90786..0000000 --- a/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql +++ /dev/null @@ -1,1439 +0,0 @@ --- Databricks notebook source ---------------------------------------------------------------------------- ---修改时间:20241126 ---修改人:Fanxujia ---修改内容: ---THC渠道分为14省的数据源以及全国的数据源两种,分在了2个事实表里,下面在维表在引用事实表时,需要将两个事实表union在一起 ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- ---修改时间:20241129 ---修改人:Fanxujia ---修改内容: ---补充Retail直取中DTP的手工文件里的pack_cod ----------------------------------------------------------------------------- -create or replace temporary view external_sales_union as -select distinct -PACK_COD, -DATA_SOURCE -from dm.dm_tf_external_sales -union all -select distinct -PACK_COD, -DATA_SOURCE -from dm.dm_tf_external_sales_thc -union all -select distinct -pack_code, -'Retail(Quarterly)' as DATA_SOURCE -from dm.dm_zk_retail_sales_kpi -where NVL(pack_code,'Others') <> 'Others' -and pack_code <> '' - --- COMMAND ---------- - --------------------------------------------------------------------------------------------------------------------------------------------------- ---修改时间:20240812 ---修改人:FanXujia ---修改内容: ---在从DM_TD_EXTERNAL_KEYCOMPATITOR表里获取市场描述(MARKET_DESC字段)时,需要增加一个DATA_SOURCE的条件。 ---修改原因: ---对于同一个市场,每个渠道的市场描述并不一样。 --------------------------------------------------------------------------------------------------------------------------------------------------- - --- COMMAND ---------- - -/* -修改日期:20250311 -修改人:chenwu -修改内容:修改COUNTINGUNIT_MARKET_RATIO 取unit的值 -*/ -/* -修改日期:20250513 -修改人:chenwu -修改内容:修改RE Market 为 RE Market (Global) -*/ -INSERT OVERWRITE dm.dm_td_external_market_pack_mapping_temp( - PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS, - VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name - ,new_code - ,area -) -WITH MKT_PACK_RATIO AS ( - -------------------------------------根据沟通,市场+产品对应的ratio是唯一的------------------------------------------ -SELECT A.MARKET,A.PACK_COD,MAX(A.Value_Market_Ratio) Value_Market_Ratio,MAX(A.Unit_Market_Ratio) Unit_Market_Ratio,MAX(A.PDOT_Market_Ratio) CountingUnit_Market_Ratio,MAX(A.CountingUnit_Market_Ratio) PDOT_Market_Ratio --因为之前的报告在使用源表的数据,因此命名是反的。 -FROM DWS.dws_ims_td_market_ratio A -WHERE A.YM = (SELECT MAX(YM) FROM DWS.dws_ims_td_market_ratio) -GROUP BY A.MARKET,A.PACK_COD -) ---------------------------------------------------------------------CHPA------------------------------------------------------------------ -SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.TA,B.KEY_COMPETITOR, -CASE - WHEN B.MARKET = 'DM Market' THEN 'DM' - WHEN B.MARKET = 'CV Market' THEN 'CV' - WHEN B.MARKET = 'RD Market' THEN 'RD' - WHEN B.MARKET = 'RE Market' THEN 'RE' --WHEN B.MARKET = 'RE Market' THEN 'RE' - WHEN B.MARKET IN ('GI Market','Retail_GI Market') THEN 'GI' - WHEN B.MARKET = 'ONC Market' THEN 'ONCO' - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' - WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE - END AZ_RELATED - ,B.CLASS,NVL(B.VALUE_MARKET_RATIO,1) VALUE_MARKET_RATIO,NVL(B.UNIT_MARKET_RATIO,1) UNIT_MARKET_RATIO,NVL(B.COUNTINGUNIT_MARKET_RATIO,1) COUNTINGUNIT_MARKET_RATIO,NVL(B.PDOT_MARKET_RATIO,1) PDOT_MARKET_RATIO,B.MARKET_DESC, -CASE - WHEN B.MARKET = 'DM Market' THEN 1 - WHEN B.MARKET = 'CV Market' THEN 2 - WHEN B.MARKET = 'RD Market' THEN 3 - WHEN B.MARKET = 'RE Market' THEN 4 - WHEN B.MARKET = 'GI Market' THEN 5 - WHEN B.MARKET = 'ONC Market' THEN 6 - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 - WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE - ELSE 99 END TA_RN -,'IQVIA-CHPA(Monthly)' DATA_SOURCE -,'' as dept_name -,'' as key_dept_name -,'' as new_code -,'' as area -FROM ( -SELECT B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,MAX(C.TA) TA,MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,MAX(E.IS_AZ) IS_AZ,MAX(E.AZ_MAIN) AZ_MAIN,MAX(E.AZ_RELATED) AZ_RELATED,MAX(E.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO,max(g.MARKET_DESC) MARKET_DESC -FROM (SELECT PACK_COD,COUNT(*) RUM FROM DM.DM_TF_EXTERNAL_SALES --- WHERE YYYYMM >= (SELECT CAST((LEFT(MAX(YYYYMM),4)-3)*100+1 AS INT) FROM DM.DM_TF_EXTERNAL_SALES) --- AND DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -where DATA_SOURCE = 'IQVIA-CHPA(Monthly)' -GROUP BY PACK_COD) A -LEFT JOIN DM.DM_IMS_TD_PACK_PROPERTY B -ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market' -LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -ON B.MARKET = C.MARKET -LEFT JOIN DM.DM_IMS_TD_PACK_PROPERTY E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY -LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET AND B.PACK_COD = D.PACK_COD -LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'IQVIA-CHPA(MONTHLY)' -GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET) B -WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL -UNION ALL ---------------------------------------------------------------------Retail------------------------------------------------------------------ -SELECT - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - CASE - when B.MARKET = 'Non AZ Retail Related Market' - and b.TA = 'CV' THEN 'CV Market' - else b.MARKET - end MARKET, - CASE - WHEN B.MARKET = 'RE Market' THEN 'RE' - when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE - WHEN B.MARKET = 'Soliris Related Market' THEN 'RARE'--20250701 chenwu 新增RARE - ELSE b.TA - END TA, - B.KEY_COMPETITOR, - CASE - WHEN B.MARKET = 'RE Market' THEN 'RE' - when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE - WHEN B.MARKET = 'CVRM_OTHER Market' THEN 'CVRM' - WHEN B.MARKET = 'Soliris Related Market' THEN 'RARE'--20250701 chenwu 新增RARE - ELSE b.TA - END AZ_RELATED, - B.CLASS, - nvl(B.VALUE_MARKET_RATIO, 1), - nvl(B.UNIT_MARKET_RATIO, 1), - nvl(B.UNIT_MARKET_RATIO, 1) COUNTINGUNIT_MARKET_RATIO, --应该取unit的值作为count --,1 COUNTINGUNIT_MARKET_RATIO - nvl(B.PDOT_MARKET_RATIO, 1), - B.MARKET_DESC, - -- CASE WHEN b.TA='DM' THEN 1 WHEN b.TA ='CV' OR B.MARKET='CV Market' THEN 2 WHEN b.TA ='RD' THEN 3 WHEN b.MARKET ='RE Market' OR b.TA ='RE' or b.MARKET = 'Inhaled Extended Market by Brand' THEN 4 WHEN b.TA ='GI' THEN 5 WHEN b.TA ='ONCO' THEN 6 - CASE - WHEN b.TA = 'DM' THEN 1 - WHEN b.TA = 'CV' OR B.MARKET = 'CV Market' THEN 2 - WHEN b.TA = 'RD' THEN 3 - WHEN b.MARKET = 'RE Market' THEN 4 - WHEN b.TA = 'GI' THEN 5 - WHEN b.TA = 'ONCO' THEN 6 - WHEN B.MARKET = 'CVRM_OTHER Market' THEN 0 - WHEN B.MARKET = 'Soliris Related Market' THEN 8--20250701 chenwu 新增RARE - ELSE 99 - END TA_RN, - 'Retail(Quarterly)' DATA_SOURCE, - '' as dept_name, - '' as key_dept_name, - '' as new_code, - '' as area -FROM - ( - SELECT - a.MARKET_PACK_KEY, - B.iqvia_pack_code PACK_COD, - a.PACK_DES, - a.PROD_DES, - a.PROD_DES_C, - a.MARKET, - MAX(a.TA) TA, - MAX(a.KEY_COMPETITOR) KEY_COMPETITOR, - MAX(a.CLASS) CLASS, - MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO, - MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO, - MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO, - MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO, - max(g.MARKET_DESC) MARKET_DESC - FROM - DM.dm_zk_retail_pack_property a - LEFT JOIN DM.dm_zk_retail_market_property B ON A.iqvia_pack_code = B.iqvia_pack_code - and a.market = b.market - LEFT JOIN dm.dm_zk_retail_market_ratio D ON B.MARKET = D.MARKET - AND B.iqvia_pack_code = D.pack_cod - LEFT JOIN ( - SELECT - MARKET, - DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - FROM - DM.DM_TD_EXTERNAL_KEYCOMPATITOR - GROUP BY - MARKET, - DATA_SOURCE - ) G ON B.MARKET = G.MARKET - AND UPPER(G.DATA_SOURCE) = 'RETAIL(QUARTERLY)' - WHERE - A.iqvia_pack_code in ( - select - distinct iqvia_pack_code - from - dm.dm_zk_retail_sales - ) - GROUP BY - a.MARKET_PACK_KEY, - B.iqvia_pack_code, - a.PACK_DES, - a.PROD_DES, - a.PROD_DES_C, - a.MARKET - ) b ---------------------------------------------------------DTP-------------------------------------------------------- -UNION ALL -SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C -,MARKET -,CASE - WHEN B.TA IS NULL AND MARKET = 'ONC Market' - THEN 'ONCO' -ELSE B.TA END AS TA -,B.KEY_COMPETITOR -,CASE - WHEN B.TA IS NULL AND MARKET = 'ONC Market' - THEN 'ONCO' - ELSE B.TA END AS AZ_RELATED -,B.CLASS -,nvl(B.VALUE_MARKET_RATIO,1) -,nvl(B.UNIT_MARKET_RATIO,1) -,nvl(B.UNIT_MARKET_RATIO,1) COUNTINGUNIT_MARKET_RATIO --应该取unit的值作为count--,1 COUNTINGUNIT_MARKET_RATIO -,nvl(B.PDOT_MARKET_RATIO,1) -,B.MARKET_DESC, -CASE - WHEN B.TA IS NULL AND MARKET = 'ONC Market' THEN 6 - WHEN B.TA IS NULL THEN 99 - WHEN B.TA ='CVRM' THEN 0 - WHEN B.TA ='DM' THEN 1 - WHEN B.TA ='CV' THEN 2 - WHEN B.TA ='RD' THEN 3 - WHEN B.TA ='RE' THEN 4 - WHEN B.TA ='GI' THEN 5 - WHEN B.TA ='ONCO' THEN 6 - WHEN B.TA ='NIAD' THEN 7 - WHEN B.TA ='RARE' THEN 8 - WHEN B.TA ='NP' THEN 9 - ELSE 99 END TA_RN -,'DTP(Quarterly)' DATA_SOURCE -,'' as dept_name -,'' as key_dept_name -,'' as new_code -,'' as area -FROM ( -SELECT a.MARKET_PACK_KEY,a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C -,a.MARKET,max(t3.TA) AS TA,max(t3.TA_ORDER) AS TA_ORDER -,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR,MAX(a.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO,max(g.MARKET_DESC) MARKET_DESC -FROM DM.dm_zk_retail_dtp_pack_property a -LEFT JOIN dm.dm_zk_retail_market_ratio D ON a.MARKET = D.MARKET AND a.iqvia_pack_code = D.pack_cod -LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON a.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'RETAIL(QUARTERLY)' -LEFT JOIN ( - select - MARKET,IF(TA = 'ONC' ,'ONCO',TA) AS TA,TA_ORDER - from dwd.dwd_td_ims_market_ta_order - group by 1,2,3) t3 ON a.MARKET = t3.market -WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_dtp_sales) -GROUP BY a.MARKET_PACK_KEY,A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,a.MARKET -) b - ---------------------------------------------------------RETAIL all market-------------------------------------------------------- -union all -SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C -,'Retail All Market' MARKET ,TA,b.KEY_COMPETITOR,null AZ_RELATED,null CLASS, -1 VALUE_MARKET_RATIO,1 UNIT_MARKET_RATIO,1 COUNTINGUNIT_MARKET_RATIO,1 PDOT_MARKET_RATIO,null MARKET_DESC,null TA_RN -,'Retail(Quarterly)' DATA_SOURCE -,'' as dept_name -,'' as key_dept_name -,'' as new_code -,'' as area -FROM ( -SELECT a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,null TA,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR -FROM DM.dm_zk_retail_pack_property a -WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_sales) -GROUP BY A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C -union -select a.pack_code,nvl(b.pack_des,c.pack_des),nvl(b.PROD_DES,c.PROD_DES),nvl(b.PROD_DES_C,c.PROD_DES_C),null ta,MAX(b.KEY_COMPETITOR) KEY_COMPETITOR -from dm.dm_zk_retail_sales_kpi a -left join dm.dm_zk_retail_pack_property b on a.pack_code =b.iqvia_pack_code -left join (select distinct iqvia_pack_code,pack_des,PROD_DES,PROD_DES_C from dm.dm_zk_retail_pack_property ) c on a.pack_code =c.iqvia_pack_code -where a.pack_code <>'' ---排除Others以及null -and NVL(a.pack_code,'Others') <> 'Others' -GROUP BY a.pack_code,nvl(b.pack_des,c.pack_des),nvl(b.PROD_DES,c.PROD_DES),nvl(b.PROD_DES_C,c.PROD_DES_C) -) b - ---------------------------------------------------------DTP all market-------------------------------------------------------- -union all -SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C -,'DTP ALL Market' MARKET ,TA,b.KEY_COMPETITOR,null AZ_RELATED,null CLASS, -1 VALUE_MARKET_RATIO,1 UNIT_MARKET_RATIO,1 COUNTINGUNIT_MARKET_RATIO,1 PDOT_MARKET_RATIO,null MARKET_DESC,null TA_RN -,'DTP(Quarterly)' DATA_SOURCE -,'' as dept_name -,'' as key_dept_name -,'' as new_code -,'' as area -FROM ( - SELECT a.iqvia_pack_code PACK_COD,a.PACK_DES,a.PROD_DES,a.PROD_DES_C,null TA,MAX(a.KEY_COMPETITOR) KEY_COMPETITOR -FROM DM.dm_zk_retail_dtp_pack_property a -WHERE A.iqvia_pack_code in (select distinct iqvia_pack_code from dm.dm_zk_retail_dtp_sales) -GROUP BY A.iqvia_pack_code,a.PACK_DES,a.PROD_DES,a.PROD_DES_C -) B - --- COMMAND ---------- - ---------------------------------------------------------------------------------- ---修改时间:20240918 ---修改人:FanXuJia ---修改内容: ---计算market_ratio\pdot_ratio时,之前使用的是现成的dws表,但是这个dws表不是外部数据报告的,更新频率也不是每天更新。会存在一定的更新时间差。 ---因此改成使用dwd层表 ------------------------------------------------------------------------------------ -INSERT into dm.dm_td_external_market_pack_mapping_temp( - PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS, - VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name - ,new_code - ,area -) -WITH county_brand_ratio as ( - SELECT distinct market, - CASE WHEN length(cmps_cod) < 6 THEN RIGHT(CONCAT('000000',cmps_cod),6) ELSE cmps_cod END AS cmps_cod, - cmps_des, - CASE WHEN length(pack_cod) < 12 and pack_cod REGEXP '^[0-9]' THEN RIGHT(CONCAT('000000000000',pack_cod),12) ELSE pack_cod END AS pack_cod, - pack_des, - level, - type, - ratio - from dwd.dwd_gnd_ims_tblBrandRatio -) -,MKT_PACK_RATIO_tmp as ( -select t1.market, -t1.PACK_COD, ---优先取pack粒度的ratio -case when t2.ratio is not null then t1.Market_Ratio * t2.ratio - else t1.Market_Ratio * NVL(t3.ratio,1) -end as Value_Market_Ratio, -case when t4.ratio is not null then t1.Market_Ratio * t4.ratio - else t1.Market_Ratio * NVL(t5.ratio,1) -end as Unit_Market_Ratio, -t1.Market_Ratio as CountingUnit_Market_Ratio, -case when t6.ratio is not null then t1.Market_Ratio * t6.ratio - else t1.Market_Ratio * NVL(t7.ratio,1) -end as PDOT_Market_Ratio -from DWS.dws_ims_td_market t1 ---value by Pack -left join (select * from county_brand_ratio where UPPER(TYPE) = 'VALUE' and UPPER(Level) = 'PACK') t2 -on t1.MARKET = t2.market -and t1.PACK_COD = t2.pack_cod ---value by MOLECULE -LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'VALUE' and UPPER(Level) = 'MOLECULE') t3 -on t1.MARKET = t3.market -and t1.CMPS_COD = t3.cmps_cod ---unit by Pack -left join (select * from county_brand_ratio where UPPER(TYPE) = 'UNIT' and UPPER(Level) = 'PACK') t4 -on t1.MARKET = t4.market -and t1.PACK_COD = t4.pack_cod ---unit by MOLECULE -LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'UNIT' and UPPER(Level) = 'MOLECULE') t5 -on t1.MARKET = t5.market -and t1.CMPS_COD = t5.cmps_cod ---PDOT by Pack -left join (select * from county_brand_ratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'PACK') t6 -on t1.MARKET = t6.market -and t1.PACK_COD = t6.pack_cod ---PDOT by MOLECULE -LEFT JOIN (select * from county_brand_ratio where UPPER(TYPE) = 'COUNTINGUNIT' and UPPER(Level) = 'MOLECULE') t7 -on t1.MARKET = t7.market -and t1.CMPS_COD = t7.cmps_cod -) -,MKT_PACK_RATIO as ( -select market, -PACK_COD, -max(Value_Market_Ratio) as Value_Market_Ratio, -max(Unit_Market_Ratio) as Unit_Market_Ratio, -max(CountingUnit_Market_Ratio) as CountingUnit_Market_Ratio, -max(PDOT_Market_Ratio) as PDOT_Market_Ratio -FROM MKT_PACK_RATIO_tmp -GROUP BY market,PACK_COD -) - - -SELECT B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.TA,B.KEY_COMPETITOR, -CASE -WHEN B.MARKET = 'DM Market' THEN 'DM' -WHEN B.MARKET = 'CV Market' THEN 'CV' -WHEN B.MARKET = 'RD Market' THEN 'RD' -WHEN B.MARKET = 'RE Market' THEN 'RE' -WHEN B.MARKET = 'GI Market' THEN 'GI' -WHEN B.MARKET = 'ONC Market' THEN 'ONCO' -WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' -WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE -END AZ_RELATED -,B.CLASS,nvl(CAST(B.VALUE_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.UNIT_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.COUNTINGUNIT_MARKET_RATIO AS decimal(20,16)),1),nvl(CAST(B.PDOT_MARKET_RATIO AS decimal(20,16)),1),B.MARKET_DESC, -CASE -WHEN B.MARKET = 'DM Market' THEN 1 -WHEN B.MARKET = 'CV Market' THEN 2 -WHEN B.MARKET = 'RD Market' THEN 3 -WHEN B.MARKET = 'RE Market' THEN 4 -WHEN B.MARKET = 'GI Market' THEN 5 -WHEN B.MARKET = 'ONC Market' THEN 6 -WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 -WHEN B.MARKET = 'RARE Market' THEN 8--20250701 chenwu 新增RARE -ELSE 99 END TA_RN,'IQVIA-COUNTY(Quarterly)' DATA_SOURCE,'' as dept_name,'' as key_dept_name -,'' as new_code -,'' as area -FROM ( -SELECT B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,MAX(C.TA) TA,MAX(E.KEY_COMPETITOR) KEY_COMPETITOR,MAX(E.IS_AZ) IS_AZ,MAX(E.AZ_MAIN) AZ_MAIN,MAX(E.AZ_RELATED) AZ_RELATED,MAX(E.CLASS) CLASS,MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO,MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO,MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO,MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO,MAX(G.MARKET_DESC) MARKET_DESC -FROM (SELECT PACK_COD,COUNT(*) RUM FROM DM.DM_TF_EXTERNAL_SALES --- WHERE YYYYMM >= (SELECT CAST((LEFT(MAX(YYYYMM),4)-3)*100+1 AS INT) FROM DM.DM_TF_EXTERNAL_SALES) --- AND DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' -where DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' -GROUP BY PACK_COD) A -LEFT JOIN dm.dm_ext_county_td_pack_property B -ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market' -LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -ON B.MARKET = C.MARKET -LEFT JOIN DM.dm_ext_county_td_pack_property E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY -LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET AND B.PACK_COD = D.PACK_COD -LEFT JOIN (SELECT MARKET,DATA_SOURCE,MAX(MARKETDESC) MARKET_DESC FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR GROUP BY MARKET,DATA_SOURCE) G ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'IQVIA-COUNTY(QUARTERLY)' -WHERE A.PACK_COD IS NOT NULL -GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET) B -WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL - - --- COMMAND ---------- - -delete from dm.dm_td_external_market_pack_mapping_temp where DATA_SOURCE = 'THC(Quarterly)' - --- COMMAND ---------- - ------------------------------------------------THC--------------------------------------------------------------------------------------------------------- -with exchc_rawdata_temp as ( --主表数据 - select - temp.yq, - pack_property.iqvia_pack_code as pack_cod - from ( - select - CASE - WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03') - WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06') - WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09') - WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12') - ELSE yq - END AS yq, - pack_cod - from dwd.dwd_gnd_ext_thc_rawdata - ) temp - LEFT JOIN dwd.dwd_gnd_ext_thc_pack_property pack_property - ON temp.pack_cod = pack_property.pack_cod -), -A as( - SELECT - PACK_COD, - COUNT(*) RUM - FROM exchc_rawdata_temp - -- WHERE yq >= (SELECT CAST((LEFT(MAX(yq),4)-3)*100+1 AS INT) FROM exchc_rawdata_temp) - GROUP BY PACK_COD -) -insert into table dm.dm_td_external_market_pack_mapping_temp -( - PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS, - VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name - ,new_code - ,area -) -SELECT - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - B.TA, - B.KEY_COMPETITOR, - CASE - WHEN B.MARKET = 'DM Market' THEN 'DM' - WHEN B.MARKET = 'CV Market' THEN 'CV' - WHEN B.MARKET = 'RD Market' THEN 'RD' - WHEN B.MARKET = 'RE Market' THEN 'RE' - WHEN B.MARKET = 'GI Market' THEN 'GI' - WHEN B.MARKET = 'ONC Market' THEN 'ONCO' - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' - WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE - END AZ_RELATED, - B.Class, - cast (B.VALUE_MARKET_RATIO as double), - cast (B.UNIT_MARKET_RATIO as double), - cast (B.COUNTINGUNIT_MARKET_RATIO as double), - cast (B.PDOT_MARKET_RATIO as double), - B.MARKET_DESC, - CASE - WHEN B.MARKET = 'DM Market' THEN 1 - WHEN B.MARKET = 'CV Market' THEN 2 - WHEN B.MARKET = 'RD Market' THEN 3 - WHEN B.MARKET = 'RE Market' THEN 4 - WHEN B.MARKET = 'GI Market' THEN 5 - WHEN B.MARKET = 'ONC Market' THEN 6 - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 - WHEN B.MARKET = 'RARE Market' THEN 8--20250701 chenwu 新增RARE - ELSE 99 - END TA_RN, - 'THC(Quarterly)' DATA_SOURCE - ,'' as dept_name - ,'' as key_dept_name - ,'' as new_code - ,'' as area -FROM ( - SELECT - B.MARKET_PACK_KEY, - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - nvl(MAX(C.TA),'') as TA, - MAX(E.KEY_COMPETITOR) as KEY_COMPETITOR, - NULL IS_AZ, - NULL AZ_MAIN, - NULL AZ_Related, - nvl(MAX(E.CLASS),'') CLASS, - MAX(nvl(B.Market_Ratio,1)) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales - MAX(nvl(B.Market_Ratio,1) ) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT - MAX(nvl(B.Market_Ratio,1)) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU - MAX(nvl(B.Market_Ratio,1) * nvl(D.Ratio,1)) as PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT - max(g.MARKET_DESC) MARKET_DESC - FROM A - LEFT JOIN dm.dm_thc_pack_property B -- 以A表 pack_code 为准 获取需要的维度信息 - ON B.PACK_COD = A.PACK_COD - LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -- THC没有TA字段,关联CHC的相关表,获取TA - ON B.MARKET = C.MARKET - LEFT JOIN dm.dm_thc_pack_property E -- MARKET_PACK_KEY 为唯一主键,获取KEY_COMPETITOR,class等信息 - ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY - LEFT JOIN( --转码 补0 - select - MARKET, - b.iqvia_pack_code as pack_cod, - ratio - from dwd.dwd_gnd_ext_thc_brandratio a - inner join dwd.dwd_gnd_ext_thc_pack_property b - on (case when length(a.pack_cod) < 12 and a.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',a.pack_cod),12) else a.pack_cod end ) - =(case when length(b.pack_cod) < 12 and b.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',b.pack_cod),12) else b.pack_cod end ) - ) D - ON B.MARKET = D.MARKET - AND B.PACK_COD = D.PACK_COD - LEFT JOIN ( --获取 MARKET_DESC 字段 - SELECT - MARKET,DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR - GROUP BY MARKET,DATA_SOURCE - ) G - ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'THC(QUARTERLY)' - GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET -) B -WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL - --- COMMAND ---------- - ------------------------------------------------CHC---------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------- - -with exchc_rawdata_temp as ( --主表数据 - select - temp.yq, - pack_property.iqvia_pack_code as pack_cod - from ( - select - CASE - WHEN SUBSTRING(yq, 5,2) = 'Q1' THEN CONCAT(SUBSTRING(yq, 1, 4), '03') - WHEN SUBSTRING(yq, 5, 2) = 'Q2' THEN CONCAT(SUBSTRING(yq, 1, 4), '06') - WHEN SUBSTRING(yq, 5, 2) = 'Q3' THEN CONCAT(SUBSTRING(yq, 1, 4), '09') - WHEN SUBSTRING(yq, 5, 2) = 'Q4' THEN CONCAT(SUBSTRING(yq, 1, 4), '12') - ELSE yq - END AS yq, - pack_cod - from dwd.dwd_gnd_chc_rawdata - ) temp - LEFT JOIN dwd.dwd_gnd_ext_chc_pack_property pack_property - ON temp.pack_cod = pack_property.pack_cod -), -A as( - SELECT - PACK_COD, - COUNT(*) RUM - FROM exchc_rawdata_temp - -- WHERE yq >= (SELECT CAST((LEFT(MAX(yq),4)-3)*100+1 AS INT) FROM exchc_rawdata_temp) - GROUP BY PACK_COD -) -insert into table dm.dm_td_external_market_pack_mapping_temp( - PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS, - VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name - ,new_code - ,area -) -SELECT - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - B.TA, - B.KEY_COMPETITOR, - CASE - WHEN B.MARKET = 'DM Market' THEN 'DM' - WHEN B.MARKET = 'CV Market' THEN 'CV' - -- WHEN B.MARKET = 'RD Market' THEN 'RD' --RD隐藏 - when B.MARKET = 'RE Market' THEN 'RE' --RE改为Respules Market - WHEN B.MARKET = 'GI Market' THEN 'GI' - WHEN B.MARKET = 'ONC Market' THEN 'ONCO' - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' - WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE - END AZ_RELATED, - B.Class, - cast (B.VALUE_MARKET_RATIO as double), - cast (B.UNIT_MARKET_RATIO as double), - cast (B.COUNTINGUNIT_MARKET_RATIO as double), - cast (B.PDOT_MARKET_RATIO as double), - B.MARKET_DESC, - CASE - WHEN B.MARKET = 'DM Market' THEN 1 - WHEN B.MARKET = 'CV Market' THEN 2 - -- WHEN B.MARKET = 'RD Market' THEN 3 - WHEN B.MARKET = 'RE Market' THEN 4 - WHEN B.MARKET = 'GI Market' THEN 5 - WHEN B.MARKET = 'ONC Market' THEN 6 - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 - WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE - ELSE 99 - END TA_RN, - 'CHC(Quarterly)' DATA_SOURCE - ,'' as dept_name - ,'' as key_dept_name - ,'' as new_code - ,'' as area -FROM ( - SELECT - B.MARKET_PACK_KEY, - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - nvl(MAX(C.TA) ,'') TA, - -- null as TA, - MAX(E.KEY_COMPETITOR) KEY_COMPETITOR, - --MAX(B.KEY_COMPETITOR) KEY_COMPETITOR, - --MAX(E.IS_AZ) IS_AZ, - --MAX(E.AZ_MAIN) AZ_MAIN, - --MAX(E.AZ_RELATED) AZ_RELATED, - NULL as IS_AZ, - NULL as AZ_MAIN, - NULL as AZ_Related, - nvl (MAX(E.CLASS) ,'' ) CLASS, - MAX(nvl(B.Market_Ratio,1)) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales - MAX(nvl(B.Market_Ratio,1)) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT - MAX(nvl(B.Market_Ratio,1)) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU - MAX(nvl(B.Market_Ratio,1) * nvl(D.Ratio,1)) PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT - max(G.MARKET_DESC) as MARKET_DESC - FROM A - LEFT JOIN dm.dm_chc_pack_property B -- 以A表 pack_code 为准 获取需要的维度信息 - ON B.PACK_COD = A.PACK_COD - LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C -- THC没有TA字段,关联CHPA的相关表,获取TA - ON B.MARKET = C.MARKET - LEFT JOIN dm.dm_chc_pack_property E --MARKET_PACK_KEY 为唯一主键,获取KEY_COMPETITOR,class等信息 - ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY - LEFT JOIN( -- 获取RATIO ,其中chc_brandratio没有补0和转码的操作,这里处理 - select - MARKET, - b.iqvia_pack_code as pack_cod, - ratio - from dwd.dwd_gnd_ext_chc_brandratio a - inner join dwd.dwd_gnd_ext_chc_pack_property b - on (case when length(a.pack_cod) < 12 and a.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',a.pack_cod),12) else a.pack_cod end ) - =(case when length(b.pack_cod) < 12 and b.pack_cod REGEXP '^[0-9]' then right(concat('000000000000',b.pack_cod),12) else b.pack_cod end ) - ) D - ON B.MARKET = D.MARKET - AND B.PACK_COD = D.PACK_COD - LEFT JOIN ( --获取 MARKET_DESC 字段 - SELECT - MARKET,DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - FROM DM.DM_TD_EXTERNAL_KEYCOMPATITOR - GROUP BY MARKET,DATA_SOURCE - ) G - ON B.MARKET = G.MARKET AND UPPER(G.DATA_SOURCE) = 'CHC(QUARTERLY)' - GROUP BY B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET - -) B -WHERE B.PACK_COD IS NOT NULL AND B.MARKET IS NOT NULL -and market!='RD Market' - --- COMMAND ---------- - -/* -修改人:chenwu -修改时间:20250319 -修改内容: EC的数据源cu恒等于1 -*/ ------------------------------------------------------------ec----------------------------------------------------------- -INSERT into dm.dm_td_external_market_pack_mapping_temp( - PACK_COD,PACK_DES,PROD_DES,PROD_DES_C,MARKET,TA,KEY_COMPETITOR,AZ_RELATED,CLASS, - VALUE_MARKET_RATIO,UNIT_MARKET_RATIO,COUNTINGUNIT_MARKET_RATIO,PDOT_MARKET_RATIO,MARKET_DESC,TA_RN,DATA_SOURCE,dept_name,key_dept_name - ,new_code - ,area -) -SELECT - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - CASE - WHEN B.MARKET = 'RE Market' THEN 'RE' - when B.TA = 'RE' THEN NULL--只有 'RE Market (Global)' 的ta是 RE - ELSE B.TA - END TA, - B.KEY_COMPETITOR, - CASE - WHEN B.MARKET = 'RE Market' THEN 'RE' - WHEN B.TA = 'RE' THEN NULL - ELSE B.TA - END AZ_RELATED, - B.CLASS, - nvl(B.VALUE_MARKET_RATIO, 1), - nvl(B.UNIT_MARKET_RATIO, 1), - 1, - --nvl(B.COUNTINGUNIT_MARKET_RATIO,1), --ec的数据源cu恒等于1 - nvl(B.PDOT_MARKET_RATIO, 1), - B.MARKET_DESC, - CASE - WHEN b.TA = 'DM' THEN 1 - WHEN b.TA = 'CV' THEN 2 - WHEN b.TA = 'RE' THEN 4 - WHEN b.TA = 'GI' THEN 5 - WHEN B.TA = 'CVRM' THEN 0 - ELSE 99 - END TA_RN, - 'EC(Monthly)' DATA_SOURCE, - '' as dept_name, - '' as key_dept_name, - '' as new_code, - '' as area -FROM - ( - SELECT - a.MARKET_PACK_KEY, - B.iqvia_pack_code PACK_COD, - a.PACK_DES, - a.PROD_DES, - a.PROD_DES_C, - a.MARKET, - MAX(a.TA) TA, - MAX(a.KEY_COMPETITOR) KEY_COMPETITOR, - MAX(a.CLASS) CLASS, - MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO, - MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO, - MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO, - MAX(D.COUNTINGUNIT_MARKET_RATIO) PDOT_MARKET_RATIO, - max(g.MARKET_DESC) MARKET_DESC - FROM - DM.dm_zk_ec_pack_property a - LEFT JOIN DM.dm_zk_ec_market_property B ON A.iqvia_pack_code = B.iqvia_pack_code - and a.market = b.market - LEFT JOIN dm.dm_zk_ec_market_ratio D ON B.MARKET = D.MARKET - AND B.iqvia_pack_code = D.PACK_COD - LEFT JOIN ( - SELECT - MARKET, - DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - FROM - DM.DM_TD_EXTERNAL_KEYCOMPATITOR - GROUP BY - MARKET, - DATA_SOURCE - ) G ON B.MARKET = G.MARKET - AND UPPER(G.DATA_SOURCE) = 'EC(MONTHLY)' - WHERE - A.iqvia_pack_code in ( - select - distinct iqvia_pack_code - from - dm.dm_zk_ec_sales - ) - GROUP BY - a.MARKET_PACK_KEY, - B.iqvia_pack_code, - a.PACK_DES, - a.PROD_DES, - a.PROD_DES_C, - a.MARKET - ) b - - --- COMMAND ---------- - - ------------------------------------------------AIA---------------------------------------------------------------------------------- -WITH AIA_brand_ratio as ( - SELECT distinct market, - CASE WHEN length(cmps_cod) < 6 THEN RIGHT(CONCAT('000000',cmps_cod),6) ELSE cmps_cod END AS cmps_cod, - cmps_des, - CASE WHEN length(pack_cod) < 12 and pack_cod REGEXP '^[0-9]' THEN RIGHT(CONCAT('000000000000',pack_cod),12) ELSE pack_cod END AS pack_cod, - pack_des, - level, - type, - ratio - from dwd.dwd_gnd_ims_tblBrandRatio -) -,AIA_RATIO as ( -select t1.PACK_COD, -t1.MARKET, -case when t6.ratio is not null then t1.market_ratio * t6.ratio - else t1.market_ratio * NVL(t7.ratio,1) -end as VALUE_MARKET_RATIO, -case when t2.ratio is not null then t1.market_ratio * t2.ratio - else t1.market_ratio * NVL(t3.ratio,1) -end as UNIT_MARKET_RATIO, -t1.market_ratio as COUNTINGUNIT_MARKET_RATIO, -case when t4.ratio is not null then t1.market_ratio * t4.ratio - else t1.market_ratio * NVL(t5.ratio,1) -end as PDOT_MARKET_RATIO -from dm.dm_aia_pack_property t1 ---unit by Pack -left join (select * from AIA_brand_ratio where upper(type) = 'UNIT' and upper(Level) = 'PACK') t2 -on t1.PACK_COD = t2.pack_cod -and t1.MARKET = t2.market ---unit by MOLECULE -left join (select * from AIA_brand_ratio where upper(type) = 'UNIT' and upper(Level) = 'MOLECULE') t3 -on t1.CMPS_COD = t3.cmps_cod -and t1.MARKET = t3.market ---PDOT by Pack -left join (select * from AIA_brand_ratio where upper(type) = 'COUNTINGUNIT' and upper(Level) = 'PACK') t4 -on t1.PACK_COD = t4.pack_cod -and t1.MARKET = t4.market ---PDOT by MOLECULE -left join (select * from AIA_brand_ratio where upper(type) = 'COUNTINGUNIT' and upper(Level) = 'MOLECULE') t5 -on t1.CMPS_COD = t5.cmps_cod -and t1.MARKET = t5.market ---VALUE by Pack -left join (select * from AIA_brand_ratio where upper(type) = 'VALUE' and upper(Level) = 'PACK') t6 -on t1.PACK_COD = t6.pack_cod -and t1.MARKET = t6.market ---VALUE by MOLECULE -left join (select * from AIA_brand_ratio where upper(type) = 'VALUE' and upper(Level) = 'MOLECULE') t7 -on t1.CMPS_COD = t7.cmps_cod -and t1.MARKET = t7.market - -) -,MARKET_PACK_MAPPING_1 as ( - select - B.MARKET_PACK_KEY, - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET as MARKET_AIA, - --AIA有一部分market有通过手工表AIA_IMS_Market_Mapping更新过名称 - --使用旧的从CHPA里来的名称关联 - B.MARKET_CHPA, - nvl(MAX(C.TA),'') as TA, - MAX(E.KEY_COMPETITOR) KEY_COMPETITOR, - NULL as IS_AZ, - NULL as AZ_MAIN, - NULL as AZ_Related, - nvl(MAX(E.CLASS),'') as CLASS, - MAX(t1.VALUE_MARKET_RATIO) as VALUE_MARKET_RATIO, -- sales * VALUE_MARKET_RATIO = 折算好的sales - MAX(t1.UNIT_MARKET_RATIO) as UNIT_MARKET_RATIO, -- unint * UNIT_MARKET_RATIO = 折算好的 UNIT - MAX(t1.COUNTINGUNIT_MARKET_RATIO) as COUNTINGUNIT_MARKET_RATIO, -- counting_unit*COUNTINGUNIT_MARKET_RATIO = 折算好的 CU - MAX(t1.PDOT_MARKET_RATIO) as PDOT_MARKET_RATIO, -- counting_unit*Market_Ratio*PDOT_MARKET_RATIO = PDOT - max(G.MARKET_DESC) as MARKET_DESC - from ( - SELECT - PACK_COD, - COUNT(*) RUM - FROM DM.DM_TF_EXTERNAL_SALES - WHERE DATA_SOURCE = 'AIA(Monthly)' - GROUP BY PACK_COD - ) A - left join dm.dm_aia_pack_property B - on A.PACK_COD = B.PACK_COD - left join DM.DM_IMS_TD_MARKET_PROPERTY C - --AIA有一部分market有通过手工表AIA_IMS_Market_Mapping更新过名称 - --使用旧的从CHPA里来的名称关联 - on B.MARKET_CHPA = C.MARKET - left join dm.dm_aia_pack_property E - on B.MARKET_PACK_KEY = E.MARKET_PACK_KEY - left join AIA_RATIO t1 - on B.PACK_COD = t1.PACK_COD - and B.MARKET = t1.MARKET - left join ( - select MARKET,DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - from DM.DM_TD_EXTERNAL_KEYCOMPATITOR - group by market,DATA_SOURCE - ) G - --竞品配置信息表里使用的AIA的市场名称,因此使用AIA市场名关联 - on B.MARKET = G.MARKET and upper(G.DATA_SOURCE) = 'AIA(Monthly)' - group by B.MARKET_PACK_KEY,B.PACK_COD,B.PACK_DES,B.PROD_DES,B.PROD_DES_C,B.MARKET,B.MARKET_CHPA -) - - -insert into table dm.dm_td_external_market_pack_mapping_temp ( -PACK_COD, -PACK_DES, -PROD_DES, -PROD_DES_C, -MARKET, -TA, -KEY_COMPETITOR, -AZ_RELATED, -CLASS, -VALUE_MARKET_RATIO, -UNIT_MARKET_RATIO, -COUNTINGUNIT_MARKET_RATIO, -PDOT_MARKET_RATIO, -MARKET_DESC, -TA_RN, -DATA_SOURCE, -dept_name, -key_dept_name, -new_code, -area -) - select - PACK_COD, - PACK_DES, - PROD_DES, - PROD_DES_C, - MARKET_AIA as MARKET, - TA, - KEY_COMPETITOR, - case when MARKET_CHPA = 'DM Market' THEN 'DM' - when MARKET_CHPA = 'CV Market' THEN 'CV' - when MARKET_CHPA = 'RD Market' THEN 'RD' - when MARKET_CHPA = 'RE Market' THEN 'RE' - when MARKET_CHPA = 'GI Market' THEN 'GI' - when MARKET_CHPA = 'ONC Market' THEN 'ONCO' - when MARKET_CHPA = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' - WHEN MARKET_CHPA = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE - end as AZ_RELATED, - Class, - cast(VALUE_MARKET_RATIO as double) as VALUE_MARKET_RATIO, - cast(UNIT_MARKET_RATIO as double) as UNIT_MARKET_RATIO, - cast(COUNTINGUNIT_MARKET_RATIO as double) as COUNTINGUNIT_MARKET_RATIO, - cast(PDOT_MARKET_RATIO as double) as PDOT_MARKET_RATIO, - MARKET_DESC, - case when MARKET_CHPA = 'DM Market' THEN 1 - when MARKET_CHPA = 'CV Market' THEN 2 - when MARKET_CHPA = 'RD Market' THEN 3 - when MARKET_CHPA = 'RE Market' THEN 4 - when MARKET_CHPA = 'GI Market' THEN 5 - when MARKET_CHPA = 'ONC Market' THEN 6 - when MARKET_CHPA = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 - WHEN MARKET_CHPA = 'RARE Market' THEN 8--20250701 chenwu 新增RARE - else 99 - end as TA_RN, - 'AIA(Monthly)' as DATA_SOURCE - ,'' as dept_name - ,'' as key_dept_name - ,'' as new_code - ,'' as area - from MARKET_PACK_MAPPING_1 - where PACK_COD IS NOT NULL - and MARKET_AIA IS NOT NULL - - --- COMMAND ---------- - -INSERT into table dm.dm_td_external_market_pack_mapping_temp( - PACK_COD, - PACK_DES, - PROD_DES, - PROD_DES_C, - MARKET, - TA, - KEY_COMPETITOR, - AZ_RELATED, - CLASS, - VALUE_MARKET_RATIO, - UNIT_MARKET_RATIO, - COUNTINGUNIT_MARKET_RATIO, - PDOT_MARKET_RATIO, - MARKET_DESC, - TA_RN, - DATA_SOURCE, - dept_name, - key_dept_name, - new_code, - area - ) - - WITH MKT_PACK_RATIO AS ( - -------------------------------------根据沟通,市场+产品对应的ratio是唯一的------------------------------------------ - SELECT - A.MARKET, - A.PACK_COD, - MAX(A.Value_Market_Ratio) Value_Market_Ratio, - MAX(A.Unit_Market_Ratio) Unit_Market_Ratio, - MAX(A.PDOT_Market_Ratio) CountingUnit_Market_Ratio, - MAX(A.CountingUnit_Market_Ratio) PDOT_Market_Ratio --因为之前的报告在使用源表的数据,因此命名是反的。 - FROM - DWS.dws_ims_td_market_ratio A - WHERE - A.YM = ( - SELECT - MAX(YM) - FROM - DWS.dws_ims_td_market_ratio - ) - GROUP BY - A.MARKET, - A.PACK_COD - ) -------------------------------------------------------------------xiehe------------------------------------------------------------------ -SELECT - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - B.TA, - B.KEY_COMPETITOR, - CASE - WHEN B.MARKET = 'DM Market' THEN 'DM' - WHEN B.MARKET = 'CV Market' THEN 'CV' - WHEN B.MARKET = 'RD Market' THEN 'RD' - WHEN B.MARKET = 'RE Market' THEN 'RE' - WHEN B.MARKET IN ('GI Market', 'Retail_GI Market') THEN 'GI' - WHEN B.MARKET = 'ONC Market' THEN 'ONCO' - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 'NIAD' - WHEN B.MARKET = 'RARE Market' THEN 'RARE'--20250701 chenwu 新增RARE - END AZ_RELATED, - B.CLASS, - NVL(B.VALUE_MARKET_RATIO, 1) VALUE_MARKET_RATIO, - NVL(B.UNIT_MARKET_RATIO, 1) UNIT_MARKET_RATIO, - NVL(B.COUNTINGUNIT_MARKET_RATIO, 1) COUNTINGUNIT_MARKET_RATIO, - NVL(B.PDOT_MARKET_RATIO, 1) PDOT_MARKET_RATIO, - B.MARKET_DESC, - CASE - WHEN B.MARKET = 'DM Market' THEN 1 - WHEN B.MARKET = 'CV Market' THEN 2 - WHEN B.MARKET = 'RD Market' THEN 3 - WHEN B.MARKET = 'RE Market' THEN 4 - WHEN B.MARKET = 'GI Market' THEN 5 - WHEN B.MARKET = 'ONC Market' THEN 6 - WHEN B.MARKET = 'NIAD (Non-Insulin Anti-Diabetic) Market' THEN 7 - WHEN B.MARKET = 'RARE Market' THEN 8 --20250701 chenwu 新增RARE - ELSE 99 - END TA_RN, - 'XH Data(Quarterly)' DATA_SOURCE, - B.dept_name, - B.key_dept_name, - B.new_code, - B.area -FROM - ( - SELECT - B.MARKET_PACK_KEY, - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - NVL(H.dept_name,'') dept_name, - NVL(t1.CORE_DEPT,'Others') as key_dept_name, - NVL(H.new_code,'') new_code, - NVL(H.area,'') area, - MAX(C.TA) TA, - MAX(E.KEY_COMPETITOR) KEY_COMPETITOR, - MAX(E.IS_AZ) IS_AZ, - MAX(E.AZ_MAIN) AZ_MAIN, - MAX(E.AZ_RELATED) AZ_RELATED, - MAX(E.CLASS) CLASS, - MAX(D.VALUE_MARKET_RATIO) VALUE_MARKET_RATIO, - MAX(D.UNIT_MARKET_RATIO) UNIT_MARKET_RATIO, - MAX(D.COUNTINGUNIT_MARKET_RATIO) COUNTINGUNIT_MARKET_RATIO, - MAX(D.PDOT_MARKET_RATIO) PDOT_MARKET_RATIO, - max(g.MARKET_DESC) MARKET_DESC - FROM - ( - SELECT - PACK_COD, - COUNT(*) RUM - FROM - DM.DM_TF_EXTERNAL_SALES - WHERE DATA_SOURCE = 'XH Data(Quarterly)' - GROUP BY - PACK_COD - ) A - LEFT JOIN dm.dm_xiehe_pack_property B ON B.PACK_COD = A.PACK_COD --AND B.MARKET <> 'IMS ALL Market' - LEFT JOIN DM.DM_IMS_TD_MARKET_PROPERTY C ON B.MARKET = C.MARKET - LEFT JOIN dm.dm_xiehe_pack_property E ON B.MARKET_PACK_KEY = E.MARKET_PACK_KEY - LEFT JOIN MKT_PACK_RATIO D ON B.MARKET = D.MARKET - AND B.PACK_COD = D.PACK_COD - LEFT JOIN ( - SELECT - MARKET,DATA_SOURCE, - MAX(MARKETDESC) MARKET_DESC - FROM - DM.DM_TD_EXTERNAL_KEYCOMPATITOR - GROUP BY - MARKET,DATA_SOURCE - ) G ON B.MARKET = G.MARKET and G.DATA_SOURCE = 'XH Data(Quarterly)' - left join ( - SELECT distinct PACK_COD,dept_name,new_code,area - from dm.dm_td_external_packinfo_temp2 - where DATA_SOURCE = 'XH Data(Quarterly)' - ) H - on A.PACK_COD = H.PACK_COD - left join dm.dm_td_xiehe_core_dept t1 - on B.MARKET = t1.MARKET - AND H.dept_name = t1.Dept_NAME - GROUP BY - B.MARKET_PACK_KEY, - B.PACK_COD, - B.PACK_DES, - B.PROD_DES, - B.PROD_DES_C, - B.MARKET, - H.dept_name, - H.new_code, - H.area, - t1.CORE_DEPT - ) B -WHERE - B.PACK_COD IS NOT NULL - AND B.MARKET IS NOT NULL - --- COMMAND ---------- - ---修改时间:20240808 ---修改人:FanXuJia ---修改背景: ---事实表与维度表来自于不同手工表,目前存在一部分pack_cod在事实表有销量,但是在维度表没有这个pack_cod,导致销量缺失。 ---因此需要从事实表补全这部分pack_cod -with tmp_market_pack as ( -select distinct - t1.PACK_COD, - CASE WHEN t1.DATA_SOURCE = 'CHC(Quarterly)' then 'CHC ALL Market' - WHEN t1.DATA_SOURCE = 'IQVIA-CHPA(Monthly)' then 'IMS ALL Market' - WHEN t1.DATA_SOURCE = 'IQVIA-COUNTY(Quarterly)' then 'IMS ALL Market' - WHEN t1.DATA_SOURCE = 'Retail(Quarterly)' then 'Retail All Market' - WHEN t1.DATA_SOURCE = 'THC(Quarterly)' then 'THC ALL Market' - WHEN t1.DATA_SOURCE = 'EC(Monthly)' then 'EC ALL Market' - WHEN t1.DATA_SOURCE = 'AIA(Monthly)' then 'NON Market' - WHEN t1.DATA_SOURCE = 'XH Data(Quarterly)' then 'XIEHE ALL Market' - WHEN t1.DATA_SOURCE = 'DTP(Quarterly)' then 'DTP ALL Market' - end as market, - t1.DATA_SOURCE -from external_sales_union t1 -left join dm.dm_td_external_market_pack_mapping_temp t2 -on t1.PACK_COD = t2.PACK_COD -and t1.DATA_SOURCE = t2.DATA_SOURCE -where t2.PACK_COD is null -) -,tmp_packinfo as ( -select -PACK_COD, -new_code, -area, -dept_name, -DATA_SOURCE, -max(PACK_DES) as PACK_DES, -max(PROD_DES) as PROD_DES, -max(PROD_DES_C) as PROD_DES_C -from dm.dm_td_external_packinfo_temp2 -group by PACK_COD,DATA_SOURCE,dept_name,new_code,area -) - -INSERT into table dm.dm_td_external_market_pack_mapping_temp( - PACK_COD, - PACK_DES, - PROD_DES, - PROD_DES_C, - MARKET, - TA, - KEY_COMPETITOR, - AZ_RELATED, - CLASS, - VALUE_MARKET_RATIO, - UNIT_MARKET_RATIO, - COUNTINGUNIT_MARKET_RATIO, - PDOT_MARKET_RATIO, - MARKET_DESC, - TA_RN, - DATA_SOURCE, - dept_name, - key_dept_name, - new_code, - area - ) - select - t1.PACK_COD, - t2.PACK_DES, - t2.PROD_DES, - t2.PROD_DES_C, - t1.MARKET, - null as TA, - null as KEY_COMPETITOR, - null as AZ_RELATED, - null as CLASS, - 1 as VALUE_MARKET_RATIO, - 1 as UNIT_MARKET_RATIO, - 1 as COUNTINGUNIT_MARKET_RATIO, - 1 as PDOT_MARKET_RATIO, - null as MARKET_DESC, - null as TA_RN, - t1.DATA_SOURCE, - t2.dept_name, - NVL(t3.CORE_DEPT,'Others') as key_dept_name, - t2.new_code, - t2.area - from tmp_market_pack t1 - left join tmp_packinfo t2 - on t1.PACK_COD = t2.PACK_COD - and t1.DATA_SOURCE = t2.DATA_SOURCE - left join dm.dm_td_xiehe_core_dept t3 - on t1.MARKET = t3.MARKET - AND t2.dept_name = t3.Dept_NAME - - --- COMMAND ---------- - ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场,不再Hardcoding ------------------------------------------------------------ --- ---------------------------------------------------------------------------- --- --修改时间:20240813 --- --修改人:FanXujia --- --修改内容:CHC_AZ related TA ALL这个市场只在CHC中显示,其他渠道排除这个市场(Hard Coding) --- ---------------------------------------------------------------------------- --- delete from dm.dm_td_external_market_pack_mapping_temp --- where upper(MARKET) = 'CHC_AZ RELATED TA ALL' --- and data_source <> 'CHC(Quarterly)' - --- COMMAND ---------- - ------------------------------------------------------------ ---修改时间:20241118 ---修改人:Fanxujia ---修改内容: ---使用手工文件排除掉每个渠道的不需要显示的市场 ------------------------------------------------------------ -with hidden_market as ( -select distinct -case when upper(data_source) = 'CHPA' then 'IQVIA-CHPA(Monthly)' - when upper(data_source) = '科室市场' then 'XH Data(Quarterly)' - when upper(data_source) = 'EC' then 'EC(Monthly)' - when upper(data_source) = 'RETAIL' then 'Retail(Quarterly)' - when upper(data_source) = 'CHC' then 'CHC(Quarterly)' - when upper(data_source) = 'AIA' then 'AIA(Monthly)' - when upper(data_source) = 'THC' then 'THC(Quarterly)' - when upper(data_source) = 'COUNTY' then 'IQVIA-COUNTY(Quarterly)' - else data_source -end as data_source, -upper(hidden_market) as hidden_market -from dwd.dwd_gnd_ims_hidden_market -union all -select -'AIA(Monthly)' as data_source, -'AIA ALL Market' -) - - -MERGE into dm.dm_td_external_market_pack_mapping_temp as t1 -USING hidden_market t2 -on t1.data_source = t2.data_source -and upper(t1.MARKET) = upper(t2.hidden_market) -WHEN MATCHED THEN -DELETE - --- COMMAND ---------- - --------------------------------------------------------------------------------- ---修改时间:20241025 ---修改人:Fanxujia ---修改内容: ---外部数据报告优化,将PBI的逻辑搬到DBR --------------------------------------------------------------------------------- --------------------------------------------------------------------------------- ---修改时间:20241209 ---修改人:Fanxujia ---修改内容: ---新增Key Competitor CN,从packinfo表里关联出中文名,关联不到的保留英文名 --------------------------------------------------------------------------------- -with mapping as ( -select distinct PROD_DES,PROD_DES_C -from dm.dm_td_external_packinfo -) -,market_pack_mapping_1 as ( -SELECT - PACK_COD, - max(PROD_DES) PROD_DES, - max(PROD_DES_C) PROD_DES_C, - MARKET, - ---------------------------------------------------------------------------------- - --修改时间:20241217 - --修改人:Fanxujia - --修改内容: - --取不到Class时,不再显示成中划线-,改成Others - ---------------------------------------------------------------------------------- - CASE - -- WHEN NVL(max(CLASS), '') = '' OR max(CLASS) = 'Others' THEN '-' - WHEN NVL(max(CLASS), '') = '' THEN 'Others' - ELSE UPPER(max(CLASS)) - END CLASS, - CAST(max(VALUE_MARKET_RATIO) AS DECIMAL(38, 20)) VALUE_MARKET_RATIO, - CAST(max(UNIT_MARKET_RATIO) AS DECIMAL(38, 20)) UNIT_MARKET_RATIO, - CAST(max(COUNTINGUNIT_MARKET_RATIO) AS DECIMAL(38, 20)) COUNTINGUNIT_MARKET_RATIO, - CAST(max(PDOT_MARKET_RATIO) AS DECIMAL(38, 20)) PDOT_MARKET_RATIO, - DATA_SOURCE, - case when max(KEY_COMPETITOR) is null or max(KEY_COMPETITOR) = '' then 'Others' - else max(KEY_COMPETITOR) - end as KEY_COMPETITOR, - NEW_CODE -FROM DM.dm_td_external_market_pack_mapping_temp -group by PACK_COD,NEW_CODE,DATA_SOURCE,MARKET -) - -, mapping_match_key_competitor_with_mutil as ( -select -t3.PACK_COD, -t3.PROD_DES, -t3.PROD_DES_C, -t3.MARKET, -t3.CLASS, -t3.VALUE_MARKET_RATIO, -t3.UNIT_MARKET_RATIO, -t3.COUNTINGUNIT_MARKET_RATIO, -t3.PDOT_MARKET_RATIO, -t3.DATA_SOURCE, -case WHEN t3.KEY_COMPETITOR ='Others' and (UPPER(t2.keycompetitor) is not null or UPPER(t2.keycompetitor) <>'') -THEN upper(t2.keycompetitor) ELSE t3.KEY_COMPETITOR -end as KEY_COMPETITOR, -t3.NEW_CODE -,t2.no1 - from market_pack_mapping_1 t3 -left join dm.dm_td_external_packinfo t1 -on t1.PACK_COD = t3.PACK_COD and t1.DATA_SOURCE = t3.DATA_SOURCE -left JOIN (SELECT 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 NFC2_CODE IS NULL THEN 0 ELSE 1 END, - CASE WHEN NFC3_CODE IS NULL THEN 0 ELSE 1 END - ) AS no1,* FROM dwd.dwd_gnd_ims_tblkeycompetitor)t2 - on - COALESCE(t1.ATC1_COD,'') = case when t2.ATC1_Code is null then COALESCE(t1.ATC1_COD,'') else t2.ATC1_Code end - and COALESCE(t1.ATC2_COD,'') = case when t2.ATC2_Code is null then COALESCE(t1.ATC2_COD,'') else t2.ATC2_Code end - and COALESCE(t1.ATC3_COD,'') = case when t2.ATC3_Code is null then COALESCE(t1.ATC3_COD,'') else t2.ATC3_Code end - and COALESCE(t1.ATC4_COD,'') = case when t2.ATC4_Code is null then COALESCE(t1.ATC4_COD,'') else t2.ATC4_Code end - and COALESCE(t1.APP1_COD,'') = case when t2.NFC1_Code is null then COALESCE(t1.APP1_COD,'') else t2.NFC1_Code end - and COALESCE(t1.APP2_COD,'') = case when t2.NFC2_Code is null then COALESCE(t1.APP2_COD,'') else t2.NFC2_Code end - and COALESCE(t1.APP3_COD,'') = case when t2.NFC3_Code is null then COALESCE(t1.APP3_COD,'') else t2.NFC3_Code end - and COALESCE(t1.CORP_COD,'') = case when t2.corporation_code is null then COALESCE(t1.CORP_COD,'') else t2.corporation_code end - and COALESCE(t1.MANU_COD,'') = case when t2.Manufacturer_Code is null then COALESCE(t1.MANU_COD,'') else t2.Manufacturer_Code end - and COALESCE(t1.PROD_COD,'') = case when t2.Product_Code is null then COALESCE(t1.PROD_COD,'') else t2.Product_Code end - and COALESCE(t1.PACK_COD,'') = case when t2.Pack_Code is null then COALESCE(t1.PACK_COD,'') else t2.Pack_Code end - and COALESCE(t1.STGH_DES,'') = case when t2.Strength is null then COALESCE(t1.STGH_DES,'') else t2.Strength end - and COALESCE(t1.CMPS_COD,'') = case when t2.Molecule_Code is null then COALESCE(t1.CMPS_COD,'') else t2.Molecule_Code end - and COALESCE(t3.market ,'') = case when t2.market is null then COALESCE(t3.market,'') else t2.market end -) - -,mapping_match_key_competitor as ( - select * from (select *, row_number() over (partition by PACK_COD,MARKET,DATA_SOURCE,NEW_CODE,CLASS order by no1 desc ) as new_order FROM mapping_match_key_competitor_with_mutil ) as new - WHERE new.new_order =1 - ) - -insert overwrite table DM.dm_td_external_market_pack_mapping -( -PACK_COD, -PROD_DES, -PROD_DES_C, -MARKET, -CLASS, -VALUE_MARKET_RATIO, -UNIT_MARKET_RATIO, -COUNTINGUNIT_MARKET_RATIO, -PDOT_MARKET_RATIO, -DATA_SOURCE, -KEY_COMPETITOR, -KEY_COMPETITOR_CN, -NEW_CODE -) - -SELECT - t1.PACK_COD, - t1.PROD_DES, - t1.PROD_DES_C, - t1.MARKET, - t1.CLASS, - t1.VALUE_MARKET_RATIO, - t1.UNIT_MARKET_RATIO, - t1.COUNTINGUNIT_MARKET_RATIO, - t1.PDOT_MARKET_RATIO, - t1.DATA_SOURCE, - t1.KEY_COMPETITOR, - COALESCE(t2.PROD_DES_C,t1.KEY_COMPETITOR) as KEY_COMPETITOR_CN, - t1.NEW_CODE -FROM mapping_match_key_competitor t1 -left join mapping t2 -on upper(t1.KEY_COMPETITOR) = upper(t2.PROD_DES) - --- COMMAND ---------- - -update dm.dm_td_external_market_pack_mapping - set KEY_COMPETITOR = 'OTHERS',KEY_COMPETITOR_CN ='OTHERS' -where upper(KEY_COMPETITOR) = 'OTHERS' or upper(KEY_COMPETITOR_CN) = 'OTHERS' - --- COMMAND ---------- - -create or replace temporary view dim_KEY_COMPETITOR -as -select upper(KEY_COMPETITOR) as KEY_COMPETITOR,max(KEY_COMPETITOR_CN) as KEY_COMPETITOR_CN -from dm.dm_td_external_market_pack_mapping -group by KEY_COMPETITOR - --- COMMAND ---------- - -MERGE INTO dm.dm_td_external_market_pack_mapping AS t1 -USING dim_KEY_COMPETITOR AS t2 - ON t1.KEY_COMPETITOR = t2.KEY_COMPETITOR -WHEN MATCHED THEN - UPDATE SET t1.KEY_COMPETITOR_CN = t2.KEY_COMPETITOR_CN; diff --git a/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql:Zone.Identifier b/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/z 10 dm_td_external_market_pack_mapping_作废.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/z 11 dm_td_external_market_作废.sql b/EXTERNAL/z 11 dm_td_external_market_作废.sql deleted file mode 100644 index e816a9c..0000000 --- a/EXTERNAL/z 11 dm_td_external_market_作废.sql +++ /dev/null @@ -1,186 +0,0 @@ --- Databricks notebook source -INSERT OVERWRITE dm.dm_td_external_market ( - MARKET, DATA_SOURCE, TA, AZ_RELATED, MARKET_DESC, TA_RN, PRD_FLAG -) - SELECT - MARKET, - DATA_SOURCE, - MAX(TA) TA, - MAX(AZ_RELATED) AZ_RELATED, - MAX(MARKET_DESC) MARKET_DESC, - MAX(TA_RN) TA_RN, - case - when - DATA_SOURCE = 'Retail(Quarterly)' - and MARKET in ( - 'Antacid anti GI swelling agent+PPI Oral', - 'HTN Market', - 'NIAD (Non-Insulin Anti-Diabetic) Market', - 'Respules Market', - 'Statin+XZK Market', - 'BUDESONIDE Market', - 'Rosuvastatin Market', - 'Atorvastatin Market', - 'Metoprolol Succinate Market', - 'PPI Oral ESOMEPRAZOLE Market', - 'PPI Oral OMEPRAZOLE Market', - --'Inhaled Extended Market by Brand', - 'Inhaled Extended Market', - 'Non-Omeprazole', - 'Metoprolol Tartrate Market', - 'Pediatric Cough Market', - 'Anti-HER2 Market', - 'Anti-HER2 mBC Market', - 'Fasenra Market', - 'Severe Asthma' - ) - then - '1' - when - data_source = 'DTP(Quarterly)' - and market in ( - 'EGFR TKI Market', - 'Anti-HER2 Market', - 'Anti-HER2 mBC Market', - 'Fasenra/Tezspire Related Market', - 'Severe Asthma', - 'Tezspire CRSwNP Market', - 'CRSwNP Market', - 'PAM Market' - ) - then - '1' - else '0' - end as PRD_FLAG - FROM - DM.dm_td_external_market_pack_mapping_temp - GROUP BY - MARKET, - DATA_SOURCE - --- COMMAND ---------- - -refresh table dm.DM_TD_EXTERNAL_MARKET - --- COMMAND ---------- - -insert overwrite dm.dm_td_external_market_ta(MARKET,DATA_SOURCE,TA,TA_RN,MARKET_DESC) -SELECT MARKET,DATA_SOURCE, AZ_RELATED TA, TA_RN,MARKET_DESC -FROM DM.DM_TD_EXTERNAL_MARKET -WHERE MARKET NOT LIKE '%ALL Market%' and MARKET <>'Retail All Market' -UNION all -SELECT MARKET,DATA_SOURCE, 'CVRM' TA,0 TA_RN,MARKET_DESC -FROM DM.DM_TD_EXTERNAL_MARKET -WHERE MARKET = 'CVRM Market' - --- COMMAND ---------- - ------------------------------------------------------------------------------------ ---修改时间:20240822 ---修改人:FanXujia ---修改内容: ---Retail、EC渠道,新增NIAD这个TA。数据与DM相同 ------------------------------------------------------------------------------------ -insert into dm.dm_td_external_market_ta -( -MARKET, -DATA_SOURCE, -TA, -TA_RN, -MARKET_DESC -) -select -market, -DATA_SOURCE, -'NIAD' as TA, -7 as TA_RN, -MARKET_DESC -from dm.dm_td_external_market_ta -where DATA_SOURCE = 'Retail(Quarterly)' -and ta = 'DM' -union all -select -market, -DATA_SOURCE, -'NIAD' as TA, -7 as TA_RN, -MARKET_DESC -from dm.dm_td_external_market_ta -where DATA_SOURCE = 'EC(Monthly)' -and ta = 'DM' - ---20250701 chenwu 新增RARE = ONCO的Soliris Related Market -union all -select -market, -DATA_SOURCE, -'RARE' as TA, -8 as TA_RN, -MARKET_DESC -from dm.dm_td_external_market_ta -where DATA_SOURCE = 'Retail(Quarterly)' -and ta = 'ONCO' -and MARKET = 'Soliris Related Market' - --- COMMAND ---------- - --- log 20250226 auth:庄伟 --- 对market_ta表中市场进行补全,并依据手工文件维护的 market 与 ta 映射,匹配出完整市场对应的TA_NAME - - -insert overwrite table dm.dm_td_external_market_ta -( -MARKET, -DATA_SOURCE, -TA, -TA_MAP, -TA_RN, -MARKET_DESC -) - ------找出在market维度表中不存在的market列表 -with temp_ma_ext_market -as -( -select -distinct -MARKET -,DATA_SOURCE -from dm.dm_td_external_market -where MARKET NOT IN ( -select distinct MARKET -from dm.dm_td_external_market_ta -) -) - - -------补充完整的market列表,并通过market匹配手工文件维护的market对应的TA -select -distinct -dim_mkt_ta.MARKET, -DATA_SOURCE, -dim_mkt_ta.TA, -nvl(mkt_property.ta,mkt_property_key.TA) TA_MAP, -dim_mkt_ta.TA_RN, -dim_mkt_ta.MARKET_DESC -from -( -select MARKET,DATA_SOURCE,TA,TA_RN,MARKET_DESC -from dm.dm_td_external_market_ta -)dim_mkt_ta -left join dm.dm_ims_td_market_property mkt_property -on dim_mkt_ta.market = mkt_property.market -left join dm.dm_ims_td_market_property mkt_property_key -on dim_mkt_ta.MARKET = mkt_property_key.MARKET_KEY -union all -select - ext_market.MARKET, - ext_market.DATA_SOURCE, - null TA, - mkt_property.TA TA_MAP, - '99' as TA_RN, - null MARKET_DESC -from temp_ma_ext_market ext_market -left join dm.dm_ims_td_market_property mkt_property -on ext_market. market =mkt_property.MARKET -where nvl(mkt_property.TA,'')<>''; \ No newline at end of file diff --git a/EXTERNAL/z 11 dm_td_external_market_作废.sql:Zone.Identifier b/EXTERNAL/z 11 dm_td_external_market_作废.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/z 11 dm_td_external_market_作废.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/上线脚本.sql b/EXTERNAL/上线脚本.sql deleted file mode 100644 index b1661ed..0000000 --- a/EXTERNAL/上线脚本.sql +++ /dev/null @@ -1,2461 +0,0 @@ --- Databricks notebook source --- MAGIC %md --- MAGIC # AIA - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_AIA_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP - ) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_aia_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_aia_sales'; - - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_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_aia_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_aia_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_AIA_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_aia_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC #CHC - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack_property'; - - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_CHC_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_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_chc_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_chc_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHC_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chc_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC #CHPA - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_CHPA_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chpa_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chpa_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -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 ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_CHPA_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_chpa_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # COUNTY - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack_property'; - - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_COUNTY_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET --- 建表SQL -CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_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_county_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_county_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_COUNTY_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_county_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # EC - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_EC_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_ec_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_ec_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_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_ec_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_ec_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_EC_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_ec_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC #RETAIL - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_PACK_PROPERTY - ( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,PACK_DTP -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_DTP_PACK_PROPERTY - ( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_dtp_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_dtp_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; - --- COMMAND ---------- - --- DBTITLE 1,SALES_DTP -CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_DTP_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_dtp_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_dtp_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_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_retail_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_retail_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_RETAIL_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_retail_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # THC - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_THC_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_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_thc_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_thc_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_THC_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_thc_market_pack_mapping'; - --- COMMAND ---------- - --- DBTITLE 1,DM_TF_EXT_THC_MARKET_SALES_CHT -CREATE OR REPLACE TABLE DM.DM_TF_EXT_THC_MARKET_SALES_CHT ( - MARKET STRING, - KEY_COMPETITOR STRING, - CLASS STRING, - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - DATA_SOURCE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - CMPS_FLAG STRING COMMENT '分子式标签', - NEW_CODE STRING COMMENT '主数据关联CODE', - INST_CODE STRING COMMENT '内部机构编码', - AIA_HP_FLAG STRING, - DEPT_NAME STRING COMMENT '科室名称', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_TYPE STRING COMMENT '处方来源', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - VA DOUBLE, - UT DOUBLE, - CU DOUBLE, - PT DOUBLE, - SALES_UNIT_CAL DECIMAL(35,6), - SALES_UNIT_CAL_LY DECIMAL(35,6), - SALES_VALUE_CAL DECIMAL(35,6), - SALES_VALUE_CAL_LY DECIMAL(35,6), - CONUTING_UNIT DECIMAL(35,6), - CONUTING_UNIT_LY DECIMAL(35,6), - PDOT DECIMAL(35,6), - PDOT_LY DECIMAL(35,6), - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_market_sales_cht'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_thc_market_sales_cht'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC #XIEHE - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_PACK_PROPERTY -( - MARKET_PACK_KEY STRING, - PACK_CODE STRING, - PACK_DESC STRING, - STGH_DESC STRING, - PACK_LCH STRING, - FAMILY_CODE STRING, - FAMILY_NAME STRING, - PROD_CODE STRING, - PROD_DESC STRING, - PROD_DESC_C STRING, - CMPS_CODE STRING, - CMPS_DESC STRING, - CMPS_DESC_C 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_V STRING, - VBP_DESC STRING, - MANU_CODE STRING, - MANU_DESC STRING, - MANU_DESC_C STRING, - MNFL_CODE STRING, - MNFL_DESC STRING, - CORP_CODE STRING, - CORP_DESC STRING, - CORP_DESC_C STRING, - BRANDTYPE STRING, - MARKET STRING, - KEY_COMPETITOR STRING, - IS_AZ STRING, - AZ_MAIN STRING, - AZ_RELATED STRING, - ATC1_DESC STRING, - ATC1_DESC_C STRING, - ATC2_DESC STRING, - ATC2_DESC_C STRING, - ATC3_DESC STRING, - ATC3_DESC_C STRING, - ATC4_DESC STRING, - ATC4_DESC_C STRING, - APP1_DESC STRING, - APP1_DESC_C STRING, - APP2_DESC STRING, - APP2_DESC_C STRING, - APP3_DESC STRING, - APP3_DESC_C STRING, - CLASS STRING, - MARKET_RATIO STRING, - COUNTINGUNIT STRING, - VBP_BRAND STRING, - REPLENISH_FALG STRING, - ETL_INSERT_DT STRING, - ETL_UPDATE_DT STRING -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack_property'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack_property'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_XIEHE_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_xiehe_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_xiehe_sales'; - --- COMMAND ---------- - --- DBTITLE 1,PACK2MARKET -CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_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_xiehe_pack2market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_pack2market'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_RATIO ( - MARKET STRING, - PACK_CODE STRING, - CMPS_CODE 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_xiehe_market_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_BRAND_RATIO -CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_BRAND_RATIO ( - MARKET STRING, - PACK_CODE STRING, - VALUE_BRAND_RATIO FLOAT, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO FLOAT, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO FLOAT, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO FLOAT, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_brand_ratio'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_brand_ratio'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_XIEHE_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_xiehe_market_pack_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC #UNIONALL - --- COMMAND ---------- - --- DBTITLE 1,PACK -CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_PACKINFO ( - PACK_CODE STRING COMMENT '包装编码', - PACK_DESC STRING COMMENT '包装描述', - PACK_LCH STRING COMMENT '包装上市时间,示例"Y2024M05"', - PROD_CODE STRING COMMENT '产品编码', - PROD_DESC STRING COMMENT '产品描述', - PROD_DESC_C STRING COMMENT '产品中文描述', - CMPS_CODE STRING COMMENT '成分代码', - CMPS_DESC STRING COMMENT '成分描述', - CMPS_DESC_C STRING COMMENT '成分中文描述', - VBP_BATCH STRING COMMENT '带量采购批次号', - VBP_IMPLEMENTING_TIME STRING COMMENT '带量采购实施时间', - STGH_DESC STRING COMMENT '储存方式描述', - BIO_DESC STRING COMMENT '生物制药描述', - ETH_OTC_DESC STRING COMMENT '处方/非处方药描述', - NRDL_DESC STRING COMMENT '国家医保目录状态描述', - NRDL_ENTRY_DATE STRING COMMENT '国家医保目录纳入日期', - EDL_DESC STRING COMMENT '基本药物目录状态描述', - TCM_DESC STRING COMMENT '中医药分类描述', - PAED_DESC STRING COMMENT '儿童用药标志描述', - GQCE_DESC STRING COMMENT '绿色/质量/认证/应急标志描述', - MANU_CODE STRING COMMENT '生产企业编码', - MANU_DESC STRING COMMENT '生产企业名称描述', - MANU_DESC_C STRING COMMENT '生产企业名称中文描述', - MNFL_CODE STRING COMMENT '跨国/本地企业标志编码', - ATC1_CODE STRING COMMENT '解剖学治疗学化学分类1编码', - ATC1_DESC STRING COMMENT '解剖学治疗学化学分类1描述', - ATC1_DESC_C STRING COMMENT '解剖学治疗学化学分类1中文描述', - ATC2_CODE STRING COMMENT '解剖学治疗学化学分类2编码', - ATC2_DESC STRING COMMENT '解剖学治疗学化学分类2描述', - ATC2_DESC_C STRING COMMENT '解剖学治疗学化学分类2中文描述', - ATC3_CODE STRING COMMENT '解剖学治疗学化学分类3编码', - ATC3_DESC STRING COMMENT '解剖学治疗学化学分类3描述', - ATC3_DESC_C STRING COMMENT '解剖学治疗学化学分类3中文描述', - ATC4_CODE STRING COMMENT '解剖学治疗学化学分类4编码', - ATC4_DESC STRING COMMENT '解剖学治疗学化学分类4描述', - ATC4_DESC_C STRING COMMENT '解剖学治疗学化学分类4中文描述', - APP1_CODE STRING COMMENT '审批/申请分类(3个层级)', - APP1_DESC STRING COMMENT '', - APP1_DESC_C STRING COMMENT '', - APP2_CODE STRING COMMENT '', - APP2_DESC STRING COMMENT '', - APP2_DESC_C STRING COMMENT '', - APP3_CODE STRING COMMENT '', - APP3_DESC STRING COMMENT '', - APP3_DESC_C STRING COMMENT '', - GENE_ORIG_DESC STRING COMMENT '原研/仿制/中药药物来源描述', - VBP_DESC STRING COMMENT '带量采购状态(VBP-IN/VBP-OUT/Non VBP)描述', - CORP_CODE STRING COMMENT '公司编码', - GEN_RN INT COMMENT '原研/仿制排名(1-5)', - CORP_DESC STRING COMMENT '公司名称描述', - CORP_DESC_C STRING COMMENT '公司名称中文描述', - PACK_RN INT COMMENT '包装排名(按销售量)', - PROD_RN INT COMMENT '产品排名(按销售量)', - CMPS_RN INT COMMENT '成分排名(按销售量)', - DATA_SOURCE STRING COMMENT '数据来源渠道', - ATC STRING COMMENT 'ATC分类代码', - NEW_CODE STRING COMMENT '新编码', - COMMON_NAME STRING COMMENT '通用名称', - PRODUCT_NAME STRING COMMENT '产品名称', - MANU_DES_XIEHE STRING COMMENT '协和渠道生产企业名称', - PACK_DES_XIEHE STRING COMMENT '协和渠道包装描述', - DRUG_DELIVERY_ROUTE STRING COMMENT '给药途径', - NFC STRING COMMENT '国家处方集代码', - CORP_TYPE STRING COMMENT '企业类型(本地/跨国)', - LAUNCHTIME STRING COMMENT '产品上市时间', - VBP_BRAND STRING COMMENT '品牌带量采购状态汇总', - REPLENISH_FALG STRING COMMENT '后续补充标志', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_packinfo'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_packinfo'; - --- COMMAND ---------- - --- DBTITLE 1,SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_SALES ( - YYYYMM STRING, - PACK_CODE STRING, - CORP_CODE STRING, - AUDIT_CODE STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(38,10), - CONUTING_UNIT_LY DECIMAL(38,10), - DATA_SOURCE STRING, - INST_CODE STRING COMMENT '内部机构编码', - CMPS_FLAG STRING COMMENT '分子式标签', - DEPT_NAME STRING COMMENT '科室名称', - PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', - PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', - NEW_CODE STRING COMMENT '主数据关联CODE', - AREA STRING COMMENT '城市', - H_LEVEL STRING COMMENT '医院类型', - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_SOURCE STRING COMMENT '处方来源', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_PACK_MAPPING -CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET_PACK_MAPPING -( - PACK_CODE STRING, - MARKET STRING, - CLASS STRING, - KEY_COMPETITOR STRING, - MARKET_RATIO STRING, - STARTTIME STRING, - ENDTIME STRING, - VALUE_BRAND_RATIO STRING, - VALUE_BRAND_RATIO_START STRING, - VALUE_BRAND_RATIO_END STRING, - UNIT_BRAND_RATIO STRING, - UNIT_BRAND_START STRING, - UNIT_BRAND_END STRING, - COUNTINGUNIT_BRAND_RATIO STRING, - COUNTINGUNIT_BRAND_START STRING, - COUNTINGUNIT_BRAND_END STRING, - PDOT_BRAND_RATIO STRING, - PDOT_BRAND_START STRING, - PDOT_BRAND_END STRING, - DATASOURCE STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP -) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_pack_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_pack_mapping'; - --- COMMAND ---------- - --- DBTITLE 1,MARKET_SALES -CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_MARKET_SALES ( - MARKET STRING, - KEY_COMPETITOR STRING, - CLASS STRING, - YYYYMM STRING, - PACK_COD STRING, - CORP_COD STRING, - AUDIT_COD STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - DATA_SOURCE STRING, - PACK_FLAG STRING, - PROD_FLAG STRING, - DTP_FLAG STRING, - CMPS_FLAG STRING, - NEW_CODE STRING COMMENT '主数据关联CODE', - INST_CODE STRING COMMENT '内部机构编码', - AIA_HP_FLAG STRING, - DEPT_NAME STRING COMMENT '科室名称', - H_LEVEL STRING, - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_TYPE STRING COMMENT '处方来源', - PRESCRIPTION DECIMAL(35,10), - PRESCRIPTION_LY DECIMAL(35,10), - VA STRING, - UT STRING, - CU STRING, - PT STRING, - SALES_UNIT_CAL DECIMAL(35,6), - SALES_UNIT_CAL_LY DECIMAL(35,6), - SALES_VALUE_CAL DECIMAL(35,6), - SALES_VALUE_CAL_LY DECIMAL(35,6), - CONUTING_UNIT DECIMAL(35,6), - CONUTING_UNIT_LY DECIMAL(35,6), - PDOT DECIMAL(35,6), - PDOT_LY DECIMAL(35,6), - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP - ) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_market_sales'; - --- COMMAND ---------- - --- DBTITLE 1,SALES_MAPPING -CREATE OR REPLACE TABLE DM.DM_TF_EXT_UNIONALL_SALES_MAPPING -( - MARKET STRING, - KEY_COMPETITOR STRING, - CLASS STRING, - YYYYMM STRING, - PACK_COD STRING, - CORP_COD STRING, - AUDIT_COD STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - DATA_SOURCE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - CMPS_FLAG INT, - NEW_CODE STRING COMMENT '主数据关联CODE', - INST_CODE STRING COMMENT '内部机构编码', - AIA_HP_FLAG INT, - DEPT_NAME STRING COMMENT '科室名称', - H_LEVEL INT, - REIMBURSE STRING COMMENT '报销情况', - REIMBURSE_TYPE STRING COMMENT '报销类型', - PRESCRIPTION_TYPE STRING COMMENT '处方来源', - VA decimal(35,10), - UT decimal(35,10), - CU decimal(35,10), - PT decimal(35,10), - SALES_UNIT_CAL decimal(35,10), - SALES_UNIT_CAL_LY decimal(35,10), - SALES_VALUE_CAL decimal(35,10), - SALES_VALUE_CAL_LY decimal(35,10), - CONUTING_UNIT decimal(35,10), - CONUTING_UNIT_LY decimal(35,10), - PDOT decimal(35,10), - PDOT_LY decimal(35,10), - PRESCRIPTION INT, - PRESCRIPTION_LY INT, - AIA_REMOVE INT, - MERGEDATA_FLAG STRING, - MERGEDATA_FLAG_MKT STRING, - MERGEDATA_FLAG_CHPA_DTP INT, - MERGEDATA_FLAG_DTP_NOROC INT, - MERGED_DATA_DTP_OTHERS INT, - EGFR_FLAG INT, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_unionall_sales_mapping'; - --- COMMAND ---------- - --- MAGIC %md --- MAGIC # OTHER - --- COMMAND ---------- - --- DBTITLE 1,dm_td_ext_unionall_market -CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET ( - MARKET STRING, - DATA_SOURCE STRING, - TA STRING, - AZ_RELATED STRING, - MARKET_DESC STRING, - TA_RN INT, - PRD_FLAG STRING, - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market'; - --- COMMAND ---------- - --- DBTITLE 1,dm_td_ext_unionall_market_ta -CREATE OR REPLACE TABLE DM.DM_TD_EXT_UNIONALL_MARKET_TA ( - MARKET STRING COMMENT '市场', - DATA_SOURCE STRING COMMENT '数据源', - TA STRING COMMENT '治疗领域', - TA_MAP STRING COMMENT '治疗领域匹配', - TA_RN INT COMMENT '治疗领域排名', - MARKET_DESC STRING COMMENT '市场描述', - ETL_INSERT_DT TIMESTAMP, - ETL_UPDATE_DT TIMESTAMP) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_ta'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_td_ext_unionall_market_ta'; - --- COMMAND ---------- - --- DBTITLE 1,DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth -CREATE OR REPLACE TABLE dm.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth ( - MARKET STRING, - KEY_COMPETITOR STRING, - CLASS STRING, - YYYYMM STRING, - PACK_COD STRING, - CORP_COD STRING, - AUDIT_COD STRING, - PLATFORM_TYPE STRING, - STORE_NAME STRING, - STORE_TYPE STRING, - REGION_TYPE STRING, - PACK_FLAG INT, - PROD_FLAG INT, - DTP_FLAG INT, - SALES_UNIT_CAL DECIMAL(38,10), - SALES_UNIT_CAL_LY DECIMAL(38,10), - SALES_VALUE_CAL DECIMAL(38,10), - SALES_VALUE_CAL_LY DECIMAL(38,10), - CONUTING_UNIT DECIMAL(21,0), - CONUTING_UNIT_LY DECIMAL(21,0), - PDOT DECIMAL(21,0), - PDOT_LY DECIMAL(21,0), - DATA_SOURCE STRING, - inst_code STRING, - cmps_flag STRING, - dept_name STRING, - prescription STRING, - prescription_ly STRING, - new_code STRING, - area STRING, - h_level STRING, - reimburse STRING, - reimburse_type STRING, - prescription_source STRING) -USING delta -LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth'; --- 上面是生产环境location,下面是测试环境location --- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth'; diff --git a/EXTERNAL/上线脚本.sql:Zone.Identifier b/EXTERNAL/上线脚本.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/上线脚本.sql:Zone.Identifier and /dev/null differ diff --git a/EXTERNAL/数据验证.sql b/EXTERNAL/数据验证.sql deleted file mode 100644 index 1752822..0000000 --- a/EXTERNAL/数据验证.sql +++ /dev/null @@ -1,39 +0,0 @@ --- Databricks notebook source -desc dm.dm_tf_ext_aia_sales - --- COMMAND ---------- - -select DATA_SOURCE,DTP_FLAG from dm.DM_TF_EXTERANL_SALES_MERGED_DATA_DTP_OTHERS_bymonth -group by DATA_SOURCE,DTP_FLAG - --- COMMAND ---------- - -select DTP_FLAG,DATA_SOURCE from DM.DM_TF_EXT_RETAIL_DTP_SALES group by DTP_FLAG,DATA_SOURCE --- order by DATA_SOURCE - --- COMMAND ---------- - -select DATA_SOURCE,DTP_FLAG from DM.DM_TF_EXT_UNIONALL_SALES group by DATA_SOURCE,DTP_FLAG -order by DATA_SOURCE,DTP_FLAG - --- COMMAND ---------- - -select DATA_SOURCE,DTP_FLAG,count(*) from DM.dm_tf_ext_unionall_sales_mapping -group BY DATA_SOURCE,DTP_FLAG -ORDER BY DATA_SOURCE,DTP_FLAG - - --- COMMAND ---------- - -select * from DM.DM_TF_EXT_UNIONALL_SALES_MAPPING -limit 4 - --- COMMAND ---------- - -select AUDIT_CODE from DM.DM_TF_EXT_CHPA_SALES group by AUDIT_CODE --- limit 5 - --- COMMAND ---------- - -select * from DM.DM_TD_EXT_CHPA_PACK2MARKET -limit 5 \ No newline at end of file diff --git a/EXTERNAL/数据验证.sql:Zone.Identifier b/EXTERNAL/数据验证.sql:Zone.Identifier deleted file mode 100644 index d6c1ec6..0000000 Binary files a/EXTERNAL/数据验证.sql:Zone.Identifier and /dev/null differ diff --git a/README.md b/README.md deleted file mode 100644 index 37f2fbf..0000000 --- a/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# MarketAnalysis ETL - -This repository contains ETL code for Market Analysis on Databricks. - -## Project Structure -- `notebooks/` - Databricks notebooks -- `src/` - Source code files -- `config/` - Configuration files - -## Setup -Clone the repository and configure Databricks workspace connection.