• [SQL Server 2005 BI]在.NET中创建SQL 2005 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)

  • 相关阅读:
    开始熟悉一下数据结构了
    首个概率dp
    十六进制转化为八进制
    蓝桥之 剪格子
    蓝桥之 颠倒的价格
    还是闲的
    也是闲的
    闲的无聊,,,
    函数进阶
    函数基础
  • 原文地址:https://www.cnblogs.com/songsh96/p/1397453.html
Copyright © 2020-2023  润新知