2

メタデータ テーブルの sas フォルダー パスを取得する方法を誰かが知っているかどうか疑問に思っていますか?

メタデータにある各テーブルのフォルダー パスを一覧表示したいと思います。

例:

テーブル FactPortfolio は、管理コンソールの次の fodler 構造の下にあります: Commerc-->Sweden-->Portfolios-->Resources-->Tables

sas のメタデータ ブラウザーで、最上位階層に到達するまで、テーブル、ツリー、および親ツリーをクリックすると、フォルダー パスを見つけることができます。ただし、SAS のメタデータ データ ステップ関数で取得したいと考えています。

BRジョナス

4

2 に答える 2

1

これは、テーブル URI がわかれば、次のように導出できます。

%let metauri=OMSOBJ:PhysicalTable\A5HOSDWY.BE0006N9;
/* get metadata paths */
data ;
  length tree_path $500 tree_uri parent_uri parent_name $200;
  call missing(tree_path,tree_uri,parent_uri,parent_name);
  drop tree_uri parent_uri parent_name rc ;
  
  uri="&metauri";
  rc=metadata_getnasn(uri,"Trees",1,tree_uri);
  rc=metadata_getattr(tree_uri,"Name",tree_path);

  do while (metadata_getnasn(tree_uri,"ParentTree",1,parent_uri)>0);
    rc=metadata_getattr(parent_uri,"Name",parent_name);
    tree_path=strip(parent_name)||'/'||strip(tree_path);
    tree_uri=parent_uri;
  end;
  tree_path='/'||strip(tree_path);
run;

テーブル URI を取得するためのサンプル コードは、ここここにあります。

編集 20200920:

テーブル URI を取得するためのマクロは次のとおりです: https://github.com/sasjs/core/blob/main/meta/mm_gettableid.sas

次のコードを使用して、すべてのテーブルとそのメタデータ パスをエクスポートすることもできます。

* load macros;
filename mc url "https://raw.githubusercontent.com/sasjs/core/main/all.sas";
%inc mc;

* invoke macro;
%mm_tree(root=%str(/) ,types=Table ,outds=myoutputdataset)
于 2015-11-12T18:36:32.680 に答える
1

Base では、sashelp テーブル / ディクショナリ ビューを使用できます。

/* SQL 辞書 */
proc sql ;
  テーブル memlist を次のように作成します。
  選択する *
  Dictionary.tables から
  どこで libname='WORK'
  memname で並べ替えます。
終了する ;

/* SASHELP */
データメモリリスト;
  set sashelp.vmember (where=(libname='WORK')) ;
走る ;
于 2014-03-18T13:23:56.713 に答える