3

我在 Azure 数据工厂中使用 Dynamics 连接器。

TLDR

此连接器是否支持加载需要传入父记录键的子记录?例如,如果我想创建 acontact并将其附加到 parent account,我会插入一条带有 null contactid、有效parentcustomeridGUID 并设置parentcustomeridtype为 1(或 2)的记录,但出现错误。

很长的故事

我成功连接到 Dynamics 365 并将数据(例如,lead表)提取到 SQL Server 表中

为了测试我是否可以通过其他方式传输数据,我只是将数据从lead表中加载回leadDynamics 中的实体。

我收到此错误:

失败发生在“Sink”端。ErrorCode=DynamicsMissingTargetForMultiTargetLookupField,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=,Source=,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=找不到多目标查找字段的目标列:'所有者'。

作为测试,我ownerid从源列列表中删除它加载正常。

这显然是一个外键值。

它向我提出了两个问题:

  1. 特别是关于错误消息:如果我知道它需要使用哪个查找,我如何指定它应该验证哪个查找表?ADF 连接器中没有允许我执行此操作的设置。

  2. 这显然是一个外键值。如果我只有该行的名称(或业务键),我如何轻松查找外键值?

这通常是如何通过其他 API 完成的,即 Web API?

是否有 XRMToolbox 插件可以帮助澄清?

我还阅读了一些帖子,暗示您可以在 XML 文档中发送预先连接的数据,所以也许这也会有所帮助。

编辑 1

我意识到lead.ownertypeid我的源数据集中的字段是NULL(这就是导出的)。如果我在各种 Xrmtoolbox 工具中浏览它,它也是 NULL。我尝试将其硬编码systemuser(这实际上是owner表中与实际所有者记录相对应的内容),但我仍然遇到相同的错误。

systemuser我还注意到表中有一条具有相同 PK 值的记录

所以相同的记录在两个表中,但是我如何告诉动态连接器使用哪一个呢?为什么它甚至在乎?

编辑 2

我收到了类似的消息msauto_testdrivefor customerid

我排除了所有记录customerid=null,并得到了同样的错误。

编辑 2

此链接似乎表明我需要设置customeridtype为 1(帐户)或 2(联系人)。我这样做了,但仍然遇到同样的错误。

我也相信我和这个人有同样的问题

也许 ADF 连接器也存在同样的问题。

4

2 回答 2

5

在撰写本文时,@Arun Vinoth 是 100% 正确的。然而不久之后有一个文档更新(作为对我提出的 GitHub 的回应)解释了如何做到这一点。

我将在这里记录我是如何做到的。

要针对父帐户填充联系人,您需要父帐户 GUID。然后你准备一个这样的数据集:

SELECT 
-- a NULL contactid means this is a new record
CAST(NULL as uniqueidentifier) as contactid,
-- the GUID of the parent account
CAST('A7070AE2-D7A6-EA11-A812-000D3A79983B' as uniqueidentifier) parentcustomerid,
-- customer id is an account
'account' [parentcustomerid@EntityReference],
'Joe' as firstname,
'Bloggs' lastname,

现在您可以在 ADF 中应用正常的自动映射方法。

现在您可以从此数据集中进行选择并加载到contact. 您可以应用通常的自动映射方法,即:创建没有模式的数据集。在不映射列的情况下执行复制活动

于 2020-06-15T10:15:39.700 回答
2

这是 ADF 对客户和所有者等 CDS 多态查找的限制。支持这个 ADF 想法

解决方法是使用两个临时源查找字段(所有者团队和用户,如果是所有者,帐户和联系人,如果是客户)并在 MS Flow 中使用并行分支来解决此问题。阅读更多,您也可以下载 Flow 示例使用。

  • 首先,在您希望将客户查找数据导入其中的实体上创建两个临时查找字段,分别到 Account 和 Contact 实体
  • 在您的 ADF 管道流中,您需要将您的客户和联系人字段的 GUID 值映射到上面创建的相应查找字段。执行此操作的最简单方法是在源数据集中有两个单独的列 - 一个包含要映射的帐户 GUID,另一个包含联系人。
  • 最后,您可以组合一个 Microsoft Flow,然后执行从临时字段到客户查找字段的适当映射。首先,定义创建受影响实体记录(在本例中为联系人)的触发点,并添加一些并行分支以检查这两个临时查找字段中的任何一个中的值

在此处输入图像描述

  • 然后,如果满足其中任何一个条件,则设置更新记录任务以执行单个字段更新,如下所示,如果 ADF 帐户查找字段中包含数据
于 2020-06-09T18:12:53.390 回答