Beatbox:如何从SFDC中提取数据时添加WHERE子句?

时间:2015-06-16 22:59:20

标签: python pandas salesforce beatbox

在Pandas中,我正在创建一个合并来自两个不同Beatbox查询的数据的数据框。首先,我提取所有的商机数据,然后我提取所有帐户数据,然后合并。

但是,我想通过仅提取存在于oppty [' AccountID']列中的帐户[' ID']的数据来优化此流程,而不是拉动整个合并前的帐户数据我该怎么做呢?

当前状态:

query_result = svc.query("SELECT ID, AccountID FROM Opportunity")
records = query_result['records']
oppty = pd.DataFrame(records)

query_result = svc.query("SELECT ID, Website FROM Account")
records = query_result['records']
account = pd.DataFrame(records)

mylist = pd.merge(oppty, account, left_on='AccountID', right_on='ID', how='left')

2 个答案:

答案 0 :(得分:2)

您可以使用SOQL半联接将帐户查询限制为仅限有机会的帐户,例如

svc.query("SELECT ID,Website FROM Account where ID in (SELECT accountId FROM Opportunity)")

答案 1 :(得分:-1)

由于我无法访问您的svc对象,因此这只是一个建议。但是试试

query_result = svc.query("""SELECT ID, AccountID FROM Opportunity
                            JOIN Account on Account.ID = Opportunity.AccountID""")

作为单个查询。

这应该使用左内连接提取数据,这会在两个表中省略不匹配的行。它还可以通过让数据库服务器完成工作来减少数据库流量(以及网络带宽),从而减少桌面客户端系统的计算负担。