我正在使用Datastage 9.1版本。我想以与它们出现在XML中相同的顺序读取XML元素。
XSD我看起来像这样:
<xsd:complexType name="Optimization">
<xsd:sequence>
<xsd:element name="Values" type="Values" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="required" type="xsd:boolean" use="required"/>
</xsd:complexType>
<xsd:complexType name="Values">
<xsd:sequence>
<xsd:element name="Value" type="xsd:String" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="selection" type="SelectionAttr" use="required"/>
</xsd:complexType>
此XSD的示例XML是:
<Optimization required="false">
<Values>
<Value selected="true">abc</Value>
<Value selected="true">def</Value>
<Value selected="true">ghi</Value>
</Values>
</Optimization>
我想使用datastage读取优化值。但我想将一个序列号与每个值相关联,这些值表示该值出现在XML中的顺序,如下所示:
SeqNo价值
1 abc
2 def
3 ghi
如果XML不同,如下所示:
<Optimization required="false">
<Values>
<Value selected="true">ghi</Value>
<Value selected="true">abc</Value>
<Value selected="true">def</Value>
</Values>
</Optimization>
然后输出应该是这样的:
SeqNo价值
1 ghi
2 abc
3 def
使用datastage XML阶段可以实现吗?如果是的话,请告诉我如何实现这一目标?
感谢。
答案 0 :(得分:0)
XML stage / Hierarchical阶段可以帮助获取值。 例如,编号可以用变压器完成。 在XML阶段,使用XML Parser步骤。
查看互联网上提供的step by step description
的一些文档替代: 如果您的源是关系数据库,请检查SQL选项以选择您需要的结果。
答案 1 :(得分:0)
如果您能够导入数据,就像您可以看到的那样。添加序列号很容易。
工作设计:[XML / Hierachical输入阶段]&gt; <变压器级> [输出/附加阶段]
步骤:
从输入阶段,链接到变压器,从变压器到其他阶段或某种输出阶段(文件或数据库)。将输入阶段配置为具有列,使源xml可读。打开变压器,拖动输入链接,使变压器将那个/那些链接作为输出。在类型为int的名为sequence_number(或其他)的变换器的输出中创建一个新列。在推导出新的链接类型@OUTROWNUM。
进入变压器的设置(打开变压器时左上角的按钮)进入高级选项卡。将舞台设置为以顺序模式运行。这将保持行从输入源阶段获取的顺序(假设变换器紧跟在输入阶段之后,并且输入阶段没有被强制设置为并行运行)。
变压器的输出现在应该有一个序列号。
这会回答你的问题吗?