Class: Statlysis::Count

Inherits:
Cron
  • Object
show all
Defined in:
lib/statlysis/cron/count.rb

Direct Known Subclasses

Dimensions, Timely

Instance Attribute Summary

Attributes inherited from Cron

#multiple_dataset, #source_type, #time_column, #time_unit, #time_zone

Instance Method Summary collapse

Methods inherited from Cron

#_source, #is_activerecord?, #is_mongoid?, #is_orm?, #output, #reoutput, #setup_stat_model, #source_where_array, #time_range

Methods included from Common

#cron

Constructor Details

#initialize(source, opts = {}) ⇒ Count

Returns a new instance of Count.



5
6
7
8
9
10
# File 'lib/statlysis/cron/count.rb', line 5

def initialize source, opts = {}
  super
  Statlysis.check_set_database
  cron.setup_stat_model
  cron
end

Instance Method Details

#runObject

设置数据源,并保存结果入数据库



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/statlysis/cron/count.rb', line 13

def run
  (logger.info("#{cron.multiple_dataset.name} have no result!"); return false) if cron.output.blank?
  # delete first in range
  @output = cron.output
  unless @output.any?
    logger.info "没有数据"; return
  end
  num_i = 0; num_add = 999
  Statlysis.sequel.transaction do
    cron.stat_model.where("t >= ? AND t <= ?", cron.output[0][:t], cron.output[-1][:t]).delete
    while !(_a = @output[num_i..(num_i+num_add)]).blank? do
      # batch insert all
      cron.stat_model.multi_insert _a
      num_i += (num_add + 1)
    end
  end

  return self
end