我们在 Salesforce 上有表格,我们希望使用 Microsoft Common Data Service 将其提供给其他应用程序。此外,我们希望 CDS 或多或少保持最新状态,即使拥有五分钟前创建或更新的数据。
但是,其中一些表有数十万甚至数百万条记录。因此,刷新所有数据是低效且不切实际的。
理论上,CDS 查询数据时,应该能够知道其最近的数据来自什么时间,并将这些数据包含在新数据的查询中。
但我不清楚如何使在刷新操作中使用的那部分查询。
这可能吗?我需要做什么?
我们在 Salesforce 上有表格,我们希望使用 Microsoft Common Data Service 将其提供给其他应用程序。此外,我们希望 CDS 或多或少保持最新状态,即使拥有五分钟前创建或更新的数据。
但是,其中一些表有数十万甚至数百万条记录。因此,刷新所有数据是低效且不切实际的。
理论上,CDS 查询数据时,应该能够知道其最近的数据来自什么时间,并将这些数据包含在新数据的查询中。
但我不清楚如何使在刷新操作中使用的那部分查询。
这可能吗?我需要做什么?
您如何选择要检索的数据?如果您可以选择使用 SOQL 查询,则可以使用字段CreatedDate
并将LastModifiedDate
其作为查询的一部分。例如:
SELECT Id, Name
FROM Account
WHERE CreatedDate > 2020-10-25T23:01:01Z
或者
SELECT Id, Name
FROM Account
WHERE LastModifiedDate > 2020-10-25T23:01:01Z
有一些选项,但我不知道您的连接器中实现了什么(如果有的话)。阅读一下,也许你会决定做一些定制的事情。如果有帮助的话,Azure 数据工厂 2 中还有一个不错的 SF 连接器。
几乎每个 Salesforce 表都包含CreatedDate
,LastModifiedDate
和SystemModstamp
列,但我们没有对底层数据库的原始访问权限。没有 ODBC 驱动程序(或者如果有 - 它在撒谎,假装 SF 对象是“链接表”并将 API 实现魔法隐藏在存储过程中)。我不隶属于,从未亲自使用过它,但听说过有关DBAmp的好东西。虽然已经有几年了,但可能会出现替代品。去试试那个 ADF 连接器。
我的意思是你甚至可以改写一下,寻找可以进行增量备份并与 SQL Server 一起使用的备份工具?用 1 块石头杀死 2 只鸟。
所以......另一个答案为您提供了查询路线,如果它有 100 多个表,这还可以,但有点不切实际。
有Data Replication API可以获取最近更新/删除记录的 ID(主键)。SOAP API 有getUpdated
调用,类似于REST API。不过,您仍然必须按对象调用它。而且您只知道这些已被修改,仍然需要查询所有列(有“检索”调用类似于 SELECT *)
也许你需要改变方向。SF 可以在数据更改时引发事件,订阅应用程序有 1 到 3 天的时间来使用它们。它使用 cometd 协议,在 .NET 世界中很可能有这样的应用程序。事件类型很少(可以引发自定义事件,只有在满足某些条件时才会引发,来自 SF 配置或代码;以及其他方式 - 订阅应用程序可以指定它感兴趣的查询,并在查询结果发生变化时收到通知) . 但是,如果您只想要一切 - 搜索“更改数据捕获”。可能是不错的近实时解决方案