有大佬开源过这种需求么,没有我就准备跑路了

2018-06-27 09:14:58 +08:00
 ccl945

需求是需要一个系统每天定时发送 excel 数据到邮箱,excel 数据来源直接写 sql。我特么一个干运维的。 妈蛋,准备跑路了。

6560 次点击
所在节点    开源软件
35 条回复
hand515
2018-06-27 09:21:27 +08:00
csv 格式了解下
yifanes
2018-06-27 09:38:58 +08:00
crontab sql csv 自己写,不会百度这几个关键词
liyer
2018-06-27 09:40:26 +08:00
kettle 了解一下?
Mbin
2018-06-27 09:41:31 +08:00
类似模块一大堆。楼主不用跑路,很容易的
janus77
2018-06-27 09:43:22 +08:00
这不就是拉报表么,只是过程自动化了一下
weifuqiao1989
2018-06-27 09:48:20 +08:00
kettle 可实现
xhyzidane
2018-06-27 09:48:30 +08:00
非常基础的需求了
ccl945
2018-06-27 09:49:13 +08:00
@yifanes 调度平台我知道,但是不能直接贴上 sql 就发送 excel
CoCoMcRee
2018-06-27 09:50:43 +08:00
你需要 Python
ccl945
2018-06-27 09:50:56 +08:00
@weifuqiao1989 上百个这种东西,用 kettle 我得画上百个 job,还要找个调度平台调度 kettle job
fds
2018-06-27 11:08:05 +08:00
用 python 的话就是先拿取任务,验证下 sql 合法性,到数据库执行一下,结果找个 xlsx 库包装成 excel,然后连个邮件服务器发送即可。
Senorsen
2018-06-27 11:08:49 +08:00
metabase 了解一下,就是干这事儿的。
rizon
2018-06-27 11:11:24 +08:00
我有这个程序,自己开发的。
1.目前支持 sql 执行后生成 excel 发邮件。
2.但是可以扩展支持其他脚本的执行。
3. 程序支持动态处理 sql (文本替换处理)
例如:你的一个 sql 是查询当前日期的前一天的数据,那么程序可以通过配置脚本来实现自动替换 sql 文件中的相应的占位符(where 条件)
4.可传参数,批量执行 sql
5.所有 sql 和邮件等均是页面配置
6.支持多数据源
7.一个超简单的账户权限分配管理
Senorsen
2018-06-27 11:13:36 +08:00
补充一下,metabase 是可以放一些不同的 SQL (称作“ question ”),自动拉取结果,绘制表格、统计图,可以分别配置发送邮件。
rizon
2018-06-27 11:29:09 +08:00
这个我目前还没完全开发完,当初是针对公司的一个变态报表业务开发,虽然是完全自主开发的(自己对的需求,自己提出的解决方案以及自己开发的),但是这种情况不知道到底能不能拿出来开源啊(在公司做出来的东西理论上都是只有署名权啊),

希望有大佬来指点一下,这个程序的当前版本已经支撑了目前的公司业务场景,但是我想在 github 上开源,继续去维护和开发新的功能,不知道这样做可以吗?????

公司的报表业务之前是由运营人员来维护的一堆 sql,但是这堆 sql 包含着复杂的日期逻辑,比如获取今年每个月的数据汇总,获取上周和上上周的数据对比,除了日期还有其他参数的一些业务逻辑。
所以开发了这个程序,

该程序主要解决的痛点就是 sql 不是固定的,而是因为参数不同而产生变化
rizon
2018-06-27 11:50:00 +08:00
![5b3305eb1bb2b.jpg]( https://i.loli.net/2018/06/27/5b3305eb1bb2b.jpg)
![5b3305e425761.jpg]( https://i.loli.net/2018/06/27/5b3305e425761.jpg)
![5b33069a5926d.png]( https://i.loli.net/2018/06/27/5b33069a5926d.png)
![5b3306ebd83cd.png]( https://i.loli.net/2018/06/27/5b3306ebd83cd.png)

概念上,scriptbot 分为三个模块,脚本,脚本组,任务。
1. 脚本模块 配置 sql 等可执行脚本,每个脚本隶属于一个脚本组,每个脚本生成一个 sheet。
2. 脚本组模块 配置每个脚本组的收件人,每个脚本组生成一个 excel,一个邮件可以发送多个脚本组
3. 任务模块,则是批量执行脚本组

程序支持通过动态配置 js 脚本(虽然采用 js 脚本是一种不是非常合适的方案吧)来对任务进行一些处理,借助 js 脚本可以实现很多东西。比如有两个事业部们要接收报表数据,但是他们使用的 sql 其实是完全一样的只是部门过滤条件不一样,那么就只需要配置一个 sql 脚本,两个事业部的脚本组可以复用同一个 sql 脚本,通过脚本组中的 js 脚本来动态替换事业部。

程序现在还没做完,很多功能还只停留在“又不是不能用”的阶段,等有时间的话决定填坑做完。
liprais
2018-06-27 11:52:24 +08:00
写两个脚本
第一个把要发的数据放到表里
第二个把这个表做成一个表格发出去
搞定收工
oisc
2018-06-27 11:57:02 +08:00
ccl945
2018-06-27 11:58:15 +08:00
@rizon 大佬,你的程序开源么
SbloodyS
2018-06-27 12:14:47 +08:00
这不就是个定时邮件推送的 BI 需求么。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/466150

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX