我是Azure数据工厂的新手。我想通过Azure数据工厂比较2个JSON文件。**我们需要获取当前JSON文件中的ID的新列表,这些ID不在以前的JSON文件中。**以下是2个示例JSON文件。
上一个JSON文件:
{
"count": 2,
"values": [
{
"id": "4e10aa02d0b945ae9dcf5cb9ded9a083"
},
{
"id": "cbc414db-4d08-48f2-8fb7-748c5da45ca9"
}
]
}
当前JSON文件:
{
"count": 3,
"values": [
{
"id": "4e10aa02d0b945ae9dcf5cb9ded9a083"
},
{
"id": "cbc414db-4d08-48f2-8fb7-748c5da45ca9"
},
{
"id": "5ea951e3-88d7-40b4-9e3f-d787b94a43c8"
}
]
}
新ID必须执行一个活动,旧ID必须执行另一个活动。我们的时间不多了,请帮助我。
提前感谢!
3条答案
按热度按时间pokxtpni1#
您只需使用IfCondition活动
If表达式:
此外,我还使用失败活动表示False条件,以获得更好的可见性。
--
查找1活动--〉Json1.json
查找2活动--〉Json2.json
x1c4d 1x指令集
jogvjijk2#
这可以使用单个Filter Activity来完成。我已经为您的Previous Json和Current Json文件分别分配了两个参数“Old_json”和“New_json”。在Filter Activity的设置中,
因此,这个过滤器活动会遍历New json中的每个条目,并检查它们是否存在于旧json中。如果不存在,则会给予其作为输出。
Output of the filter activity
vfhzx4xs3#
感谢@KarthikBhyresh-MT提供的有用答案。
再补充一点,如果(像我一样)您想要比较两个文件(或者在我的例子中,一个文件带有一个SQL查询的输出),但是不关心记录的顺序,您可以使用ForEach活动来完成此操作。这样做的好处还在于,当文件之间存在差异时,允许出现更具体的错误消息。
我的第一个If条件使用以下表达式检查两个文件是否具有相同的行数:
“假”分支将指向一个失败活动,并显示以下消息:
如果成功,流将传递到一个ForEach,迭代以下项:
...它包含一个If条件,表达式为:
该If条件的False分支包含一个Append variable活动,该活动将追加到我已添加到名为
MismatchedRecords
的管道中的变量。追加的值为:在ForEach之后,最后的If条件会检查
MismatchedRecords
是否包含任何项目:...“假”分支包含另一个失败活动,并显示消息:
该消息包含有关无法匹配的记录的特定信息,以便进行进一步调查。