Class: Quandl::Cassandra::Models::Column::Read::Collapse

Inherits:
Quandl::Cassandra::Models::Column::Read show all
Defined in:
lib/quandl/cassandra/models/column/read/collapse.rb

Instance Method Summary collapse

Methods inherited from Quandl::Cassandra::Models::Column::Read

#column_collapses, #column_ids, #column_ids=, #count?, perform

Instance Method Details

#build_column_collapses_using_frequencies(freqs, collapse) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/quandl/cassandra/models/column/read/collapse.rb', line 16

def build_column_collapses_using_frequencies(freqs, collapse)
  freqs.collect do |frequency|
    # is frequency less than collapse?
    if Quandl::Operation::Collapse.collapses_greater_than( frequency ).include?( collapse )
      # this column needs to be collapsed
      collapse
    # otherwise frequency is greater than or equal to collapse
    else
      # so collapse is not needed
      :source
    end
  end
end

#find_largest_frequency(freqs) ⇒ Object

:daily, :weekly, :monthly


31
32
33
34
35
36
37
38
39
40
# File 'lib/quandl/cassandra/models/column/read/collapse.rb', line 31

def find_largest_frequency(freqs)
  attributes[:column_frequencies].inject(:daily) do |freq,column_freq|
    # index of both frequencies
    freq_index = Quandl::Operation::Collapse.valid_collapses.index(freq)
    column_freq_index = Quandl::Operation::Collapse.valid_collapses.index(column_freq).to_i
    # is column_freq greater than freq?
    freq = column_freq if column_freq_index > freq_index
    freq
  end
end

#performObject



3
4
5
6
7
8
# File 'lib/quandl/cassandra/models/column/read/collapse.rb', line 3

def perform
  attributes[:collapse] ||= :source
  attributes[:column_frequencies] ||= select_column_frequencies
  attributes[:column_collapses] = build_column_collapses_using_frequencies( attributes[:column_frequencies], attributes[:collapse] )
  attributes[:frequency] = find_largest_frequency( attributes[:column_frequencies] )
end

#select_column_frequenciesObject



10
11
12
13
14
# File 'lib/quandl/cassandra/models/column/read/collapse.rb', line 10

def select_column_frequencies
  freqs = Quandl::Cassandra::Models::ColumnAttribute.where( id: column_ids ).select(:id, :frequency).to_a unless column_ids.blank?
  freqs = [] if freqs.blank?
  column_ids.collect{|id| freqs.detect{|f| f['id'] == id }.try(:[], 'frequency').try(&:to_sym) }
end