418 lines
8.8 KiB
SQL
418 lines
8.8 KiB
SQL
-- 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; |