(Rails)从数据集创建多维哈希/数组...?

问题描述:

我有一个问题围绕着我的脑袋。我目前正在使用黑客版本的Gruff以容纳“Scatter Plots”。这就是说,数据的形式进入:(Rails)从数据集创建多维哈希/数组...?

g.data("Person1",[12,32,34,55,23],[323,43,23,43,22]) 

...其中第一个项目是实体,第二项是X-COORDS,第三项为Y-COORDS。

我目前有一个列的项目的记录集与列:POINT,VALUE,TIMESTAMP。由于涉及“复杂”计算,我必须使用单个查询来抓取所有内容,否则风险会过大。也就是说,我有一个项目列表,我需要动态地从记录集中将所有数据收集到一个用于创建数据项目的散列(或数组数组)中。我想类似如下:

@h={} 

e = Events.find_by_sql(my_query) 
e.each do |event| 
     @h["#{event.Point}"][x] = event.timestamp 
     @h["#{event.Point}"][y] = event.value 
end 

显然,这不是正确的语法,但是这就是我的大脑是怎么回事。有人可以帮我清理一下,或者建议一个更合适的机制来完成这个工作吗?基本上,主要目标是保持每个点名称的数据分组(但记住记录集有它们全部)。

非常感谢。

编辑1

g = Gruff::Scatter.new("600x350") 
g.title = self.name 

e = Event.find_by_sql(@sql) 

h ={} 

e.each do |event| 
    h[event.Point.to_s] ||= {} 
    h[event.Point.to_s].merge!({event.Timestamp.to_i,event.Value}) 
end 

h.each do |p| 

    logger.info p[1].values.inspect 

    g.data(p[0],p[1].keys,p[1].values) 
end 

g.write(@chart_file) 

首先,不要用串插在一个简单的o.to_s会做。

@h[event.Point.to_s] 

您的数据结构不清楚从描述中。我认为你的意思是1)有点名的事件2)每个事件都有时间和价值3)你想操纵一系列事件。

散列是该问题的最佳选择。

+0

良好的插值调用。也就是说,我仍然不确定如何构建哈希。我需要每个X和Y叉,对吗?或者它会是一个哈希散列?你介意提供一个例子吗?我的主要问题是,所有点都在返回的记录集中,我需要额外的“感知”级别来确定我目前使用的POINTNAME - 除非哈希支持某种“推送”机制,我可以简单地通过名称引用它并抛出两个更多的值。 – 2009-07-07 17:41:39