使用RForcecom函数" rforcecom.retrieve"?从Salesforce检索数据时,是否可以过滤掉某些行/记录?

时间:2018-05-24 23:17:03

标签: r salesforce filtering

感谢您帮助我完成第一个Stack Overflow问题。我试图从一个名为" Applied Questionnaire&#34 ;;的对象中的几个字段中检索所有数据。但是,我不想检索任何名称为"培训网站"。

的记录

目前,这是我的代码,有效:

quarterly_site_scores = rforcecom.retrieve(session, "AppliedQuestionnaire__c",
c("Site__c", "Site_Name__c", "Total_Score__c")) 
%>% rename(site_id = Site__c, site_name = Site_Name__c)

quarterly_site_scores = quarterly_site_scores[!(quarterly_site_scores$site_name == "TRAINING PARK SITE" |
quarterly_site_scores$status != "Completed"),]

但是,我想知道这里是否有更优雅,更精简的解决方案。我可以在检索的同时进行过滤吗?或者有更好的方法来过滤这里? (我已经在这里简化了代码 - 我实际上已经在大约十个字段中进行了过滤并且过滤了大约五六个标准,就在这个例子中)。

谢谢。

1 个答案:

答案 0 :(得分:0)

使用salesforcer软件包添加OP发现的内容作为答案,该软件包将SOQL结果集作为tbl_df返回。

library(salesforcer)
library(tidyverse)
sf_auth(username, password, security_token)

# list all object names in a Salesforce org
ped_objects <- sf_list_objects() %>% .$sobjects %>% map_chr(~pluck(., "name"))

# list all the fields on a particular object
fields <- sf_describe_object_fields('AppliedQuestionnaireBundle2__c')

# write a query to retrieve certain records from that object
site_scores_soql <- "SELECT Site__c, 
                            Site_Name__c, 
                            Total_Score__c 
                     FROM AppliedQuestionnaireBundle2__c 
                     WHERE Site_Name__c != 'GENERIC SITE' 
                       AND Site_Name__c != 'TRAINING PARK SITE' 
                       AND Status__c = 'Completed'"
# run the query
quarterly_site_scores <- sf_query(site_scores_soql)
quarterly_site_scores
#> # A tibble: 3 x 3
#>   Site__c Site_Name__c Total_Score__c
#>   <chr>   <chr>                 <dbl>
#> 1 A       Site Name1               78
#> 2 B       Site Name2               52
#> 3 C       Site Name3               83