“Tweetstreamer和CSV文件刷新”的答案 https://knowledge.亚搏在线safe.com/questions/33601/Tweetstreamer-and-csv-file-flushing.html “Tweetstreamer和CSV文件刷新”问题的最新答案 大卫的回答 https://knowledge.亚搏在线safe.com/answers/33642/view.html

马克,我认为问题在于,你不能真正使用csv或文本文件编写器来编写运行日志之类的东西,因为除非工作区成功终止,否则文件内容不会刷新。所以,如果你有一个服务器工作区,可以用例如。websockets如果您通常取消作业而不是让它完成,则可能会导致文本文件为空或不完整。

如果这些编写器上有一个选项来设置刷新缓冲区的频率,比如“事务大小”,那将是非常酷的。或者引入一个单独的“日志文本文件”编写器,在每个特性之后自动刷新。

2016年9月8日星期四15:19:00 GMT 大卫
由mark2atsafe回答亚搏在线 https://knowledge.亚搏在线safe.com/answers/33641/view.html

另一种解决方案是设置一个条件转换器,当您不希望工作区继续运行时,它会将一个特性传递给终结符。

我不知道这个场景,也不知道为什么你要按下停止按钮,但是如果这个条件可以在测试仪中编码,如果通过了就发送给终结者,那么它似乎可以将csv内容写到这一点上。我刚刚创建了100个功能,并将它们发送给csv编写器来测试,但是第51个功能遇到了一个终结符。我可以看到50个功能,直到那一点都写在csv上。

因此,例如,您可以计算来自tweetstream的tweets,并在100条tweets之后停止。

或者您可以设置一个外部触发器,例如文件的存在或读取一个Y或N的简单文本文件的内容,并在此基础上停止。然后通过将文件内容编辑为“y”来终止工作区。不太理想,但会起作用的。

在您的场景中,是否可以检查终结符是否导致文件正确刷新?

2016年9月8日星期四格林尼治时间15:11:25 马克2ATSA亚搏在线FE
由mark2atsafe回答亚搏在线 https://knowledge.亚搏在线safe.com/answers/33638/view.html网址

我想另一种解决方案是编写一种允许您单独提交每条记录的格式—可能是sqlite?-然后运行翻译后工作区,将该格式转换为csv。

不过,我想我们还是没料到会有这样的问题!

我不确定我们会自动刷新这些格式。在我看来,在大多数情况下,如果我停止一个工作区,那是因为我不想写任何数据。或者至少,如果我们添加了这个,它是可选的。

2016年9月8日星期四14:49:13 GMT 马克2ATSA亚搏在线FE
大卫的回答 https://knowledge.亚搏在线safe.com/answers/33607/view.html

我不确定这是否可能,因为fme似乎没有为它所写的每一行刷新文件缓冲区(这是一件好事,从性能上看)。

但是,您可以使用python完成所需的工作,例如。在pythoncaller中使用以下代码:

导入fmeobjects类featureprocessor(object):def\uu init\uu(self):self.filehandle=open(fme\u macrovalues['output\u file','a')def input(self,功能:text_line_data=feature.getattribute('text_line_data')如果text_line_data:self.filehandle.write(text_line_data+'\n')self.filehandle.flush()self.pyoutput(feature)def close(self):self.filehandle.close()

但是,您必须自己组装csv行,并将结果放入pythoncaller前面的属性“text_line_data”。

如果您想在每次工作区重新启动时重置文件,则可以在第5行更改“A”到“W”,否则它将追加到现有文件中。

您还需要创建一个已发布的参数输出文件,该文件将包含输出文件的完整路径和名称。

如果希望fme转换日志包含写入的行数(统计信息),可以将空写入程序连接到pythoncaler的输出端口。

2016年9月8日星期四12:03:03 GMT 大卫
ITAY答复 https://knowledge.亚搏在线safe.com/answers/33603/view.html网址

你好,

是否要求写入同一csv?如果没有,您可以使用时间戳,每次写入一个新的csv。

2016年9月8日星期四格林尼治时间11:25:01 意大利