span8
span4
大家好!
我必须从OData REST端点下载所有特性,但是每个请求有100,000个特性的限制(我希望整个数据库中有800万个左右)。
对于第一个请求,我已经使用JSON阅读器使流程正常工作。但是我如何循环才能不需要80个JSON读取器呢?
每次服务响应一个JSON对象及其值和一个“nextlink”(如果还有更多的特性可以返回)。如果用“$skip=100000”查询参数发送相同的请求,它将发送下一个100,000个特性。
我在一个自定义transformer循环中试验了一个HTTPCaller,但是我对FME不够熟悉,无法测试“nextlink”属性是否存在,然后根据返回的特性数量增加一个跳跃计数器。
谢谢大家的帮助,
艾登。
我认为您使用自定义变压器的方式是完全正确的。
提取nextlink,使用JSONExtractor。这里的技巧是找到正确的JSON查询,但通常不应该太复杂。这里有一个例子nextlink属性中是顶级元素吗my_json:
在JSONExtractor之后,使用一个测试器查看是否URL有一个值,如果你循环URLHTTPCaller。如果URL没有价值,你可能已经到达了终点。
注意,您必须在某个地方插入处理JSON特性的逻辑,因为上面的屏幕快照中没有包含它。
你好大卫,
谢谢你的回答,你帮我走了90%的路(这是我一个人做不到的)。
我注意到一个奇怪的事情,我有一个奇怪的“off by 1”风格的问题与工作流程现在。亚搏在线第一次遍历的循环没有传递到特征提取逻辑,请参见下面。
我不确定是什么原因导致流在第一次运行时跳过分支。之后的每个循环都会命中JSONFragmenter等。
什么好主意吗?
你好大卫,
它没有传递出被拒绝的端口,所以记录器没有捕获任何有用的信息。
查看对第一个和后续查询的返回,它们都有特性数组的“values”键和大量特性。
我尝试将JSONFragmenter连接到JSONExtractor的末端,但这也没有什么效果。
我会尝试改变执行顺序,我想我可以用FME2016来做,对吗?
谢谢,
艾登
重新排序执行并切断特性编写器和测试人员之间的连接似乎已经解决了这个问题。我想是它自己短路了。
你对加快工作流程有什么建议吗?亚搏在线如果我增加每个数据库事务的特性数量,可能会有帮助吗?
再次感谢。
©2019安全亚搏在线软件公司法律