Archives pour décembre 2008

Consolider des catégories dans un graphe de rapport

29 décembre 2008

Dans un graphe sous Reporting Services, on souhaite souvent consolider les catégories non significatives en une seule catégorie, souvent appelée « autres« , tout en gardant les catégories les plus importantes.

Avec la version 2008 de Reporting Services c’est désormais possible sans avoir à faire une gymnastique compliquée et contre performante dans la requête. En effet, les nouveaux composants de graphes incorporent cette fonctionnalité. Malheureusement elle n’est disponible que sur les graphes de type camemberts (secteurs).

Cette fonctionnalité est un peu difficile à trouver. Il faut en effet sélectionner la série, afficher les propriétés et modifier les Custom Attributes et changer les attributs CollectedStyle et CollectedThreshold. Dans Visual Studio, on trouve ces propriétés dans la Property Grid. Dans Rebord Builder, il fauda passer par le menu Affichage pour afficher la Property Grid qui n’est pas accessible par défaut.

Dans notre exemple, on consolide tout ce qui est inférieur à 20% dans « Autres »

 

Si vous trouvez intéressant que cette fonctionnalité soit étendue aux autres types de graphes, n’hésitez pas à voter sur Connect : https://connect.microsoft.com/SQLServer/feedback/ViewFeedback.aspx?FeedbackID=389944

Azure, Kilimanjaro, Gemini, Madison, la gestion des données en 2010

28 décembre 2008

SQL Server 2008 est à peine sorti que Microsoft dévoile la prochaine roadmap pour la gestion des données et le décisionnel.

On peut certes être dérouté par ces annonces que l’on peut qualifier de prématurées. Mais l’un des messages associé à la sortie de SQL Server 2008 fut une cassure dans le rythme des releases avec des fonctionnalités plus autonomes et par l’occasion plus fréquentes.

C’est dans cette lignée que s’inscrivent les annonces faites lors de la dernière BI Conference à Seattle ou à la dernière PDC à Los Angeles.

 

L’annonce phare est Kilimanjaro, la prochaine version de SQL Server, prévue pour 2010. Cette version considérée comme « mineure » ne verra pas de changement dans les différents moteurs (SQL, OLAP, etc.) mais des améliorations pour l’utilisateur et dans la gestion des serveurs.

Cette release se focalise aussi sur des avancées dans le domaine du décisionnel ; entre autres, 2 projets ont été présentés : Gemini et Madison.

 

Gemini est un module lié à Excel, qui permet de traiter efficacement, en mémoire, plusieurs millions de lignes de données. Destiné aux utilisateurs finaux, il rapproche la Business Intelligence des clients. En plus d’être un add-in à Excel, Gemini est aussi une formidable opportunité d’introduire la puissance d’Analysis Services dans le monde des utilisateurs d’Excel, estimés à plusieurs centaines de millions, comme a essayé de le faire Performance Point avec ProClarity.

 

Madison est un projet qui vient de l’acquisition de DATAllegro par Microsoft cet été et qui marque d’une pierre blanche l’ambition de ce dernier à pénétrer le marché des très gros volumes. Madison est la solution pour paralléliser les requêtes sur une batterie de serveurs, permettant une montée en charge plus importante.  Madison devrait se présenter sous la forme d’un module additionnel et est prévu en même temps que Kilimanjaro.

 

Côté relationnel, c’est plutôt vers Azure que se tourne l’avenir. En deux mots, Azure est la proposition de Microsoft en terme de Cloud Computing. C’est globalement une nouvelle vision du développement d’applications, très orientée services, sur une solution d’hébergement en haute disponibilité avec montée en charge proposée par Microsoft.  Dans cet univers, le stockage de données prend une place importante avec 2 briques : SQL Services et Azure Table Storage.

 

SQL Services est l’équivalent de SQL Server mais hébergé sur le « Cloud ». Actuellement, seule la brique relationnelle (SQL Data Services) est disponible en beta. Elle permet de stocker des entités relationnelles, accessibles de n’importe où via SOAP ou REST. Pour l’instant, cette brique est très limitée en termes de fonctionnalités mais devrait s’enrichir dans les mois à venir pour devenir une vraie base de données online, incluant même des modules décisionnels de datawarehousing, de reporting et d’analyse.

