斯潘8
斯潘4
好啊,来吧。我在一个SQL Server数据库中有一些数据,但是它是以面向对象的方式存储的,这意味着普通的SQL查询不起作用。为了创建一个传统的表格视图,我必须对数据进行透视。既然这本身不是问题,但所有数据都存储在每个资产类别(例如门,窗口等)具有不同数量的属性,因此,根据我的透视方式,我将相关属性作为字段获取。到目前为止一切都好吗?
好啊,因此,我希望将源数据库中的数据推送到目标数据库(在本例中是Oracle)中,执行此操作的方法当前正在使用sqlcreator创建要透视的字段(基于作为参数的资产类),然后使用sqlexecutor检索透视表,它起作用,到某一点。不起作用的是,来自sqlExecutor的输出的属性没有公开,如果不使用从SQL查询填充选项,我就无法将它们公开,它会失败,因为它依赖于SQLCreator输出来输入SQL语句。还有我吗?
要说明SQLCreator的代码,请如下所示:
从T1.char_id=t2.char_idinner join class_id=t2.char_idinner join class_objects t3 on t2.class_id=t3.class_idwhere t3.name='$(asset_class)'的特征t1内部联接类_attributes t2中选择distinct substring((select',“'+t1.char_name+'”'as[text()]),并将t3.name=t4.name用于xml路径(“”),2,1000)【属性】来自类别“T4对象”,其中t4.name='$(asset_class)';
我的sqlExecutor代码如下:
选择object_id,class_id,name,code,description,@值(属性)来自(选择T1.char_name,T3类ID,T3的名字,T4 ObjutsId,t5.姓名标签\姓名,T5代码,T5描述,如果t4.char_值不为空,则为t4.char_值;如果t4.number_值不为空,则为强制转换(t4.number_值为nvarchar);如果t4.date_值不为空,则为强制转换(t4.date_值为nvarchar);否则为空,则为输出值。t4.char_id=T1.char_idinner join tags t5(t4.object_id=t5.tag_idi)nner join class_objects t3 on t5.class_id=t3.class_id其中t3.name='$(asset_class)')as spivot(min(output_value)for char_name in(@value(attributes)))as pvt;
它返回数据检查器中的所有正确属性,但我想把这个输出到另一个数据库,我不能告诉作者需要创建什么属性。如果我尝试从SQL查询填充,我会得到“查询失败,可能是由于语句格式不正确。”-大概是因为它看到的@value(属性)还不存在…
尝试过使用attributeexploder(进展不顺利)。pythoncaller公开属性(什么也没做,因为它只在运行时执行,并在屏幕上猛击我的头(和attributeexploder一样有效)。所以任何想法都会受到欢迎!
哦,P.S.SQL Server 2013,FME 2017.1.1
你在对这些功能进行故障模式与影响分析的内部处理吗?或者你只是把它们寄给作家?如果你只是写出来,研究如何使用动态模式编写器,这样就不需要公开所有这些属性:
https://knowledge.亚搏在线safe.com/articles/1051/index.html网站
作为起点,插入一个示意图(从FME中心)在动态编写器之前。这里还有其他几个关于这个确切问题的帖子。
?2019安全亚搏在线软件公司|合法的