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

Azure Data Factory从Dynamics 365复制数据:GUID转显示值求助

在Azure Data Factory中获取Dynamics 365实体的显示值而非GUID

针对你遇到的问题,核心是Dynamics 365的关联(Lookup)字段默认仅返回关联实体的GUID,要获取对应的显示名称,可通过以下几种方式解决:

方法1:用FetchXML在数据源端直接查询显示值

这是最直接的方式,通过FetchXML关联目标实体,一次性获取GUID和对应的显示值,无需后续转换。

比如你要从account实体获取主联系人的姓名(而非仅主联系人的GUID),可以用如下FetchXML:

<fetch version="1.0" output-format="xml-platform" mapping="logical" distinct="false">
  <entity name="account">
    <!-- 账户自身字段 -->
    <attribute name="name" />
    <attribute name="primarycontactid" />
    <!-- 关联contact实体,获取主联系人姓名 -->
    <link-entity name="contact" from="contactid" to="primarycontactid" alias="primary_contact">
      <attribute name="fullname" />
    </link-entity>
  </entity>
</fetch>

在ADF的Dynamics 365数据源配置中,选择**"FetchXML查询"**模式,将上述XML粘贴进去。执行复制活动后,结果集里会包含primary_contact.fullname字段,直接映射到SQL数据库即可。

方法2:通过ADF数据流关联获取显示值

如果你想用数据流处理,需要注意以下几点(解决你之前遇到的问题):

  • 首先在数据流的Dynamics源配置中,勾选**"Include lookup columns"**选项,系统会自动带出关联字段的显示值(字段名格式为[lookup字段名]_name,比如primarycontactid_name),无需手动转换。
  • 如果需要自定义关联(比如获取关联实体的其他非默认显示字段),可添加Lookup转换:
    1. 数据流中添加Dynamics源,选择主实体(如account);
    2. 添加Lookup转换,数据源选择关联实体(如contact);
    3. 设置关联条件:源的primarycontactid == Lookup的contactid;
    4. 在Lookup的输出选项中,选择需要的显示字段(如fullname);
    5. 将Lookup的输出字段合并到主数据流,再映射到SQL目标表。

注意:你之前用toString()函数只是将GUID转换为字符串格式,并非获取显示值,这是两个不同的概念——显示值是关联实体的属性(如姓名、账户名),需要通过关联查询才能拿到。

方法3:复制活动映射中直接使用自动带出的显示值

如果使用复制活动而非数据流,在映射标签页中,检查是否有系统自动生成的xxx_name字段(比如primarycontactid_name),直接将该字段映射到SQL数据库的对应列即可。如果没有出现,说明需要先通过FetchXML查询带出这些字段。

内容的提问来源于stack exchange,提问作者J-San

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 15:12:49