Quandl::Client
Purpose
The purpose of this gem is to interact with the quandl api
Installation
gem 'quandl_client'
Configuration
require 'quandl/client'
Quandl::Client.use 'http://localhost:3000/api/'
Quandl::Client.token = ENV['QUANDL_AUTH_TOKEN']
Usage
Quandl::Client::Dataset
Search
scope :rows, :exclude_data, :exclude_headers, :trim_start, :trim_end, :transform, :collapse
datasets = Quandl::Client::Dataset.query('cobalt').source_code('ofdp').all
=> [#<Quandl::Client::Dataset(datasets) source_code="OFDP" code="COBALT_51">, ...]
Show
attributes :data, :source_code, :code, :name, :urlize_name, :description, :updated_at, :frequency, :from_date, :to_date, :column_names, :private, :type
d = Quandl::Client::Dataset.find('OFDP/COBALT_51')
d.full_code
d.data
d = Quandl::Client::Dataset.collapse('weekly').trim_start("2012-03-31").trim_end("2013-06-30").find('OFDP/COBALT_51')
d.data
d = Quandl::Client::Dataset.exclude_data('true').find('OFDP/COBALT_51')
d.data
Create
attributes = {
code: "TEST_#{Time.now.to_i}",
source_code: 'OFDP',
name: "Test Upload #{Time.now.to_i}",
frequency: 'daily',
locations:
[
{
type: 'http',
url: 'http://test.com',
post_data: '[magic]',
cookie_url: 'http://cookies.com'
}
]
}
d = Dataset.create( attributes )
Update
d = Dataset.find( d.full_code )
d.name = 'New Name'
d.data = Quandl::Fabricate::Data.rand.to_csv
d.save
d = Dataset.collapse(:weekly).find( d.full_code )
d.data
=> [[...],...]
Delete
Dataset.destroy_existing('SOME_SOURCE/SOME_CODE')
Dataset.destroy_existing(52352)
Dataset.find('SOME_SOURCE/SOME_CODE')
=> nil
Delete Data
d = Dataset.find('SOME_SOURCE/SOME_CODE')
d.delete_data
d.data
=> nil
d.delete_rows( '1998-02-01','1998-03-03' )
d.data
=> # given rows are deleted
Error Handling
d = Dataset.create(code: 'TEST', source_code: 'OFDP', locations: [{ type: 'http', url: 'test.com' }] )
d.error_messages
=> {:name=>["can't be blank"]}
d = Dataset.create(name: 'asdfs', code: 'TEST', source_code: 'OFDP', locations: [{ type: 'http', url: 'test.com' }] )
d.error_messages
=> {"code"=>["has already been taken"], "frequency"=>["is not included in the list"]}
Quandl::Client::Source
Search
sources = Quandl::Client::Source.query('can').all
=> [#<Quandl::Client::Source(sources/413) code="STATSCAN5" datasets_count=1>...]
Show
s = Quandl::Client::Source.find('STATSCAN5')
Create
s = Source.create( code: 'test' )
s.valid?
s.error_messages
=> {:code=>["is invalid"], :host=>["can't be blank"], :name=>["can't be blank"]}
s = Source.create(code: %Q{TEST_#{Time.now.to_i}}, name: 'asdf', host: "http://asdf#{Time.now}.com" )
s.saved?
=> true
Update
s = Source.find(s.code)
s.name = "Updated Name #{Time.now.to_i}"
s.code = "DATA_#{Time.now.to_i}"
s.save
Delete
Source.destroy_existing('SOMESOURCE')
Source.destroy_existing(52352)
Quandl::Client::Sheet
Search
sheets = Quandl::Client::Sheet.query('canada').all
=> [[#<Quandl::Client::Sheet(sheets) title="La Canada Flintridge>,...]
Show
sheet = Quandl::Client::Sheet.find('housing/hood')
Create
s = Quandl::Client::Sheet.create( title: 'ocean' )
s = Quandl::Client::Sheet.create( full_url_title: 'ocean/river', title: 'River' )
s = Quandl::Client::Sheet.create( full_url_title: 'ocean/river/lake', title: 'Lake!' )
Sheet.find('ocean/river/lake').title
=> 'Lake!'
Sheet.find('ocean').children.first.title
=> River
Update
s = Quandl::Client::Sheet.find('ocean/river')
s.title = "River #{Time.now.to_i}"
s.save
Delete
Quandl::Client::Sheet.destroy_existing('ocean/river/lake')
Quandl::Client::Sheet.destroy_existing(15252)
Authentication
require 'quandl/client'
Quandl::Client.use 'http://localhost:3000/api/'
Quandl::Client.token = 'xyz'
s = Quandl::Client::Sheet.find_by_url_title('testing')
s.title = 'more testing'
s.save
=> true