Add EXTERNAL SQL scripts

This commit is contained in:
2026-04-20 14:55:25 +08:00
parent c05ba7ec7e
commit b4979eed82
344 changed files with 61619 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
-- 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)
;

View File

@@ -0,0 +1,26 @@
-- 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)
;

View File

@@ -0,0 +1,24 @@
-- Databricks notebook source
-----------------------------------------------------------------------------------------------------------------
--修改时间20240904
--FanXujia
--
--id为93的数manufacturer_abbr不是SH/使
------------------------------------------------------------------------
--MANU维度表ManufacturerType_ID中存在为0的数据关联不出对应的ManufacturerType
--ManufacturerType_ID = 0 MNC2MNC
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
;

View File

@@ -0,0 +1,89 @@
-- 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')
;

View File

@@ -0,0 +1,32 @@
-- Databricks notebook source
--PackMole 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_CodeProduct_CodeMolecule_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)
;

Binary file not shown.

View File

@@ -0,0 +1,210 @@
-- 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

Binary file not shown.

View File

@@ -0,0 +1,19 @@
-- 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

Binary file not shown.

View File

@@ -0,0 +1,33 @@
-- 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
;

Binary file not shown.

View File

@@ -0,0 +1,19 @@
-- 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');

View File

@@ -0,0 +1,28 @@
-- 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
;

Binary file not shown.

View File

@@ -0,0 +1,18 @@
-- 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');

View File

@@ -0,0 +1,238 @@
-- 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 CompetitorNo 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
;

Binary file not shown.

View File

@@ -0,0 +1,7 @@
-- Databricks notebook source
-- 20260119 市场&TA 关系信息 我感觉可以拉到前面去
--&TA
insert overwrite table dws.dws_ims_td_market_ta
select *
from dwd.dwd_gnd_ims_tblmarket_ta_map
;

View File

@@ -0,0 +1,22 @@
-- 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
;

Binary file not shown.

View File

@@ -0,0 +1,7 @@
-- 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

View File

@@ -0,0 +1,32 @@
-- Databricks notebook source
-- DBTITLE 1,产品挂中文名
--Product中文名字,5CORP或者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
(
--10Prod_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
);

View File

@@ -0,0 +1,206 @@
-- 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
;

View File

@@ -0,0 +1,160 @@
-- 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

View File

@@ -0,0 +1,71 @@
-- 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%"

View File

@@ -0,0 +1,30 @@
-- 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%'

View File

@@ -0,0 +1,327 @@
-- 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)

View File

@@ -0,0 +1,147 @@
-- 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
;

View File

@@ -0,0 +1,166 @@
-- 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;

View File

@@ -0,0 +1,58 @@
-- 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

View File

@@ -0,0 +1,67 @@
-- 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

Binary file not shown.

View File

@@ -0,0 +1,35 @@
-- 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

View File

@@ -0,0 +1,615 @@
-- 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
*/

Binary file not shown.

View File

@@ -0,0 +1,463 @@
-- 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

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,759 @@
-- 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;

Binary file not shown.

View File

@@ -0,0 +1,14 @@
-- 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;

View File

@@ -0,0 +1,30 @@
-- 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