Rassurons nous, SQL Services n’a pas vocation à remplacer le traditionnel SQL Server (cf. Kilimanjaro) mais complète l’offre de Microsoft et ouvre de nouvelles perspectives comme le paiement à l’utilisation, plus économique pour de nombreux clients.

 

Azure Table Storage s’appuie techniquement sur les « tables » de SQL Data Services. La différence est sur la richesse fonctionnelle. Azure Table Storage est très limité (pas de jointures par exemple) et répond à des petits besoins en stockage de données. A ne pas en douter, la différence s’en ressentira  sur le prix des licences, qui, soit dit en passant, reste la grande interrogation sur l’univers Azure.

 

Evidemment, en cette fin d’année 2008, toutes ces informations sont à tempérer car les différentes phases de développement redéfiniront peut-être les modalités de mise en œuvre de ces ambitions. Rendez-vous début 2009 pour la première CTP de Kilimanjaro et les prochaines annonces sur Azure.

 

J’espère que ce petit article vous apporte des réponses sur la stratégie de Microsoft pour les années à venir. L’équipe de consultant de Bewise son à votre disposition pour compléter ces éclairages et vous présenter plus en détail ces nouvelles technologies.

Nouveautés de SQL Server 2008

27 décembre 2008

Il y a quelques mois je publiais un article sur les nouveautés de SQL Server 2008 sur le magazine (papier) Programmez.

Cet article présente brièvement les nouvelles fonctionnalités et les améliorations de SQL Server 2008, avec quelques exemples de code.

Son intérêt est qu’il est facile d’accès et quasi exhaustif. Je m’en sers moi même comme pense-bête (oui, j’ai une cervelle de moineau ;-) ).

J’ai mise cet article à disposition sur le site de Bewise et donc à la disposition de tous. Comme d’habitude, n’hésitez pas à le commentez, vos retours sont les bienvenus.

http://www.bewise.fr/article/114/Les-nouveautes-de-SQL-Server-2008.aspx

Quelques extraits choisis :

[...]

SPARSE columns : le concept de Sparse columns représente les colonnes à faible densité comme par exemple les attributs d’un contact dans une base de CRM qui peuvent être très nombreux et pourtant très peu renseignés. Le fait d’indiquer à SQL Server que ces attributs doivent être stockés dans des colonnes de type SPARSE permet de gagner l’espace normalement occupé par les valeurs nulles. Ce gain n’est pas temps pour le stockage mais pour la manipulation des données qui s’en trouve améliorée du fait d’avoir moins d’octets à lire.

CREATE TABLE dbo.ClientCRM (
ClientID int NOT NULL IDENTITY (1, 1),
Nom varchar(50) NOT NULL,
Poids int SPARSE NULL,
Yeux varchar(50) SPARSE NULL,
Taille numeric(3, 2) SPARSE NULL)

Les sparses columns s’utilisent aussi avec la notion de Columns Set qui permet de récupérer ou d’insérer plus facilement des jeux de colonnes disposant d’une valeur sans avoir à les manipuler toutes explicitement.

[...]

Compression des données : SQL Server 2008 supporte la compression des données à tous les niveaux. Nous l’avons vu avec les backups mais il est aussi possible de compresser directement les données d’une table, d’une partition ou d’un index.
On a du mal à classer cette fonctionnalité dans la catégorie performance car compression est synonyme de consommation processeur. On attend plus souvent de ce genre de fonctionnalité de gagner de l’espace disque. On en gagne certes mais là où la compression apporte est dans l’exécution des requêtes car on doit lire moins de données sur le disque, ce qui est un des principaux nerfs de la guerre de la performance. A utiliser néanmoins avec discernement…

CREATE TABLE Contact
(id int, fullname nvarchar(50) )
WITH (DATA_COMPRESSION = PAGE); 

