0

我正在做时间序列分析来预测大量产品的销售。执行时间序列节点后,我得到一个包含原始销售数据和预测值的表,产品名称前带有后缀“$TS-”。现在我想只选择/过滤那些在列名中包含“$TS-”的列。

4

1 回答 1

0

没有简单或直接的方法来做这样的事情。在我看来,最简单的方法是

  1. 在时间序列模型块之后添加一个“过滤器”节点
  2. 使用漏斗按钮“删除所有字段”
  3. 选择以包含您要保留的每个单独的字段
  4. 确保节点默认设置为包含字段

如果将字段添加到您的原始数据源或在流中派生新字段,则您必须返回此节点并删除它们,因此并不理想。

另一种方法是使用流脚本来更改“过滤器”节点中字段的包含和删除。下面的脚本将使用变量给定的名称搜索“过滤器”节点,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 回答