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,418 @@
-- Databricks notebook source
-- CREATE OR REPLACE TABLE DM.DM_TF_EXT_CHC_SALES (
-- YYYYMM STRING,
-- PACK_CODE STRING,
-- CORP_CODE STRING,
-- AUDIT_CODE STRING,
-- PLATFORM_TYPE STRING,
-- STORE_NAME STRING,
-- STORE_TYPE STRING,
-- REGION_TYPE STRING,
-- PACK_FLAG INT,
-- PROD_FLAG INT,
-- DTP_FLAG INT,
-- SALES_UNIT_CAL DECIMAL(38,10),
-- SALES_UNIT_CAL_LY DECIMAL(38,10),
-- SALES_VALUE_CAL DECIMAL(38,10),
-- SALES_VALUE_CAL_LY DECIMAL(38,10),
-- CONUTING_UNIT DECIMAL(38,10),
-- CONUTING_UNIT_LY DECIMAL(38,10),
-- DATA_SOURCE STRING,
-- INST_CODE STRING COMMENT '内部机构编码',
-- CMPS_FLAG STRING COMMENT '分子式标签',
-- DEPT_NAME STRING COMMENT '科室名称',
-- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数',
-- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数',
-- NEW_CODE STRING COMMENT '主数据关联CODE',
-- AREA STRING COMMENT '城市',
-- H_LEVEL STRING COMMENT '医院类型',
-- REIMBURSE STRING COMMENT '报销情况',
-- REIMBURSE_TYPE STRING COMMENT '报销类型',
-- PRESCRIPTION_SOURCE STRING COMMENT '处方来源',
-- ETL_INSERT_DT TIMESTAMP,
-- ETL_UPDATE_DT TIMESTAMP
-- )
-- USING delta
-- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales';
-- 上面是生产环境location下面是测试环境location
-- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_chc_sales';
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW RAW_DATA
AS
SELECT
CASE
WHEN SUBSTRING(YQ, 5, 2) = 'Q1'
THEN CONCAT (SUBSTRING(YQ, 1, 4), '03')
WHEN SUBSTRING(YQ, 5, 2) = 'Q2'
THEN CONCAT (SUBSTRING(YQ, 1, 4), '06')
WHEN SUBSTRING(YQ, 5, 2) = 'Q3'
THEN CONCAT (SUBSTRING(YQ, 1, 4), '09')
WHEN SUBSTRING(YQ, 5, 2) = 'Q4'
THEN CONCAT (SUBSTRING(YQ, 1, 4), '12')
ELSE YQ
END AS YQ,
CITY_C,
PACK_COD,
PROD_COD,
VALUE,
TOTALUNIT,
COUNTINGUNIT
FROM
DWD.DWD_GND_CHC_RAWDATA
WHERE
YEAR >= '2021'
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW FILTER_YM
AS
SELECT
MAX(YQ) AS MAX_YYYYMM,
CONCAT(CAST(FLOOR(MAX(YQ)/100-1) AS STRING),'01') AS MIN_YYYYMM
FROM
RAW_DATA
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW CORP_DATA
AS
SELECT
PACK_COD,
CORP_COD,
CORP_DES
FROM
DM.DM_IMS_TD_PACK_PROPERTY
GROUP BY
PACK_COD,
CORP_COD,
CORP_DES
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW PACK_DATA
AS
SELECT
DISTINCT
IQVIA_PACK_CODE,
IQVIA_PROD_CODE,
PACK_COD,
APP1_COD,
APP1_DES,
APP1_DES_C,
APP2_COD,
APP2_DES,
APP2_DES_C,
APP3_COD,
APP3_DES,
APP3_DES_C,
ATC1_COD,
ATC1_DES,
ATC1_DES_C,
ATC2_COD,
ATC2_DES,
ATC2_DES_C,
ATC3_COD,
ATC3_DES,
ATC3_DES_C,
ATC4_COD,
ATC4_DES,
ATC4_DES_C,
BIO_DESC,
CMPS_COD,
CMPS_DES,
CMPS_DES_C,
CORP_COD,
CORP_DES,
CORP_DES_C,
EDL_DESC,
ETH_OTC_DESC,
GENE_ORIG_DESC,
GQCE_DESC,
MANU_COD,
MANU_DES,
MANU_DES_C,
MNFL_COD,
MNFL_DES,
NRDL_DESC,
PACK_DES,
STGH_DES,
PACK_LCH,
PAED_DESC,
PROD_DES,
PROD_DES_C,
TCM_DESC,
VBP_DESC,
BUILTINARCHIVEDATE,
SOURCE_FILE_PATH,
SOURCE_FILE_NAME,
ETL_INSERT_DT,
COUNTINGUNIT
FROM
DWD.DWD_GND_EXT_CHC_PACK_PROPERTY
-- COMMAND ----------
--CHC本身唯独表 CORP_COD以及 CORP_DES
CREATE OR REPLACE TEMPORARY VIEW PACK_WIHT_CORP_DATA
AS
SELECT
T1.PACK_COD,
T1.IQVIA_PACK_CODE,
T1.COUNTINGUNIT,
COALESCE(T2.CORP_COD, T1.CORP_COD) AS CORP_COD,
COALESCE(T2.CORP_DES, T1.CORP_DES) AS CORP_DES
FROM
PACK_DATA T1
LEFT JOIN
CORP_DATA T2
ON
T1.IQVIA_PACK_CODE = T2.PACK_COD
-- COMMAND ----------
--GEO相关信息 CHPA中没有 , CITY_C当作AUDIT_COD
CREATE OR REPLACE TEMPORARY VIEW DIM_EXCHC_GEO
AS
SELECT
T1.CITY_E,
CONCAT (T1.CITY_C, '') AS CITY_C,
UPPER(NVL (T2.AUDIT_COD, T1.CITY_E)) AS AUDIT_COD
FROM
DWD.DWD_GND_EXT_CHC_GEO T1
LEFT JOIN
DM.DM_IMS_TD_GEO T2
ON
T1.CITY_E = T2.CITY
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_WIHT_PACK_CORP_GEO_DATA
AS
SELECT
T1.YQ,
T1.CITY_C,
T3.IQVIA_PACK_CODE AS PACK_COD,
T3.CORP_COD AS CORP_COD,
C.AUDIT_COD AS AUDIT_COD,
T1.PROD_COD,
T1.VALUE,
T1.TOTALUNIT,
T1.TOTALUNIT * NVL (T3.COUNTINGUNIT, 1) AS COUNTINGUNIT
FROM
RAW_DATA T1
LEFT JOIN
PACK_WIHT_CORP_DATA T3
ON
T1.PACK_COD = T3.PACK_COD
LEFT JOIN
DIM_EXCHC_GEO C
ON
T1.CITY_C = C.CITY_C
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_WIHT_LY
AS
SELECT
A.YQ,
A.AUDIT_COD,
A.PACK_COD,
A.CORP_COD,
SUM(A.VALUE) VALUE,
SUM(A.TOTALUNIT) TOTALUNIT,
SUM(A.COUNTINGUNIT) COUNTINGUNIT,
SUM(VALUE_LY) VALUE_LY,
SUM(TOTALUNIT_LY) TOTALUNIT_LY,
SUM(COUNTINGUNIT_LY) COUNTINGUNIT_LY
FROM
(
SELECT
T1.YQ,
T1.AUDIT_COD,
T1.PACK_COD,
T1.CORP_COD,
T1.VALUE,
T1.TOTALUNIT,
T1.COUNTINGUNIT,
0 VALUE_LY,
0 TOTALUNIT_LY,
0 COUNTINGUNIT_LY
FROM
RAW_DATA_WIHT_PACK_CORP_GEO_DATA T1
UNION ALL
SELECT
CAST(T1.YQ + 100 AS INT),
T1.AUDIT_COD,
T1.PACK_COD,
T1.CORP_COD,
0 VALUE,
0 TOTALUNIT,
0 COUNTINGUNIT,
T1.VALUE VALUE_LY,
T1.TOTALUNIT TOTALUNIT_LY,
T1.COUNTINGUNIT COUNTINGUNIT_LY
FROM
RAW_DATA_WIHT_PACK_CORP_GEO_DATA AS T1
CROSS JOIN
FILTER_YM AS T2
WHERE
T1.YQ + 100 <= T2.MAX_YYYYMM
) A
GROUP BY
A.YQ,
A.AUDIT_COD,
A.PACK_COD,
A.CORP_COD
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW RAW_DATA_FINAL
AS
SELECT
T1.YQ AS YYYYMM,
T1.AUDIT_COD,
T1.PACK_COD,
T1.CORP_COD,
SUM(TOTALUNIT) AS SALES_UNIT_CAL, -- TOTALUNIT,
SUM(TOTALUNIT_LY) AS SALES_UNIT_CAL_LY, --TOTALUNIT_LY,
SUM(VALUE) AS SALES_VALUE_CAL, --VALUE,
SUM(VALUE_LY) AS SALES_VALUE_CAL_LY,
SUM(COUNTINGUNIT) AS CONUTING_UNIT, --COUNTINGUNIT,
SUM(COUNTINGUNIT_LY) AS CONUTING_UNIT_LY,
'CHC(Quarterly)' AS DATA_SOURCE
FROM
RAW_DATA_WIHT_LY T1
GROUP BY
T1.YQ,
T1.AUDIT_COD,
T1.PACK_COD,
T1.CORP_COD
-- COMMAND ----------
CREATE OR REPLACE TEMPORARY VIEW DM_TF_EXT_CHC_SALES AS
SELECT
A.YYYYMM,
A.PACK_COD AS PACK_CODE,
A.AUDIT_COD AS AUDIT_CODE,
'CHC(Quarterly)' DATA_SOURCE,
-------------------------------------
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
null as prescription,
null as prescription_ly,
-------------------------------------
--Retail藏数逻辑标签------------------
1 PACK_FLAG,
1 PROD_FLAG,
0 DTP_FLAG,
null as cmps_flag,
-------------------------------------
--EC数据标签--------------------------
'' PLATFORM_TYPE,
'' STORE_NAME,
'' STORE_TYPE,
-------------------------------------
--COUNTY数据标签----------------------
'' REGION_TYPE,
-------------------------------------
--AIA数据标签-------------------------
null inst_code, --使
-------------------------------------
--XIE HE 数据标签---------------------
'' as dept_name,
'' as new_code,
'' as area,
'' as h_level,
'' as reimburse,
'' as reimburse_type,
'' as prescription_source,
-------------------------------------
'' as CORP_CODE --可以移除报告没有使用E
-------------------------------------
FROM
RAW_DATA_FINAL A
WHERE
YYYYMM
>= (
SELECT
CAST((LEFT(MAX(YYYYMM), 4) - 3) * 100 + 1 AS INT)
FROM
RAW_DATA_FINAL
)
-- COMMAND ----------
INSERT OVERWRITE TABLE DM.DM_TF_EXT_CHC_SALES (
YYYYMM,
PACK_CODE,
AUDIT_CODE,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
PRESCRIPTION,
PRESCRIPTION_LY,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
CMPS_FLAG,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
INST_CODE,
DEPT_NAME,
NEW_CODE,
AREA,
H_LEVEL,
REIMBURSE,
REIMBURSE_TYPE,
PRESCRIPTION_SOURCE,
CORP_CODE,
ETL_INSERT_DT,
ETL_UPDATE_DT
)
SELECT
YYYYMM,
NVL(NULLIF(PACK_CODE, ''), CONCAT('PACK_CODE_', DATA_SOURCE)) AS PACK_CODE,
NVL(NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE,
DATA_SOURCE,
SALES_UNIT_CAL,
SALES_UNIT_CAL_LY,
SALES_VALUE_CAL,
SALES_VALUE_CAL_LY,
CONUTING_UNIT,
CONUTING_UNIT_LY,
PRESCRIPTION,
PRESCRIPTION_LY,
PACK_FLAG,
PROD_FLAG,
DTP_FLAG,
CMPS_FLAG,
PLATFORM_TYPE,
STORE_NAME,
STORE_TYPE,
REGION_TYPE,
INST_CODE,
DEPT_NAME,
NEW_CODE,
AREA,
H_LEVEL,
REIMBURSE,
REIMBURSE_TYPE,
PRESCRIPTION_SOURCE,
CORP_CODE,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT,
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT
FROM
DM_TF_EXT_CHC_SALES;