Resource Governor : cette fonctionnalité est une des plus attendues dans SQL Server. Le Resource Governor permet de gérer finement l’utilisation du serveur (CPU, mémoire). Fini les requêtes qui monopolisent toutes les ressources. On peut assigner des limitations et des plans de charge aux différentes connexions ou applications. Ainsi, on peut faire en sorte qu’une application critique dispose d’un maximum de puissance de traitement et que des petites applications soient moins prioritaires.

[...]

Nouveautés de Analysis Services

Améliorations des performances globales : dans cette version 2008 de SSAS, Microsoft a cherché à beaucoup optimiser les performances de son moteur multidimensionnel. L’objectif est ambitieux : supporter des DataWarehouse de 100To de données en lieu et place des 25 supportés avec la version 2005. De nombreuses optimisations dans le calcul des agrégats et la gestion des cubes abondent en ce sens.

Notion de bonnes pratiques : une nouvelle fonctionnalité aussi appelée « alertes AMO » apparaît dans Business Intelligence Studio. De la même façon que le correcteur orthographique de Word, elles soulignent les éléments qui ne respectent pas les bonnes pratiques de modélisation et méritent réflexion. Ces avertissements sont débrayables ponctuellement ou définitivement.

[...]

 

Microsoft Connect

25 décembre 2008

Un petit billet pour présenter (ou rappeler à ceux qui connaissent déjà) le programme Connect de Microsoft. Ce programme regroupe de plusieurs choses dans l’écosystème Microsoft :

  • les programmes beta (CTP, TAP, etc.) : c’est ici qu’on l’on s’inscrit pour tester et suivre les futurs produits, certains sont sur invitation ou réservés aux MVP et autres privilégiés
  • les feedbacks sur les produits : c’est un des canaux de communication pour remonter des bugs ou des sugestions à Microsoft

Je vais parler de ce second point car il est très important. En effet, j’entends souvent « râler » auprès de telle ou telle fonctionnalité ou produit qui ne marche pas, qui marche mal, qui ne marche pas comme il faudrait, qui n’est pas ergonomique, etc. Quoiqu’on en pense, Microsoft est une société qui écoute beaucoup ses clients et ses communautés. Le débat n’est pas de savoir s’ils le font bien ou mal ; au moins, ils le font et, ma foi, le font intelligement.

Bref, pour tous ceux qui trouveront qu’on ne les écoute pas suffisamment, on peut donc remonter ses doléances auprès de l’éditeur via Connect, sous la forme de bugs ou de suggestions. Un système de pétition permet de se joindre à une demande, qui prend ainsi plus de poids. Microsoft classe ensuite ces remontées, voire propose des solutions de contournement. Evidemment, tout n’est pas  »accepté » mais certaines demandes se voient ajoutées aux releases suivantes.

Soyons acteurs dans l’amélioration des produits Microsoft. Allez sur https://connect.microsoft.com/

Pour ma part, je suis inscrit à de nombreuses connexions dont, évidemment, SQL Server. Voici la liste de mes remontées. Il y en a peu à ce jour…car moi aussi je râlais dans mon coin ;-)

Bugs

Suggestions

 

PS : ce n’est pas dans mon habitude de mettre à jour des billets au fil du temps mais je maintiendrai celui-ci par la suite.

Sécurité de Report Builder 2.0 – Permissions minimums

25 décembre 2008

Report Builder 2.0 est un outil fantastique pour l’utilisateur final (j’y reviendrai très prochainement avec un Webcast). Il nécessite néanmoins un peu de préparation de la part de l’administrateur Reporting Services afin de donner les bons droits aux utilisateurs sans ouvrir les vannes.

Je décris ici les permissions minimums à accorder aux utilisateurs de Report Builder et quelques bonnes pratiques afin d’éviter le syndrome « Je mets tout le monde Administrateur« .

Quelques mots sur la sécurité

Sans faire tout un article sur la sécurité de Reporting Services, il faut savoir qu’elle est basée sur des rôles donnant accès aux différentes tâches élémentaires de Reporting (afficher un rapport, créer un répertoire, etc.). Pour autoriser des utilisateurs, on leur assigne un ou plusieurs rôles.

