【问题标题】:With Microsoft Common Data Service, is incremental refresh possible?使用 Microsoft Common Data Service,是否可以进行增量刷新?
【发布时间】:2020-11-13 05:29:52
【问题描述】:

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

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

理论上,CDS 查询数据时,应该能够知道其最新数据的来源,并将该数据包含在新数据的查询中。

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

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

【问题讨论】:

  • 我怀疑答案在于 Power BI,但我还没有正确的权限/许可证来测试它...

标签: salesforce refresh common-data-service


【解决方案1】:

您如何选择要检索的数据?如果您可以选择使用 SOQL 查询,您可以使用字段 CreatedDateLastModifiedDate 作为查询的一部分。例如:

SELECT Id, Name
FROM Account
WHERE CreatedDate > 2020-10-25T23:01:01Z

SELECT Id, Name
FROM Account
WHERE LastModifiedDate > 2020-10-25T23:01:01Z

【讨论】:

  • 我只是在使用 Common Data Service 的本机刷新。据我所知,那里没有编辑 SOQL 的选项。到那时,Salesforce 已经被抽象化了——我可以从任何事情中恢复过来。
  • 你在使用这个连接器吗? docs.microsoft.com/en-us/connectors/salesforce
  • 是的,可能。我刚刚使用 PowerApps 中的向导从 Salesforce 数据创建表,它顺便创建了连接器。 (当我之前尝试直接创建连接器时,导入对话框似乎没有使用这些信息。)
  • 从该文档中,我看到有一种方法可以检索记录(操作 ID:GetItems),它允许您传递 Filter Query 参数。您是否看到使用该操作检索记录的选项?
  • 不必无礼,我正在努力帮助您解决您的问题。我不知道您对这个应用程序有多少经验,或者是否存在过滤选项但它隐藏在某个菜单中。
【解决方案2】:

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

几乎每个 Salesforce 表都包含 CreatedDateLastModifiedDateSystemModstamp 列,但我们没有对底层数据库的原始访问权限。没有 ODBC 驱动程序(或者如果有 - 它在撒谎,假装 SF 对象是“链接表”并将 API 实现魔法隐藏在存储过程中)。我没有附属关系,从未亲自使用过它,但听说过关于 DBAmp 的好消息。虽然已经有几年了,但可能会出现替代品。去试试那个 ADF 连接器吧。

我的意思是你甚至可以改写一下,四处寻找可以进行增量备份并与 SQL Server 一起使用的备份工具?用 1 块石头杀死 2 只鸟。

所以... 另一个答案为您提供了查询路线,如果它有 100 多个表,这还可以,但有点不切实际。

Data Replication API 可以获取最近更新/删除记录的 ID(主键)。 SOAP API 有getUpdated 调用,类似于REST API。不过,您仍然必须按对象调用它。而且你只知道这些被修改了,仍然需要查询所有列(有“retrieve”调用类似于SELECT *)

也许你需要改变方向。 SF 可以在数据更改时引发事件,订阅应用程序有 1 到 3 天的时间来使用它们。它使用 cometd 协议,在 .NET 世界中很可能有这样的应用程序。事件类型很少(可以引发自定义事件,只有在满足某些条件时才会引发,来自 SF 配置或代码;以及其他方式 - 订阅应用程序可以指定它感兴趣的查询,并在查询结果发生变化时收到通知) .但如果你只想要一切 - 搜索“Change Data Capture”。可能是不错的近实时解决方案

【讨论】:

  • 我正在寻找一种低代码解决方案,将数据从 Salesforce 中提供到 Microsoft CDS 中,以节省我们创建和维护服务的工作,该服务基本上可以做同样的事情。我们在 CDS 和 Salesforce 之间的连接器就是 Microsoft 开箱即用的任何东西。如果我们想要增量刷新,您是否建议我们需要创建一个自定义连接器?
  • 如果您看不到该 Microsoft 的组件并且它不能满足您的需求 - 是的,请探索 ADF、cometd 客户端或自己编写代码。我不知道 MS 在那里做了什么。没有对 SF 数据库的原始访问,他们必须实现一些 SF 公开的 API。如果他们快速而肮脏地完成它,只需在所有行上选择 *,没有日期过滤器,没有增量选项,那么它就是这样。也可以考虑在 salesforce.stackexchange.com 上询问,可能会有更聪明的解决方案。我刚刚使用了 ADF。
  • 我们应该关心底层数据库以便进行增量刷新吗? CreatedDateLastModifiedDateSystemModStamp 不应该为连接器提供足够的信息吗?有理由相信标准连接器不能与这些一起使用吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-24
  • 1970-01-01
  • 2021-02-24
  • 2021-04-25
相关资源
最近更新 更多