需求描述
相信应该有一部分朋友跟我们一样,公司内部有很多各种各样的系统,比如资产管理、CRM、issue管理等等。这篇文章介绍下,鸿鹄是如何让我们的资产系统,按照我们的需求展示数据的。
我们的资产管理系统,是使用开源的Snipe-IT。Snipe-IT 凭借着易安装部署和内容丰富,赢得了不少的用户。炎凰是使用 docker 来进行部署的,只要部署两个容器即可。MySQL 和 Snipe-IT,所以理所当然Snipe-IT 的数据是存储在MySQL中的。
从功能上来说,仅仅就记录资产而言,Snipe-IT 完全能够满足我们目前的需求。但是随着时间的推移,电脑在快到达报废期限前,我希望能够收到提醒,并且可以提前统计出来,这样以便为下一次的预算做准备。Snipe-IT却没有这样的功能,但是我们可以依托鸿鹄的数据分析和展示能力,来实现我们的需求。
需求的实现
我们常常会有这样的感觉,数据和想法我都有,但是没有一个工具,能让我灵活的分析和展示我的数据。不过在了解鸿鹄之后,这样的问题就能够迎刃而解。
对于资产的支出,目前一大部分都是消费在电脑的采购上,如果有明年将会采购电脑的统计,那么明年的预算就简单了很多。而对于电脑的采购,也分为,电脑的换新和新购。
电脑换新:电脑年限一般在4年。到达4年后,同事们可以申请新的电脑,公司会为其采购。(为了本篇文章我暂时设置电脑换新年限为3年,因为我们公司刚成立2年多,如果设置4年的话,就没有数据样本)
电脑新购:为新进同事购买新的电脑。假设我们明年计划招聘15位新同事,而且根据不同部门分配不同配置的电脑,就能估算出新电脑的购置费用。
通过一天多的努力,就基本实现了我的需求。仪表盘等展示如下(由于数据敏感,为了展示。以下是我们根据真实场景,对数据进行了脱敏处理,以下数字并非真实业务数据):
图1 资产预算仪表板
图2 解释电脑总支出费用
‘2023年预计电脑费用总支出(元)’是由‘电脑换新费用(元)’与‘新购电脑费用(元)’之和。
换新电脑的数据从何而来?我们是通过JDBC去查snipe-it的MySQL表中数据,然后发送给鸿鹄,下一章节会详细介绍。
图3 明年换新的季度费用统计
另外通过统计,我们也知道下一个/几个季度我们换新电脑的费用情况(因为公司是2020年8月份成立的,所以我们在统计2023年数据时,就只能看到从第三季开始的数据)。而且从详细的列表中,我们也清楚哪些同事可以在什么时间申请换新电脑,并且根据现在的行情估算出费用。
图4 明年换新的详细表
关于统计和计算,其实只需要例如这样的一条SQL就可以了(统计换新的总费用的SQL)。
仪表板有了,只要定期去查看,就能详细了解到明年采购电脑的费用情况。但是,资产报表并不是经常更新,所以我们的注意力不会经常放在上面,但是只要定期(我目前设置的是每个季度的第一天)让我看到一个一直更新的报表即可。于是设置了仪表板的“设定计划”,在每季度的第一天,就收到以PDF为格式仪表板的邮件,同时也提醒我,是时间该考虑预算问题了,简化工作流。
图5 仪表板邮件
图6 PDF中显示仪表板
方案实现步骤
Snipe-IT的配置
因为Snipe-IT的部署非常简单,我就简单点,把配置文件粘上来。Snipe-IT的部署,仅需MySQL与Snipe-IT 两个container。供参考:
mysql.yaml (折叠框)
snipe-it.yaml (折叠框)
部署好主界面如下:
图7 Snipe-it 界面
鸿鹄通过JDBC来访问
从上面的配置文件的代码就可以看出,Snipe-IT与MySQL之间是通过3306端口进行交互的,那我们就可以使用鸿鹄通过JDBC,来访问MySQL的数据。
鸿鹄的安装可以参考: https://yanhuang.yuque.com/books/share/b1b27937-e331-40fd-bce1-bd521af4e662/vvv9si
下面我们来执行一个简单的查询,来测试下JDBC,查看是否可以拿取MySQL中的数据
图8 测试JDBC
测试成功,不过我们需要的是一个持续可更新的数据集,这样以便我们做仪表板,和监控数据。
针对MySQL中的数据导入到鸿鹄,我使用的是预存查询的方法进行导入。如果希望更加快捷地,把关系型数据库的数据进行导入。可以联系我们的销售同事,获取炎凰数据平台商业版,商业版已经完美的支持了通过JDBC对MySQL的数据进行导入。
首先创建数据集,以 assets 为例:
图9 创建数据集
我这里会创建两个预存查询,第一个是删除掉数据集中的数据,第二个是从JDBC中拿取数据后 Insert 到数据集中,具体流程是每天的 0:01、6:01、12:01、18:01 清除数据集,然后在 0:02、6:02、12:02、18:02 时查询数据库然后把结果 insert 到数据集中,实现定时更新的目的。
1、创建清除数据的预存查询
图10 新建清除数据集的预存查询
2、创建insert JDBC数据的预存查询,将处理过后的数据,插入到assets数据集中。
图11 新建更新数据集的预存查询
执行过以上的预存查询之后,我们的assets数据集就有了数据。 有了数据我们就可以制作仪表板了
制作仪表板
创建仪表板一个关于“资产预算”的仪表板
图12 新建仪表板
然后只需要向仪表板中添加各个图表
图13 新建仪表板中的图标
最后的效果参见:图1 资产预算仪表板
邮件提醒
在编辑好的仪表板中,点击“设定计划”,开始编辑设定计划,动作选择邮件,然后输入你的邮件即可。(当然先要设置好,系统设置中的“电子邮件设置”,具体位置见文献参考)
图14 仪表板中的设定计划
图15 编辑设定计划
这样就可以按照你设定的日期,收到的报表邮件了。
鸿鹄价值
就像我之前所说的,数据和想法我都有,但是缺少一个能够帮我实现数据分析和展示的简单工具,那么鸿鹄就能够帮到你,只要几条简单的SQL语句,就能够把数据按照你的想法展示出来。然后再按照实际的需求来制作仪表板。展示给自己和老板。再加上定时的计划,提醒我们该做预算了,而且给后面计算预算,起到数据支撑的作用。
后续工作
这次的经历,对于我也是一次探索,之前我也不知道MySQL的数据,原来可以如此简单的接入到鸿鹄中。未来,我们会将其他系统中的数据,也都会接入到鸿鹄中,集中化管理和分析。很多系统的数据放在一起,说不定还会起到一些化学变化。
文献参考
Snipe-it : https://snipeitapp.com/
鸿鹄中电子邮件设置:
http://:18080/center/docs/preference/system/smtp/
鸿鹄中JDBC文档:
http://:18080/center/docs/integration/jdbc/