Salesforce API totalSize 并不总是与返回的行数匹配

Salesforce API totalSize does not always match to the number of rows returned

我正在从 salesforce API 下载数据。 table 很大,我使用 query_more 来获得完整结果。问题是结果中返回的 totalSize 并不总是与返回的实际记录数匹配。可以少几条记录,有时完全匹配。

totalSize 只是估计值还是应该与返回的记录数完全匹配?请帮助澄清这个问题。返回查询结果的方法代码:

sf_conn = self.get_conn()
result = sf_conn.query(self.soql)

totalSize = result['totalSize'] # This does not always match !!!
logging.info('Total result set size: %s', totalSize )

while True:
    yield result
    if result['done']:
        break
    result = sf_conn.query_more(result['nextRecordsUrl'], identifier_is_url=True)

终于想通了。 我希望这个答案对那些还不知道如何在 Salesforce 中删除记录的人有用。

当记录在 Salesforce 中被删除时,它被放入回收站。这样的记录有 isDeleted=true。 15 天后这些记录将完全消失。

sf_conn.querysf_conn.query_more方法有参数include_deleted,默认False.

默认情况下,这些方法不会 return 记录具有 isDeleted=True。如果作业 运行 时间很长,一些记录在执行过程中会被删除并且不会被提取。如果您进行数据质量检查以检查处理的记录数是否等于从 API 获取的记录数,最好不要依赖 TotalSize 字段并计算实际获取的记录数。另请参阅有关 how records get deleted in Salesforce.

的文档