Question

Je vais avoir un peu d'un problème enveloppant ma tête autour de quelque chose. J'utilise actuellement une version piratée de Gruff afin d'accueillir « Parcelles » Scatter. Cela dit, les données sont saisies sous forme de:

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

... où le premier élément est l'entité, le second article est X-Coords, et le troisième élément est Y-Coords.

J'ai actuellement un jeu d'enregistrements d'articles d'une table avec les colonnes: POINT, VALEUR, timestamp. En raison des calculs « complexes » en cause, je dois saisir tout en utilisant une seule requête ou risque de façon trop d'activité de DB. Cela dit, j'ai une liste d'éléments pour lesquels j'ai besoin de recueillir dynamiquement toutes les données du jeu d'enregistrements dans un hachage (ou tableau de tableaux) pour la création des éléments de données. Je pensais quelque chose comme ce qui suit:

 @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

Il est évident que ce n'est pas la syntaxe correcte, mais c'est là va mon cerveau. Quelqu'un pourrait-il nettoyer cela pour moi ou suggérer un mécanisme plus approprié par lequel pour y parvenir? Fondamentalement, l'objectif principal est de conserver les données pour chaque PointName groupées (mais rappelez-vous le recordset a tous).

Très apprécié.

Modifier 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)
Était-ce utile?

La solution

Tout d'abord, ne pas utiliser l'interpolation de chaîne quand un simple o.to_s fera.

@h[event.Point.to_s]

La structure de vos données ne sont pas clairement de la description. Je pense que vous voulez dire qu'il ya 1) il y a des événements avec des noms de point 2) chaque événement a un temps et une valeur 3) vous souhaitez manipuler une collection d'événements.

Un hachage est un excellent choix pour le problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top