CPI-过滤有效负载中的重复行

2020-08-24 11:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在构建Cloudlow Integration(CPI)中的iflow,以查询SuccessFactors OData API的信息。 要求包括使位置"城市"与"薪酬等级"相关联。 但是,我们的组织机构不是这样设置的-薪资等级并不是一个城市唯一的,因此薪资等级可以位于多个城市,每个城市可以有多个薪资等级。

要解决此问题,我首先要查询员工,包括他们的所在地城市和薪资等级。 这样,我就获得了一组与薪级相关的城市的数据。 我的问题是,这导致重复,因为薪水相同的员工经常在同一城市工作。

我正在寻找解决此问题的方法:如何过滤出有效载荷中的重复行。

我正在将数据映射到一个级别,以便可以从XML转换为CSV。 我可以从该映射中删除userID,以便没有键,并且重复的行将是真正的重复项;或者,我可以包含userID,以使userID是每个记录的键,而其余记录可以是 重复的。 如果我使用第二种方法并包含了userID,则在删除重复项之后必须使用另一种映射,以便不映射userID。 随附XML结构,显示了两种情况(PFTarget_Without_UserID.xsd和PFTarget_With_UserID.xsd)。

我附加了2个样本有效负载-一个带有当前输出,一个带有所需的输出。 请注意,第一条记录(用户标识123)与第二条记录(用户标识456)具有相同的信息。 在所需的输出中,第二条记录(用户ID 456)已从有效负载中删除。 这就是我想要完成的。 如果我走了不包括userId的路线,则第一条记录和第二条记录将是真正的重复项,并且没有用于区分它们的键(userId),因此需要将其删除。 我将其作为一种选择,以防一个或另一个(使用userId或不使用userId)更容易完成所需的输出。

谢谢

Tyler desiredoutput.txt currentoutput.txt pftarget-without-userid.txt pftarget-with-userid.txt

desiredoutput.txt (1.4 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我正在构建Cloudlow Integration(CPI)中的iflow,以查询SuccessFactors OData API的信息。 要求包括使位置"城市"与"薪酬等级"相关联。 但是,我们的组织机构不是这样设置的-薪资等级并不是一个城市唯一的,因此薪资等级可以位于多个城市,每个城市可以有多个薪资等级。

要解决此问题,我首先要查询员工,包括他们的所在地城市和薪资等级。 这样,我就获得了一组与薪级相关的城市的数据。 我的问题是,这导致重复,因为薪水相同的员工经常在同一城市工作。

我正在寻找解决此问题的方法:如何过滤出有效载荷中的重复行。

我正在将数据映射到一个级别,以便可以从XML转换为CSV。 我可以从该映射中删除userID,以便没有键,并且重复的行将是真正的重复项;或者,我可以包含userID,以使userID是每个记录的键,而其余记录可以是 重复的。 如果我使用第二种方法并包含了userID,则在删除重复项之后必须使用另一种映射,以便不映射userID。 随附XML结构,显示了两种情况(PFTarget_Without_UserID.xsd和PFTarget_With_UserID.xsd)。

我附加了2个样本有效负载-一个带有当前输出,一个带有所需的输出。 请注意,第一条记录(用户标识123)与第二条记录(用户标识456)具有相同的信息。 在所需的输出中,第二条记录(用户ID 456)已从有效负载中删除。 这就是我想要完成的。 如果我走了不包括userId的路线,则第一条记录和第二条记录将是真正的重复项,并且没有用于区分它们的键(userId),因此需要将其删除。 我将其作为一种选择,以防一个或另一个(使用userId或不使用userId)更容易完成所需的输出。

谢谢

Tyler desiredoutput.txt currentoutput.txt pftarget-without-userid.txt pftarget-with-userid.txt

desiredoutput.txt (1.4 kB)
付费偷看设置
发送
4条回答
小c菟菟
1楼 · 2020-08-24 11:34.采纳回答

嗨,泰勒

如果您不使用userId并转换为CSV,则可以使用我在此答案以删除重复的记录。

也可以使用XSLT来完成,但是上面的方法仍然有效。

此致

>

Morten

渐行渐远_HoldOn
2楼-- · 2020-08-24 11:52

作为一个快速更新,我正在尝试的一件事是使用XSLT映射来检查是否存在具有相同PayRangeCode和PayMarket的处理记录。 它现在不过滤任何内容,因此不起作用。 我是XSLT的新手,所以我可能无法正确格式化它。 我已经附上了我要使用的XSLT。 pftarget-xslt.txt

当学会了学习
3楼-- · 2020-08-24 11:29
< p>嗨,泰勒,

您可以编写一个简单的Groovy脚本。 首先创建一个String列表。 然后通过XmlSlurper遍历每个结果行。 在每次迭代期间,请执行以下操作:

连接城市并将当前行的等级支付为一个字符串。 检查字符串列表(在脚本开头创建)是否包含此串联的字符串。 如果包含字符串,请删除当前的XML节点。 如果其中不包含字符串,则将串联的字符串添加到字符串列表中,然后继续循环中的下一项。

最诚挚的问候

梦想连接
4楼-- · 2020-08-24 11:42

您好,Morten,

这正是我需要的。 我删除了userIds,使行是真实的重复,然后将有效负载从XML转换为CSV并实现了该脚本。 有效负载中不再有重复项。

谢谢

泰勒

一周热门 更多>