20260501
DBR更新,包含haoyi的调整
This commit is contained in:
@@ -521,4 +521,147 @@ SELECT
|
||||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT,
|
||||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT
|
||||
FROM
|
||||
joined;
|
||||
joined;
|
||||
|
||||
-- COMMAND ----------
|
||||
|
||||
INSERT into TABLE
|
||||
DM.DM_TF_EXT_UNIONALL_MARKET_SALES
|
||||
WITH
|
||||
t1_filtered AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
DM.DM_TF_EXT_RETAIL_NIAD_SALES
|
||||
),
|
||||
mapping_cleaned AS (
|
||||
SELECT
|
||||
*
|
||||
FROM
|
||||
(
|
||||
SELECT
|
||||
PACK_CODE,
|
||||
DATASOURCE,
|
||||
MARKET,
|
||||
KEY_COMPETITOR,
|
||||
CLASS,
|
||||
MARKET_RATIO,
|
||||
Value_brand_Ratio,
|
||||
Unit_brand_Ratio,
|
||||
CountingUnit_brand_Ratio,
|
||||
PDOT_brand_Ratio,
|
||||
GREATEST (
|
||||
starttime,
|
||||
Value_brand_Ratio_start,
|
||||
Unit_brand_start,
|
||||
CountingUnit_brand_start,
|
||||
PDOT_brand_start
|
||||
) AS eff_start,
|
||||
LEAST (
|
||||
endtime,
|
||||
Value_brand_Ratio_end,
|
||||
Unit_brand_end,
|
||||
CountingUnit_brand_end,
|
||||
PDOT_brand_end
|
||||
) AS eff_end
|
||||
FROM
|
||||
DM.dm_td_ext_unionall_market_pack_mapping
|
||||
) tmp
|
||||
WHERE
|
||||
eff_start <= eff_end -- 在外层子查询中过滤
|
||||
) ,
|
||||
joined AS (
|
||||
SELECT
|
||||
/*+ BROADCAST(t2, t3) */
|
||||
t1.*,
|
||||
-- 当年 ratio
|
||||
t2.MARKET,
|
||||
t2.KEY_COMPETITOR,
|
||||
t2.CLASS,
|
||||
t2.MARKET_RATIO AS cy_market_ratio,
|
||||
t2.Value_brand_Ratio AS cy_value_ratio,
|
||||
t2.Unit_brand_Ratio AS cy_unit_ratio,
|
||||
t2.CountingUnit_brand_Ratio AS cy_cu_ratio,
|
||||
t2.PDOT_brand_Ratio AS cy_pdot_ratio,
|
||||
-- 去年 ratio
|
||||
t3.MARKET_RATIO AS ly_market_ratio,
|
||||
t3.Value_brand_Ratio AS ly_value_ratio,
|
||||
t3.Unit_brand_Ratio AS ly_unit_ratio,
|
||||
t3.CountingUnit_brand_Ratio AS ly_cu_ratio,
|
||||
t3.PDOT_brand_Ratio AS ly_pdot_ratio
|
||||
FROM
|
||||
t1_filtered t1
|
||||
LEFT JOIN mapping_cleaned t2 ON t1.PACK_CODE = t2.PACK_CODE
|
||||
AND t1.DATA_SOURCE = t2.DATASOURCE
|
||||
AND t1.YYYYMM >= t2.eff_start
|
||||
AND t1.YYYYMM <= t2.eff_end
|
||||
LEFT JOIN mapping_cleaned t3 ON t1.PACK_CODE = t3.PACK_CODE
|
||||
AND t1.DATA_SOURCE = t3.DATASOURCE
|
||||
AND (t1.YYYYMM - 100) >= t3.eff_start
|
||||
AND (t1.YYYYMM - 100) <= t3.eff_end
|
||||
AND t2.MARKET = t3.MARKET -- 保持原逻辑
|
||||
)
|
||||
SELECT
|
||||
NVL(MARKET, 'ALL Market') AS MARKET,
|
||||
NVL(KEY_COMPETITOR, 'OTHERS') AS KEY_COMPETITOR,
|
||||
CASE
|
||||
WHEN trim(lower(CLASS)) = 'others' THEN 'OTHERS'
|
||||
WHEN CLASS IS NULL THEN 'OTHERS'
|
||||
ELSE CLASS
|
||||
END AS CLASS,
|
||||
YYYYMM,
|
||||
PACK_CODE,
|
||||
CORP_CODE,
|
||||
AUDIT_CODE,
|
||||
PLATFORM_TYPE,
|
||||
STORE_NAME,
|
||||
STORE_TYPE,
|
||||
REGION_TYPE,
|
||||
DATA_SOURCE,
|
||||
PACK_FLAG,
|
||||
PROD_FLAG,
|
||||
DTP_FLAG,
|
||||
CMPS_FLAG,
|
||||
NEW_CODE,
|
||||
INST_CODE,
|
||||
NULL AS AIA_HP_FLAG,
|
||||
DEPT_NAME,
|
||||
H_LEVEL,
|
||||
REIMBURSE,
|
||||
REIMBURSE_TYPE,
|
||||
PRESCRIPTION_SOURCE AS PRESCRIPTION_TYPE,
|
||||
PRESCRIPTION,
|
||||
PRESCRIPTION_LY,
|
||||
-- 预计算公用因子,避免重复计算
|
||||
NVL(NVL(cy_market_ratio, 1) * cy_value_ratio, 1) AS VA,
|
||||
NVL(NVL(cy_market_ratio, 1) * cy_unit_ratio, 1) AS UT,
|
||||
NVL(NVL(cy_market_ratio, 1) * cy_cu_ratio, 1) AS CU,
|
||||
NVL(NVL(cy_market_ratio, 1) * cy_pdot_ratio, 1) AS PT,
|
||||
CAST(
|
||||
SALES_UNIT_CAL * NVL(cy_unit_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS SALES_UNIT_CAL,
|
||||
CAST(
|
||||
SALES_UNIT_CAL_LY * NVL(ly_unit_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS SALES_UNIT_CAL_LY,
|
||||
CAST(
|
||||
SALES_VALUE_CAL * NVL(cy_value_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS SALES_VALUE_CAL,
|
||||
CAST(
|
||||
SALES_VALUE_CAL_LY * NVL(ly_value_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS SALES_VALUE_CAL_LY,
|
||||
CAST(
|
||||
CONUTING_UNIT * NVL(cy_cu_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS CONUTING_UNIT,
|
||||
CAST(
|
||||
CONUTING_UNIT_LY * NVL(ly_cu_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS CONUTING_UNIT_LY,
|
||||
CAST(
|
||||
CONUTING_UNIT * NVL(cy_pdot_ratio, 1) * NVL(cy_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS PDOT,
|
||||
CAST(
|
||||
CONUTING_UNIT_LY * NVL(ly_pdot_ratio, 1) * NVL(ly_market_ratio, 1) AS DECIMAL(35, 6)
|
||||
) AS PDOT_LY,
|
||||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_INSERT_DT,
|
||||
FROM_UTC_TIMESTAMP(CURRENT_TIMESTAMP(), 'UTC+8') AS ETL_UPDATE_DT
|
||||
FROM
|
||||
joined;
|
||||
|
||||
Reference in New Issue
Block a user