Class: Remi::Extractor::Salesforce

Inherits:
Remi::Extractor show all
Includes:
DataSubject::Salesforce
Defined in:
lib/remi/data_subjects/salesforce.rb

Overview

Salesforce extractor

Examples:


class MyJob < Remi::Job
  source :contacts do
    extractor Remi::Extractor::Salesforce.new(
      credentials: { },
      object: :Contact,
      api: :bulk,
      query: 'SELECT Id, Student_ID__c, Name FROM Contact LIMIT 1000'
    )
    parser Remi::Parser::Salesforce.new
  end
end

job = MyJob.new
job.contacts.df
# #<Daru::DataFrame:70134211545860 @name = 7cddb460-6bfc-4737-a72c-60ed2c1a97d5 @size = 1>
#                    Id Student_ID       Name
#          0 0031600002   test1111  Run Logan

Defined Under Namespace

Classes: ExtractError

Instance Attribute Summary collapse

Attributes inherited from Remi::Extractor

#logger

Instance Method Summary collapse

Methods included from DataSubject::Salesforce

#restforce_client

Constructor Details

#initialize(*args, **kargs, &block) ⇒ Salesforce

Returns a new instance of Salesforce.

Parameters:

  • credentials (Hash)

    Used to authenticate with salesforce

  • object (Symbol)

    Salesforce object to extract

  • query (String)

    The SOQL query to execute to extract data

  • api (Symbol)

    Salesforce API to use (only option supported is :bulk)



61
62
63
64
# File 'lib/remi/data_subjects/salesforce.rb', line 61

def initialize(*args, **kargs, &block)
  super
  init_salesforce_extractor(*args, **kargs, &block)
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



66
67
68
# File 'lib/remi/data_subjects/salesforce.rb', line 66

def data
  @data
end

Instance Method Details

#extractObject

Returns self after querying salesforce data.

Returns:

  • (Object)

    self after querying salesforce data



69
70
71
72
73
74
# File 'lib/remi/data_subjects/salesforce.rb', line 69

def extract
  logger.info "Executing salesforce query #{@query}"
  @data = sf_bulk.query(@sfo, @query, 10000)
  check_for_errors(@data)
  self
end

#sf_bulkSalesforceBulkApi::Api

Returns The bulk API salesforce client.

Returns:

  • (SalesforceBulkApi::Api)

    The bulk API salesforce client



77
78
79
# File 'lib/remi/data_subjects/salesforce.rb', line 77

def sf_bulk
  SalesforceBulkApi::Api.new(restforce_client).tap { |o| o.connection.set_status_throttle(5) }
end