我又活着回来了,我是小白需要向大神们请教一些问题。 现在有个项目,需要用 ruby 把数据库中的资料提取出来,并用报表的形式表现出来。我该如何去操作呢?想了半天还是没一点思绪。下面的功能是用 java 写出来的,现在想转换成 ruby,这个想法可行么?难点在哪个地方,或是我需要再去学习哪些必要的知识?在此谢过了。 呈现的方式可以变,但是内容是不能变的。
分两步,第一步是 data aggregation,第二部是 data visualization。
第一步,你可以考虑用常规方案(比如临时表,视图,Elasticsearch 或者后台任务聚合数据到 Redis)保存聚合数据。
第二步,你可以考虑使用 D3 或者其他流行的可视化组件来画图表。
可以用data aggregation
和 data visualization
作为关键字在网上搜到无数教材。
我建议你直接看 Java 部分的代码,至少前端部分是通用的,数据处理部分只要你看懂了,用 Ruby 写起来只会更快更简单,所以你没有必要先跑到外面去找答案,先看现有的实现吧。
额,,,,可能是我没描述清楚。业务逻辑是,铁路上有个考试,需要各个站点的人员都要参加,最后考试的结果是通过网站生成好多报表,呈现给领导看。
大神,我又想了想,抽空帮我看下,我的思路对不对? 这个数据产生的逻辑,我理解为。由于 ruby 里我目前学到的最重要的,就是 MVC 嘛。只要在 controller 和 model 里定义好方法,然后衔接数据库,抓取数据,最后抛给 views 来呈现报表。就像爬虫脚本,抓取关键字一样?只要我用把数据抓出来,剩下的就是 views 的事了吧。。。好像是有报表的 gem。会不会有类似于 font-awesome 这样的,直接就能用?
并不完整,你的思路被局限在 ...... 你所认知的 Rails 框架本身。
你所说的是数据的呈现思路,而不是数据聚合思路,可能有报表 gem 辅助你解决数据的呈现问题,但是数据的聚合包括统计运算,需要你在 Rails 框架之外独立处理。
不太确定这个页面你能否独自搞下来,不过这不要紧。
就事论事,思路很简单:
对应到 Rails 框架里,第一步抽取数据,你也提到了;第二步计算数据,这个肯定是需要写代码算的,从实现的角度讲,你写在 Controller 里还是 Model 里都可以,个人建议你写 Model 里然后在 Controller 中调方法;第三步构建页面,这个不必多说,不过需要在 Controller 中把必要的信息组织好,才能做出数据结果。
#12 楼提到你对 Rails 框架认知不够,确实如此。https://ruby-china.org/wiki/books 这里有些书你先看看呗。
可能会有一些坑。因为这个是 java 项目,数据表设计可能会与 rails 冲突,比如联合主键,命名不规范,占用保留字段名等等。不确定你要用多久能搞定。
当你确定能顺利读出数据,那就好办了。先把读出来的数据组织成前端需要的形式,在确定能显示之后再考虑聚合的数据要放哪里。
只谈标题哈,思维方式变一下,为什么要用 gem(或者 jar 包或者什么语言什么库)?
是我想做 XXX,经过分析我发现要解决 A、B、C、D 四个子问题,经过 Google、被人安利、各种方式求助,发现 α gem 可以解决 A,B 可以通过 β gem 解决 B,C 要扩展下 γ gem,D 研究了一下得自己写了... 然后我把这些代码串在一起组织好,写好测试,交差,刷论坛去...
我在公司里负责的主要工作就是处理数据,这种问题我有经验。
数据可视化一般用 Echart 就够了。
数据聚合,推荐使用 Daru 这个 Gem,它类似于 python 里的 pandas,提供了 Daru::Vector 和 Daru::DataFrame 两个经典的类用来处理数据。缺点是经常出 BUG,遇到了只能自己看源码然后使用"打开类"的技术来修复(或者在 Github 上反馈)。
推荐去看《利用 Python 进行数据分析》第九章,虽然写的是 Python 的 pandas 包的操作,但数据处理的思想是通用的,就是把所有相关数据都汇总到一个 DataFrame 里,每行是一个观测(在这个项目里就是人的所有数据),每列是一个变量(比如成绩,是否参加了考试等等),然后进行聚合操作。这些成绩统计项目都属于数据聚合的范畴。