county-0518

sales 和 pack property 部分修改
This commit is contained in:
2026-05-18 07:39:35 +00:00
parent 7294cc1c6f
commit 4292104283
15 changed files with 577 additions and 715 deletions

View File

@@ -0,0 +1,313 @@
-- Databricks notebook source
-- CREATE OR REPLACE TABLE DM.DM_TF_EXT_COUNTY_SALES (
-- YYYYMM STRING,
-- PACK_CODE STRING,
-- CORP_CODE STRING,
-- AUDIT_CODE STRING,
-- PLATFORM_TYPE STRING,
-- STORE_NAME STRING,
-- STORE_TYPE STRING,
-- REGION_TYPE STRING,
-- PACK_FLAG INT,
-- PROD_FLAG INT,
-- DTP_FLAG INT,
-- SALES_UNIT_CAL DECIMAL(38,10),
-- SALES_UNIT_CAL_LY DECIMAL(38,10),
-- SALES_VALUE_CAL DECIMAL(38,10),
-- SALES_VALUE_CAL_LY DECIMAL(38,10),
-- CONUTING_UNIT DECIMAL(38,10),
-- CONUTING_UNIT_LY DECIMAL(38,10),
-- DATA_SOURCE STRING,
-- INST_CODE STRING COMMENT '内部机构编码',
-- CMPS_FLAG STRING COMMENT '分子式标签',
-- DEPT_NAME STRING COMMENT '科室名称',
-- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数',
-- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数',
-- NEW_CODE STRING COMMENT '主数据关联CODE',
-- AREA STRING COMMENT '城市',
-- H_LEVEL STRING COMMENT '医院类型',
-- REIMBURSE STRING COMMENT '报销情况',
-- REIMBURSE_TYPE STRING COMMENT '报销类型',
-- PRESCRIPTION_SOURCE STRING COMMENT '处方来源',
-- ETL_INSERT_DT TIMESTAMP,
-- ETL_UPDATE_DT TIMESTAMP)
-- USING delta
-- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales';
-- -- 上面是生产环境location下面是测试环境location
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_county_sales';
-- CREATE OR REPLACE TABLE catalog_e2_ngbi_qas.dwd.dwd_gnd_county_pharbers_prov_fact (
-- year STRING,
-- ym STRING,
-- province_c STRING,
-- ims_drug_id STRING,
-- is_hosp_code STRING,
-- prod_corp STRING,
-- prod_cod STRING,
-- pack_cod STRING,
-- phcd STRING,
-- prod_des STRING,
-- cmps_cod STRING,
-- cmps_des STRING,
-- corp_cod STRING,
-- corp_des STRING,
-- mnfl_cod STRING,
-- prod_des_c STRING,
-- cmps_c STRING,
-- corp_des_c STRING,
-- pack_des STRING,
-- spec STRING,
-- conversion_ratio STRING,
-- dosage_form STRING,
-- atc4_cod STRING,
-- app1_cod STRING,
-- app1_des STRING,
-- app1_des_c STRING,
-- app2_cod STRING,
-- app2_des STRING,
-- app2_des_c STRING,
-- app3_cod STRING,
-- app3_des STRING,
-- app3_des_c STRING,
-- vbp_batch STRING,
-- vbp STRING,
-- value STRING,
-- totalunit STRING,
-- countingunit STRING,
-- price STRING,
-- manu_cod STRING,
-- manu_des STRING,
-- manu_des_c STRING,
-- source_file_path STRING,
-- source_file_name STRING,
-- etl_insert_dt STRING)
-- USING delta
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DWD/dwd_gnd_county_pharbers_prov_fact'
-- COMMAND ----------
-- DBTITLE 1,dwd sales
CREATE OR REPLACE TEMPORARY VIEW FACT_COUNTY_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_county_pharbers_prov_fact
-- COMMAND ----------
-- DBTITLE 1,dwd pach2pack
CREATE OR REPLACE TEMPORARY VIEW DIM_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 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 ----------
WITH original_sales AS (
SELECT /*+ BROADCAST(T2,T3) */
T1.YM AS YYYYMM,
T2.PROVINCE_CODE AS AUDIT_COD,
T3.IQVIA_PACK_CODE AS PACK_CODE,
T1.VALUE AS SALES_VALUE,
T1.TOTALUNIT AS SALES_UNIT,
T1.COUNTINGUNIT AS COUNTINGUNIT
FROM FACT_COUNTY_PREVIOUS AS T1
LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME
LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD
)
SELECT
cy.YYYYMM,
cy.AUDIT_COD,
cy.PACK_CODE,
cy.SALES_VALUE,
cy.SALES_UNIT,
cy.COUNTINGUNIT,
-- 去年同期YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303
ly.SALES_VALUE AS SALES_VALUE_LY,
ly.SALES_UNIT AS SALES_UNIT_LY,
ly.COUNTINGUNIT AS COUNTINGUNIT_LY
FROM original_sales AS cy
LEFT JOIN original_sales AS ly
ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年
AND ly.AUDIT_COD = cy.AUDIT_COD
AND ly.PACK_CODE = cy.PACK_CODE
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TF_EXT_COUNTY_SALES (
YYYYMM,
PACK_CODE,
AUDIT_CODE,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
PRESCRIPTION,
PRESCRIPTION_LY,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
CMPS_FLAG,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
INST_CODE,
DEPT_NAME,
NEW_CODE,
AREA,
H_LEVEL,
REIMBURSE,
REIMBURSE_TYPE,
PRESCRIPTION_SOURCE,
CORP_CODE,
ETL_INSERT_DT,
ETL_UPDATE_DT
)
-- ════════════════════════════════════════════
-- Part 1省份数据
-- 20260518 county的省份数据重写
-- ════════════════════════════════════════════
WITH original_sales AS (
SELECT /*+ BROADCAST(T2,T3) */
T1.YM AS YYYYMM,
T2.PROVINCE_CODE AS AUDIT_COD,
T3.IQVIA_PACK_CODE AS PACK_COD,
T1.VALUE AS SALES_VALUE_CAL,
T1.TOTALUNIT AS SALES_UNIT_CAL,
T1.COUNTINGUNIT AS CONUTING_UNIT
FROM FACT_COUNTY_PREVIOUS AS T1
LEFT JOIN DIM_PROVINCE AS T2 ON T1.PROVINCE_C = T2.PROVINCE_NAME
LEFT JOIN DIM_PACK_INFO AS T3 ON T1.PHCD = T3.PACK_COD
)
,formated_count_sales_table (
SELECT
cy.YYYYMM,
cy.AUDIT_COD,
cy.PACK_COD,
cy.SALES_VALUE_CAL,
cy.SALES_UNIT_CAL,
cy.CONUTING_UNIT,
-- 去年同期YYYYMM 为 6 位整数,减 100 即同月上一年(如 202403 → 202303
ly.SALES_VALUE_CAL AS SALES_VALUE_CAL_LY,
ly.SALES_UNIT_CAL AS SALES_UNIT_CAL_LY,
ly.CONUTING_UNIT AS CONUTING_UNIT_LY
FROM original_sales AS cy
LEFT JOIN original_sales AS ly
ON ly.YYYYMM = cy.YYYYMM - 100 -- 同月去年
AND ly.AUDIT_COD = cy.AUDIT_COD
AND ly.PACK_COD = cy.PACK_COD
)
-- ════════════════════════════════════════════
-- Part 2延续合同并表中的结构
-- 20260518 county的省份数据重写
-- ════════════════════════════════════════════
SELECT
A.YYYYMM,
A.PACK_COD AS PACK_CODE,
A.AUDIT_COD AS AUDIT_CODE,
'IQVIA-COUNTY(Quarterly)' DATA_SOURCE,
-------------------------------------
SUM(SALES_UNIT_CAL) SALES_UNIT_CAL,
SUM(SALES_UNIT_CAL_LY) as SALES_UNIT_CAL_LY,
SUM(SALES_VALUE_CAL) SALES_VALUE_CAL,
SUM(SALES_VALUE_CAL_LY) as SALES_VALUE_CAL_LY,
SUM(CONUTING_UNIT) CONUTING_UNIT,
SUM(CONUTING_UNIT_LY) as CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --使
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_CODE, --可以移除,报告没有使用
-------------------------------------
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT
FROM
formated_count_sales_table A
where
A.YYYYMM >= '202001'
GROUP BY
A.YYYYMM,
A.PACK_COD,
A.AUDIT_COD