首页 > 代码库 > MDX查询SSAS结果--通过adomd.net展示到客户端

MDX查询SSAS结果--通过adomd.net展示到客户端

SSAS多维模型建好之后,除了在excel客户端直接链接ssas源拖拽pivot分析使用外,还可以讲要展示的结果集通过MDX语句查询出来,嵌入到程序中,通过运行程序跑出完整的报表。如图所示:

技术分享

MDX对于OLAP数据集就像Transact-SQL对于Microsoft SQL Server关系数据库。在SQL里mdxquery查询视窗,将SSAS的查询结果,显示在我们自定义的应用程序里面,和传统的ADO.net链接SQL数据库引擎相似。

例如如下MDX查询代码:

技术分享
WITH MEMBER [Target] AS [Measures].[USD REV TARGET - Vw ST SUBREGION TGT]/1000                             MEMBER [QTD] AS [Measures].[ST AMT USD]/1000                                   MEMBER [HitRate] AS IIF([Target]=NULL OR [Target]=0,NULL,[QTD]/[Target])                            MEMBER [SO_Target] as [Measures].[USD REV TARGET]/1000                               MEMBER [SO_QTD] AS [Measures].[SO AMT USD]/1000                                                MEMBER [SO_HitRate] as IIF([SO_Target]=NULL OR [SO_Target]=0,NULL,[SO_QTD]/[SO_Target])                                SELECT CROSSJOIN([OverviewAllBrand-BU].[BU CODE],                                                {[Target],[QTD],[HitRate],[SO_Target],[SO_QTD],[SO_HitRate]}) ON COLUMNS,                                  CROSSJOIN({[OverviewAllBrand-Region].[REGION EN], [OverviewAllBrand-Region].[REGION EN].CHILDREN },                              {[OverviewAllBrand-Channel].[CHANNEL TYPE].CHILDREN, [OverviewAllBrand-Channel].[CHANNEL TYPE] }) ON ROWS                                 FROM [OverviewAllBrand]   where  ([OverviewAllBrand-Region].[AREA CN].&[CHINA])
View Code

 

技术分享

原理:

1、客户端与SSAS的通讯,其实传递是XML/A指令。发起这种指令,可以通过标准的Web Request(封装为一个SOAP包即可),也可以通过客户端API。

2、SQL Server 自带了一个客户端API,Microsoft.AnalysisServices.AdomdClient.dll.这个程序集,一般是在 C:\Program Files (x86)\Microsoft.NET\ADOMD.NET\100\Microsoft.AnalysisServices.AdomdClient.dll 这个路径下面。所以首先项目程序中需要先引用这个dll。

技术分享

使用Adomd的方式与标准的ADO.NET还是有相似之处的,也需要有Connection以及Command之类的对象,只不过它的查询语法是所谓的MDX(多维表达式),而且它返回的结果不是一个平面的二维结构,可能会有多个轴(最多可以有128个轴),所以解析的时候会更加复杂些。

 

MDX查询SSAS结果--通过adomd.net展示到客户端