很有趣的问题。
它的根本是……当我们设计工作空间时所知道的,当我们运行它时我们知道什么。
当我们设计时,如果它是一个不知道模式的动态工作区,然后根据定义,我们不知道模式。所以属性公开是不可能的。我们能做的最好的就是在attributeexposer上给你一个“导入”选项,在这里你可以将你想象中遇到的所有可能的输入都输入进去,然后从中选择你想要“暴露”的,这样你就可以和他们一起工作了。但遗憾的是,你现在没有一个动态的工作空间,因为任何以前看不到的数据都可能没有公开您想要的内容。
因此,让我们来探索如何用2016年的FME很好地解决这个问题。
我将附加一个工作区——通过适当地配置FeatureReader来提供具有日期时间模式的任何数据。我们将“管理”这些日期时间字段,非常有效,在工作流结束时。亚搏在线只保留所有其他属性。并且永远不会“静态地”了解工作区中的输入数据。
诀窍是a)我们知道模式总是首先从FeatureReader(这是根据设计,对于这样的事情)。b)我们有“全局变量”,我们可以设置和重置,可以从一个“流”到另一个“流”进行通信。c)我们有一个attributeExploder,可以将每个属性的特性分解为一个特性,所以我们可以一般地处理属性。d)我们可以用聚合器重新组装东西。
我在最后加了一个减速器,只是为了证明没有阻塞。
享受。我期待反馈。@ MARK2A亚搏在线TSAFE--我们可能需要一篇关于这种技术的知识型文章。@ MARK1空间 @马尔科 高桥 埃里克詹 @戴维德你的评论特别受欢迎。动态文档格式.fmw
@马尔科你解决了吗?如果不是的话,我本周也会做一些类似的事情,这会有所帮助。
它不公开字段,但创建了一个参数,我可以在日期格式转换器中使用。对于您来说,问题可能是如果输入文件的格式不同,它可能会变得笨拙。在我的示例中,我还可以检测到日期属性,因为它是已知的数据类型。例如,如果您正在读取一个csv,这不会有帮助,因为数据类型未知。
你能从这个主题中提出一个想法吗?
我希望BulkAttributeExposer具有使用通配符或按数据类型公开的选项。
如果没有某种脚本,我看不出你怎么能做到这一点。attributeExploder和listconnator可能会为您提供属性名列表。然后将日期格式设置工具复制/粘贴到文本编辑器中,您将看到底层脚本,您可以在TclCaller中重新创建这些脚本并适应您的需要。我就是这样开始的。希望它有帮助!
马克
您可以在JSontemplater中键入将属性强制转换为字符串,如果这对你有帮助:
“updated_at”:xs:string(fme:get attribute(“my_date_attribute”))
否则,可以使用pythoncaller循环所有传入的属性,并将它们重新创建为字符串。
戴维
你可以使用一个模式阅读器,通过测试仪选择日期类型属性。
然后对数据进行合并以选择要重新格式化的数据。
attributeExploder也可以用于此。