sas更新元数据中的列顺序

时间:2013-06-25 12:28:08

标签: xml sas metadata sas-metadata

我们正在使用 proc元数据(开放元数据接口)来更新XML中的一些元数据。 使用 updatemetadata 方法,我们如何实现以下目标:

  • 使用 function =“REPLACE”选项将新列添加到给定表的 Columns 关联中的特定位置(默认情况下为新列将是协会中的第一个)

我们使用的是9.3版本。

提前致谢!

1 个答案:

答案 0 :(得分:1)

我们找到了解决方案: 它必须分两步完成。

在第一步中,必须添加新列。根据您使用的功能,它将是表元数据中的第一列或最后一列。

在第二步中,您必须将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>