我们正在使用proc 元数据(开放元数据接口)从 XML 更新一些元数据。使用updatemetadata方法,我们如何实现以下功能:
- 使用function="REPLACE"选项将新列添加到给定表的列关联中的特定位置(默认情况下,新列将是关联中的第一个)
我们使用的是 9.3 版。
提前致谢!
我们正在使用proc 元数据(开放元数据接口)从 XML 更新一些元数据。使用updatemetadata方法,我们如何实现以下功能:
我们使用的是 9.3 版。
提前致谢!
我们找到了解决方案:必须分两步完成。
在第一步中,必须添加新列。根据您使用的函数,它将是表元数据中的第一列或最后一列。
在第二步中,您必须将 function="replace" 选项与 updatemetadata 一起使用,其中列按所需顺序排列。
例子:
在第一个 updatemetadata 块中,字段 TEST_PCT 被添加到 HBR.TEST_7 表中。因为它是用 function="replace" 添加的,所以它将是表的第一列,之后是旧列。
所以第二个 updatemetadata 块需要正确的列顺序,因为此时所有列都已经存在,它将正确地重新排序它们。
<Multiple_Requests>
<UpdateMetadata>
<Metadata>
<PhysicalTable id="A52YJRW0.B30005KO" name="HBR.TEST_7" MemberType="DATA" PublicType="Table" desc="Test_1_Notes á, é, í, ó, ö, ő, ü, ű" sastablename="TEST_7" UsageVersion="1000000">
<Columns function="replace">
<Column objref="A52YJRW0.B80008J0">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J1">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J2">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J3">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column id="$o601" name="TEST_PCT" desc=" " isnullable="1" PublicType="Column" sascolumnlength="8" sascolumnname="TEST_PCT" SASColumnType="N" SASFormat="COMMAX22.2" SASInformat="COMMAX22.2" UsageVersion="1000000">
<Notes>
<TextStore Name="PrivateNote" storedtext=" " TextRole="Note" UsageVersion="0"/>
</Notes>
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J5">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J6">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J7">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J8">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J9">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
</Columns>
</PhysicalTable>
</Metadata>
<Reposid>A0000001.A52YJRW0</Reposid>
<Type>PhysicalTable</Type>
<Objects/>
<NS>SAS</NS>
<Flags>268435456</Flags>
</UpdateMetadata>
<UpdateMetadata>
<Metadata>
<PhysicalTable id="A52YJRW0.B30005KO" name="HBR.TEST_7" UsageVersion="1000000">
<Columns function="replace">
<Column objref="A52YJRW0.B80008J0">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J1">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J2">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J3">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="$o601">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J5">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J6">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J7">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J8">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
<Column objref="A52YJRW0.B80008J9">
<Table>
<PhysicalTable objref="A52YJRW0.B30005KO"/>
</Table>
</Column>
</Columns>
</PhysicalTable>
</Metadata>
<Reposid>A0000001.A52YJRW0</Reposid>
<Type>PhysicalTable</Type>
<Objects/>
<NS>SAS</NS>
<Flags>268435456</Flags>
</UpdateMetadata>