西班牙
斯潘4
你好,
根据对象的不同,我有一个表用于多个模式映射。
为此,我的模式映射是一个包含多个输出的测试过滤器的组合,每个输出都连接一个模式映射器(见下文)。所有模式映射程序都在读取同一个表,但是where子句与测试筛选器中使用的条件有关。
有没有一种方法可以动态地更改模式映射器转换器中的where子句,以便我可以使用一个简单的模式映射器转换器,而不是使用这个复杂的自定义转换器?
谢谢
这是一个很好的问题,因为每当你复制这样的变形金刚,通常有更好的方法来做事情。
不过,我认为这是个例外。一个不同的where子句可以有效地为每个特性提供不同的查找表,而这并不是转换器设计用来处理的。
有趣的是。。。SchemaMapper似乎是基于特征的;一个进入的特性会立即出现,而不是等待其他特性。因此,也许可以创建一个解决方案。
我建议尝试:
我希望会发生的是,每个传入的特性都会转到SchemaMapper,但是当它到达时,CSV数据已经被覆盖。这样它就得到了所需的唯一查找表。
我不保证这会起作用(它可能只是缓存了第一个特性的查找),你可能认为不值得尝试设置它(这是一个公平的努力,几乎没有回报),但如果你好奇,那我会首先尝试,
希望这有帮助
作记号
我通过一个特色的合并和一个PythonCaller实现了这一点-基本上:
一假设您有一个基于类型、类别或其他条件的动态映射字段列表(源和目标属性名称)
二功能使用此类型/类别/条件将功能与字段列表合并-确保选择“生成列表”,因此每个功能仍只有一行。
三。您可能需要预先声明可能的目的地属性列表,并在PythonCaller中公开它们(我从不确定何时需要这样做)
四配置以下Python以满足您的需要:
针对枚举(zip(Source, Destination))中的i (a, b): sourceValue = features . getattribute ('Mapping{}.Source') Destination = features . getattribute ('Mapping{}.Destination')
如果sourceValue:功能。setAttribute(b, sourceValue )
?2019安全亚搏在线软件公司|合法的