quandl_cassandra 0.3.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/UPGRADE.md +6 -0
- data/lib/quandl/cassandra.rb +0 -7
- data/lib/quandl/cassandra/version.rb +1 -1
- data/spec/lib/quandl/cassandra/base/scoping_spec.rb +10 -10
- metadata +1 -61
- data/lib/quandl/cassandra_models/column.rb +0 -20
- data/lib/quandl/cassandra_models/column/read.rb +0 -32
- data/lib/quandl/cassandra_models/column/read/collapse.rb +0 -65
- data/lib/quandl/cassandra_models/column/read/column.rb +0 -19
- data/lib/quandl/cassandra_models/column/read/data.rb +0 -59
- data/lib/quandl/cassandra_models/column/read/offset.rb +0 -118
- data/lib/quandl/cassandra_models/column/read/row.rb +0 -20
- data/lib/quandl/cassandra_models/column/read/select_columns.rb +0 -60
- data/lib/quandl/cassandra_models/column/read/transform.rb +0 -53
- data/lib/quandl/cassandra_models/column/read/type.rb +0 -25
- data/lib/quandl/cassandra_models/column/write.rb +0 -22
- data/lib/quandl/cassandra_models/column/write/group_data_by_column.rb +0 -37
- data/lib/quandl/cassandra_models/column/write/group_data_by_frequency.rb +0 -24
- data/lib/quandl/cassandra_models/column/write/insert_column_attributes.rb +0 -20
- data/lib/quandl/cassandra_models/column/write/insert_columns.rb +0 -9
- data/lib/quandl/cassandra_models/column_attribute.rb +0 -11
- data/lib/quandl/cassandra_models/data.rb +0 -18
- data/lib/quandl/cassandra_models/data/search.rb +0 -104
- data/lib/quandl/cassandra_models/dataset.rb +0 -72
- data/lib/quandl/cassandra_models/dataset/columns.rb +0 -61
- data/lib/quandl/cassandra_models/dataset_attribute.rb +0 -6
- data/lib/quandl/cassandra_models/multiset.rb +0 -50
- data/spec/factories/dataset.rb +0 -8
- data/spec/lib/quandl/cassandra_models/column/write/group_data_by_frequency_spec.rb +0 -28
- data/spec/lib/quandl/cassandra_models/column/write_spec.rb +0 -23
- data/spec/lib/quandl/cassandra_models/column_attribute_spec.rb +0 -16
- data/spec/lib/quandl/cassandra_models/column_spec.rb +0 -17
- data/spec/lib/quandl/cassandra_models/data_spec.rb +0 -84
- data/spec/lib/quandl/cassandra_models/dataset/collapse_spec.rb +0 -44
- data/spec/lib/quandl/cassandra_models/dataset/column_spec.rb +0 -24
- data/spec/lib/quandl/cassandra_models/dataset/persistence_spec.rb +0 -24
- data/spec/lib/quandl/cassandra_models/dataset/row_spec.rb +0 -26
- data/spec/lib/quandl/cassandra_models/dataset/transform_spec.rb +0 -16
- data/spec/lib/quandl/cassandra_models/dataset/trim_spec.rb +0 -74
- data/spec/lib/quandl/cassandra_models/dataset/update_spec.rb +0 -37
- data/spec/lib/quandl/cassandra_models/dataset_attribute_spec.rb +0 -18
- data/spec/lib/quandl/cassandra_models/dataset_spec.rb +0 -111
- data/spec/lib/quandl/cassandra_models/multiset/collapse_spec.rb +0 -122
- data/spec/lib/quandl/cassandra_models/multiset/columns_spec.rb +0 -57
- data/spec/lib/quandl/cassandra_models/multiset/data_spec.rb +0 -25
- data/spec/lib/quandl/cassandra_models/multiset/transform_spec.rb +0 -69
data/UPGRADE.md
CHANGED
data/lib/quandl/cassandra.rb
CHANGED
@@ -19,13 +19,6 @@ require 'quandl/cassandra/base'
|
|
19
19
|
require 'quandl/cassandra/configuration'
|
20
20
|
require 'quandl/cassandra/batch'
|
21
21
|
|
22
|
-
require 'quandl/cassandra_models/column'
|
23
|
-
require 'quandl/cassandra_models/column_attribute'
|
24
|
-
require 'quandl/cassandra_models/data'
|
25
|
-
require 'quandl/cassandra_models/dataset'
|
26
|
-
require 'quandl/cassandra_models/dataset_attribute'
|
27
|
-
require 'quandl/cassandra_models/multiset'
|
28
|
-
|
29
22
|
module Quandl
|
30
23
|
module Cassandra
|
31
24
|
end
|
@@ -11,16 +11,16 @@ describe Quandl::Cassandra::Base::Scoping do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
its(:scope_names){ should eq TestModel.scope.scope_names }
|
14
|
-
|
15
|
-
describe ".find_or_build" do
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
23
|
-
|
14
|
+
#
|
15
|
+
# describe ".find_or_build" do
|
16
|
+
# it "given nil should be a new record" do
|
17
|
+
# TestModel.find_or_build(nil).new_record?.should be_true
|
18
|
+
# end
|
19
|
+
# it "given empty sting should be a new record" do
|
20
|
+
# TestModel.find_or_build('').new_record?.should be_true
|
21
|
+
# end
|
22
|
+
# end
|
23
|
+
#
|
24
24
|
describe ".to_cql" do
|
25
25
|
|
26
26
|
let(:scope) { TestModel.scope.new }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: quandl_cassandra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -260,53 +260,12 @@ files:
|
|
260
260
|
- lib/quandl/cassandra/types/utf8_type.rb
|
261
261
|
- lib/quandl/cassandra/types/uuid_type.rb
|
262
262
|
- lib/quandl/cassandra/version.rb
|
263
|
-
- lib/quandl/cassandra_models/column.rb
|
264
|
-
- lib/quandl/cassandra_models/column/read.rb
|
265
|
-
- lib/quandl/cassandra_models/column/read/collapse.rb
|
266
|
-
- lib/quandl/cassandra_models/column/read/column.rb
|
267
|
-
- lib/quandl/cassandra_models/column/read/data.rb
|
268
|
-
- lib/quandl/cassandra_models/column/read/offset.rb
|
269
|
-
- lib/quandl/cassandra_models/column/read/row.rb
|
270
|
-
- lib/quandl/cassandra_models/column/read/select_columns.rb
|
271
|
-
- lib/quandl/cassandra_models/column/read/transform.rb
|
272
|
-
- lib/quandl/cassandra_models/column/read/type.rb
|
273
|
-
- lib/quandl/cassandra_models/column/write.rb
|
274
|
-
- lib/quandl/cassandra_models/column/write/group_data_by_column.rb
|
275
|
-
- lib/quandl/cassandra_models/column/write/group_data_by_frequency.rb
|
276
|
-
- lib/quandl/cassandra_models/column/write/insert_column_attributes.rb
|
277
|
-
- lib/quandl/cassandra_models/column/write/insert_columns.rb
|
278
|
-
- lib/quandl/cassandra_models/column_attribute.rb
|
279
|
-
- lib/quandl/cassandra_models/data.rb
|
280
|
-
- lib/quandl/cassandra_models/data/search.rb
|
281
|
-
- lib/quandl/cassandra_models/dataset.rb
|
282
|
-
- lib/quandl/cassandra_models/dataset/columns.rb
|
283
|
-
- lib/quandl/cassandra_models/dataset_attribute.rb
|
284
|
-
- lib/quandl/cassandra_models/multiset.rb
|
285
263
|
- lib/quandl/strategy.rb
|
286
264
|
- quandl_cassandra.gemspec
|
287
265
|
- spec/expectations/string.rb
|
288
266
|
- spec/expectations/time.rb
|
289
|
-
- spec/factories/dataset.rb
|
290
267
|
- spec/lib/quandl/cassandra/base/sanitization_spec.rb
|
291
268
|
- spec/lib/quandl/cassandra/base/scoping_spec.rb
|
292
|
-
- spec/lib/quandl/cassandra_models/column/write/group_data_by_frequency_spec.rb
|
293
|
-
- spec/lib/quandl/cassandra_models/column/write_spec.rb
|
294
|
-
- spec/lib/quandl/cassandra_models/column_attribute_spec.rb
|
295
|
-
- spec/lib/quandl/cassandra_models/column_spec.rb
|
296
|
-
- spec/lib/quandl/cassandra_models/data_spec.rb
|
297
|
-
- spec/lib/quandl/cassandra_models/dataset/collapse_spec.rb
|
298
|
-
- spec/lib/quandl/cassandra_models/dataset/column_spec.rb
|
299
|
-
- spec/lib/quandl/cassandra_models/dataset/persistence_spec.rb
|
300
|
-
- spec/lib/quandl/cassandra_models/dataset/row_spec.rb
|
301
|
-
- spec/lib/quandl/cassandra_models/dataset/transform_spec.rb
|
302
|
-
- spec/lib/quandl/cassandra_models/dataset/trim_spec.rb
|
303
|
-
- spec/lib/quandl/cassandra_models/dataset/update_spec.rb
|
304
|
-
- spec/lib/quandl/cassandra_models/dataset_attribute_spec.rb
|
305
|
-
- spec/lib/quandl/cassandra_models/dataset_spec.rb
|
306
|
-
- spec/lib/quandl/cassandra_models/multiset/collapse_spec.rb
|
307
|
-
- spec/lib/quandl/cassandra_models/multiset/columns_spec.rb
|
308
|
-
- spec/lib/quandl/cassandra_models/multiset/data_spec.rb
|
309
|
-
- spec/lib/quandl/cassandra_models/multiset/transform_spec.rb
|
310
269
|
- spec/lib/quandl/cassandra_spec.rb
|
311
270
|
- spec/spec_helper.rb
|
312
271
|
homepage: http://blake.hilscher.ca/
|
@@ -337,26 +296,7 @@ summary: Quandl cassandra interface.
|
|
337
296
|
test_files:
|
338
297
|
- spec/expectations/string.rb
|
339
298
|
- spec/expectations/time.rb
|
340
|
-
- spec/factories/dataset.rb
|
341
299
|
- spec/lib/quandl/cassandra/base/sanitization_spec.rb
|
342
300
|
- spec/lib/quandl/cassandra/base/scoping_spec.rb
|
343
|
-
- spec/lib/quandl/cassandra_models/column/write/group_data_by_frequency_spec.rb
|
344
|
-
- spec/lib/quandl/cassandra_models/column/write_spec.rb
|
345
|
-
- spec/lib/quandl/cassandra_models/column_attribute_spec.rb
|
346
|
-
- spec/lib/quandl/cassandra_models/column_spec.rb
|
347
|
-
- spec/lib/quandl/cassandra_models/data_spec.rb
|
348
|
-
- spec/lib/quandl/cassandra_models/dataset/collapse_spec.rb
|
349
|
-
- spec/lib/quandl/cassandra_models/dataset/column_spec.rb
|
350
|
-
- spec/lib/quandl/cassandra_models/dataset/persistence_spec.rb
|
351
|
-
- spec/lib/quandl/cassandra_models/dataset/row_spec.rb
|
352
|
-
- spec/lib/quandl/cassandra_models/dataset/transform_spec.rb
|
353
|
-
- spec/lib/quandl/cassandra_models/dataset/trim_spec.rb
|
354
|
-
- spec/lib/quandl/cassandra_models/dataset/update_spec.rb
|
355
|
-
- spec/lib/quandl/cassandra_models/dataset_attribute_spec.rb
|
356
|
-
- spec/lib/quandl/cassandra_models/dataset_spec.rb
|
357
|
-
- spec/lib/quandl/cassandra_models/multiset/collapse_spec.rb
|
358
|
-
- spec/lib/quandl/cassandra_models/multiset/columns_spec.rb
|
359
|
-
- spec/lib/quandl/cassandra_models/multiset/data_spec.rb
|
360
|
-
- spec/lib/quandl/cassandra_models/multiset/transform_spec.rb
|
361
301
|
- spec/lib/quandl/cassandra_spec.rb
|
362
302
|
- spec/spec_helper.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column < Quandl::Cassandra::Base
|
2
|
-
|
3
|
-
table_name :columns
|
4
|
-
|
5
|
-
require_relative 'column/read'
|
6
|
-
require_relative 'column/write'
|
7
|
-
|
8
|
-
class << self
|
9
|
-
|
10
|
-
def read(*args)
|
11
|
-
Quandl::Cassandra::Column::Read.perform(*args)[:data]
|
12
|
-
end
|
13
|
-
|
14
|
-
def write(*args)
|
15
|
-
Quandl::Cassandra::Column::Write.perform(*args)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column::Read < Quandl::Strategy::Strategize
|
2
|
-
|
3
|
-
require_relative 'read/collapse'
|
4
|
-
require_relative 'read/column'
|
5
|
-
require_relative 'read/data'
|
6
|
-
require_relative 'read/offset'
|
7
|
-
require_relative 'read/select_columns'
|
8
|
-
require_relative 'read/row'
|
9
|
-
require_relative 'read/transform'
|
10
|
-
require_relative 'read/type'
|
11
|
-
|
12
|
-
define_attributes :id
|
13
|
-
|
14
|
-
def self.perform(attributes)
|
15
|
-
strategy = Quandl::Strategy.new( attributes ) do |c|
|
16
|
-
c.use Quandl::Cassandra::Column::Read::Type
|
17
|
-
c.use Quandl::Cassandra::Column::Read::Row
|
18
|
-
c.use Quandl::Cassandra::Column::Read::Column
|
19
|
-
c.use Quandl::Cassandra::Column::Read::Collapse
|
20
|
-
c.use Quandl::Cassandra::Column::Read::Transform
|
21
|
-
c.use Quandl::Cassandra::Column::Read::Offset
|
22
|
-
c.use Quandl::Cassandra::Column::Read::SelectColumns
|
23
|
-
c.use Quandl::Cassandra::Column::Read::Data
|
24
|
-
end
|
25
|
-
strategy.perform
|
26
|
-
end
|
27
|
-
|
28
|
-
def count?
|
29
|
-
attributes[:count] == true
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column::Read::Collapse < Quandl::Cassandra::Column::Read
|
2
|
-
|
3
|
-
def perform
|
4
|
-
# assign
|
5
|
-
attributes[:collapse] = collapse
|
6
|
-
attributes[:frequency] = frequency
|
7
|
-
attributes[:column_frequencies] = column_frequencies
|
8
|
-
attributes[:column_collapses] = column_collapses
|
9
|
-
end
|
10
|
-
|
11
|
-
def collapse
|
12
|
-
# collapse is the collapse
|
13
|
-
coll = attributes[:collapse]
|
14
|
-
# when pristine.frequency and collapse are equal, the source data is being requested
|
15
|
-
coll = :source if attributes[:pristine][:frequency] == attributes[:collapse]
|
16
|
-
# when the collapse is daily, source data is being requested
|
17
|
-
coll = :source if coll == :daily || coll.blank?
|
18
|
-
coll
|
19
|
-
end
|
20
|
-
|
21
|
-
def frequency
|
22
|
-
# frequency is the given frequency
|
23
|
-
freq = attributes[:frequency]
|
24
|
-
# grab from database
|
25
|
-
freq = Quandl::Cassandra::DatasetAttribute.where(id: id).pluck(:frequency).first if freq.blank? and id.present?
|
26
|
-
# fallback to collapse
|
27
|
-
freq = attributes[:collapse] if freq.blank?
|
28
|
-
# if freq is source, daily is being requested
|
29
|
-
freq = :daily if freq == :source
|
30
|
-
freq = freq.to_sym
|
31
|
-
freq
|
32
|
-
end
|
33
|
-
|
34
|
-
def column_frequencies
|
35
|
-
# default to passed value
|
36
|
-
freqs = attributes[:column_frequencies]
|
37
|
-
# fallback to collapse value
|
38
|
-
freqs = attributes[:column_ids].collect{ attributes[:frequency] } if freqs.blank?
|
39
|
-
freqs
|
40
|
-
end
|
41
|
-
|
42
|
-
# INPUT column_frequencies: [ :daily, :weekly, :monthly ], collapse: :monthly
|
43
|
-
# OUPUT [ :monthly, :monthly, :source ]
|
44
|
-
|
45
|
-
# INPUT column_frequencies: [ :daily, :weekly, :monthly ], collapse: :source
|
46
|
-
# OUPUT [ :source, :source, :source ]
|
47
|
-
|
48
|
-
# INPUT column_frequencies: [ :daily, :monthly, :annual ], collapse: :monthly
|
49
|
-
# OUPUT [ :monthly, :source, :source ]
|
50
|
-
|
51
|
-
def column_collapses
|
52
|
-
attributes[:column_frequencies].collect do |frequency|
|
53
|
-
# is frequency less than collapse?
|
54
|
-
if Quandl::Operation::Collapse.collapses_greater_than( frequency ).include?( attributes[:collapse] )
|
55
|
-
# this column needs to be collapsed
|
56
|
-
attributes[:collapse]
|
57
|
-
# otherwise frequency is greater than or equal to collapse
|
58
|
-
else
|
59
|
-
# so collapse is not needed
|
60
|
-
:source
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column::Read::Column < Quandl::Cassandra::Column::Read
|
2
|
-
|
3
|
-
def perform
|
4
|
-
# given an id, this is a dataset
|
5
|
-
attributes[:column_ids] ||= Quandl::Cassandra::Dataset.find(id).try(:column_ids) if id.present?
|
6
|
-
attributes[:column_ids] = [] if attributes[:column_ids].blank?
|
7
|
-
# given a column, this is requesting a specific column
|
8
|
-
attributes[:column_ids] = pluck_column_id if column.present? && attributes[:column_ids].present?
|
9
|
-
end
|
10
|
-
|
11
|
-
def pluck_column_id
|
12
|
-
[ attributes[:column_ids][ column ] ]
|
13
|
-
end
|
14
|
-
|
15
|
-
def column
|
16
|
-
attributes[:column].present? ? attributes[:column] - 1 : nil
|
17
|
-
end
|
18
|
-
|
19
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column::Read::Data < Quandl::Cassandra::Column::Read
|
2
|
-
|
3
|
-
def perform
|
4
|
-
attributes[:data] = quandl_data( attributes[:data] ) unless count?
|
5
|
-
end
|
6
|
-
|
7
|
-
def quandl_data(data)
|
8
|
-
# init
|
9
|
-
data = Quandl::Cassandra::Data.new( data )
|
10
|
-
data.dataset_id = attributes[:id]
|
11
|
-
data.column_ids = attributes[:column_ids] unless attributes[:column].present?
|
12
|
-
data.column_frequencies = attributes[:column_frequencies] unless attributes[:column].present?
|
13
|
-
# post process
|
14
|
-
data = collapse(data)
|
15
|
-
data = transform(data)
|
16
|
-
data = trim(data)
|
17
|
-
data = sort( data )
|
18
|
-
data = row( data )
|
19
|
-
data = limit(data)
|
20
|
-
data
|
21
|
-
end
|
22
|
-
|
23
|
-
def trim(data)
|
24
|
-
return data unless attributes[:data_table].present?
|
25
|
-
data = data.sort_order( :asc ) if attributes[:data_table][:trim_start] || attributes[:data_table][:trim_end]
|
26
|
-
data = data.trim_start( attributes[:data_table][:trim_start] ) if attributes[:data_table][:trim_start]
|
27
|
-
data = data.trim_end( attributes[:data_table][:trim_end] ) if attributes[:data_table][:trim_end]
|
28
|
-
data
|
29
|
-
end
|
30
|
-
|
31
|
-
def sort(data)
|
32
|
-
data = data.sort_order( attributes[:order] )
|
33
|
-
end
|
34
|
-
|
35
|
-
def collapse(data)
|
36
|
-
data = data.collapse( attributes[:collapse] ) if attributes[:collapse]
|
37
|
-
data
|
38
|
-
end
|
39
|
-
|
40
|
-
def transform(data)
|
41
|
-
data = data.transform( attributes[:transform] ) if attributes[:transform]
|
42
|
-
data
|
43
|
-
end
|
44
|
-
|
45
|
-
def limit(data)
|
46
|
-
data = data.limit( attributes[:pristine][:limit] ) if attributes[:pristine][:limit]
|
47
|
-
data
|
48
|
-
end
|
49
|
-
|
50
|
-
def row(data)
|
51
|
-
# if a row was requested and the data count is greater than a single row
|
52
|
-
if attributes[:row].present? && data.count > 1
|
53
|
-
# grab the last row
|
54
|
-
data.data_array = [data.data_array[-1]]
|
55
|
-
end
|
56
|
-
data
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|
@@ -1,118 +0,0 @@
|
|
1
|
-
class Quandl::Cassandra::Column::Read::Offset < Quandl::Cassandra::Column::Read
|
2
|
-
|
3
|
-
def perform
|
4
|
-
# apply offset
|
5
|
-
return unless column_ids.present?
|
6
|
-
apply_offset_with_transform
|
7
|
-
apply_offset
|
8
|
-
end
|
9
|
-
|
10
|
-
def apply_offset_with_transform
|
11
|
-
# rdiff_from needs the data from the current to offset
|
12
|
-
if attributes[:row].present? && attributes[:transform] == :rdiff_from
|
13
|
-
# limit the results by trim
|
14
|
-
attributes[:trim_start] = trim_start.occurrences_of_frequency_ago( attributes[:row], collapse_with_frequency ).end_of_frequency(collapse_with_frequency).jd if order == :desc
|
15
|
-
attributes[:trim_end] = trim_end.occurrences_of_frequency_ahead( attributes[:row], collapse_with_frequency ).end_of_frequency(collapse_with_frequency).jd if order == :asc
|
16
|
-
# the query should not limit or offset the data
|
17
|
-
attributes[:limit] = nil
|
18
|
-
attributes[:offset] = nil
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def apply_offset
|
23
|
-
return unless attributes[:offset].present?
|
24
|
-
order == :asc ? apply_offset_asc : apply_offset_desc
|
25
|
-
end
|
26
|
-
|
27
|
-
def apply_offset_asc
|
28
|
-
# calculate ranges
|
29
|
-
offset_start = trim_end.occurrences_of_frequency_ahead( offset, collapse_with_frequency ).start_of_frequency(collapse_with_frequency)
|
30
|
-
offset_end = offset_start.occurrences_of_frequency_ahead( accuracy_with_limit, collapse_with_frequency ).end_of_frequency( collapse_with_frequency ) if limit
|
31
|
-
# set trims
|
32
|
-
attributes[:trim_start] = offset_start.jd
|
33
|
-
attributes[:trim_end] = offset_end.jd if limit
|
34
|
-
end
|
35
|
-
|
36
|
-
def apply_offset_desc
|
37
|
-
# calculate ranges
|
38
|
-
offset_start = trim_start.occurrences_of_frequency_ago( offset, collapse_with_frequency ).end_of_frequency(collapse_with_frequency)
|
39
|
-
offset_end = offset_start.occurrences_of_frequency_ago( accuracy_with_limit, collapse_with_frequency ).start_of_frequency( collapse_with_frequency ) if limit
|
40
|
-
# set trims
|
41
|
-
attributes[:trim_start] = offset_end.jd if limit
|
42
|
-
attributes[:trim_end] = offset_start.jd
|
43
|
-
end
|
44
|
-
|
45
|
-
def trim_start
|
46
|
-
return @trim_start if defined?(@trim_start)
|
47
|
-
times = column_ids.collect do |id|
|
48
|
-
Quandl::Cassandra::Column.limit(1).order("type DESC").where( id: id, type: collapse ).pluck(:time)
|
49
|
-
end
|
50
|
-
max_time = times.flatten.max
|
51
|
-
@trim_start = Date.jd( max_time )
|
52
|
-
end
|
53
|
-
|
54
|
-
def trim_end
|
55
|
-
return @trim_end if defined?(@trim_end)
|
56
|
-
times = column_ids.collect do |id|
|
57
|
-
Quandl::Cassandra::Column.limit(1).order("type ASC").where( id: id, type: collapse ).pluck(:time)
|
58
|
-
end
|
59
|
-
max_time = times.flatten.max
|
60
|
-
@trim_end = Date.jd( max_time )
|
61
|
-
end
|
62
|
-
|
63
|
-
def accuracy_with_limit
|
64
|
-
# # short circuit for now
|
65
|
-
# return 0
|
66
|
-
# revist this at a later date:
|
67
|
-
awl = accuracy
|
68
|
-
awl = awl + limit - 1 if limit && limit > 0
|
69
|
-
awl
|
70
|
-
end
|
71
|
-
|
72
|
-
def accuracy
|
73
|
-
# did the query include an accuracy?
|
74
|
-
accuracy = attributes[:accuracy]
|
75
|
-
# otherwise guess at the accuracy by collapse
|
76
|
-
if accuracy.blank?
|
77
|
-
accuracy = case frequency
|
78
|
-
when :daily then 0
|
79
|
-
when :weekly then 1
|
80
|
-
when :monthly then 1
|
81
|
-
when :quarterly then 1
|
82
|
-
when :annual then 0
|
83
|
-
else
|
84
|
-
3
|
85
|
-
end
|
86
|
-
end
|
87
|
-
accuracy
|
88
|
-
end
|
89
|
-
|
90
|
-
def column_ids
|
91
|
-
attributes[:column_ids]
|
92
|
-
end
|
93
|
-
|
94
|
-
def limit
|
95
|
-
@limit ||= attributes[:limit]
|
96
|
-
end
|
97
|
-
|
98
|
-
def offset
|
99
|
-
attributes[:offset]
|
100
|
-
end
|
101
|
-
|
102
|
-
def order
|
103
|
-
@order ||= attributes[:order] == :asc ? :asc : :desc
|
104
|
-
end
|
105
|
-
|
106
|
-
def collapse_with_frequency
|
107
|
-
collapse == :source ? frequency : collapse
|
108
|
-
end
|
109
|
-
|
110
|
-
def frequency
|
111
|
-
attributes[:frequency]
|
112
|
-
end
|
113
|
-
|
114
|
-
def collapse
|
115
|
-
attributes[:collapse]
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|