mardi 9 décembre 2014

Désactiver le drillthrough natif d'Excel

Désolé pour ceux que SSAS ne passionne pas, car j'ai tendance à écrire beaucoup d'articles à son sujet (au-delà des billets pseudo-philosophiques sous couvert de journal personnel ;  mais c’est vrai que je commence à apprécier le fait de raconter ma vie : peut-être le plus court chemin vers mon futur compte Facebook, avec mon lot d’amis que je n’ai pas vu depuis 10 ans, dont le parcours de leur vie intime m’est maintenant rendu possible,  me prendra certes un peu de temps, mais assouvira mon voyeurisme débridé que nous pouvons tous maintenant conscientiser sans rougir en prétextant qu’étant donné que tout le monde le fait, pourquoi pas moi).

Pour en revenir à notre sujet, il existe plusieurs possibilités pour empêcher les utilisateurs d’Excel d’utiliser le « drillthrough » natif : celui qui permet par un double-clic sur la cellule d’accéder aux données fines. Est-il encore utile de préciser que cette action n’est pas rendue possible sur les membres calculés ? Visiblement oui (dédicace à qui vous savez).
Le moyen le plus propre c’est de le gérer via les rôles de sécurité, en positionnant le paramètre « Local Cube/Drillthrough Access » à « None » situé sous l’onglet « Cube ». Attention à la multiplicité des rôles auxquels peuvent appartenir vos utilisateurs.


Le second moyen, moins pratique à mettre en œuvre, se situe directement dans Excel, dans les options de votre tableau croisé dynamique, sous l’onglet Données (« Data »), en décochant la case Activer l’affichage des détails (« Enable show details »). On pourra le paramétrer à l’ouverture d’Excel.

Le dernier moyen, très sale, mais qui de ce fait me fait marrer,  consiste en la création d’une action dans votre cube, de type « drillthrough », et d’utiliser dans les colonnes à afficher, des dimensions qui ne recoupe jamais le même groupe de mesure. Il ne faut pas oublier de passer le paramètre « Default » à « True » afin que cette action se substitue au « drillthrough » par défaut. L’utilisateur aura alors un message d’avertissement lui spécifiant qu’un certain attribut se situe en dehors de la granularité d’un certain groupe de mesure. Pourquoi en arriver là ? Parce qu’il arrive que l’on n’ait pas le droit de toucher aux politiques de déploiement d’Excel ou, encore moins compréhensible, aux rôles SSAS, par ce que ce qui a été mis en place est trop complexe, trop coûteux à corriger  (oui, oui, ça arrive). Dans ce cas, il reste cette troisième option.

De ces éléments découle naturellement une seconde question : pourquoi vouloir désactiver le « drillthrough » ? Tout simplement parce que des utilisateurs mal informés peuvent décider d’afficher le CA au global (une seule cellule donc) et de faire malencontreusement un double clic dessus. Et là, même si le « drillthrough » se limite à un top 1000 par défaut, sur des bases SSAS volumineuses, je peux vous garantir que cela va vous poser un problème. J’ai personnellement planté un AS de production avec cette action : à ce moment, l’instance consommait les 128 Go de RAM. Excel offre la possibilité d’annuler la requête en cours, mais cela n’a aucun effet si le « Storage Engine » en est déjà à tenter de remonter les données depuis le disque : la requête sera effectivement annulée dans Excel mais l’instance continuera de travailler dessus. Dans ce cas, la seule solution est de tuer la session via un ordre XMLA Cancel (cf les templates de SSMS).


Malgré tout, il faut garder à l’esprit que les rôles de sécurité et des actions de « drillthrough » correctement définis sont la meilleure manière de faire.

Aucun commentaire:

Publier un commentaire