span8
span4
还有很多类似的帖子,但我似乎找不到一个有效的解决方案。我还在尝试建立一个工作流程,但我认为我应该在这里张贴,看亚搏在线看是否有人知道一个简单的解决方案。
我有一个表的数据如下…
ID | 二次ID |
1 | ABC123 |
1 | DEF345 |
1 | GHJ678 |
2 | DEF345 |
2 | XYZ789 |
3 | VWX567 |
4 | ABC123 |
我想把这个转换成一个电子表格,使它看起来像这样…
ID | Secondary_ID_1 |
Secondary_ID_2 | Secondary_ID_3 |
1 | ABC123 |
DEF345 |
GHJ678 |
2 | DEF345 |
XYZ789 |
|
3 | VWX567 |
||
4 | ABC123 |
我遇到的问题是,对于给定的ID,可能有任意数量的secondary_id……一个ID可能要几百个。所以,我希望在最后有一个表格数据集,它可能有几百列,每一行都有一行ID。
这是可能的吗?我尝试着使用列表属性,但是很难找到一个方法来将列表中的每个属性值作为自己的列输出。据我所知,Secondary_ID值只需要一个列表属性。
我会继续尝试,我会张贴任何我找到的解决方案。
谢谢你的宝贵时间。
仅供参考……I'm running FME 2015.0 (20150114 - Build 15245 -WIN32) via ArcGIS data interoperability extension.
如果通过主ID将辅助ID分组到一个列表中,那么只需使用AttributeRenamer将每个元素重命名为所需的名称。
当然,这是可能的。
只要不是非常有吸引力的,因为你无法导入属性名称。除非你创建一个映射第一和进口的是,哪一种失败的目的,这显然是低效率的。
我简单地创建一个映射中说EXCELL这种类型的枚举属性名的,使得它非常大的预期需求。
当不一一列举我刚刚从特征信息窗口复制列表,并使用像记事本+解析它。
屁股数据列举你可以使用python attributecreation更换曝光。
我猜这样做会增加2数据集。
这将继续下去,直到安全弄清楚如何一味揭露一亚搏在线切隐藏。
由于隆。这是另一种解决方案!我现在有建成一个类似的工作流程,而不是一个AttributeRenamer的AttributeCreator。亚搏在线
我仍然可能要采取一条缝在建立egomm的工作流程,如果我有时间。亚搏在线我会推一些不相干的数据集具有相同的架构通过这个流程,我从来不知道Secondary_ID值有多少可能是一个给定的ID ...亚搏在线我怀疑了,为一些这些数据集的几百个。我可以设置AttributeRenamer /创作者,以适应这一点,但egomm的工作流程肯定是更优雅。亚搏在线
感谢你的帮助。它的大加赞赏。
ID上的Listbuilder,爆炸。使elemtn指数的值增加1。
将它与Secondary_ID_连接起来。
创建属性@Value(_result) = @Value(辅助ID)
将Secondary_ID_1暴露给Secondary_ID_n(在excel中按增量创建列表,在曝光器中按导入创建列表)…
啊. .can't import in fme_2015.希望到时候你不会有成百上千的身份证。(升级FME ?)
ID上的聚合器,删除属性,使用attriubtus将Secondary_ID_1连接到Secondary_ID_n没有分隔。
现在你做的
这就是我在2018年要做的事情
和python来避免手动公开属性
进口FME进口fmeobjects DEF create_schema(功能):attrlist = feature.getAttribute( '_列表{} Sec_ID_Name。')feature.setAttribute( '属性{' + STR(0)+ '}, “ID” 名称'。)的功能。的setAttribute( '属性{' + STR(0)+ '} fme_data_type。', 'fme_char(20)'),其中i,VAL在枚举(attrlist):feature.setAttribute( '属性{' + STR第(i + 1)+ '}。名',val)的feature.setAttribute( '属性{' + STR第(i + 1)+ '}。fme_data_type', 'fme_char(20)')
再次感谢。
不规则的边缘表是很少的乐趣与工作,可以重构问题(比如说)输出每个ID值工作表,并保持辅ID在一列?
有可能,但我可能不得不进一步改变&我们已经设置了一个脚本来处理如此粗糙的边缘表。也许我们需要在这方面做出一些改变。
现在我知道我可以使用ListBuilder/ListConcatenator来实现这一点,对我来说,使用ListElementCounter来了解我需要多少列似乎是明智的。
无论如何,我已经构建了一个非常不优雅的解决方案。我只是构建一个列表并设置一个AttributeCreator来为每个列表元素编号输出一个新属性。
例如,AttributeName = Secondary_ID_1, Value = @Value(_list{0}. secondary_id)
AttributeName = Secondary_ID_2, Value = @Value(_list{1}.Secondary_ID)
AttributeName = Secondary_ID_3, Value = @Value(_list{2}.Secondary_ID)
…and so on until I've created enough new attributes to hold the max count from the ListElementCounter.
也许一个更优雅的解决方案会出现在我的脑海里&如果是这样的话,我将在这里发布。
谢谢大家的快速反馈。
©2019安全亚搏在线软件公司法律