Comment publier dans SharePoint vos rapports Excel sans data ?

La question peut sembler bizarre …

Imaginons que :

  1. nous mettons en place, sur un cube multidim, une sécurisation dynamique des données pilotée par le login utilisateur,
  2. un key user crée un rapport Excel sur notre cube multidim et désire le partager sous SharePoint

Lorsqu’il publie sous SharePoint son classeur Excel, celui-ci contiendra les données pour lesquelles notre key user est habilité, or cela peut poser des problèmes de confidentialité, car les utilisateurs qui auront accès à ce rapports n’auront pas forcément les mêmes habilitations de données. Quelles sont donc les solutions qui s’offrent à nous ?

La première solution qui vient en tête est le rafraîchissement automatique des connexions à l’ouverture du rapport. Pas de chance, cela n’est pas viable, car si l’utilisateur n’a pas accès à la source de données, la requête va échouer et il verra alors les résultats publiés par l’auteur du rapport. De plus, je ne connais pas de solution miracle sous Excel permettant de vider  les tableaux et graphes croisés dynamiques et de ne pouvoir publier que la structure et les requêtes d’un rapport.

Par chance, en cherchant un peu sur codeplex j’ai pu constaté qu’il existé une extension des Pivot Table cf. http://olappivottableextend.codeplex.com/. Cette extension implémente des fonctionnalités de PivotTable présente dans l’API Excel mais toujours pas implémentée dans l’UI (c’est bien dommage). Parmi ces fonctionnalités, on y trouve la Clear PivotTable Cache permettant exactement de faire ce que je veux. L’astuce est assez simple, il suffit de remplacer toutes les mesures par du null.

Maintenant faut-il encore que l’installation de cette extension soit approuvée par l’IT. De plus, cette solution ne permet pas de vider tous les TCD d’un classeur Excel, l’utilisateur devra le faire sur chaque TCD :

ClearPivotTableCache1.png

 La solution la plus simple, consiste à coder cette solution au niveau du cube. 

  • Sur votre entrepôt de données, créez la vue Report Data

CREATE VIEW ReportData AS
SELECT 'Show' AS ShowHideData
UNION
SELECT 'Hide' AS ShowHideData

  • Ajouter cette vue dans le DSV du cube
  • Créer la dimension Report Data, celle-ci ne contient que l’attribut ShowHideData, veillez à paramétrer la propriété IsAggretable à False (l’attribut All n’est pas utile dans ce cas)

DimReportData

  • Ajouter la cube dimension Report Data à votre cube
  • Dans l’onglet calculation définissez le membre par défaut souhaité (par défaut on veut visualiser les données) puis créer le scope permettant de forcer à null toutes les mesures lorsque la valeur Hide est sélectionnée

ALTER CUBE CURRENTCUBE
UPDATE DIMENSION [Report Data].[Show Hide Data],
Default_Member = [Report Data].[Show Hide Data].&[Show];

SCOPE ([Report Data].[Show Hide Data].&[Hide],[Measures].AllMembers);
THIS = NULL;
END SCOPE;

Notre utilisateur n’a plus qu’à mettre en place un slicer sur l’attribut [Report Data].[Show Hide Report Data] et le connecter à tous les tableaux et graphes croisés dynamiques. Une fois le rapport maquetté, l’utilisateur positionne le slicer sur la valeur Hide et peut ainsi publier dans SharePoint un rapport structuré mais sans données. Ceux qui consommeront ce rapport n’auront alors plus qu’a repositionner le slicer sur Show pour que le rapport s’actualise en fonction de leurs habilitations.

ReportDataTCD

 

 

 

 

2 réflexions sur “Comment publier dans SharePoint vos rapports Excel sans data ?

  1. Hello Frédéric,
    Pas si bizarre que cela, j’ai eu un peu même avec un outil sous Excel (comme XLCubed) qui génère des fichiers Excel qui sont filtrés à une dim, un user, etc..Et on a eu la bonne idée de rajouter des TCD, et là idem : lorsque le fichier est recalculé par rapport au filtre, les TCD gardent les données du dernier enregistrement et ne sont donc pas rafraichit…=> contournement avec une macro qui rafraichit chaque feuille avec TCD…🙂

    • Salut Rv,
      Heureusement que ces bonnes vieilles macros VBA sont là !
      Néanmoins il est toujours possible d’ouvrir un fichier sans exécuter les macros en maintenant la touche MAJ enfoncée lors du démarrage d’Excel.
      Je t’avouerai que je ne sais pas si ce comportement peut-être bypassé.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s