Pregunta

Estoy teniendo un poco de un problema de envolver mi cabeza en torno a algo. Actualmente estoy usando una versión hackeada de Gruff con el fin de dar cabida a "diagramas de dispersión". Dicho esto, los datos se introducen en forma de:

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

... donde el primer elemento es la entidad, el segundo elemento es X-COORDS, y el tercer elemento es Y-COORDS.

Actualmente tengo un conjunto de registros de elementos de una tabla con las columnas: PUNTOS, VALOR, fecha y hora. Debido a los cálculos de "complejos" que participan debo tomar todo con una sola consulta o arriesgar demasiado la actividad DB. Dicho esto, tengo una lista de elementos para los que tengo que recoger todos los datos de forma dinámica desde el conjunto de registros en un hash (o matriz de matrices) para la creación de los elementos de datos. Estaba pensando en algo como lo siguiente:

 @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

Es evidente que no es la sintaxis correcta, pero ahí es donde va mi cerebro. Podría alguien limpiar esto para mí o sugerir un mecanismo más apropiado para lograr esto? Básicamente, el objetivo principal es mantener los datos para cada pointname agrupados (pero recuerda que el conjunto de registros tiene todos ellos).

muy apreciado.

Editar 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)
¿Fue útil?

Solución

En primer lugar, no utilice la interpolación de cadenas cuando un simple o.to_s van a hacer.

@h[event.Point.to_s]

La estructura de sus datos no se desprende de la descripción. Creo que significa que hay 1) existen eventos con Nombres punto 2), cada evento tiene una hora y un valor de 3) que desea manipular una colección de eventos.

Un hash es una buena opción para el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top