2

デプロイ スクリプトを作成していて、以下のような単純な (そして空の) BASE ライブラリをプログラムでメタデータに登録したいと考えています。

libname MYLIB 'C:\temp';

XML 構文のサンプルはこちらにあります。それを proc メタデータと組み合わせて更新を実行する方法がわかりません (たとえば、メタデータ ID はどのように生成されますか?)。

4

2 に答える 2

2

@ user2173800 上記の質問に対する解決策を受け取ったことがありますか? これが私が思いついたものです:

以下のコードは、Metadata フォルダーの下にBASE_Metalibという名前の SAS ライブラリを作成します: /Shared Data/Libraries/BASE_Metalib (このフォルダーは Metadata に既に存在すると想定されます)。このコードは、このライブラリ用に定義されたこのディレクトリの下にあるすべてのテーブルも登録します。以下のコードは、Metadata Datastep 関数を使用してメタデータとやり取りします。

/*Creating a Metadata Library with BASE Engine and register all the tables under it */


options metaserver="taasasf2"
        metaport=8561
        metauser="testuser" 
        metapass="test123"
        metarepository="Foundation";

%Let MetaLibName=BASE_Metalib; /* Name of the SAS Library with BASE Engine to be created */


data _null_;
    length luri uri muri $256;


    rc=0;

    Call missing(luri,uri,muri);

    /* Create a SASLibrary object in the Shared Data folder. */

    rc=metadata_newobj("SASLibrary",
                       luri,
                       "&MetaLibname.",
                        "Foundation",
                        "omsobj:Tree?@Name=%bquote('&Metalibname.')",
                        "Members");
    put rc=;
    put luri=;

    /* Add PublicType,UsageVersion,Engine,Libref,IsDBMSLibname attribute values. */

        rc=metadata_setattr(luri, 
                            "PublicType",
                            "Library");
        put rc=;
        put luri=;

        rc=metadata_setattr(luri, 
                            "UsageVersion",
                            "1000000.0");
        put rc=;
        put luri=;

        rc=metadata_setattr(luri, 
                            "Engine",
                            "BASE");
        put rc=;
        put luri=;

        rc=metadata_setattr(luri, 
                            "Libref",
                            "SASTEST");
        put rc=;
        put luri=;

        rc=metadata_setattr(luri, 
                            "IsDBMSLibname",
                            "0");
        put rc=;
        put luri=;


/* Set Directory Object via UsingPackages Association for the SAS Library Object */

           rc=metadata_newobj("Directory",
                       uri,
                       "");
         put uri=;



        rc=metadata_setassn(luri,
                        "UsingPackages",
                        "Replace",
                        uri);
       put rc=;

       rc=metadata_setattr(uri,"DirectoryName","/shrproj/files/ANA_AR2_UWCRQ/data");

       put rc=;

/* Set Server Context Object via DeployedComponents Association for the SAS Library Object */


   rc=metadata_getnobj("omsobj:ServerContext?@Name='SASApp'",1,muri);

      put muri=;

      rc=metadata_setassn(luri,
                        "DeployedComponents",
                        "Append",
                        muri);

      put rc=;

Run;



proc metalib;
     omr (library="&Metalibname.");
     report;
run;
于 2013-08-04T19:37:28.500 に答える