This commit is contained in:
2026-04-15 10:36:20 +08:00
parent 43527d6c98
commit f1903bf7bb
811 changed files with 46977 additions and 41706 deletions

View File

@@ -85,7 +85,9 @@ table Fact_Sales_Total_AIA
annotation PBI_FormatHint = {"isGeneralNumber":true}
column PACK_SOURCE = [PACK_COD] & [DATA_SOURCE] &[NEW_CODE]
column PACK_SOURCE = ```
[PACK_COD] & [DATA_SOURCE]
```
lineageTag: 154b50db-3939-4522-b099-c670eb0f3fec
summarizeBy: none
@@ -98,45 +100,37 @@ table Fact_Sales_Total_AIA
annotation SummarizationSetBy = Automatic
column NEW_CODE
column MARKET
dataType: string
lineageTag: 5b3d8790-508c-4edb-942d-54e8a8824e3a
lineageTag: ecd7241a-ee49-45f1-bee9-f939e17a59de
summarizeBy: none
sourceColumn: NEW_CODE
sourceColumn: MARKET
annotation SummarizationSetBy = Automatic
column PRESCRIPTION
column PDOT
dataType: double
lineageTag: 19e2de06-e0e9-46e4-a677-9f51775807b2
lineageTag: 7229acee-56c5-46ba-af59-ed65644e9889
summarizeBy: sum
sourceColumn: PRESCRIPTION
sourceColumn: PDOT
annotation SummarizationSetBy = Automatic
annotation PBI_FormatHint = {"isGeneralNumber":true}
column PRESCRIPTION_LY
column PDOT_LY
dataType: double
lineageTag: 1deb1356-4697-4d1d-87aa-7b400c65b921
lineageTag: b73230b7-1966-4d35-a05f-51cbcef42dac
summarizeBy: sum
sourceColumn: PRESCRIPTION_LY
sourceColumn: PDOT_LY
annotation SummarizationSetBy = Automatic
annotation PBI_FormatHint = {"isGeneralNumber":true}
column market
dataType: string
lineageTag: 0f707117-7286-4c4f-b77d-f68410ef1707
summarizeBy: none
sourceColumn: market
annotation SummarizationSetBy = Automatic
partition Fact_Sales_Total_AIA = m
mode: import
queryGroup: OLD\首页
queryGroup: Fact_Sales
source = ```
let
Source =
@@ -150,197 +144,86 @@ table Fact_Sales_Total_AIA
){
[Name = CatalogName, Kind = "Database"]
}[Data],
"
"-- ============================================================
-- CTE 1: 品牌市场维度(小表,后续可广播)
-- ============================================================
WITH temp AS (
SELECT
BRAND_NAME,
BRAND_CODE,
CompatitorMarket,
MARKET
FROM
DM.DM_TD_EXTERNAL_BRAND_MARKET A
LEFT JOIN (
SELECT
PROD_DES,
max(PROD_DES_C) PROD_DES_C
FROM
dm.dm_td_external_packinfo
group by
PROD_DES
) b on a.IMSBRAND = b.PROD_DES
WHERE
DEFAULTFLAG = 1
AND A.DATA_SOURCE = 'AIA(Monthly)'
a.BRAND_NAME,
a.BRAND_CODE,
a.CompatitorMarket,
a.MARKET
FROM DM.DM_TD_EXTERNAL_BRAND_MARKET a
LEFT JOIN (
SELECT PROD_DES, MAX(PROD_DES_C) AS PROD_DES_C
FROM dm.dm_td_external_packinfo
GROUP BY PROD_DES
) b ON a.IMSBRAND = b.PROD_DES
WHERE a.DEFAULTFLAG = 1
AND a.DATA_SOURCE = 'AIA(Monthly)'
),
dim_rc as(
SELECT A.audit_cod,A.market
FROM (
SELECT
DISTINCT A.AUDIT_COD,
A.MARKET
FROM
dm.dm_td_external_org A
LEFT JOIN dm.dm_aia_targethp_flag C ON A.AUDIT_COD = NVL(C.INST_CODE, 'ROC')
AND A.DATA_SOURCE = C.DATA_SOURCE
AND A.MARKET = C.MARKET
where
a.DATA_SOURCE = 'AIA(Monthly)'
AND C.IS_TARGET_HP = 'Y'
and a.MARKET in (
SELECT
market
FROM
temp
WHERE
market is NOT NULL
or market <> ''
UNION
SELECT
CompatitorMarket
FROM
temp
WHERE
len(CompatitorMarket) > 1
)
UNION All
SELECT
DISTINCT A.AUDIT_COD,
D.CompatitorMarket AS MARKET
FROM
dm.dm_td_external_org A
-- 这两个看全部机构
-- LEFT JOIN dm.dm_aia_targethp_flag C ON A.AUDIT_COD = NVL(C.INST_CODE, 'ROC')
-- AND A.DATA_SOURCE = C.DATA_SOURCE
-- AND A.MARKET = C.MARKET
LEFT JOIN (
select
distinct CompatitorMarket
from
temp
where
BRAND_CODE in ('B013', 'B015')
) D ON A.MARKET = D.CompatitorMarket
where
a.DATA_SOURCE = 'AIA(Monthly)'
-- AND C.IS_TARGET_HP = 'Y'
and D.CompatitorMarket is not null
) A
LEFT JOIN dm.dm_ext_aia_data_remove_flag B ON A.audit_cod=b.ins_code AND A.market = B.market
WHERE B.ins_code IS NULL --剔除异常机构
-- ============================================================
-- CTE 2: 提前过滤 provided_flag避免 fact_sales 里重复执行子查询)
-- ============================================================
provided_insts AS (
SELECT /*+ BROADCAST(this) */ inst_code
FROM dm.dm_aia_provided_flag
WHERE DATA_SOURCE = 'AIA(Monthly)'
AND aia_provided_flag = '滚动两年有数'
GROUP BY inst_code
),
market_pack_ins (
select distinct
azinscode as ins_code
,market as mkt
from dwd.dwd_gnd_aia_mark_ins_data_by_mkt
),
fact_sales as (
-- ============================================================
-- CTE 3: 事实销售数据
-- 修复:移除未使用的 dm_aia_hp_flag LEFT JOINAIA_HP_FLAG 最终未输出)
-- 修复PDOT CASE 中 prescription → PDOT
-- 修复:末尾逗号去除
-- ============================================================
fact_sales AS (
SELECT
YYYYMM,
A.PACK_COD,
-- CORP_COD,
A.YYYYMM,
A.MARKET,
A.PACK_COD, -- ⚠️ 如字段实际为 PACK_CODE 请确认
A.AUDIT_COD,
-- PLATFORM_TYPE,
-- STORE_NAME,
-- STORE_TYPE,
-- REGION_TYPE,
A.DATA_SOURCE,
-- PACK_FLAG,
-- PROD_FLAG,
-- DTP_FLAG,
-- INT(CMPS_FLAG) CMPS_FLAG,
NEW_CODE,
A.INST_CODE,
B.AIA_HP_FLAG,
-- DEPT_NAME,
-- ROUND(H_LEVEL, 0) H_LEVEL,
-- REIMBURSE,
-- REIMBURSE_TYPE,
-- PRESCRIPTION_SOURCE PRESCRIPTION_TYPE,
CASE
WHEN SALES_UNIT_CAL = 0 THEN NULL
ELSE CAST(SALES_UNIT_CAL AS DECIMAL(35, 10))
END SALES_UNIT_CAL,
CASE
WHEN SALES_UNIT_CAL_LY = 0 THEN NULL
ELSE CAST(SALES_UNIT_CAL_LY AS DECIMAL(35, 10))
END SALES_UNIT_CAL_LY,
CASE
WHEN SALES_VALUE_CAL = 0 THEN NULL
ELSE CAST(SALES_VALUE_CAL AS DECIMAL(35, 10))
END SALES_VALUE_CAL,
CASE
WHEN SALES_VALUE_CAL_LY = 0 THEN NULL
ELSE CAST(SALES_VALUE_CAL_LY AS DECIMAL(35, 10))
END SALES_VALUE_CAL_LY,
CASE
WHEN CONUTING_UNIT = 0 THEN NULL
ELSE CAST(CONUTING_UNIT AS DECIMAL(35, 10))
END CONUTING_UNIT,
CASE
WHEN CONUTING_UNIT_LY = 0 THEN NULL
ELSE CAST(CONUTING_UNIT_LY AS DECIMAL(35, 10))
END CONUTING_UNIT_LY,
CASE
WHEN prescription = 0 THEN NULL
ELSE CAST(prescription AS DECIMAL(35, 10))
END PRESCRIPTION,
CASE
WHEN prescription_ly = 0 THEN NULL
ELSE CAST(prescription_ly AS DECIMAL(35, 10))
END PRESCRIPTION_LY
FROM
DM.DM_TF_EXTERNAL_SALES A
LEFT JOIN dm.dm_aia_hp_flag B ON A.inst_code = B.inst_code
AND A.DATA_SOURCE = B.DATA_SOURCE
WHERE
A.DATA_SOURCE = 'AIA(Monthly)'
AND A.inst_code IN (
SELECT
inst_code
FROM
dm.dm_aia_provided_flag C
WHERE
C.DATA_SOURCE = 'AIA(Monthly)'
AND C.aia_provided_flag = '滚动两年有数'
GROUP BY
1
)
),
t1 as (
select
fact_sales.*,
dim_rc.market
from
fact_sales
left join dim_rc on fact_sales.AUDIT_COD = dim_rc.AUDIT_COD
CASE WHEN SALES_UNIT_CAL = 0 THEN NULL ELSE CAST(SALES_UNIT_CAL AS DECIMAL(35,10)) END AS SALES_UNIT_CAL,
CASE WHEN SALES_UNIT_CAL_LY = 0 THEN NULL ELSE CAST(SALES_UNIT_CAL_LY AS DECIMAL(35,10)) END AS SALES_UNIT_CAL_LY,
CASE WHEN SALES_VALUE_CAL = 0 THEN NULL ELSE CAST(SALES_VALUE_CAL AS DECIMAL(35,10)) END AS SALES_VALUE_CAL,
CASE WHEN SALES_VALUE_CAL_LY = 0 THEN NULL ELSE CAST(SALES_VALUE_CAL_LY AS DECIMAL(35,10)) END AS SALES_VALUE_CAL_LY,
CASE WHEN CONUTING_UNIT = 0 THEN NULL ELSE CAST(CONUTING_UNIT AS DECIMAL(35,10)) END AS CONUTING_UNIT,
CASE WHEN CONUTING_UNIT_LY = 0 THEN NULL ELSE CAST(CONUTING_UNIT_LY AS DECIMAL(35,10)) END AS CONUTING_UNIT_LY,
CASE WHEN PDOT = 0 THEN NULL ELSE CAST(PDOT AS DECIMAL(35,10)) END AS PDOT, -- 修复:原为 prescription
CASE WHEN PDOT_LY = 0 THEN NULL ELSE CAST(PDOT_LY AS DECIMAL(35,10)) END AS PDOT_LY
FROM DM.dm_tf_ext_unionall_market_sales A
-- 用 CTE JOIN 替代 IN(subquery),支持 BROADCAST
left JOIN provided_insts p ON A.AUDIT_COD = p.inst_code
WHERE A.MARKET <> 'ALL Market'
AND A.DATA_SOURCE = 'AIA(Monthly)'
)
-- ============================================================
-- 最终聚合
-- ============================================================
SELECT
YYYYMM,
PACK_COD,
DATA_SOURCE,
NEW_CODE,
market,
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,
SUM(PRESCRIPTION) AS PRESCRIPTION,
SUM(PRESCRIPTION_LY) AS PRESCRIPTION_LY
from
t1
group by
MARKET,
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,
SUM(PDOT) AS PDOT,
SUM(PDOT_LY) AS PDOT_LY
FROM fact_sales
GROUP BY
YYYYMM,
PACK_COD,
DATA_SOURCE,
NEW_CODE,
market
MARKET
"
& UsingLimit,
null,