[SQL Server 2005 BI]在.NET中创建SQL 2005 KPI

本文介绍如何在SQLServer2005中使用AMO对象而非MDX语句创建KPI,并提供了一个C#示例。此外,还展示了如何查询已创建的KPI。

项目中要从Web端根据维护的参数在Cube中创建KPI,查了一天多资料,只查到MSDN中有一个"CREATE KPI..."的写法比较靠谱,可是把它拷到Analysis Services MDXQuery中执行,发现KPI根本就不是关键字,这怎么能执行得了。急死人了。到最后才发现"CREATE KPI..."是SQL Server 2008才新增的功能。2005中当然不能用了。晕。

最后终于查到解决方法如下:

SQL Server 2008中可以用下面的MDX语句创建KPI,但是在SQL Server 2005中却不行。

CREATE  KPI CURRENTCUBE  |   < Cube Name > .KPI_Name  AS  KPI_Value
   
[ ,Property_Name = Property_Value, n ]


所以对SQL 2005没办法通过在.NET中执行MDX语句的方法来创建KPI了。

SQL Server 2005可以用AMO对象创建KPI,如下:

using  Microsoft.AnalysisServices;

private   void  CreateNewKPI()
    {
        Server testServer 
=   new  Server();
        testServer.Connect(
" Data Source=myServer;Catalog=Analysis Services Tutorial;ConnectTo=9.0;Integrated Security=SSPI " );
        
if  (testServer  !=   null   &&  testServer.Connected)
        {
            Database testDatabase 
=  testServer.Databases.FindByName( " Analysis Services Tutorial " );
            
if  (testDatabase  !=   null )
            {
                Cube testCube 
=  testDatabase.Cubes.FindByName( " Analysis Services Tutorial " );
                
if  (testCube  !=   null )
                {
                    KpiCollection kpiCollection 
=  testCube.Kpis;
                    Kpi testKPI 
=  kpiCollection.Add( " TestKPI " );
                    testKPI.Value 
=   " [Measures].[Reseller Sales-Sales Amount] " ;
                    testKPI.Goal 
=   " [Measures].[Sales Amount Quota] " ;
                    testKPI.StatusGraphic 
=   " Gauge " ;
                    testKPI.Status 
=   " case  when KPIVALUE(\ " Reseller Revenue\ " )/KPIGOAL( \ " Reseller Revenue\ " ) >= 0.95 then 1 when  KPIVALUE(\ " Reseller Revenue\ " )/KPIGOAL( \ " Reseller Revenue\ " ) < 0.95 and KPIVALUE(\ " Reseller Revenue\ " )/KPIGOAL( \ " Reseller Revenue\ " ) >= 0.85 then 0 else -1 end " ;
                    testKPI.TrendGraphic 
=   " Standard arrow " ;
                    testKPI.Trend 
=   " 1 " ;
                    testCube.Update();
                }
            }
            testDatabase.Process();
            testServer.Disconnect();
        }
    }


可以通过下面的MDX语句查询KPI:

select  {KPIValue("TestKPI"), KPIGoal("TestKPI"), KPIStatus("TestKPI"), KPITrend("TestKPI")}  on  columns
from   [ Analysis Services Tutorial ]

查询结果如下:

 

来自:http://social.msdn.microsoft.com/Forums/en-US/sqlanalysisservices/thread/5be9da70-279d-4fb9-9006-f6fcd1f8dea0/

其它参考资料:
AMO OLAP 高级对象的编程(有CreateKPIs方法)(http://msdn.microsoft.com/zh-cn/library/ms345086.aspx
CREATE KPI 语句 (MDX)(http://msdn.microsoft.com/zh-cn/library/bb510608.aspx
How to retreive KPI from Analysis Services 2005 (http://blogs.msdn.com/olivier_pieri/archive/2004/12/06/275811.aspx
Where do I create my KPIs?(http://nickbarclay.blogspot.com/2007/05/where-do-i-create-my-kpis.html
发布一个C#+ADOMD.NET实现查看分析服务数据库信息的类对象(http://www.cnblogs.com/xuanfeng/archive/2008/07/13/1241878.html
check this series of articles on Key Performance Indicators (http://www.databasejournal.com/features/mssql/article.php/3604206)
Kpi Class (http://technet.microsoft.com/zh-cn/library/microsoft.analysisservices.kpi.aspx)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值