logstash-plugins / logstash-input-salesforce

Logstash input for pulling objects from salesforce
Apache License 2.0
16 stars 29 forks source link

Get several SFDC_OBJECT at one time. #9

Open acro-tanaka opened 7 years ago

acro-tanaka commented 7 years ago

Now we can get only one kind of SFDC_OBJECT using this plugin at one time.

private def get_query() query = ["SELECT",@sfdc_fields.join(','), "FROM",@sfdc_object_name] query << ["WHERE",@sfdc_filters] unless @sfdc_filters.empty? query << "ORDER BY LastModifiedDate DESC" if @sfdc_fields.include?('LastModifiedDate') query_str = query.flatten.join(" ") @logger.debug? && @logger.debug("SFDC Query", :query => query_str) return query_str end

https://github.com/logstash-plugins/logstash-input-salesforce/blob/master/lib/logstash/inputs/salesforce.rb#L139

Dataloader (salesforce's tool) can get some data from some SFDC_OBJECT those data are joined and output. Likewise, want to get several data from some SFDC_OBJECT at one time using salesforce plugin.

■FYR SOQL query for extraction of Dataloader

"Select LastName, FirstName, Email, Phone, Owner.UserName, Owner.ID, Owner.Name From Lead"

mkreth commented 2 years ago

This would be very useful - e.g. when reading the AsyncApexJob object, it has a field ApexClassId which is a relationship field referencing an ApexClass. The ApexClassId only gives us the technical Id of the class. To get to the name of the Apex class we need to navigate across the relationship and query the ApexClass.Name field. From the AsyncApexJob object this would mean a cross-object join in the projection: SELECT Id, ApexClass.Name FROM AsyncApexJob.

I tested that this is already supported by the Restforce query method. Only the setup of the query and processing of the query results in the logstash-input-salesforce plugin needs to be updated.