Ruby on rails - 来自单个 ActiveRecord 模型的复杂分组



我迫切需要一些帮助。 我的任务是为我们的一个团队提供一个实用程序,用于对数据文件进行一些基本分析。 我已经离开每天编码一段时间了,所以我有点生疏。 我会尽量简明扼要地描述我的问题。

方案:列表运营团队为电子邮件市场营销活动创建数据文件。 营销活动是多细分的;每个段由一个键码标识。 记录总数平均约为 450,000,文件大小约为 20MB。

我们现在遇到了严重的垃圾问题,因此营销部门希望按细分市场对Gmail,yahoo和hotmail地址的记录数量进行一些基本分析。

当前状态:我创建了一个Rails 3应用程序,允许用户上传多个文件并将这些记录保存在MySQL数据库中。

下面是数据库记录外观的一个非常基本的示例,不包括 id 和时间戳等标准字段:

domain       eid    keycode  
YAHOO.COM    42886  GY4103  
HOTMAIL.COM  53012  GY4103  
YAHOO.COM    53952  GY4103  
AOL.COM      54327  GY4103  
COMCAST.NET  55134  MX4155  
GMAIL.COM    59157  MX4155  
AOL.COM      59823  MX4155  
AOL.COM      60384  MX4161  
MSN.COM      64720  MX4161  
YAHOO.COM    67790  MX4161
GMAIL.COM    73537  MX4161
YAHOO.COM    76747  MX4161  
HOTMAIL.COM  71467  MX4161
GMAIL.COM    84280  MX4161  

问题:我需要将分析呈现给最终用户:

Keycode
GY4103
  Domain       Count
  YAHOO.COM    2
  HOTMAIL.COM  1
  OTHER        1
MX4155
  Domain       Count
  GMAIL.COM    1
  OTHER        2
MX4161
  Domain       Count
  YAHOO.COM    2
  HOTMAIL.COM  1
  GMAIL.COM    2
  OTHER        2

如果我在像 Crystal Reports 这样的东西中,我只会按键码分组,然后按域分组,然后按开斋节计数,做一些调整以仅显示我想要的 3 个域,其他所有内容都显示为"其他",我就完成了!但是,这里无法使用 CR。

所以我假设我是在创建某种类型的树结构或层次结构之后,其中 Keycode 在顶层,然后在该下使用域,在该级别下进行计数??我开始看祖先宝石,但我并没有真正理解它。

任何人可以提供的任何帮助将不胜感激,特别是考虑到我需要在明天中午之前提供这个。

我可能会在其中混合一些手动 SQL,因为它似乎是一个需要处理的大型数据集。也许是这样的:

# CONTROLLER
# Load the data from the database and group on keycode and domain.
# You will only get one record for each unique combination of domain and keycode
@records = MyModel.select("keycode, domain, COUNT(eid) AS eids").group("keycode, domain")
# convert the array of records into a hash where every key is a unique keycode
# and the value is an array of records for all the domains for that keycode
@records = @records.group_by(&:keycode)
# VIEW
<% @records.keys.each do |keycode| %>
  <h1><%= keycode %></h1>
  <% @records[keycode].each do |record| %>
    <p><%= record.domain %>: <%= record.eids %></p>
  <% end %>
<% end %>

我希望我正确理解了一切

相关内容

  • 没有找到相关文章