物流公司全链路时效分析,并不是简单做几张统计表,而是要先处理千万级 XLSX/CSV 数据的清洗、关联和统计问题。多张源表来自不同业务环节,字段口径、时间格式、状态写法并不统一,同时很多数据又有本地处理和数据安全要求,不能随意外发。放在传统分析流程里,这类任务通常需要借助 Python 做清洗与关联、借助 SQL 做汇总与统计,门槛高,落地也更复杂。
今天小编跟大家介绍一个简单的AI 工作流方式解决方案:
不依赖python代码,也不需要懂SQL,直接在本地电脑对千万级 XLSX/CSV 物流数据完成清洗、关联和统计分析+可视化报表。
通过提示词配置好AI工作流,可以生成统计结果表与可视化大盘,如下图:
工作流涉及的主要内部技术:
- 数据清洗技术 :通过内置的python+sql引擎,对日期时间标准化、单位剥离与数值化转换、文本字段归一化、枚举值标准化、条件过滤、重复记录去重、缺失值补算、异常值识别与处理。
- 数据建模技术 :通过SQL智能体+上下文技术,支持基于运单号的多表关联、宽表构建、字段重命名、派生字段生成、链路时长计算、比率指标计算。
- 数据统计技术 :通过SQL智能体,支持 ****分组聚合、多维度汇总、条件指标计算、TopN 排名、时间分桶统计、明细筛选 。
- 数据库存储技术: 通过DuckDB+本地磁盘,支持千万量级以上的存储与分析。
- 数据可视化技术:通过AI + Html+Echarts图表组件,AI会对统计结果进行总结,并且指导输出哪些图表,您一看就能清晰明白。
SQL智能体+上下文技术 非常方便我们做统计,有时候需要先生成很多临时表,然后通过临时表才能得到结果表,比如:
1. 基于"全链路宽表",按"寄件城市"分组,统计:发出量、平均全链路时长、平均中转次数。 ---- 临时表1
2. 基于"客户信息表",按"寄件城市"分组汇总:客户数、平均月均单量、平均折扣率。 ---- 临时表2
3. 将第1步结果与客户城市汇总结果按"寄件城市"关联,补充客户侧指标 -----合临时表
上面用传统的sql统计的话可能需要分成3步完成,但是通过AI工作流内置的 ”SQL智能体+上下文技术 “ 我们用一个智能体配置一次就可以完成,避免工作流节点暴增!
通过对这些复杂技术的包装,你是一个零基础小白都能完成很复杂的千万级数据量的清洗统计分析了。
接下来我们就来看下这个案例实战:物流公司全链路时效分析(揽收表 + 中转表 + 派送表 + 客户表 + 网点表)
一、案例需求分析
这个案例的重点,是先对揽收、中转、派送、客户、网点等源表数据进行清洗和统一,再按运单号完成全链路关联,进一步开展物流时效分析,最终输出可直接用于运营判断的结果表。
1、源表数据清洗流程
数据清洗,指的是先把原始业务数据中格式不统一、不能直接计算、不能直接关联的内容整理成统一标准的数据,例如统一时间格式、处理重量和体积字段、规范城市名称、归一化签收状态、补充派生指标字段等。只有先把这些源表清洗到可直接使用的状态,后面的运单关联、时效统计、网点分析和趋势分析才能顺利展开。
这个案例需要清洗下面几张源表:
清洗揽收记录表
- 将“揽收时间”统一为 yyyy-MM-dd HH:mm:ss 格式
- 将“重量kg”去除 kg 、 千克 等单位后转为数值
- 将“体积”去除 m³ 、 立方米 等单位后转为数值
- 将“寄件城市”“收件城市”去除“市”后缀,统一城市名称口径
- 只保留“重量kg”大于 0 的有效记录
清洗中转记录表
- 将“到达时间”“离开时间”统一为 yyyy-MM-dd HH:mm:ss 格式
- 将“停留时长”去除“小时”后缀后转为数值
- 对“停留时长”为空的记录,按“离开时间 - 到达时间”自动补算
- 对“离开时间”早于“到达时间”的异常记录按规则处理,避免影响后续统计
- 按“运单号”汇总中转记录,形成总中转次数、总中转停留时长和中转站列表
清洗派送记录表
- 将“派送时间”“签收时间”统一为 yyyy-MM-dd HH:mm:ss 格式
- 将“签收状态”归一化,例如把“已签收”“签收”“S”统一为“已签收”
- 只保留已签收的运单记录
- 对同一“运单号”的重复派送记录按最终签收时间去重
- 新增“派送时长”字段,按“签收时间 - 派送时间”计算小时数
清洗客户信息表
- 将“签约日期”统一为 yyyy-MM-dd 格式
- 将“寄件城市”去除“市”后缀,统一城市名称口径
- 将“月均单量”转换为纯数字
- 将“折扣率”统一为 0-1 之间的小数,例如 95% 转为 0.95 , 9.5折 转为 0.95
- 保证客户侧字段可以直接参与后续城市维度统计分析
清洗网点信息表
- 将“网点编号”统一格式,保证能与业务表正常关联
- 将“所在城市”去除“市”后缀,统一城市名称口径
- 将“网点类型”“网点等级”去除前后空格,统一基础维度写法
- 保留网点基础属性,作为后续网点效能和网点类型分析的维度表
2、最终输出哪些统计结果表
完成揽收、中转、派送、客户和网点这几类数据的清洗、汇总与关联之后,这个案例最后会形成 6 张比较有业务价值的结果表:
- 城市对时效 Top50 表 :按寄件城市和收件城市组成的线路维度做汇总,统计每条城市对的平均全链路时长、平均中转次数和准时率,并筛出运单量最高的前 50 条线路,用来判断哪些核心流向最繁忙、哪些线路时效压力更大。
- 寄件城市统计表 :从寄件城市视角看整体发货表现,除了发出量、平均全链路时长、平均中转次数外,还会补充客户数、平均月均单量、平均折扣率等客户侧指标,方便同时评估城市业务规模和客户质量。
- 网点效能统计表 :围绕揽收网点做效率分析,统计各网点承接的运单量、平均全链路时长和平均派送时长,用来识别高负荷网点、低效网点以及时效表现稳定的核心网点。
- 网点类型时效统计表 :把全链路数据和网点基础信息关联起来,按照网点类型、网点等级两个维度做分组,观察不同类型网点在运单量、平均时长和中转时长占比上的差异,用来判断直营网点、加盟网点、区域集散点等不同体系的履约表现。
- 月度时效趋势表 :按月份汇总月度运单量、平均全链路时长和准时率,适合用来观察全年配送效率的波动情况,判断旺季、促销期或区域高峰对物流时效带来的影响。
- 超时运单 Top100 明细表 :筛出全链路时长超过 120 小时且耗时最高的一批运单,保留关键明细字段,方便进一步追查超时发生在哪个环节,是揽收慢、中转压仓,还是末端派送异常。
3、业务数据涉及哪些源表
源表指的是直接从业务环节沉淀下来的基础数据表,它们承接的是物流作业过程中的原始记录,不是最后拿来汇报的分析结果表,而是后续做数据清洗、字段统一、运单串联和时效统计的起点。
这次案例一共涉及 5 张核心源表:
- 揽收记录表 : 记录揽收 ID、运单号、寄件人、寄件城市、收件城市、揽收时间、重量、体积、网点编号等信息,是整条物流链路的起始数据来源,也是后续计算全链路时长、分析发货城市分布和揽收网点表现的基础。
- 中转记录表 : 记录中转 ID、运单号、中转站、到达时间、离开时间、停留时长、中转次数等信息,用来还原运单在运输过程中的中转轨迹,支撑中转次数统计、中转停留时长汇总以及链路效率分析。
- 派送记录表 : 记录派送 ID、运单号、派送员、派送网点、派送时间、签收时间、签收状态、派送次数等信息,是末端履约分析的关键来源,后续可以据此识别签收状态、计算派送时长,并和揽收数据拼接形成完整配送链路。
- 客户信息表 : 记录客户 ID、客户名称、客户类型、寄件城市、签约日期、月均单量、折扣率等信息,用来补充客户维度数据,支撑寄件城市经营分析、客户结构分析以及业务规模和折扣水平的交叉观察。
- 网点信息表 : 记录网点编号、网点名称、所在城市、网点类型、网点等级等信息,用来补充网点基础属性,方便后续从网点类型、网点等级和所在区域等角度分析不同网点体系的履约能力和时效表现。
这 5 张源表共同构成了物流公司全链路时效分析的数据基础。只有先把这些原始数据清洗干净、口径统一,再按运单号和网点信息做关联,后面的城市对时效、网点效能、月度趋势和超时运单分析才有意义。
二、提示词整理
在工作流配置之前,需要先把这次业务处理逻辑整理成一份提示词。
这一步的作用,就是先明确 清洗哪些表 、 怎么关联 、 输出哪些报表 。整理好之后,这份提示词就可以作为工作流配置输入,指导后续执行。
这里也需要说明一点: 提示词不一定非要写成固定模板 。只要表达得 清晰 、 明确 、 简洁 ,让人一眼能看懂要做什么、按什么顺序做、最后输出什么结果,就可以了。
本次案例整理出的提示词如下:
整体要求:生成物流公司全链路配送时效分析报告:
第一步 - 清洗揽收记录表:
1. "揽收时间"统一为 yyyy-MM-dd HH:mm:ss 格式
2. "重量kg"去除"kg""千克"后缀
3. "体积"去除"m³""立方米"后缀
4. "寄件城市""收件城市"去除"市"后缀
5. 只保留"重量kg">0的有效记录
第二步 - 清洗中转记录表:
1. "到达时间""离开时间"统一为 yyyy-MM-dd HH:mm:ss 格式
2. "停留时长"去除"小时"后缀,空值时自动计算 = 离开时间 - 到达时间(小时);若离开时间早于到达时间则记为空
3. 按"运单号"汇总:总中转次数 = 中转记录条数、总中转停留时长、经过的中转站列表(逗号分隔)
第三步 - 清洗派送记录表:
1. "派送时间""签收时间"统一为 yyyy-MM-dd HH:mm:ss 格式
2. "签收状态"归一化:"已签收""签收""S"统一为"已签收"
3. 只保留已签收的运单,并按"运单号"去重,仅保留最终签收时间最晚的一条派送记录
4. 新增"派送时长" = 签收时间 - 派送时间(小时);若签收时间早于派送时间则记为空
第四步 - 清洗客户信息表:
1. "签约日期"统一为 yyyy-MM-dd 格式
2. "寄件城市"去除"市"后缀
3. "月均单量"转换为纯数字
4. "折扣率"统一为 0-1 之间的小数:如果原值是百分比(如"95%")则除以 100 转为 0.95;如果原值是折扣写法(如"9.5折")则除以 10 转为 0.95;如果原值已经是 0-1 之间的小数(如"0.95")则直接保留
第五步 - 生成揽收派送关联表:
1. 揽收表 与 派送表 按"运单号"匹配关联
2. 输出字段包括:"运单号"、"寄件人"、"寄件城市"、"收件城市"、"揽收时间"、"揽收表"中的"网点编号"并重命名为"揽收网点编号"、"派送员"、"派送网点"、"派送时间"、"签收时间"、"签收状态"、"派送次数"
3. 新增"全链路时长" = 签收时间 - 揽收时间(小时);若签收时间早于揽收时间则记为空
4. 新增"揽派城市对" = 寄件城市 + "-" + 收件城市
第六步 - 生成全链路宽表:
1. 揽收派送关联表 关联 中转汇总表(按"运单号"匹配)
2. 新增"中转时长占比" = 总中转停留时长 / 全链路时长;当全链路时长为空或<=0时记为空
第七步 - 生成城市对时效统计表:
1. 基于"全链路宽表"
2. 按"揽派城市对"分组,统计:平均全链路时长、平均中转次数、准时率(<72小时为准时),按运单量降序取Top50
3. 输出"城市对时效Top50表"
第八步 - 生成寄件城市统计表:
1. 基于"全链路宽表",按"寄件城市"分组,统计:发出量、平均全链路时长、平均中转次数
2. 对"客户信息表"先按"寄件城市"分组汇总:客户数、平均月均单量、平均折扣率
3. 将第1步结果与客户城市汇总结果按"寄件城市"关联,补充客户侧指标
4. 输出"寄件城市统计表"
第九步 - 生成网点效能统计表:
1. 基于"全链路宽表",按"揽收网点编号"分组
2. 统计:运单量、平均全链路时长、平均派送时长
3. 输出"网点效能统计表"
第十步 - 生成网点类型时效统计表:
1. 基于"全链路宽表" 关联 "网点信息表"(按"揽收网点编号" = "网点编号"匹配)
2. 按"网点类型"+"网点等级"分组,统计:运单量、平均全链路时长、平均中转时长占比
3. 输出"网点类型时效统计表"
第十一步 - 生成月度时效趋势表:
1. 基于"全链路宽表",按"揽收时间"提取"月份"(yyyy-MM)
2. 按"月份"分组,统计:月度运单量、月度平均全链路时长、月度准时率(<72小时为准时)
3. 输出"月度时效趋势表"
第十二步 - 生成超时运单明细表:
1. 基于"全链路宽表"
2. 筛选条件:全链路时长>120小时,按全链路时长降序取Top100
3. 输出"超时运单Top100明细表"
三、落地实现:工作流配置
工作流是由多个智能体节点组成的,这个案例我们涉及到下面几个智能体:
- 文件助手: 获取磁盘的文件或目录。
- 内容清洗器: 专门用来做数据清洗的,只要输入清洗描述就可以对文件数据进行任意整理。
- 数据入库:将文件数据转成本地数据库,用于后面作SQL统计。
- 表统计: 对本地数据库表进行SQL统计,不需要写sql,只需要统计的描述就可以了。
- 报表导出: 对数据库表进行导出,支持导出csv,xlsx,HTML(可视化显示) 。
根据这几个智能体还有上面描述的提示词,我们就可以完成工作流的配置了。
1. 配置文件助手
”文件助手“ 可以用来获取磁盘上任意的一个或多个文件。打开DT-Bot工作流, 配置一个 “文件助手”智能体节点,描述原始数据文件位置,如图:
DT-Bot工作流,解决方案获取: 宫中&浩气: “老罗软件”。
根据提示词描述,获取到了”揽收记录表.csv“原始表格,因为我们先对这个表进行清洗,这个智能体就会输出 记录表.csv,给后面智能体使用。
2. 配置内容清洗
“内容清洗器” 很强大,内部是通过python+单表sql执行引擎处理的, 可以对文件进行任意数据整理,我们直接输入清洗提示词就可以了, 如图:
3. 数据入库
清洗节点智能体任然返回的是文件,后面需要统计,还必须得入到本地数据库里面,如图:
无需配置任何提示词, 入库后,就是在本地开启数据库,并且生成了一张表,表名就是前面的文件名, 支持批量文件入库。
同理,所有的源表清洗都是这个套路。
4. 表统计
接下来我们需要进行表统计,直接用“表统计”智能体就好了, 也是直接输入提示词描述,工作流内部会生成相关sql进行统计(全程不用你操心),下面是我配置完成的图:
5. 导出报表
表统计后,只生成了结果表到数据库里面,还需要从数据库里面下载出来,这是要用“报表导出”智能体,可以指定哪些表,下载类型,如下图:
配置完成后,我们发布工作流执行就可以了。
四、结尾语
这个案例真正有价值的地方,不只是最后产出几张结果表,而是把原本零散、复杂的物流数据整理过程,拆成了小白也能跟着操作的步骤。先清洗,再汇总,再关联,最后出结果,整个过程更直观,也更容易上手。
对于没有代码基础的业务人员来说,这种方式会更友好。不用自己写 SQL,也不用从头研究复杂的数据处理逻辑,只要按照流程一步步执行,就能把揽收、中转、派送、客户和网点数据整理清楚,并完成常见的时效分析工作。