西班牙
斯潘4
在动态工作流中,有时您的理想模式不存在于任何其他地方,而是亚搏在线存在于您的工作空间内(例如)。旋转数据之后)。为此,构建模式特性非常好,但在许多情况下,您需要使用属性转换器仔细构建模式,如上一个示例所示。一定有更好的办法!
在本例中,将使用一个名为schemasetter的特殊自定义转换器来构建模式特性,然后使用fme操作该特性。这是一种常见的模式,应该在需要构建模式并编辑其内容时使用。
schemasetter>listexplider>manipulation of the data>listbuilder
schemasetter用于使用当前功能的模式在fme中创建list{}功能。接下来,使用listexploder将列表拆分为各个要素,每个要素都包含列表中的属性名称。第三步是根据需要操作模式(即排序)。最后,使用listbuilder将所有内容重新组合到schema特性的新版本中。
以下是一些您希望执行此操作的示例:
在附加的工作区中,我们将使用销售数据集创建一个透视表。当前数据如下:
25美分硬币 | 销售 | 区域 |
2016Q1 | 1936年 | 新英格兰 |
2016Q2 | 167 | 新英格兰 |
2016Q1 | 1235 | 中大西洋 |
2016Q2 | 169 | 中大西洋 |
我们需要的输出如下:
区域 | 2016Q1 | 2016Q2 | |
新英格兰 | 1936年 | 167 | |
中大西洋 | 1235 | 169 |
这是一个围绕region字段的简单轴心,还需要注意的是,我们没有对数据进行任何汇总。我们怎么能用FME做到这一点?
使用attributecreator根据“quarter”的值生成属性名称。新属性的值将包含销售数据。
接下来使用聚合器对每个区域进行汇总
设置
请将聚合器组设置为区域
在这一步之后,您已经对数据进行了旋转,实际数据如下所示:
2016Q1 | 2016Q2 | 区域 |
1936年 | 167 | 新英格兰 |
1235 | 169 | 中大西洋 |
我的看起来像:
您应该注意到,该数据是以一种全新的方式构建的,因为它是直接在工作区内创建的。这很重要!动态工作区始终需要能够引用架构定义才能工作,在这种情况下,我们还没有定义一个架构定义(下面的步骤3将解决这个问题)。
因为我们只需要一个操作模式功能(而不是做这行的所有功能)。我们需要将数据分开到两个流。第一个数据流应该连接到在请求者端口一个全新的FeatureMerger而第二个流应该连接到一个采样器。使用采样器通过一个单一的功能,进入下一步。见下文:
在这个阶段,我们需要建立的架构功能,然后对其进行操作。我们将开始与SchemaSetter变压器:
注:过滤掉任何额外的属性FME使用前缀排除。
如果你是使用SchemaSetter后检查,你会看到存储现在被保存在功能属性列表。
在这个阶段的架构已经建立,但没有在排序顺序,你需要组织。让我们来解决,通过使用ListExploder:
架构已被划分成每个单独的属性和存储在FME特征内部。时处理每个属性。在所附的例子中,我们使用了分拣机的变压器,但由于我们正在谈论的模式,这是你的特殊需求得到满足。修改名称,fme_data_type和列表的顺序,你认为合适。
最后一步是将数据传回连成一个列表。使用ListBuilder做到这一点。
您现在有一个已经设计和编辑完成的架构功能。太棒了!
步骤3中的输出端连接的上方以在FeatureMerger供应商端口。做一个1:1的匹配,以保证该模式存在于每个功能。这确保了作家将接受它遇到的第一个特征的模式。
最后,确保作家是在动态模式下设置和源是您的架构功能。
当你运行工作区,你会得到你想要的输出,定义了新的架构。
最后的工作区:
避免丢弃的特点 - FeatureReader:
如果使用FeatureReader创建模式功能,请注意,变压器增加了一个特殊的属性和值:
fme_schema_handling =“的架构仅”
这个属性告诉笔者使用该功能的架构,然后从输出中删除。这可能是一个问题,如果你做任何数据和架构的融合在工作区中写入时使用此模式功能合并的数据将被丢弃。例如,如果合并的模式功能,因此,它被添加到工作区中的所有功能。
为了确保这种情况不会发生,完全去除fme_schema_handling属性,以便第一个合并的数据特征不是由作家下降。
?2019安全亚搏在线软件公司|合法的