我用AI搭了个数据分析系统,效果还不错!
本文最后更新于 2025-06-24,文章内容可能已经过时。
前言:为什么要折腾这个?
最近在做平台数据分析的时候,发现每次DAU(日活跃用户)出现异动,都要手动查各种数据表、看公告、刷热搜,找半天才能搞清楚是什么原因。这种重复性工作实在太消耗时间了,于是我就想着能不能用AI来自动化处理这些事情。
经过一段时间的折腾,现在有了一个还算满意的结果,分享给大家。
这个系统能干啥?
- 自动发现异常:DAU有波动马上就能察觉
- 智能找原因:自动分析是赛事、主播还是外部事件影响的
- 生成报告:直接输出可以给老板看的分析报告
技术选型
现在主要用 Dify工作流 + n8n 这套组合,连接MySQL数据库,配合各种数据采集工具。
整体思路流程图
flowchart TD
A[n8n定时任务触发] --> B[Dify主工作流启动]
B --> C[4个子流程并行执行]
C --> D1[平台数据流程]
C --> D2[品类数据流程]
C --> D3[主播数据流程]
C --> D4[赛事数据流程]
D1 --> E1[平台DAU异动分析]
D2 --> E2[品类涨跌TOP10]
D3 --> E3[主播异动TOP20]
D4 --> E4[赛事影响分析]
E1 --> F[数据整合流程]
E2 --> F
E3 --> F
E4 --> F
F --> G[AI关联分析]
G --> H[外部信息收集]
H --> I[综合归因判断]
I --> J[生成分析报告]
J --> K[推送企业微信]
style A fill:#e1f5fe
style C fill:#fff3e0
style F fill:#ffeb3b
style K fill:#e8f5e8
核心工作流程
具体怎么实现的?
现在使用Dify工作流来处理,整个流程变得更加清晰:
数据提取阶段(4个并行流程)
- 平台数据流程 - 提取整体平台DAU变化情况
- 品类数据流程 - 分析各游戏品类的涨跌情况
- 主播数据流程 - 提取主播相关的异动数据
- 赛事数据流程 - 收集赛事排播和影响数据
数据整合阶段
- 大流程整合 - 将4个子流程的数据进行整合归因
- 智能分析 - AI对所有数据进行关联分析
- 报告生成 - 概括总结,生成最终分析报告
自动化推送
- 定时任务 - n8n每日定时调用整个工作流
- 消息推送 - 自动推送分析结果到企业微信
几个关键点
- SQL要规范:数据准确性是基础,不能乱来
- 多维度分析:平台、品类、主播、赛事都要覆盖
- 时间维度:支持日、周、月不同粒度的分析
具体功能模块
1. 流量趋势分析
这部分主要是看平台的整体数据变化情况。
看趋势
-- 日趋势(最近半年的数据)
SELECT dt, app_dau FROM ai_report.daxiong_all_tag_dau_diff_d
WHERE tag='active' AND game_id='huya' AND dt>='2025-01-01'
-- 周趋势
SELECT dt, app_dau FROM ai_report.daxiong_all_tag_dau_diff_week
WHERE tag='active' AND game_id='huya' AND dt>='2025-01-01'
-- 月趋势
SELECT dt, app_dau FROM ai_report.daxiong_all_tag_dau_diff_m
WHERE tag='active' AND game_id='huya' AND dt>='2025-01-01'
看环比变化
-- 这个能看出来今天比昨天变化了多少
SELECT dt, app_dau, last_app_dau, app_dau_diff
FROM ai_report.daxiong_all_tag_dau_diff_d
WHERE tag='active' AND game_id='huya' AND dt='指定日期'
2. 找原因分析
流量都从哪来的?
平台的DAU其实可以分解成几个部分:
- 赛事 - 看比赛的观众
- 头部主播 - 大主播的粉丝
- 官签主播 - 平台签约的主播
- 轮播 - 自动播放的内容
- 其他主播 - 各种小主播
-- 看看各部分的贡献情况
SELECT dt, att_tag, app_dau, last_app_dau, app_dau_diff
FROM ai_report.daxiong_all_tag_dau_diff_d
WHERE tag='attr' AND game_id='huya' AND dt='指定日期'
找出涨跌榜
-- 品类涨跌TOP10(看看哪个游戏火了或凉了)
SELECT dt, game_id, game_name, app_dau, app_dau_diff
FROM ai_report.daxiong_all_tag_dau_diff_d
WHERE tag='watch' AND dt='指定日期'
AND (app_dau_diff_desc_rn <=10 OR app_dau_diff_asc_rn <=10)
AND game_id<>'huya'
-- 主播涨跌TOP20(看看哪个主播突然火了)
SELECT dt, ayyuid, game_name, nickname, app_dau, live_hours
FROM ai_report.daxiong_ayyuid_dau_diff_d
WHERE dt='指定日期'
AND (app_dau_diff_desc_rn <=20 OR app_dau_diff_asc_rn <=20)
3. 外部信息收集
官方公告
AI会自动去爬虎牙官方博客(https://blog.huya.com/),看看有没有:
- 活动公告
- 赛事预告
- 合作消息
- 其他重要通知
热搜监控
同时会去各大平台看热搜:
- 微博热搜 - 看看有没有相关话题
- 抖音热点 - 短视频平台的热度
- B站排行 - UP主和游戏相关内容
4. 赛事分析
-- 看看当天有什么比赛
SELECT match_dt, match_name, app_dau
FROM ai_report.daxiong_match_dau_d
WHERE match_dt='指定日期' AND room_type='all'
AND game_name='all' AND match_name <> 'all'
比赛对流量的影响其实挺大的,特别是一些大型赛事。
目前的效果怎么样?
已经完成的部分
✅ Dify工作流搭建 - 4个数据提取子流程已经搭建完成
✅ 数据拆解优化 - 按平台、品类、主播、赛事进行了模块化拆分
✅ 大流程整合 - 数据整合归因的主流程已经跑通
✅ n8n定时任务 - 每日自动触发分析已经部署
✅ 企业微信推送 - 分析报告可以自动推送到群里
正在迭代的内容
🔄 外部信息收集 - 在优化热搜和公告信息的准确性
🔄 报告格式 - 在调整推送到企业微信的报告格式
踩过的坑
Dify工作流调试
刚开始各个子流程之间的数据传递有问题,调试了很久:
- 统一了数据格式规范
- 优化了流程间的参数传递
- 现在基本稳定了
- dify的并发有各种问题,控制并发量和速度取个平衡点,主要看你公司服务器咋样
n8n定时任务
定时任务的时区和触发逻辑搞了很久:
- 大数据模型跑的很慢,使用http请求会出现超时,这里准备手搓一个dify的定时任务插件
重点优化的内容
工作流模块化设计
将原来的大流程拆分成4个独立的子流程,各自负责不同维度的数据提取,这样:
- 调试更容易定位问题
- 可以并行处理提高效率
- 维护起来更方便
数据格式标准化
不同子流程输出的数据格式必须统一,否则整合阶段会出问题:
- 定义了统一的JSON格式规范
- 每个字段都有明确的数据类型
- 添加了格式验证机制
智能归因算法
最核心的部分是如何让AI准确分析各种因素的影响权重:
- 优化了Prompt的逻辑结构
- 增加了历史数据对比
- 引入了置信度评分机制
使用心得
分析流程总结
实际使用下来,基本就是这个套路:
-
先看数据
- 看看DAU到底变化了多少
- 哪些品类、主播、赛事有明显变化
-
找外部原因
- 看看官方有没有搞活动
- 刷刷热搜有没有相关话题
- 分析一下竞品是不是也有动作
-
综合分析
- 把内部数据和外部信息对比
- 判断哪个因素影响最大
- 理清楚整个因果关系
-
出报告
- 写成人话,别太技术化
- 最好有图表支撑
- 给出一些建议
后续优化方向
实时监控
希望能做到异常数据出现的时候自动报警,不用每天手动跑。
预警机制
根据历史数据设定一些阈值,提前预测可能出现的问题。
准确性提升
继续优化算法,让分析结果更准确。
总结
这套AI数据分析系统用下来感觉还不错,至少把我从重复性的查数据工作中解放出来了。日报基本都能自动生成,周报还在优化中。
下一步计划
- 实时分析 - 目前是每日定时分析,希望能做到实时异动检测
- 多平台支持 - 现在主要分析平台数据,计划扩展到其他平台
- 预警机制 - 建立异常数据的提前预警系统
- 报告优化 - 让AI生成的报告更加专业和易读
- 历史趋势 - 增加更长时间维度的趋势分析
现在这套基于Dify+n8n的方案运行还挺稳定的,每天早上都能收到前一天的分析报告。AI确实能大大提升数据分析的效率,特别是这种有标准流程的重复性工作。
如果你也在做类似的数据分析,推荐试试Dify工作流的方案,比纯代码的方式要灵活很多。
- 感谢你赐予我前进的力量


.gif)