Question

Y at-il un moyen de récupérer les noms et les requêtes MDX correspondantes des graphiques et des rapports déployés sur un site sharepoint?
J'utilise Microsoft SharePoint 2010

Était-ce utile?

La solution

SharePoint Server 2010 utilise le service Web de PPSAuthoringService au lieu de PmService. Si vous ne l'avez vu encore, consultez ce post sur le blog de l'équipe PerformancePoint Services: http://blogs.msdn.com/b/performancepoint/archive/2010/09/13/using-the-ppsauthoringservice-web-service.aspx

La requête du rapport OLAP est stocké dans la propriété ReportView.CustomData. Quelque chose comme cela devrait fonctionner (même si cet exemple appelle le service Web de l'API). Avertissement -. Je suis un programmeur amateur

04/02/11 - Au lieu de demander la prop CustomData du rapport comme indiqué ci-dessous, vous pouvez juste passer l'emplacement du rapport à la méthode 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);
        }
    }
}

}

Autres conseils

Vous ouvrir l'application concepteur PPS et vous pouvez voir les noms des graphiques utilisés sur le tableau de bord et du rapport que vous pouvez passer en mode conception pour voir le MDX.

Sinon, vous pouvez également exécuter SQL Profiler pour tracer les requêtes envoyées par PPS à Analysis Services. Vous devez savoir que le PPS fait beaucoup de mise en cache, je pense qu'il est de 10-20 minutes par défaut, donc si vous oubliez cette première requête, vous devrez peut-être attendre un certain temps avant que la requête est envoyée à nouveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top