西班牙
斯潘4
我试图从一个基于where子句的Microsoft SQL Server非空间表中读入SchemaMapper。where子句中的值取决于另一个表中的值。所以我首先读取另一个表并创建一个具有该值的属性。在SchemaMapper中,配置如下:
您已经可以注意到,没有为WHERE子句字段指定属性值或打开文本编辑器的选项。
运行工作区时,会出现以下错误:
Microsoft SQL Server非空间读取器:查询失败,可能是因为语句格式不正确。查询文本' SELECT * FROM DataOwner。(RAC_SCHEMA_DEFINITION),MAPPING_ID = ' @ value (MAPPING_ID) '”。提供者错误'(-2147217900)转换失败时,从字符串转换为uniqueidentifier。
发生了一个致命的错误。查看上面的日志文件以了解详细信息
SchemaMapper_Mapper(SchemaMappingFactory):无法读取功能:发生了致命错误。查看上面的日志文件以了解详细信息
我似乎无法在where子句内分配属性值。它只是将@Value(…)作为文本插入。当我在featurereaderformicrosoftsqlservernon-Spatial中尝试此功能时,可以指定一个属性值或打开一个文本编辑器,然后运行它就像一个符咒。
这是一个bug还是不存在的功能?或者这是不可能的原因吗?
我已经在考虑解决办法了。
选项正在使用参数。
用@Value(…)填充参数将得到与上述问题相同的结果。
它似乎使用预定义的字符串作为输入参数,并在SchemaMapper where子句中使用$()。问题是这个值不再是动态的了。
我可以考虑在参数中使用Python捕捉所需的值,但是我希望最小化Python/arcpy。
另一个选项是将(a)行添加到SchemaMapper的输入数据中,并使用SchemaMapper筛选器而不是where子句。这可以工作,但是输入数据可以有数百万行的行顺序,所以我希望避免向该数据添加属性。此外,SchemaMapper的映射表可能有许多我不需要的行,我希望避免处理这些行。
还有其他选择吗?或是对我先前问题的解释?
在FME 2018.0.1中,我能够在SchemaMapper的WHERE子句中使用已发布的参数。通过在自定义转换器中包装SchemaMapper,可以使用属性值。
您好!@g_karssenberg,感谢您发布此消息。我们有一个现有的问题报告,它要求在SimulAMPER的WHERE子句中引用属性值的能力。我已经在PR30590上做了一个记录,你已经把这个作为我们的问答论坛的帖子提交了。问题报告解决后,我会在这里给你更新。
?2019安全亚搏在线软件公司|合法的