【问题标题】:Can I filter out certain rows/records when retrieving data from Salesforce using the RForcecom function "rforcecom.retrieve"?使用 RForcecom 函数“rforcecom.retrieve”从 Salesforce 检索数据时,我可以过滤掉某些行/记录吗?
【发布时间】:2019-09-17 08:11:18
【问题描述】:

感谢您帮助我解决我的第一个 Stack Overflow 问题。我正在尝试从名为“应用问卷”的对象中的多个字段中检索所有数据;但是,我不想检索任何名称为“Training Site”的记录。

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

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"),]

不过,我想知道这里是否有更优雅、更精简的解决方案。我可以在检索的同时进行过滤吗?还是有更好的方法在这里过滤? (我已经简化了这里的代码——我实际上拉入了大约 10 个字段并过滤了大约 5 到 6 个条件,仅在这个示例中)。

谢谢。

【问题讨论】:

  • 谢谢!我必须为显示器付费,所以这对我的用例不利,但我将使用他们博客留下的一些提示 (soqlQuery) 重新开始搜索。
  • 对于任何好奇的人,答案是使用 SF 的 SQL 版本,称为 SOQL:ped_objects = rforcecom.getObjectList(session) aqb_object = rforcecom.getObjectDescription(session, "InspectTHIS__AppliedQuestionnaireBundle2__c") aqb_fields = "SELECT Site, Site_Name, Total_Score FROM AppliedQuestionnaireBundle2 WHERE Site_Name__c != 'GENERIC SITE' AND Site_Name__c != 'TRAINING PARK SITE' AND InspectTHIS__Status__c = 'Completed' quarterly_site_scores = rforcecom.query(session, aqb_fields)

标签: r salesforce filtering


【解决方案1】:

使用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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 2016-08-02
    相关资源
    最近更新 更多