0

我们在 Salesforce 上有表格,我们希望使用 Microsoft Common Data Service 将其提供给其他应用程序。此外,我们希望 CDS 或多或少保持最新状态,即使拥有五分钟前创建或更新的数据。

但是,其中一些表有数十万甚至数百万条记录。因此,刷新所有数据是低效且不切实际的。

理论上,CDS 查询数据时,应该能够知道其最近的数据来自什么时间,并将这些数据包含在新数据的查询中。

但我不清楚如何使在刷新操作中使用的那部分查询。

这可能吗?我需要做什么?

4

2 回答 2

0

您如何选择要检索的数据?如果您可以选择使用 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
于 2020-11-12T19:33:45.120 回答
0

有一些选项,但我不知道您的连接器中实现了什么(如果有的话)。阅读一下,也许你会决定做一些定制的事情。如果有帮助的话,Azure 数据工厂 2 中还有一个不错的 SF 连接器。

几乎每个 Salesforce 表都包含CreatedDate,LastModifiedDateSystemModstamp列,但我们没有对底层数据库的原始访问权限。没有 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 配置或代码;以及其他方式 - 订阅应用程序可以指定它感兴趣的查询,并在查询结果发生变化时收到通知) . 但是,如果您只想要一切 - 搜索“更改数据捕获”。可能是不错的近实时解决方案

于 2020-11-12T21:29:52.013 回答