我正在做时间序列分析来预测大量产品的销售。执行时间序列节点后,我得到一个包含原始销售数据和预测值的表,产品名称前带有后缀“$TS-”。现在我想只选择/过滤那些在列名中包含“$TS-”的列。
问问题
318 次
1 回答
0
没有简单或直接的方法来做这样的事情。在我看来,最简单的方法是
- 在时间序列模型块之后添加一个“过滤器”节点
- 使用漏斗按钮“删除所有字段”
- 选择以包含您要保留的每个单独的字段
- 确保节点默认设置为包含字段
如果将字段添加到您的原始数据源或在流中派生新字段,则您必须返回此节点并删除它们,因此并不理想。
另一种方法是使用流脚本来更改“过滤器”节点中字段的包含和删除。下面的脚本将使用变量给定的名称搜索“过滤器”节点,filterNodeName
并搜索具有变量给定前缀fieldNamePrefix
的字段,并仅保留与指定前缀匹配的字段。
filterNodeName = "TS Fields Only"
fieldNamePrefix = "$TS-"
diagram = modeler.script.diagram()
# Find the 'Filter' node
renameFieldsNode = diagram.findByType('filternode', filterNodeName)
# Get the input data model - the fields that go into the 'Filter' node
fields = renameFieldsNode.getInputDataModel()
# Loop through all of the fields
for field in fields:
fieldName = field.getColumnName()
if fieldName.startswith(fieldNamePrefix):
# If the field name starts with the designated prefix then include the field
renameFieldsNode.setKeyedPropertyValue('include', fieldName, True)
else:
# Otherwise do not include the field
renameFieldsNode.setKeyedPropertyValue('include', fieldName, False)
于 2019-08-06T16:58:57.910 回答