2013-06-25 5 views
1

Мы используем proc metadata (открытый интерфейс метаданных) для обновления некоторых метаданных из XML. Использование updatemetadata метод, как мы можем достичь следующего:sas update column order in metadata

  • добавить новый столбец в определенное место в Колонный объединение данной таблицы с использованием функции = «ЗАМЕНА» (по умолчанию новый столбец будет первым в ассоциации)

Мы используем версию 9.3.

Заранее благодарен!

ответ

1

Мы нашли решение: Это должно быть сделано в два этапа.

На первом этапе необходимо добавить новый столбец. В зависимости от используемой функции это будет либо первый, либо последний столбец в метаданных таблицы.

На втором этапе вы должны использовать опцию function = "replace" с помощью updatemetadata, где столбцы находятся в нужном порядке.

Пример:

В первом updatemetadata блокируют поле TEST_PCT добавляется в таблицу HBR.TEST_7. Поскольку он добавляется с функцией = "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>