如何使用 Python 提高从 Salesforce 查询数据的性能?

How to improve performance of querying data from Salesforce with Python?

是否有任何解决方案可以让我们从 Python 中检索每个数据块超过 2000 条记录的 Salesforce 数据?我使用 REST API 检索数据并检查 nextRecordsUrl 以获取下一个块。但是如果是百万条记录,这个解法就需要时间了。我试图找到一个 Salesforce 参数来增加每个块的记录数(>2000 条记录),但还没有找到。

另一个想法是,如果我们知道有多少个 nextRecordsUrl,我们就可以在 Python 中使用多线程来检索数据。但似乎我们需要提交每个 nextRecordsUrl 才能获取下一个。

如果您有其他想法,请提出。目前,我无法使用 SQL 中的某些过滤条件来限制数据。

您可以考虑使用批量 API 查询,它会让您 return 10K 块中的数据。但它伴随着一些思维转变。您的正常 API 是同步的(给我下一个块,等待,给我下一个块,等待)。使用 Bulk API 提交作业时,您会不时地问“完成了吗”。

甚至还有一个名为 "PK chunking" 的功能(按主键拆分结果)

考虑通过 trailhead:https://trailhead.salesforce.com/content/learn/modules/large-data-volumes

也许可以使用 Salesforce 的数据加载器。以正常方式查询您的内容并测量时间,然后选择批量 api 选项。应该让您了解瓶颈是什么以及大重写是否会有所收获。

https://developer.salesforce.com/docs/atlas.en-us.230.0.api_asynch.meta/api_asynch/asynch_api_bulk_query_intro.htm