保密声明
为遵守保密义务,文中所有企业实体、内部 ERP 表结构与系统标识均已做泛化与匿名处理。方法论、架构设计与性能结果,与真实项目完全一致。
商业分析实习生 — 全球财富 500 强企业 — 2025年12月 → 2026年2月
订单报表
自动化系统
一项原本依赖「知道那四张企业表怎么连起来」的老员工才能完成的报表工作 —— 被重建成任何人只输入一个订单号、约三十秒就能产出同样的报表。
知识锁在人身上, 而不在系统里。
生成一份客户订单报表,员工需要手动在多张相互关联的 Dataverse 表之间来回翻找。系统里明明存在外键关系,用户却仍要逐条打开记录、自己顺着关系追下去,再一个字段一个字段地复制进 Excel。
这个流程慢、不一致,而且完全依赖那些清楚底层数据如何关联的资深员工。这些人一旦不在,报表就停摆。真正的难点从来不是「把报表做出来」,而是让复杂的企业数据变得可理解 —— 且不要求用户自己去理解数据库结构。
- 01数据割裂
- 关联记录散落在四张 Dataverse 表中,没有统一视图。
- 02人工解析外键
- 用户要在脑子里追踪主销售表与三张交易子表之间的主外键关系。
- 03未被记录的逻辑
- 取值回退、字段映射、国家代码等业务规则,只存在于资深员工的经验里。
- 04重复的 Excel 工作
- 最终报表的拼装每一次都靠手工完成。
现状 → 目标
同一份报表的前后对比。真正改变的不是步骤数量,而是这些步骤由谁来执行、以及一个人在开始之前必须先懂多少东西。
生成一份报表所需时间 —— 按真实比例绘制
十比一。条形的长度就是数值本身,所以十分之一的长度就是十分之一的时间 —— 下降 93%。
现状 · 人工
- 01手动检索 Dataverse
- 02打开关联记录
- 03跳转到另一张表
- 04逐字段复制
- 05在 Excel 中拼装
- 06客户报表
平均 5 分钟以上 · 产出不一致 · 依赖个人经验
目标 · 自动化
- 01输入订单号
- 02触发 Power Automate
- 03解析 Dataverse 主外键
- 04应用业务规则
- 05Office Script 排版
- 06客户报表
平均约 30 秒 · 产出一致 · 无需专业经验
把数据库的复杂度 从用户面前 抽走
一个订单号背后,是分散在四张 Dataverse 表里的记录 —— 一张企业主销售表,加上物流、本地化、账务三张交易子表 —— 由主外键关系连接,并带有跨表的取值回退逻辑。
解析顺序先查物流子表,回退到账务表,再回退到主表 —— 以此处理那些只存在于特定子表里的字段。此外还编码了发运目的地代码、外贸名称截断,以及代理商名与最终用户名之间的回退规则。
510 → 美国 · 520 → 英国
在 “ for ” 处截断
代理商名称 → 回退到最终用户
人工 — 之前
自动化 — 之后
一份报表 是怎么生成的
六个阶段,用户只碰其中一个。过去资深员工装在脑子里的全部知识,都被编码进了第二到第四阶段。
- 01
用户输入
一个订单号 —— 用户全程唯一需要接触的东西。
- 02
关系解析
Power Automate 利用已有的主外键结构查询 Dataverse,自动取回全部关联记录。
- 03
业务规则应用
取值回退、国家代码映射、名称截断、代理商与最终用户回退,全部编码在流程中。
- 04
数据聚合
四张表的记录合并为一个统一结构。
- 05
模板实例化
主模板被复制成一份针对该笔交易的新文件,原件受到保护。
- 06
冻结输出
Office Script 执行排版规则、锁定输出,交付一份可直接给客户的独立报表。
把模板隔离 当作一条 设计原则
方案没有把数据直接写进共享的主模板(那样有被污染或被误改的风险),而是每次运行都复制一份主模板,把数据注入副本,运行 Office Script,再把结果冻结成一个独立文件。
把配置与运行时数据分离,是可维护企业系统的标准原则。它保证主模板永远不会被某一次报表运行破坏,而每一份产出都可以被独立审计。
- 01
Template.xlsx
主模板 —— 任何一次报表运行都不会修改它。
- 02
Template_[OrderID].xlsx
按交易生成的实例,每次都重新复制。
- 03
Frozen_[OrderID].xlsx
独立的只读产出,可被单独审计。
基于来自八家全球工厂的 500,000+ 条历史记录
交付物
这个项目真正教会我的东西 —— 而不是它交付了什么。
先分析,再自动化
正确的流程来自于弄清楚人工流程为什么存在、它想达成什么 —— 而不是一上来就跳到技术方案。
去掉的是判断,不只是点击
好的自动化把认知负担从用户转移到系统。用户不再需要理解数据之间是怎么连起来的。
数据可靠,产出才可靠
正确解析四张表之间的主外键关系,是整个方案最底层的设计决策。下游的一切都建立在它之上。
可维护性高于复杂度
把模板与运行时数据分离是一个刻意的治理选择,它让系统可审计、可恢复,也可以放心地持续迭代。