20260520生产bug修复

1 retail的架构的陕西 对应 两个 RC
2 niad free report页面的market size ly值因直取出现未聚合的问题
3 Retail 的价格铺货率没有 1,2月份的值
This commit is contained in:
2026-05-20 10:41:41 +00:00
parent 2984fe7195
commit d39402998c
3 changed files with 142 additions and 61 deletions

View File

@@ -212,58 +212,132 @@ FROM
-- 功能: 月份NIAD不进行季度汇总, 新建DM.DM_TF_EXT_RETAIL_NIAD_SALES表做关联
-- ****************************************************
WITH NIAD_DWD_TABLE AS (
select
SELECT
a.month,
b.iqvia_pack_code as pack_code,
b.iqvia_pack_code AS pack_code,
'ROC' AS zk_region,
a.sales_unit,
a.sales_value,
a.sales_unit * (b.counting_unit/ coalesce(b.unit,1)) as counting_unit
from
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
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
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,
IFNULL(CAST(REPLACE(ly.sales_unit, ',', '') AS DECIMAL(38, 10)), 0) AS SALES_UNIT_CAL_LY,
CAST(REPLACE(cur.sales_value, ',', '') AS DECIMAL(38, 10)) AS SALES_VALUE_CAL,
IFNULL(CAST(REPLACE(ly.sales_value, ',', '') AS DECIMAL(38, 10)), 0) AS SALES_VALUE_CAL_LY,
CAST(cur.counting_unit AS DECIMAL(38, 10)) AS CONUTING_UNIT,
IFNULL(CAST(ly.counting_unit AS DECIMAL(38, 10)), 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,
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 (select * from NIAD_DWD_TABLE ) cur
LEFT JOIN (select * from NIAD_DWD_TABLE ) ly
ON CAST(CAST(ly.month AS INT) + 100 AS STRING) = cur.month
AND ly.pack_code = cur.pack_code
AND ly.zk_region = cur.zk_region
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