使用ADF从外部数据源(例如Sql Server)往D365推数时,实体间的Lookup一定是要做的,本篇以我项目中的设备为例,设备表中有产品的lookup字段
设备表结构如下
msdyn_customerasset | 表名 |
ID | 设备表guid |
SerialNumber | 设备序列号 |
ProductCode | 设备对应的产品编码 |
msdyn_product | 产品id(查找字段) |
产品表结构如下
product | 表名 |
ProductId | 产品guid |
sap_number | 产品编码 |
Pipeline中的关键映射如下,设备表中的产品code,首先同步copy设备表(我这里假设前提product表已同步过,如果没有同步则可以在CopDevice后再加一个同步产品的Activity)
第二步即在第二个Activity中通过fetchxml查询设备表,并通过link-entity product表把productid查出来
贴出示例fetchxml, 通过product中的vg_sap_number和msdyn_customerasset中的vg_productcode, 查出了productid
<fetch>
<entity name="msdyn_customerasset" >
<attribute name="msdyn_name" />
<attribute name="vg_productcode" />
<filter>
<condition attribute="vg_productcode" operator="not-null" />
<condition attribute="msdyn_product" operator="null" />
</filter>
<link-entity name="product" from="vg_sap_number" to="vg_productcode" link-type="inner" alias="pro" >
<attribute name="productid" alias="productid" />
</link-entity>
</entity>
</fetch>
最终将procutid更新到设备表的msdyn_product即可。