1.0.282.sql 2.5 KB

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