SAS OLAP 元数据信息获取
SAS9由于采用了开放式架构,从而使得外部程序通过公用的API接口可以获得SAS的所有元数据信息
下面简单介绍一下如何获得SAS的OLAP定义信息
在SAS中获取元数据信息有多种办法,下面我介绍使用过程步来获取SAS 元数据信息
通过使用
proc metadata 过程,从而可以获得SAS内部的各种元数据信息
由于是通过的接口,故该过程输入参数和输出都采用了XML来表示
下面通过示例来介绍如何获得SAS中定义的CUBE,以及CUBE的纬度、度量、级别、层次等信息
要想获得在OLAP服务器上定义了多少CUBE,先要确认CUBE定义存储在哪个元数据库上,通过下面语句可以获得SAS中定义了哪些元数据库
%macro serverinfo();
sERVER="wuyzpc"
PORT=8561
USERID="sasadm"
PASSWORD="sasadm"
PROTOCOL=BRIDGE
%mend;
proc metadata
%serverinfo()
IN="<GetRepositories>
<Repositories/>
<Flags>0</Flags>
<Options/>
</GetRepositories>";
run;
运行上面语句,回输出下面结果
<GetRepositories><Repositories><Repository Id="A0000001.A5PHUE24" Name="Foundation" Desc=""
DefaultNS="SAS"/></Repositories><Flags>0</Flags><Options/></GetRepositories>
上面输出告诉我们元数据存储库的ID和名称
这样我们通过元数据存储库的ID就可以获得该存储库上定义了哪些CUBE,使用下面语句
/*获得CUBE*/
proc metadata
%serverinfo()
IN="
<GetMetadataObjects>
<Reposid>A0000001.A5PHUE24</Reposid>
<Type>cube</Type>
<Objects/>
<NS>SAS</NS>
<Flags>0</Flags>
<Options/>
</GetMetadataObjects>";
run;
输出如下结果:
<GetMetadataObjects><Reposid>A0000001.A5PHUE24</Reposid><Type>cube</Type><Objects><Cube
Id="A5PHUE24.BI0000RT"
Name="test"/></Objects><NS>SAS</NS><Flags>0</Flags><Options/></GetMetadataObjects>
可以看出,在该元数据存储库上定义了TEST CUBE
这样我们可以根据CUBE ID去获取CUBE的纬度、度量、层次信息
如下:
proc metadata
%serverinfo()
IN="
<GetMetadata>
<Metadata>
<cube Id=""A5PHUE24.BI0000RT"" Name="""" Desc="""">
<Dimensions /><Measures></Measures>
</cube>
</Metadata>
<NS>SAS</NS>
</GetMetadata>
" ;
run;
从而可以获得CUBE的纬度和度量定义信息,那么根据纬度ID或者度量ID,就可以获得该纬度或者度量的具体定义信息
如获得某个纬度信息:
proc metadata
%serverinfo()
IN='
<GetMetadata>
<Metadata>
<Dimension Id="A5PHUE24.BJ0000SI" Name="" Desc="">
</Dimension>
</Metadata>
<NS>SAS</NS>
<Flags>6</Flags>
<Options/>
</GetMetadata>';RUN;
上面获取的纬度信息上只提供了纬度的名称和纬度的描叙
但是我们可能还想获得纬度的其他 ,那怎么知道纬度具有哪些属性,它的名称是如何定义的呢,则可以通过下面过程步来获取
比如想获得纬度有哪些属性,如下:
proc metadata
%serverinfo()
IN='
<GetTypeProperties>
<Type>Dimension</Type>
<Properties/>
<NS>SAS</NS>
<Flags>0</Flags>
<Options/>
</GetTypeProperties> ';run;
输出结果如下:
<GetTypeProperties><Type>Dimension</Type><Properties Cardinality="" ChangeState="" Desc=""
DimensionType="" Id="" LockedBy="" MetadataCreated="" MetadataUpdated="" Name="" SortOrder=""
UniqueName=""><AccessControls/><AssociatedOLAPSchema/><Changes/><Cubes/><DefaultHierarchy/><Defa
ultMeasure/><Documents/><Extensions/><ExternalIdentities/><Groups/><Hierarchies/><Implementors/>
<Keywords/><Levels/><LocalizedAttributes/><Measures/><Notes/><PrimaryPropertyGroup/><Properties/
><PropertySets/><ResponsibleParties/><SourceClassifierMaps/><SourceTransformations/><SpecSourceT
ransformations/><SpecTargetTransformations/><TargetClassifierMaps/><TargetTransformations/><Time
stamps/><Trees/><UsedByPrototypes/><UsingPrototype/><Variables/></Properties><NS>SAS</NS><Flags>
0</Flags><Options/></GetTypeProperties>
从上面结果可以看出,纬度具有很多属性,且同时具有很多子节点,如 Cardinality="" ChangeState="" Desc=""
DimensionType="" Id="" LockedBy="" MetadataCreated="" MetadataUpdated="" Name="" SortOrder=""
UniqueName=""
好了,2006年的最后关于SAS的帖子就此结束了,希望能有所帮助,谢谢
最后
祝愿大家新年快乐,万事如意