新手问题 下面的报表是不是可以通过 gem 来实现?

Vdan · 发布于 2017年04月17日 · 最后由 liprais 回复于 2017年04月21日 · 1188 次阅读
A6ae59

我又活着回来了,我是小白需要向大神们请教一些问题。🙏 🙏 现在有个项目,需要用ruby把数据库中的资料提取出来,并用报表的形式表现出来。我该如何去操作呢?想了半天还是没一点思绪。下面的功能是用java写出来的,现在想转换成ruby,这个想法可行么?难点在哪个地方,或是我需要再去学习哪些必要的知识?在此谢过了。 呈现的方式可以变,但是内容是不能变的。

共收到 22 条回复
A6ae59

我现在面临的状况是,数据库是现成的,现在是需要个思路,来解决提取资料的过程。用java写的项目已经上线,但是还是想用ruby来替换。

3

分两步,第一步是 data aggregation,第二部是 data visualization。

第一步,你可以考虑用常规方案(比如临时表,视图,Elasticsearch 或者后台任务聚合数据到 Redis)保存聚合数据。
第二步,你可以考虑使用 D3 或者其他流行的可视化组件来画图表。

可以用data aggregationdata visualization 作为关键字在网上搜到无数教材。

A6ae59
3lgn21st 回复

多谢了,我现在去查查资料。过程中有不懂的地方,还需要占用你的宝贵时间指点一下。谢谢了。

3
A6ae59Vdan 回复

我建议你直接看 Java 部分的代码,至少前端部分是通用的,数据处理部分只要你看懂了,用 Ruby 写起来只会更快更简单,所以你没有必要先跑到外面去找答案,先看现有的实现吧。

A6ae59
3lgn21st 回复

嗯,好的,谢谢。你的建议很棒!!!😀 又学习了一招。

254

superset看看

28316

看看echarts?

15139

这个「没有头绪」是大问题。

A6ae59
15139msg7086 回复

额,,,,可能是我没描述清楚。业务逻辑是,铁路上有个考试,需要各个站点的人员都要参加,最后考试的结果是通过网站生成好多报表,呈现给领导看。

A6ae59
3lgn21st 回复

大神,我又想了想,抽空帮我看下,我的思路对不对? 这个数据产生的逻辑,我理解为。由于ruby里我目前学到的最重要的,就是MVC 嘛。只要在controller和model里定义好方法,然后衔接数据库,抓取数据,最后抛给views来呈现报表。就像爬虫脚本,抓取关键字一样?只要我用把数据抓出来,剩下的就是views的事了吧。。。 好像是有报表的gem。会不会有类似于font-awesome这样的,直接就能用? 😃 😃 😃 😃 😃 😃

3
A6ae59Vdan 回复

并不完整,你的思路被局限在 ...... 你所认知的 Rails 框架本身。

你所说的是数据的呈现思路,而不是数据聚合思路,可能有报表 gem 辅助你解决数据的呈现问题,但是数据的聚合包括统计运算,需要你在 Rails 框架之外独立处理。

427786
A6ae59Vdan 回复

不太确定这个页面你能否独自搞下来,不过这不要紧。

就事论事,思路很简单:

  1. 从数据库中读取原始数据
  2. 计算需要呈现的数据结果
  3. 构建页面,呈现内容

对应到Rails框架里,第一步抽取数据,你也提到了;第二步计算数据,这个肯定是需要写代码算的,从实现的角度讲,你写在Controller里还是Model里都可以,个人建议你写Model里然后在Controller中调方法;第三步构建页面,这个不必多说,不过需要在Controller中把必要的信息组织好,才能做出数据结果。

#12 楼提到你对Rails框架认知不够,确实如此。https://ruby-china.org/wiki/books 这里有些书你先看看呗。

4375

可能会有一些坑。因为这个是java项目,数据表设计可能会与rails冲突,比如联合主键, 命名不规范,占用保留字段名等等。不确定你要用多久能搞定。

当你确定能顺利读出数据,那就好办了。先把读出来的数据组织成前端需要的形式,在确定能显示之后再考虑聚合的数据要放哪里。

1107

只谈标题哈,思维方式变一下,为什么要用 gem (或者jar 包或者什么语言什么库)?

是我想做 XXX,经过分析我发现要解决 A、B、C、D 四个子问题,经过 Google、被人安利、各种方式求助,发现 α gem 可以解决 A,B 可以通过 β gem 解决 B,C 要扩展下 γ gem,D 研究了一下得自己写了... 然后我把这些代码串在一起组织好,写好测试,交差,刷论坛去...

96

我在公司里负责的主要工作就是处理数据,这种问题我有经验。

数据可视化一般用Echart就够了。

数据聚合,推荐使用Daru这个Gem,它类似于python里的pandas,提供了Daru::Vector和Daru::DataFrame两个经典的类用来处理数据。缺点是经常出BUG,遇到了只能自己看源码然后使用"打开类"的技术来修复(或者在Github上反馈)。

推荐去看《利用Python进行数据分析》第九章,虽然写的是Python的pandas包的操作,但数据处理的思想是通用的,就是把所有相关数据都汇总到一个DataFrame里,每行是一个观测(在这个项目里就是人的所有数据),每列是一个变量(比如成绩,是否参加了考试等等),然后进行聚合操作。这些成绩统计项目都属于数据聚合的范畴。

A6ae59
427786a0nqm 回复

妥妥的,我先看,不懂的再问咯。。。

A6ae59
1107jasl 回复

恩,作为一只菜鸟来说,只能是不断的试错,然后放上来被怼。谢谢你提供的思路。😁

A6ae59
28316monkeygq 回复

谢谢,正在看。

A6ae59
32longfei 回复

谢谢,十分感谢,我要是不懂的,还望指点。。。。

1107
A6ae59Vdan 回复

怼你干啥。。。抖个机灵而已。。。

254
32longfei 回复

数据聚合为啥不用数据库........

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册