-- Databricks notebook source -- CREATE OR REPLACE TABLE DM.DM_TF_EXT_RETAIL_SALES ( -- YYYYMM STRING, -- PACK_CODE STRING, -- CORP_CODE STRING, -- AUDIT_CODE STRING, -- PLATFORM_TYPE STRING, -- STORE_NAME STRING, -- STORE_TYPE STRING, -- REGION_TYPE STRING, -- PACK_FLAG INT, -- PROD_FLAG INT, -- DTP_FLAG INT, -- SALES_UNIT_CAL DECIMAL(38,10), -- SALES_UNIT_CAL_LY DECIMAL(38,10), -- SALES_VALUE_CAL DECIMAL(38,10), -- SALES_VALUE_CAL_LY DECIMAL(38,10), -- CONUTING_UNIT DECIMAL(38,10), -- CONUTING_UNIT_LY DECIMAL(38,10), -- DATA_SOURCE STRING, -- INST_CODE STRING COMMENT '内部机构编码', -- CMPS_FLAG STRING COMMENT '分子式标签', -- DEPT_NAME STRING COMMENT '科室名称', -- PRESCRIPTION DECIMAL(38,10) COMMENT '处方张数', -- PRESCRIPTION_LY DECIMAL(38,10) COMMENT '去年同期处方张数', -- NEW_CODE STRING COMMENT '主数据关联CODE', -- AREA STRING COMMENT '城市', -- H_LEVEL STRING COMMENT '医院类型', -- REIMBURSE STRING COMMENT '报销情况', -- REIMBURSE_TYPE STRING COMMENT '报销类型', -- PRESCRIPTION_SOURCE STRING COMMENT '处方来源', -- ETL_INSERT_DT TIMESTAMP, -- ETL_UPDATE_DT TIMESTAMP) -- USING delta -- -- LOCATION 'abfss://master@azcdatalakeprd.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; -- -- 上面是生产环境location,下面是测试环境location -- LOCATION 'abfss://master@retaildlstoragetest.dfs.core.chinacloudapi.cn/DM/dm_tf_ext_retail_sales'; -- COMMAND ---------- -- CREATE TABLE DM.DM_TF_EXT_RETAIL_NIAD_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 STRING, -- PROD_FLAG STRING, -- DTP_FLAG STRING, -- SALES_UNIT_CAL DECIMAL(38,10), -- SALES_UNIT_CAL_LY STRING, -- SALES_VALUE_CAL DECIMAL(38,10), -- SALES_VALUE_CAL_LY STRING, -- CONUTING_UNIT DECIMAL(38,10), -- CONUTING_UNIT_LY STRING, -- DATA_SOURCE STRING, -- INST_CODE STRING, -- CMPS_FLAG STRING, -- DEPT_NAME STRING, -- PRESCRIPTION STRING, -- PRESCRIPTION_LY STRING, -- NEW_CODE STRING, -- AREA STRING, -- H_LEVEL STRING, -- REIMBURSE STRING, -- REIMBURSE_TYPE STRING, -- PRESCRIPTION_SOURCE STRING, -- ETL_INSERT_DT TIMESTAMP, -- ETL_UPDATE_DT TIMESTAMP) -- USING delta -- COMMAND ---------- CREATE OR REPLACE TEMPORARY VIEW RETAIL_SALES AS SELECT A.YYYYMM, A.iqvia_pack_code AS PACK_CODE, trim(A.AUDIT_COD) AS AUDIT_CODE, 'Retail(Quarterly)' DATA_SOURCE, ------------------------------------- SUM(sales_unit) SALES_UNIT_CAL, SUM(sales_unit_ly) as SALES_UNIT_CAL_LY, SUM(sales_value) SALES_VALUE_CAL, SUM(sales_value_LY) as SALES_VALUE_CAL_LY, SUM(counting_unit) CONUTING_UNIT, SUM(counting_unit_LY) as CONUTING_UNIT_LY, null as prescription, null as prescription_ly, ------------------------------------- --Retail藏数逻辑标签------------------ A.PACK_FLAG, A.brand_flag PROD_FLAG, 0 DTP_FLAG, null as cmps_flag, ------------------------------------- --EC数据标签-------------------------- '' PLATFORM_TYPE, '' STORE_NAME, '' STORE_TYPE, ------------------------------------- --COUNTY数据标签---------------------- '' REGION_TYPE, ------------------------------------- --AIA数据标签------------------------- null inst_code, --可以移除,报告没有使用 ------------------------------------- --XIE HE 数据标签--------------------- '' as dept_name, '' as new_code, '' as area, '' as h_level, '' as reimburse, '' as reimburse_type, '' as prescription_source, ------------------------------------- '' as CORP_CODE --可以移除,报告没有使用 ------------------------------------- FROM dm.dm_zk_retail_sales A where A.YYYYMM >= '202001' GROUP BY A.YYYYMM, A.iqvia_pack_code, A.AUDIT_COD, A.PACK_FLAG, A.brand_flag -- COMMAND ---------- INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_SALES ( YYYYMM, PACK_CODE, AUDIT_CODE, DATA_SOURCE, SALES_UNIT_CAL, SALES_UNIT_CAL_LY, SALES_VALUE_CAL, SALES_VALUE_CAL_LY, CONUTING_UNIT, CONUTING_UNIT_LY, PRESCRIPTION, PRESCRIPTION_LY, PACK_FLAG, PROD_FLAG, DTP_FLAG, CMPS_FLAG, PLATFORM_TYPE, STORE_NAME, STORE_TYPE, REGION_TYPE, INST_CODE, DEPT_NAME, NEW_CODE, AREA, H_LEVEL, REIMBURSE, REIMBURSE_TYPE, PRESCRIPTION_SOURCE, CORP_CODE, ETL_INSERT_DT, ETL_UPDATE_DT ) SELECT YYYYMM, NVL ( NULLIF(PACK_CODE, ''), CONCAT ('PACK_CODE_', DATA_SOURCE) ) AS PACK_CODE, NVL (NULLIF(AUDIT_CODE, ''), 'ROC') AS AUDIT_CODE, DATA_SOURCE, SALES_UNIT_CAL, SALES_UNIT_CAL_LY, SALES_VALUE_CAL, SALES_VALUE_CAL_LY, CONUTING_UNIT, CONUTING_UNIT_LY, PRESCRIPTION, PRESCRIPTION_LY, PACK_FLAG, PROD_FLAG, DTP_FLAG, CMPS_FLAG, PLATFORM_TYPE, STORE_NAME, STORE_TYPE, REGION_TYPE, INST_CODE, DEPT_NAME, NEW_CODE, AREA, H_LEVEL, REIMBURSE, REIMBURSE_TYPE, PRESCRIPTION_SOURCE, CORP_CODE, FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP (CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT FROM RETAIL_SALES ; -- COMMAND ---------- -- **************************************************** -- 创建日期:2026-04-30 -- 功能: 月份NIAD不进行季度汇总, 新建DM.DM_TF_EXT_RETAIL_NIAD_SALES表做关联 -- **************************************************** WITH NIAD_DWD_TABLE AS ( SELECT a.month, b.iqvia_pack_code AS pack_code, 'ROC' AS zk_region, SUM(a.sales_unit) AS sales_unit, SUM(a.sales_value) AS sales_value, SUM(a.sales_unit * (b.counting_unit / COALESCE(b.unit, 1))) AS counting_unit FROM dwd.dwd_gnd_ext_retail_nataional_niad a LEFT JOIN dwd.dwd_gnd_ext_retail_pack_property b ON CASE WHEN LENGTH(zk_product_id) < 7 THEN RIGHT(CONCAT('0000000', zk_product_id), 7) ELSE zk_product_id END = b.product_id WHERE a.zk_region = '全国' GROUP BY a.month, b.iqvia_pack_code ), UNION_TABLE AS ( -- 当期 SELECT cur.month AS YYYYMM, cur.pack_code AS PACK_CODE, '' AS CORP_CODE, cur.zk_region AS AUDIT_CODE, '' AS PLATFORM_TYPE, '' AS STORE_NAME, '' AS STORE_TYPE, '' AS REGION_TYPE, '' AS PACK_FLAG, '' AS PROD_FLAG, '' AS DTP_FLAG, CAST(REPLACE(cur.sales_unit, ',', '') AS DECIMAL(38, 10)) AS SALES_UNIT_CAL, 0 AS SALES_UNIT_CAL_LY, CAST(REPLACE(cur.sales_value, ',', '') AS DECIMAL(38, 10)) AS SALES_VALUE_CAL, 0 AS SALES_VALUE_CAL_LY, CAST(cur.counting_unit AS DECIMAL(38, 10)) AS CONUTING_UNIT, 0 AS CONUTING_UNIT_LY, 'Retail(Quarterly)' AS DATA_SOURCE, '' AS INST_CODE, '' AS CMPS_FLAG, '' AS DEPT_NAME, '' AS PRESCRIPTION, '' AS PRESCRIPTION_LY, '' AS NEW_CODE, '' AS AREA, '' AS H_LEVEL, '' AS REIMBURSE, '' AS REIMBURSE_TYPE, '' AS PRESCRIPTION_SOURCE FROM NIAD_DWD_TABLE cur UNION ALL -- 同期(去年) SELECT CAST(CAST(cur.month AS INT) + 100 AS STRING) AS YYYYMM, cur.pack_code AS PACK_CODE, '' AS CORP_CODE, cur.zk_region AS AUDIT_CODE, '' AS PLATFORM_TYPE, '' AS STORE_NAME, '' AS STORE_TYPE, '' AS REGION_TYPE, '' AS PACK_FLAG, '' AS PROD_FLAG, '' AS DTP_FLAG, 0 AS SALES_UNIT_CAL, CAST(REPLACE(cur.sales_unit, ',', '') AS DECIMAL(38, 10)) AS SALES_UNIT_CAL_LY, 0 AS SALES_VALUE_CAL, CAST(REPLACE(cur.sales_value, ',', '') AS DECIMAL(38, 10)) AS SALES_VALUE_CAL_LY, 0 AS CONUTING_UNIT, CAST(cur.counting_unit AS DECIMAL(38, 10)) AS CONUTING_UNIT_LY, 'Retail(Quarterly)' AS DATA_SOURCE, '' AS INST_CODE, '' AS CMPS_FLAG, '' AS DEPT_NAME, '' AS PRESCRIPTION, '' AS PRESCRIPTION_LY, '' AS NEW_CODE, '' AS AREA, '' AS H_LEVEL, '' AS REIMBURSE, '' AS REIMBURSE_TYPE, '' AS PRESCRIPTION_SOURCE FROM NIAD_DWD_TABLE cur WHERE CAST(cur.month AS INT) + 100 <= (SELECT CAST(MAX(month) AS INT) FROM NIAD_DWD_TABLE) ) INSERT OVERWRITE TABLE DM.DM_TF_EXT_RETAIL_NIAD_SALES SELECT YYYYMM, PACK_CODE, CORP_CODE, AUDIT_CODE, PLATFORM_TYPE, STORE_NAME, STORE_TYPE, REGION_TYPE, PACK_FLAG, PROD_FLAG, DTP_FLAG, SUM(SALES_UNIT_CAL) AS SALES_UNIT_CAL, SUM(SALES_UNIT_CAL_LY) AS SALES_UNIT_CAL_LY, SUM(SALES_VALUE_CAL) AS SALES_VALUE_CAL, SUM(SALES_VALUE_CAL_LY) AS SALES_VALUE_CAL_LY, SUM(CONUTING_UNIT) AS CONUTING_UNIT, SUM(CONUTING_UNIT_LY) AS CONUTING_UNIT_LY, DATA_SOURCE, INST_CODE, CMPS_FLAG, DEPT_NAME, PRESCRIPTION, PRESCRIPTION_LY, NEW_CODE, AREA, H_LEVEL, REIMBURSE, REIMBURSE_TYPE, PRESCRIPTION_SOURCE, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT, FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT FROM UNION_TABLE GROUP BY YYYYMM, PACK_CODE, CORP_CODE, AUDIT_CODE, PLATFORM_TYPE, STORE_NAME, STORE_TYPE, REGION_TYPE, PACK_FLAG, PROD_FLAG, DTP_FLAG, DATA_SOURCE, INST_CODE, CMPS_FLAG, DEPT_NAME, PRESCRIPTION, PRESCRIPTION_LY, NEW_CODE, AREA, H_LEVEL, REIMBURSE, REIMBURSE_TYPE, PRESCRIPTION_SOURCE