1

有没有办法检索部署在共享点站点上的图表和报告的名称和相应的 mdx 查询?
我正在使用 Shrepoint 2010

4

2 回答 2

1

SharePoint Server 2010 使用 PPSAuthoringService Web 服务而不是 PmService。如果您还没有看到它,请查看 PerformancePoint Services 团队博客上的这篇文章:http: //blogs.msdn.com/b/performancepoint/archive/2010/09/13/using-the-ppsauthoringservice-web-service。 aspx

OLAP 报表的查询存储在 ReportView.CustomData 属性中。像这样的东西应该可以工作(即使这个例子从 API 调用 Web 服务)。警告——我是一个业余程序员。

2/4/11 -- 您可以将报告位置传递给 GetMdx 方法,而不是如下所示查询报告的 CustomData 属性。

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);
        }
    }
}

}

于 2010-12-31T18:26:31.773 回答
0

您将打开 PPS 设计器应用程序,您可以看到仪表板上使用的图表的名称,您可以从报告切换到设计模式以查看 MDX。

否则,您还可以运行 SQL Profiler 来跟踪从 PPS 发送到 Analysis Services 的查询。您必须注意 PPS 会进行大量缓存,我认为默认情况下为 10-20 分钟,因此如果您错过了第一个查询,您可能需要等待一段时间才能再次发送查询。

于 2010-12-08T03:09:44.830 回答