Class: Quandl::Cassandra::Models::Column::Read::Collapse
Instance Method Summary
collapse
#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|
if Quandl::Operation::Collapse.collapses_greater_than( frequency ).include?( collapse )
collapse
else
: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|
freq_index = Quandl::Operation::Collapse.valid_collapses.index(freq)
column_freq_index = Quandl::Operation::Collapse.valid_collapses.index(column_freq).to_i
freq = column_freq if column_freq_index > freq_index
freq
end
end
|
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_frequencies ⇒ Object
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
|