-- AIDOP-S567-KPI-T8-SQL-CONFIG-MIGRATION-1:S5_L1_004 品类物料库存周转 收口迁移 CONFIG_SQL。 -- 背景:S5/S6/S7 现有 9 个 KPI 中 8 个已是 CONFIG_SQL/MDP_LOCAL(读已准备好的 dwd_t8_*), -- 唯 S5_L1_004 仍 LEGACY_TVF(1.0.279.sql 当时判定"不迁",本批经 CTO 拍板按范式 A 收口)。 -- 范式 A(与 8 个兄弟一致):TVF dbo.Rep_总账_存货_V3 保留为数据准备(BuildS5L1004 写 dwd_t8_material_inventory_turnover), -- 最终汇总(AVG(turnover_days))改由 MDP_LOCAL CONFIG_SQL 读该 dwd,不扩执行器、不直连 T8、不改任何业务公式。 -- 等价性:legacy 现状 = AVG(turnover_days),当前 turnover_days 全 NULL → legacy 实跑 NO_DATA; -- CONFIG_SQL AVG(turnover_days) 同为 NO_DATA(逐项等价,见验收对账)。 -- 表列 PascalCase(EnableUnderLine=false);租户=AIDOP 运行租户 797403760988229。 -- 幂等:先把 v1 IsCurrent 置 0(保留 PUBLISHED 作回滚),再 INSERT ... WHERE NOT EXISTS 建 v2;重复执行影响行 0。 -- 绑定参数由运行时注入:@tenant_id/@factory_id/@biz_date/@ztid(月度 KPI @biz_date=月末,DATE_FORMAT 取 YYYY-MM)。 -- ① v1 LEGACY_TVF 退出当前生效(保留为回滚版本,PublishStatus 仍 PUBLISHED) UPDATE ado_smart_ops_kpi_calc_config SET `IsCurrent` = 0 WHERE `MetricCode` = 'S5_L1_004' AND `TenantId` = 797403760988229 AND `VersionNo` = 1 AND `IsCurrent` = 1; -- ② v2 CONFIG_SQL 成为当前生效:读本地 dwd 月行 turnover_days 均值(排除 NULL),MDP_LOCAL 只读执行器 INSERT INTO ado_smart_ops_kpi_calc_config (`TenantId`,`MetricCode`,`ModuleCode`,`VersionNo`,`CalcEngineType`,`DataSourceCode`,`SqlScript`,`TimeoutSeconds`,`PublishStatus`,`IsCurrent`,`Remark`,`CreatedBy`,`CreatedAt`) SELECT 797403760988229,'S5_L1_004','S5',2,'CONFIG_SQL','MDP_LOCAL', 'SELECT ROUND(AVG(turnover_days), 4) AS metric_value, COUNT(*) AS numerator_value FROM dwd_t8_material_inventory_turnover WHERE tenant_id = @tenant_id AND factory_id = @factory_id AND biz_month = DATE_FORMAT(@biz_date, ''%Y-%m'') AND source_ztid = @ztid AND turnover_days IS NOT NULL', 30,'PUBLISHED',1,'CONFIG_SQL:读 dwd 月行 turnover_days 均值(排除 NULL),1:1 复刻 legacy AVG(turnover_days);TVF 仅作数据准备;turnover_days 全 NULL 时→NO_DATA,与 legacy 现状同为 NO_DATA','system',NOW() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ado_smart_ops_kpi_calc_config WHERE `MetricCode`='S5_L1_004' AND `TenantId`=797403760988229 AND `VersionNo`=2);