Deuxième point important à intégrer, la sécurité est héritée ; c’est à dire que l’affectation à un rôle au niveau racine se propage à tous les niveaux enfants. On peut bien évidemment casser cette sécurité pour une branche donnée de l’arborescence. D’ailleurs, une première bonne pratique est de sécuriser plus fortement le niveau racine et d’affecter des droits de plus en plus fins en descendant dans l’arborescence.

My Reports

Parmi les fonctionnalités de Reporting Services, il existe la notion de « My Reports » qui permet à chaque utilisateur d’avoir un répertoire privé dans lequel il peut créer et modifier des rapports, visibles que de lui (et de l’administrateur). Cette fonctionnalité, qui s’active depuis Management Studio (clic droit->Propriétés), semble idéale pour nos utilisateurs finaux. Le souci est qu’il faut donner des droits sur le répertoire racine pour atteindre ce répertoire spécial, rendant visible du coup les autres répertoires et éléments du niveau racine et des niveaux en héritant (cf. la bonne pratique évoquée ci-dessus). 

Le seul compromis possible est de créer un rôle spécifique pour le dossier racine permettant de ne voir que les dossiers et de casser l’héritage de sécurité pour tous les sous-niveaux.

Que l’on utilise ou pas la fonctionnalité « My Reports » (moi je préfère créer un répertoire de travail fixe pour tous les utilisateurs d’un même service/groupe), il va falloir associer nos utilisateurs aux bons rôles. A notre disposition, nous avons les rôles suivants :

  • My Reports : donne tous les droits nécessaire à la création/modification de rapports (attention, à ne mettre QUE sur le répertoire My Reports)
  • Report Builder : permet de voir et d’ouvrir des rapports existants (+ les abonnements mais ce n’est pas le sujet)

Pour moi, le premier est trop permissif et le second ne permet pas la modification. Rappelons que le but pour l’utilisateur final est de pouvoir créer ses propres rapports ou bien modifier un rapport existant (j’ai souvent des demandes de mises en page pour lesquelles je n’ai pas de valeur ajoutée en tant que consultant). En plus, il va falloir gérer des points importants comme les droits sur les modèles et sources de données ainsi que la prévisualisation…

Ma solution

Je vais vous livrer ma solution à la problématique de droits minimums pour l’utilisateur final.

  1. Je mets l’utilisateur dans le rôle « Report Builder » au niveau racine afin qu’il puisse naviguer et ouvrir les rapports existants. Je prends soin de casser l’héritage de sécurité pour des répertoires sensibles (souvent les RH).
  2. Je crée un répertoire de validation afin que les utilisateurs puissent enregistrer leur travail (création ou modification). Je mets l’utilisateur dans le rôle « Publisher » afin qu’il puisse sauvegarder.
    J’utilise cette notion de répertoire de validation afin d’éviter les erreurs de manipulation et qu’un utilisateur ne corrompe un rapport existant.
  3. Je donne les droits en lecture sur les sources de données. Le rôle « Report builder » permet d’accèder aux modèles de données mais pas aux sources de données, ce qui est gênant dans un cadre multidimensionnel. J’ajoute donc la tâche « View data sources » dans le rôle « Report Builder » (voire je crée un nouveau rôle juste pour cela).
    J’affecte ce rôle au répertoire contenant les sources de données pour une création de rôle dédié ou bien à toute l’arborescence, ce qui a déjà été fait dans l’étape 1.

  4. Il reste un droit à donner à l’utilisateur : ExecuteReportDefinition pour permettre la prévisualisation directement dans Report Builder. Ce droit fait partie du rôle système (au niveau serveur) System User. Comme je ne veux pas affecter ce rôle à mes utilisateurs finaux, je crée un rôle système spécifique, ne contenant que ce droit.

Voila, notre utilisateur final peut installer Report Builder 2.0 (et le Framework 3.5 SP1) et vous n’avez qu’à lui configurer le Report Server par défaut et préparer les modèles et sources de données partagées.

Il ne reste plus qu’à désigner un utilisateur référant pour déplacer les rapports du répertoire de validation vers leur emplacement définitif. Le rôle Publisher est adéquat pour ce travail même si je préfère en créer un plus limité (qui n’aura pas d’accès aux modèles et sources de données).