You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过SOQL高效获取SalesForce非空实体以推送至Azure Data Lake?

优化SalesForce非空实体获取的方案

1. 直接利用EntityDefinition的RecordCount字段过滤

SalesForce的EntityDefinition对象自带RecordCount字段,可直接获取每个实体的缓存记录数,无需逐个执行COUNT查询。只需一次Lookup活动就能筛选出非空实体:

SELECT QualifiedApiName AS TableName FROM EntityDefinition WHERE RecordCount > 0 AND IsQueryable = true
  • 核心优势:彻底消除N+1次查询的性能开销,大幅减少API调用次数和整体延迟。
  • 注意事项:RecordCount是SalesForce每日定时更新的缓存值,若需要实时精确的记录数则不适用;添加IsQueryable = true可过滤掉无法查询的系统实体。

2. 批量并行查询COUNT(需实时数据场景)

如果必须获取实时记录数,避免逐个执行COUNT,改用批量并行方式处理:

  • 将实体列表拆分为多个批次,通过SalesForce Bulk API异步执行批量COUNT查询;
  • 在Azure Data Factory的ForEach活动中开启并行执行模式(设置合理并行度),同时处理多个实体的COUNT请求,缩短总耗时。

3. 结合Change Data Capture(CDC)实现增量同步

若为定期同步场景而非一次性全量迁移,可开启SalesForce的CDC功能:

  • 只同步有数据变更的实体,无需每次遍历所有实体检查是否非空,长期来看是性能最优的方案。

4. 预缓存非空实体列表

若实体结构不频繁变更,可定期(如每日一次)将非空实体列表缓存到Azure Storage或SQL数据库中,后续同步时直接读取缓存列表,避免重复查询SalesForce。


内容的提问来源于stack exchange,提问作者Roman Kuzmenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 00:21:26