Извлекать MDX из панели мониторинга pps, развернутой в семействе сайтов Sharepoint - PullRequest
1 голос
/ 07 декабря 2010

Есть ли способ получить имена и соответствующие mdx-запросы диаграмм и отчетов, развернутых на сайте sharepoint?
я использую Shrepoint 2010

Ответы [ 2 ]

1 голос
/ 31 декабря 2010

SharePoint Server 2010 использует веб-службу PPSAuthoringService вместо PmService.Если вы еще этого не видели, ознакомьтесь с этой записью в блоге группы PerformancePoint Services: http://blogs.msdn.com/b/performancepoint/archive/2010/09/13/using-the-ppsauthoringservice-web-service.aspx

Запрос отчета OLAP хранится в свойстве ReportView.CustomData.Нечто подобное должно работать (хотя этот пример вызывает веб-сервис из API).Предупреждение - я программист-любитель.

2/4/11 - Вместо того чтобы запрашивать реквизиты отчета CustomData, как показано ниже, вы можете просто передать местоположение отчета в метод GetMdx.

static void Main(string[] args)
{
    string pathToAuthoringService = "http://<serverName>/_vti_bin/PPS/PPSAuthoringService.asmx";
    IBIMonitoringAuthoring service = BIMonitoringAuthoringServiceProxy.CreateInstance(pathToAuthoringService);

    string listUrl = "/BICenter/Lists/PerformancePoint Content/";
    FirstClassElementCollection fcos = service.GetListItems(listUrl);
    Dashboard dashboard = new Dashboard();

    foreach (FirstClassElement fco in fcos)
    {
        if (fco.ContentType == FCOContentType.PpsDashboard && fco.Name.Text == "Contoso Sales Management")
        {
            dashboard = fco as Dashboard;
        }
    }

    // Or if you know the ItemUrl, you can retrieve the dashboard directly.
    //RepositoryLocation dashboardLocation = new RepositoryLocation("/BICenter/Lists/PerformancePoint Content/32._000");
    //Dashboard dashboard = service.GetDashboard(dashboardLocation);

    List<RepositoryLocation> childLocations = dashboard.GetChildFCOLocations();
    foreach (RepositoryLocation location in childLocations)
    {
        if (location.ItemType == FirstClassObjectType.ReportView)
        {
            ReportView report = service.GetReportView(location);

            if (report.IsAnalyticReport())
            {
                Console.WriteLine(report.CustomData);
        }
    }
}

}

0 голосов
/ 08 декабря 2010

Вы бы открыли приложение конструктора PPS и могли видеть имена диаграмм, используемых на панели инструментов, и из отчета вы можете переключиться в режим разработки, чтобы увидеть MDX.

В противном случае вы также можете запуститьSQL Profiler для отслеживания запросов, отправленных из PPS в службы Analysis Services.Вы должны знать, что PPS выполняет много операций кэширования, я думаю, что по умолчанию это 10-20 минут, поэтому, если вы пропустите первый запрос, вам может понадобиться немного подождать, прежде чем запрос будет отправлен снова.

...