Choisir une expérience de modélisation tabulaire ou multidimensionnelle dans SQL Server 2012 Analysis Services Article technique Microsoft Business Intelligence Auteurs Conseil Hitachi : Liz Vitt - Auteur Scott Cameron - Auteur Hilary Feier - Relecteur Microsoft : T.K. Anand - Relecteur Ashvini Sharma - Relecteur Date de publication : mai 2012 S'applique à : SQL Server 2012 Analysis Services Résumé : ce livre blanc fournit une aide pratique aux professionnels et aux décideurs BI afin qu'ils puissent déterminer si la modélisation tabulaire ou multidimensionnelle SQL Server Analysis Services 2012 est le meilleur choix pour leur prochaine solution BI. Copyright Ce document est fourni « en l'état ». Les informations et les opinions exprimées dans ce document, y compris les adresses URL et les autres références à des sites Internet, peuvent faire l'objet de modifications sans préavis. Vous assumez tous les risques liés à son utilisation. Ce document ne vous concède aucun droit de propriété intellectuelle portant sur les produits Microsoft. Vous pouvez copier et utiliser ce document à titre de référence pour un usage interne. © 2012 Microsoft Corporation. Tous droits réservés. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 2 Sommaire Introduction ................................................................................................................................................... 5 Informations de base sur la modélisation BISM ............................................................................... 5 Modélisation multidimensionnelle ................................................................................................... 5 Modélisation tabulaire .......................................................................................................................... 6 Outils d'analyse clients BISM ................................................................................................................... 7 Modèle de données .................................................................................................................................... 7 Relations de données ............................................................................................................................ 7 Relations un-à-plusieurs .................................................................................................................. 7 Relations plusieurs-à-plusieurs...................................................................................................... 8 Relations de référence ...................................................................................................................... 8 Hiérarchies ................................................................................................................................................. 9 Hiérarchies standard.......................................................................................................................... 9 Hiérarchies déséquilibrées .............................................................................................................. 9 Hiérarchies parent-enfant................................................................................................................ 9 Fonctionnalités de modélisation supplémentaires ...................................................................10 Logique métier ...........................................................................................................................................12 Transformations au niveau des lignes ...........................................................................................12 Valeurs agrégées ...................................................................................................................................13 Calculs .......................................................................................................................................................13 Scénarios de logique métier .............................................................................................................15 Logique de hiérarchie .....................................................................................................................15 Cumuls personnalisés .....................................................................................................................15 Mesures semi-additives..................................................................................................................16 Time Intelligence ...............................................................................................................................17 Indicateurs de performance clés .................................................................................................17 Conversion monétaire.....................................................................................................................17 Jeux nommés .....................................................................................................................................17 Accès aux données et stockage............................................................................................................19 Performances et extensibilité ............................................................................................................19 Modèles multidimensionnels .......................................................................................................19 Modèles tabulaires ...........................................................................................................................20 Programmabilité ....................................................................................................................................22 Sécurité ..........................................................................................................................................................22 Sécurité au niveau de la ligne/de l'attribut ..................................................................................23 Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 3 Sécurité dynamique ..............................................................................................................................23 Sécurité au niveau de la cellule et sécurité avancée ................................................................23 Résumé ..........................................................................................................................................................24 Pour plus d'informations.........................................................................................................................29 Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 4 Introduction La modélisation des données est une discipline pratiquée depuis de nombreuses années par les professionnels BI, avec un objectif commun : organiser des données disparates dans un modèle analytique qui prend en charge de manière efficace et efficiente les besoins de reporting et d'analyse de l'entreprise. La modélisation des données a évolué au fil des années grâce à de nouvelles technologies et à de nouveaux outils. Or, les organisations doivent aujourd'hui relever un nouveau défi, à savoir, fusionner leurs paradigmes de modélisation de façon transparente et cohérente pour satisfaire les divers besoins d'analyse, mais aussi pour en rendre l'expérience homogène au sein de l'entreprise. Avec SQL Server 2012, Microsoft peut les aider à atteindre cet objectif grâce à l'introduction du modèle sémantique BI (BISM), un modèle unique qui prend en charge une vaste gamme de rapports et d'analyses tout en fusionnant deux expériences de modélisation Analysis Services en arrière-plan : La modélisation multidimensionnelle, introduite par les services OLAP SQL Server 7.0 et reprise dans SQL Server 2012 Analysis Services, permet aux professionnels BI de créer des cubes multidimensionnels complexes utilisant le traitement analytique en ligne traditionnel (OLAP). La modélisation tubulaire, introduite par PowerPivot pour Microsoft Excel 2010, fournit des fonctionnalités de modélisation des données libre-service aux analystes d'entreprise et de données. L'expérience de modélisation tabulaire est davantage accessible aux utilisateurs qui ont passé des années à exploiter des données à l'aide d'outils bureautiques tels qu'Excel et Microsoft Access. Dans SQL Server 2012, la modélisation tabulaire a été étendue pour permettre aux professionnels BI de créer des modèles tabulaires dans Analysis Services, ou d'importer un modèle tabulaire PowerPivot dans Analysis Services. Notez que le modèle PowerPivot ne peut pas être importé dans un modèle multidimensionnel Analysis Services. L'objectif de ce livre blanc est de vous aider à déterminer quelle expérience de modélisation SQL Server 2012 Analysis Services (tabulaire ou multidimensionnelle) convient le mieux à votre prochaine solution BI. Les descriptions et les recommandations de produits de ce document se réfèrent à SQL Server 2012 Analysis Services, disponible depuis mars 2012. Les caractéristiques du produit et les recommandations sont susceptibles de changer au fil de l'évolution de la modélisation multidimensionnelle ou tabulaire d'Analysis Services, dans les versions ultérieures de SQL Server. Informations de base sur la modélisation BISM Avant d'aborder de façon approfondie les différences entre la modélisation multidimensionnelle et la modélisation tabulaire, commençons par une brève présentation des expériences de modélisation BISM fournies par SQL Server 2012 Analysis Services. Modélisation multidimensionnelle Globalement, la modélisation multidimensionnelle crée des cubes composés de mesures et de dimensions basées sur les données contenues dans une base de données relationnelle. Pour utiliser ce paradigme, le serveur Analysis Services doit être configuré pour s'exécuter en mode multidimensionnel, sa valeur par défaut. Dans ce mode, le moteur OLAP utilise le modèle multidimensionnel pour préagréger d'importants volumes de données et garantir un temps de réponse à la requête rapide. Le moteur OLAP peut stocker ces agrégations sur un disque avec stockage OLAP multidimensionnel (MOLAP) ou dans la base de données relationnelle avec stockage OLAP relationnel (ROLAP). Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 5 Les principales caractéristiques de la modélisation multidimensionnelle sont les suivantes : Modèle de données enrichies - Le modèle multidimensionnel de SQL Server 2012 Analysis Services est à sa sixième version et fournit des fonctionnalités étendues aux mesures et aux dimensions à partir des datasets simples et complexes généralement disponibles dans les entrepôts de données de l'entreprise. Les datasets complexes comprennent généralement des fonctionnalités avancées telles que les relations plusieurs à plusieurs, les hiérarchies parent-enfant, et la localisation. Le modèle multidimensionnel fournit cette fonctionnalité prête à l'emploi. Analyse complexe - Le modèle multidimensionnel fournit également un calcul avancé et un langage de requête appelé MDX (Multidimensional Expressions). Avec MDX, vous pouvez créer une logique métier et des calculs complexes utilisables n'importe où dans l'espace multidimensionnel pour élaborer des dotations financières, des calculs de série chronologique, ou des mesures semi-additives. Bien qu'une modélisation des données complète et une analyse complexe constituent des avantages importants en matière de modélisation multidimensionnelle, elles comportent généralement des cycles de développement plus longs et peuvent être un obstacle lorsqu'il faut s'adapter rapidement à la conjoncture professionnelle. En outre, l'expérience multidimensionnelle tend à exiger des compétences de modélisation et MDX avancées. Modélisation tabulaire La modélisation tabulaire organise les données dans des tables associées. Si vous souhaitez utiliser la modélisation tabulaire, Analysis Services doit être configuré pour s'exécuter en mode tabulaire. En mode tabulaire, vous pouvez utiliser le moteur en mémoire (In-Memory) xVelocity (anciennement Vertipaq) pour charger les données tabulaires en mémoire et accélérer la réponse aux requêtes, ou vous pouvez utiliser DirectQuery pour passer les requêtes à la base de données source et exploiter les fonctions de traitement des requêtes. Les principales caractéristiques de la modélisation tabulaire sont les suivantes : Familiarité - Les données tabulaires sont familières à de nombreux publics qui utilisent régulièrement des tables stockées dans des bases de données relationnelles, Excel, ou Access. En outre, les calculs sont écrits en DAX (Data Analysis Expressions), un langage de formule considéré comme une extension du langage de formule Excel. De ce fait, les compétences nécessaires pour créer des modèles tabulaires sont davantage répandues ou plus faciles à acquérir par rapport aux compétences requises pour créer des modèles multidimensionnels. Souplesse - Étant donné que les données ne sont pas organisées de façon rigide dans des mesures et des dimensions, la modélisation tabulaire peut accélérer les cycles de développement, car elle nécessite moins de préparation des données en amont et moins de rigueur de conception que les modèles multidimensionnels. Cette architecture permet également de s'adapter plus facilement aux changements apportés à la modélisation des données, lorsqu'il faut mettre à jour les relations et les calculs en fonction des nouveaux besoins. Si la familiarité et la souplesse de la modélisation tabulaire sont des facteurs clés, elles présentent également des inconvénients. Par exemple, la modélisation tabulaire peut ne pas convenir pour les solutions comportant des datasets très complexes ou qui requièrent une logique métier sophistiquée. Les utilisateurs du langage DAX peuvent généralement créer des formules DAX pour fournir les fonctionnalités analytiques absentes dans le modèle tabulaire. Dans ces cas, toutefois, il peut être plus approprié et efficace d'utiliser les capacités avancées natives fournies par la modélisation multidimensionnelle. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 6 Outils d'analyse clients BISM Que vous choisissiez la modélisation multidimensionnelle ou la modélisation tabulaire, il est important de noter que vous pouvez utiliser des outils clients qui génèrent aussi bien le langage MDX que le langage DAX pour interroger le modèle. Excel et SQL Server Reporting Services sont des outils clients qui génèrent des requêtes avec MDX, et Power View est un outil client qui génère des requêtes avec DAX. Il y a deux exceptions à cette règle. Power View est un outil d'exploration et de visualisation des données interactif inclus dans le complément SQL Server 2012 Reporting Services pour Microsoft SharePoint Server 2010 Enterprise Edition. Si vous souhaitez utiliser Power View ou tout autre client d'analyse utilisant DAX pour interroger un BISM, vous devez utiliser un modèle tabulaire. Il est prévu que les versions ultérieures de SQL Server permettent d'utiliser DAX pour interroger des modèles MDX, afin qu'ils puissent être accessibles par un outil client comme Power View. Les modèles tabulaires qui ont été configurés pour utiliser DirectQuery requièrent un outil client qui génère les requêtes DAX, comme Power View. Il est prévu que dans les versions ultérieures de SQL Server, les modèles tabulaires configurés pour utiliser DirectQuery acceptent les requêtes MDX. Modèle de données Les caractéristiques de votre modèle de données sont essentielles pour déterminer le choix de votre expérience de modélisation. Relations de données Il est fondamental qu'un modèle de données représente correctement la façon dont les éléments de données qu'il contient sont corrélés et connectés, exactement comme pour les différentes pièces d'un puzzle. Les modèles tabulaires et les modèles multidimensionnels exigent que vous définissiez des relations entre vos tables de données sources. Les relations couramment utilisées dans la modélisation des données sont les relations un-à-plusieurs, plusieurs-à-plusieurs, et de référence. Relations un-à-plusieurs Dans une relation un-à-plusieurs, un enregistrement unique d'une table est lié à plusieurs enregistrements d'une autre table. Un exemple de relation un-à-plusieurs est un client qui a passé plusieurs commandes. Les modèles de données tabulaire et multidimensionnel gèrent en mode natif des relations un-à-plusieurs. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 7 Relations plusieurs-à-plusieurs Dans une relation plusieurs-à-plusieurs, plusieurs enregistrements d'une table sont liée à plusieurs enregistrements d'une seconde table. Par exemple, un client a une relation un-à-plusieurs avec les commandes ; toutefois, chaque client peut être classés en catégories dans un ou plusieurs profils de clientèle (par exemple : très sportif, sportif occasionnel ou amateur de fitness). L'analyse des commandes par profil de client peut s'avérer difficile lorsque des relations plusieurs-à-plusieurs existent, car une double classification peut se produire : La commande d'un vélo par un client qui est très sportif et amateur de fitness à la fois peut facilement être comptabilisée deux fois lorsque les commandes par profil de client sont additionnées pour obtenir les commandes totales. En général, les relations plusieurs-à-plusieurs sont gérées en les éclatant en deux relation un-à-plusieurs à l'aide d'un pont ou d'une table intermédiaire, comme l'illustre la figure 1. ID Client 1 … Nom du client Elizabeth Johnson … Table Client ID Client Commande client Montant des ventes 1 1 1 … S9100 S9101 S9102 … $ $ $ 4 000 2 500 7 000 … Table Commandes ID Client Profil de client 1 Sports Enthusiast Casual Gamer 1 Fitness Expert 1 … … Pont / Table intermédiaire pour attribuer le profil du client Figure 1 - Exemple de relation plusieurs-à-plusieurs Dans les modèles multidimensionnels, vous pouvez définir et créer des relations plusieurs-à-plusieurs directement dans le modèle de données, en identifiant la table pont, puis en la mettant en relation avec d'autres tables dans votre modèle. Lors de l'agrégation, Analysis Services applique une somme distincte pour garantir que les totaux sont correctement résumés et non gonflés de façon inappropriée. Les modèles tabulaires SQL Server 2012 Analysis Services ne prennent pas en charge la définition des relations plusieurs à plusieurs. Toutefois, vous pouvez utiliser le langage DAX pour créer des formules qui gèrent les difficultés liées à ces relations. Relations de référence Un modèle de données peut contenir un ensemble d'attributs communs liés à plusieurs entités. Par exemple, les attributs géographiques sont liés aux clients, aux fournisseurs et aux magasins. Dans la modélisation multidimensionnelle, vous devez créer une dimension qui contient les attributs usuels, puis créer des relations de dimension de référence sur chaque dimension associée. En modélisation tubulaire, il est inutile de créer des relations de référence. Dans un modèle tabulaire, il vous suffit de créer des relations entre la table qui contient les attributs usuels et les tables contenant les entités associées. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 8 Hiérarchies Les hiérarchies classent les données en structures d'arborescence pour faciliter l'exploration au niveau du détail. Hiérarchies standard Les hiérarchies standard se composent de niveaux classés provenant des colonnes de vos données sources. Par exemple, une hiérarchie de produit peut classer les produits en sous-catégories, qui peuvent ensuite être classées en catégories. Dans ce cas, vous avez une hiérarchie à trois niveaux, chaque niveau provient d'une colonne distincte dans vos données sources. Les hiérarchies simples, comme la hiérarchie de produit décrite ici, sont prises en charge dans les modèles tabulaires et dimensionnels à la fois. Notez que dans les modèles multidimensionnels, une étape supplémentaire est requise pour créer des relations d'attribut, afin d'identifier de façon explicite les relations un-à-plusieurs entre des attributs dans chaque dimension. Il est fortement recommandé de définir des relations d'attribut car elles permettent une conception plus efficace des agrégations précalculées, et car la sémantique MDX repose sur des relations d'attribut. La modélisation tabulaire est plus simple, car vous ne créez pas de relations d'attribut. Les modèles tabulaires ne précalculent pas les agrégations, et la sémantique DAX ne repose pas sur l'identification des relations un-à-plusieurs entre les attributs, c'est pourquoi, en modélisation tabulaire, il n'y a pas d'équivalent aux relations d'attribut de la modélisation multidimensionnelle. Hiérarchies déséquilibrées Les hiérarchies déséquilibrées se forment lorsqu'un élément de données spécifique n'est pas contenu dans l'arborescence hiérarchique. Par exemple, une hiérarchie de produit déséquilibrée se forme s'il y a des produits qui ne sont jamais classés dans une sous-catégorie, tout en ayant des affectations de catégorie de produit. Dans ce cas, plutôt qu'afficher l'écart dans l'arborescence, vous pouvez choisir de le masquer pour faciliter l'exploration au niveau du détail. Les modèles multidimensionnels prennent entièrement en charge les hiérarchies déséquilibrées, contrairement aux modèles tabulaires. Hiérarchies parent-enfant Les hiérarchies parent-enfant ont une structure hiérarchique plus complexe. Toutes les branches d'une hiérarchie parent-enfant n'ont pas le même nombre de niveaux. Par exemple, une relation parent-enfant entre un employé et un responsable peut produire une hiérarchie dans laquelle certains responsables ont uniquement des rapports directs, alors que d'autres responsables ont des rapports directs, qui ont à leur tour leurs propres rapports directs. Ce type de hiérarchie se forme en créant une relation entre deux colonnes dans une table de données sources, comme le montre la figure 2. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 9 Employé Employee Ken J. Sánchez Brian S. Welcker Amy E. Alberts Jae B. Pak David M. Bradley Kevin F. Brown Directeur Manager Ken J. Sánchez Ken J. Sánchez Brian S. Welcker Amy E. Alberts Ken J. Sanchez David M. Bradley Données sources parent-enfant Arborescence de la hiérarchie parent-enfant Figure 2 - Hiérarchie parent-enfant Les modèles multidimensionnels offrent des fonctionnalités prêtes à l'emploi qui vous permettent de définir et de créer des hiérarchies de type parent-enfant en fonction des relations dans vos données sources. Dans les modèles tabulaires, vous pouvez utiliser des fonctions DAX pour créer des formules qui parcourent et utilisent la structure parent-enfant dans les calculs. Pour plus d'informations sur l'utilisation des hiérarchies parent-enfant dans les modèles tabulaires, consultez Fonctionnement des fonctions pour les hiérarchies de type parentenfant dans DAX (http://msdn.microsoft.com/fr-fr/library/gg492192(v=sql.110).aspx). Fonctionnalités de modélisation supplémentaires Outre les relations et les hiérarchies de données, des fonctionnalités de modélisation supplémentaires peuvent vous aider à choisir la meilleure expérience de modélisation : Les perspectives permettent de définir un sous-ensemble d'un modèle de données pour simplifier l'exploration par les utilisateurs finaux. Les perspectives sont disponibles dans les modèles multidimensionnels et tabulaires à la fois. Dans les modèles multidimensionnels, les traductions permettent d'afficher la dimension, l'attribut, la mesure, le membre calculé, ainsi que d'autres noms d'objets et valeurs de membres de dimension, dans la langue spécifiée par les paramètres régionaux de l'ordinateur. Pour activer cette fonctionnalité, le développeur du modèle doit fournir des noms d'objets traduits et référencer les colonnes dans les données sources contenant les valeurs de membre de dimension traduites. Les modèles tabulaires ne fournissent pas cette fonctionnalité. Les actions permettent aux utilisateurs finaux d'exécuter un rapport Reporting Services, d'accéder à une URL, ou d'initier une opération externe en fonction du contexte de la cellule où l'action se produit. Par exemple, au moyen d'une action, un utilisateur peut lancer une page Web qui affiche le catalogue des produits d'une société automatiquement filtrés en fonction du ou des produits qu'il consultait. Les actions sont prises en charge en mode natif dans les modèles multidimensionnels, et de nombreux outils clients (comme Excel et Reporting Services) permettent aux utilisateurs d'effectuer des actions. Dans SQL Server 2012, la capacité de créer des actions dans un modèle tabulaire à l'aide de SQL Server Data Tools n'est pas prise en charge. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 10 L'extraction vous permet d'accéder aux données détaillées stockées dans votre modèle. Elle est disponible dans la modélisation multidimensionnelle et tabulaire. Les modèles multidimensionnels vous permettent également de créer des actions d'extraction, afin de personnaliser l'expérience d'extraction en spécifiant les colonnes qui sont retournées et l'espace du cube où l'action est activée. L'écriture différée est une fonctionnalité généralement requise dans les applications de gestion budgétaire et prévisionnelle. Dans ce cas, les utilisateurs professionnels souhaitent généralement effectuer une analyse de scénario, en mettant à jour des valeurs dans le modèle, puis en publiant le résultat pour que d'autres puissent le consulter. Les modèles multidimensionnels fournissent la prise en charge native de l'écriture différée des données. Dans SQL Server 2012, les modèles tabulaires ne prennent pas en charge cette fonctionnalité. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 11 Logique métier La logique métier peut apporter une valeur ajoutée énorme à un modèle de données, sous la forme de calculs et de règles d'entreprise qui améliorent les données pour que l'utilisateur final puisse les analyser. La modélisation tabulaire et la modélisation multidimensionnelle offrent des langages de formule enrichis pour implémenter la logique métier. La modélisation multidimensionnelle repose sur MDX, et la modélisation tabulaire sur DAX. Avant de passer aux scénarios de logique métier avancés de chaque paradigme, il est important de présenter généralement la façon dont la logique métier peut être appliquée à l'aide des transformations au niveau des lignes, des valeurs agrégées, et des calculs dans la modélisation multidimensionnelle ou tabulaire. Transformations au niveau des lignes Vous pouvez avoir besoin d'effectuer des calculs et de transformer les données qui ne sont pas disponibles d'emblée dans les données sources. Par exemple, vos données sources peuvent contenir une colonne Montant des ventes et une colonne Taux de change monétaire, mais la conversion du montant des ventes dans la devise étrangère peut manquer, ou bien, vos données sources peuvent contenir le prénom et le nom des employés mais ne pas fournir leur nom concaténé complet. Notez que dans ces exemples, le calcul ou la manipulation des données doit se produire au niveau de la ligne et des données non agrégées. En modélisation multidimensionnelle, les transformations au niveau des lignes sur les données non agrégées doivent être réalisées avant le chargement des données dans le modèle, ou lorsque le modèle est interrogé. Vous pouvez transformer des attributs de dimension, tels que les noms des employés, en appliquant la transformation dans le système de source de données, ou en écrivant une expression SQL qui est appliquée lorsqu'Analysis Services interroge la base de données source. Les transformations au niveau des lignes contenant des données numériques peuvent être effectuées à l'aide d'une expression SQL avant le chargement des données dans Analysis Services, ou elles peuvent être appliquées au moyen d'une expression MDX dans une instruction Scope, afin que le calcul soit appliqué au niveau de la ligne. Si la transformation est appliquée avant le chargement des données, Analysis Services peut préagréger les valeurs numériques. Si la transformation est appliquée au moyen d'une instruction Scope, l'agrégation se produit au moment de la requête. En modélisation tubulaire, les transformations au niveau des lignes sont créées à l'aide de colonnes calculées. Lorsque vous créez une colonne calculée, vous ajoutez la colonne à une table spécifique dans votre modèle, et vous utilisez des formules DAX pour définir les valeurs de la colonne. La formule est ensuite évaluée pour chaque enregistrement de cette table, et est chargée en mémoire tout comme n'importe quelle autre colonne du modèle. Cette souplesse vous permet d'améliorer vos données directement dans le modèle tabulaire en fonction de vos besoins d'analyse spécifiques, et réduit les modifications des sources de données en amont, qui peuvent ne pas être en mesure d'appliquer vos modifications en temps voulu. Les colonnes calculées sont un moyen très pratique de créer et conserver des calculs qui doivent être effectués à un niveau détaillé dans vos données, avant d'être agrégés. Bien qu'il s'agisse d'une flexibilité puissante, notez que les colonnes calculées ne sont pas destinées à nettoyer les données brutes ou à transformer celles générées par des processus d'extraction, transformation et chargement (ETL). Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 12 Valeurs agrégées En modélisation multidimensionnelle, vous utilisez des mesures pour créer des valeurs agrégées. Le moteur OLAP Analysis Services préagrège les mesures d'un cube en utilisant des fonctions d'agrégation telles que SUM, COUNT, MIN, MAX, DISTINCT COUNT, et bien d'autres. Pendant le traitement du cube, chaque mesure est agrégée de bas en haut entre toutes les hiérarchies. Étant donné que ce traitement a lieu avant l'analyse de l'utilisateur, les mesures préagrégées peuvent offrir d'énormes avantages pour les performances des requêtes. Lorsque vous créez une mesure dans le cube, il existe une relation un-à-un entre une mesure du cube et une colonne numérique de vos données sources. Ainsi, dans la modélisation multidimensionnelle, les mesures sont utiles lorsque vous devez procéder à une agrégation descendante des éléments de données numériques qui (1) existent dans vos données sources au niveau de détail le plus bas et (2) requièrent un cumul au moyen d'une des fonctions d'agrégation natives du cube. En modélisation tabulaire, vous utilisez aussi des mesures pour créer des valeurs agrégées. Vous créez une mesure en sélectionnant une colonne, puis en spécifiant la fonction d'agrégation (SUM, COUNT, DISTINCT COUNT, MIN, MAX ou AVERAGE), ou vous pouvez écrire une expression DAX qui spécifie la fonction à utiliser pour agréger la mesure. En modélisation tubulaire, les données au niveau des lignes sont stockées en mémoire et les agrégations sont calculées au moment de la requête. Comme expliqué dans la section suivante, en modélisation tabulaire, les mesures peuvent également être utilisées pour appliquer des calculs. Il peut s'agir de calculs basés sur plusieurs colonnes agrégées. Calculs En modélisation multidimensionnelle, vous utilisez le langage MDX pour créer des calculs. MDX est à la fois un langage d'expression et de requête comportant des fonctions qui comprennent d'emblée la conception des dimensions, des hiérarchies, des relations d'attribut, et des mesures d'un cube. Cette compréhension native permet de créer des expressions succinctes et puissantes qui appliquent la logique métier dans plusieurs contextes de données. Vous créez et enregistrez les calculs MDX dans le script de calcul du cube, où vous pouvez contrôler l'ordre dans lequel la logique est appliquée. Les membres calculés sont les calculs MDX les plus courants. Ils sont évalués au moment de la requête, une fois les données préagrégées. Les membres calculés peuvent être créés dans n'importe quelle dimension. Lorsqu'ils sont créés dans la dimension de mesures, ils sont souvent appelés mesures calculées. Les membres calculés peuvent être relativement simples, et comporter des opérations arithmétiques de base, telles que les ventes par unité (ventes/unité) ou la dépense par personne (dépense/personne). Ils peuvent également être plus complexes lorsque vous devez appliquer des règles d'entreprise spécifiques telles que le ratio des ventes moyennes sur 3 périodes ou la marge annuelle jusqu'à ce jour. Par exemple, si vous souhaitez calculer les ventes pour la période actuelle sous la forme d'un pourcentage de la période parente, vous pouvez utiliser le calcul MDX suivant. [Measures].[Sales Amount] / ([Date].[Calendar].CurrentMember.Parent,[Measures].[Sales Amount]) Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 13 Créer un membre calculé dans une dimension différente de la dimension de mesures ajoute une valeur à un attribut dans la dimension. Par exemple, si vous avez un attribut de dimension qui contient une liste de couleurs, vous pouvez ajouter le membre calculé Couleurs primaires qui additionnera les valeurs des couleurs rouge, vert et bleu. En modélisation tubulaire, la création d'une mesure est similaire à la création d'un membre calculé dans la dimension de mesures dans un modèle multidimensionnel. En modélisation tubulaire, vous ne pouvez pas ajouter une valeur à une colonne dans une table, par conséquent, la modélisation tabulaire ne prend pas en charge l'équivalent de la création d'un membre calculé dans une dimension différente de la dimension de mesures dans un modèle multidimensionnel. Les affectations d'étendue sont plus avancées que les mesures calculées, mais elles sont également plus puissantes. Comme indiqué dans la section « Transformation au niveau des lignes » plus haut, vous pouvez utiliser une instruction Scope afin que les calculs soient appliqués au niveau de la ligne. Toutefois, vous pouvez également utiliser une instruction Scope pour spécifier une plage de cellules du cube où vous souhaitez appliquer un calcul. Les affectations d'étendue sont compilées avant la requête et permettent à Analysis Services de fournir un chemin d'exécution optimisé lorsque le calcul est interrogé. Étant donné leur puissance, les affectations d'étendue peuvent non seulement effectuer le travail de plusieurs mesures calculées, mais elles sont aussi plus efficaces. Par exemple, dans une solution de gestion budgétaire, vous souhaitez que le budget de l'année suivante pour la région Est soit égal à 90 % du budget de l'année en cours. Vous souhaitez que le nouveau budget de la région Ouest soit égal à 75 % du budget de l'année en cours. Vous souhaitez que le nouveau budget de la région Sud soit égal à 105 % du budget de l'année en cours et que le nouveau budget de la région Nord soit le même que le budget de l'année en cours. Au lieu d'écrire une seule mesure calculée complexe avec des instructions IF imbriquées ou plusieurs mesures calculées qui isolent chaque scénario de budget individuellement, vous pouvez utiliser les affectations d'étendue pour appliquer efficacement ces ratios au niveau de la région, puis pour agréger les totaux de données. Par exemple, si vous souhaitez convertir le montant des ventes dans une devise étrangère avec les taux de change quotidiens, vous pouvez utiliser l'expression MDX suivante : Scope([Date].[Date]); This = [Measures].[Sales Amount] * [Measures].[Daily FX Rate]; End Scope; En modélisation tabulaire, vous utilisez le langage DAX pour créer des calculs. Comme mentionné précédemment, en modélisation tubulaire vous appliquez des calculs au niveau de la ligne en créant des colonnes calculées. Vous pouvez également appliquer les calculs lorsque vous créez une mesure, en entrant une expression DAX. Étant donné que vous utilisez explicitement une combinaison de fonctions DAX au niveau des lignes et de fonctions d'agrégation, les mesures dans les modèles tabulaires sont extrêmement flexibles. Vous pouvez appliquer des fonctions au niveau des lignes, puis appliquer une fonction d'agrégation afin que la mesure applique les calculs avant l'agrégation, ou vous pouvez appliquer des fonctions d'agrégation en premier lieu, puis appliquer les fonctions au niveau des lignes afin que la mesure applique les calculs après les agrégations. DAX peut évaluer de manière dynamique une formule dans des contextes de données différents (pas seulement la vue actuelle d'une feuille de calcul Excel ou un tableau croisé dynamique) grâce à un ensemble de fonctions spéciales, appelées des fonctions FILTER. Au sens large, ces fonctions ont le même objectif que les affectations d'étendue Analysis Services car elles vous permettent de définir et d'effectuer un calcul sur un ensemble de lignes. Par exemple, vous pouvez utiliser les fonctions FILTER pour traiter l'exemple de gestion budgétaire décrit précédemment. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 14 Scénarios de logique métier Maintenant que vous avez une idée de la façon de créer et d'appliquer la logique métier de base dans MDX et DAX, considérez les scénarios de calcul suivants pour comparer et évaluer les expériences de modélisation tabulaire et multidimensionnelle. Logique de hiérarchie Comme indiqué précédemment, les hiérarchies permettent aux utilisateurs professionnels de monter ou descendre dans la hiérarchie pendant l'analyse de données. Dans certains cas, il est utile de créer des calculs qui parcourent la hiérarchie. Par exemple, imaginez une dimension de produit comportant une catégorie de produit, une souscatégorie de produit, et le produit lui-même. Pour chaque niveau dans la hiérarchie, vous souhaitez ajouter un calcul qui mesure la façon dont les membres de chaque niveau contribuent au total des ventes du parent. Cela s'appelle un calcul de pourcentage du parent, étant donné qu'il doit parcourir la hiérarchie pour retourner la valeur souhaitée. MDX et DAX fournissent des fonctions pour travailler sur les données organisées dans une hiérarchie, et créer des calculs de pourcentage du parent ; toutefois, les fonctions MDX semblent plus simples et faciles à utiliser. Par exemple, dans MDX, c'est cette expression qui donne le pourcentage du parent dans la dimension Product. [Measures].[Sales Amount] / ([Product].[Product Categories].CurrentMember.Parent, [Measures].[Sales Amount]) Dans DAX, on utilise l'expression plus complexe qui suit pour créer le même calcul de pourcentage du parent. IF( ISFILTERED(Product[Product]) ,[Sales]/CALCULATE([Sales],ALL(Product[Product])) ,IF( ISFILTERED(Product[Subcategory]) ,[Sales]/CALCULATE([Sales],ALL(Product[Subcategory])) ,1 ) ) Cumuls personnalisés Bien qu'une somme des données uniforme soit applicable dans de nombreux scénarios, dans certaines situations, vous pouvez souhaiter exercer un contrôle plus précis sur le cumul de vos données. Par exemple, c'est le cas des modèles de finance où vous avez un graphique des comptes (généralement, dans un format parent-enfant) avec une logique de cumul spécifique requises pour chaque compte. Comme indiqué ici, pour calculer la marge brute (Gross Margin) on prend les ventes nettes (Net Sales) moins le coût total des ventes (Total Cost of Sales), et pour calculer le bénéfice d'exploitation (Operating Profit), on prend la marge brute (Gross Margin) moins les frais d'exploitation (Operating Expenses). Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 15 Les modèles multidimensionnels fournissent non seulement la prise en charge native des hiérarchies parent-enfant, mais également une intelligence comptable intégrée, qui vous permet d'appliquer facilement des opérateurs unaires et des formules MDX au niveau du compte, et de piloter le cumul de données. Dans les modèles tabulaires, l'intelligence comptable ou parent-enfant n'est pas intégrée, mais vous pouvez créer votre propre solution au moyen d'une combinaison de colonnes et de mesures calculées pour générer la hiérarchie parent-enfant et appliquer le cumul personnalisé. Mesures semi-additives De manière générale, les mesures semi-additives sont celles qui agrègent uniformément toutes les dimensions à l'exception de la date. Par exemple, le solde d'ouverture et le solde de clôture sont des mesures semi-additives. Pour ces mesures, vous devez appliquer une logique spéciale pour synthétiser correctement les données par période de temps. En effet, le solde du stock en cours du mois de mars n'est pas la somme du stock en cours de tous les jours du mois de mars. En outre, ce solde doit également fonctionner correctement pour tous les attributs de date, comme le trimestre et l'année. Par exemple, le solde du stock en cours du Trimestre 1 doit être le même que celui enregistré le 31 mars (en supposant que le 31 mars est le dernier jour du Trimestre 1). Les modèles multidimensionnels prennent directement en charge les mesures semiadditives avec des fonctions d'agrégation spéciales comme First Child, Last Child, FirstNonEmptyChild, et LastNonEmptyChild. Si ces fonctions d'agrégation ne répondent pas à vos besoins de logique spécifiques, vous pouvez également écrire des formules MDX personnalisées. Les modèles tabulaires proposent des fonctions similaires telles que ClosingBalanceMonth et OpeningBalanceMonth. Il existe des fonctions supplémentaires qui s'appliquent à tous les autres attributs de date, comme le trimestre et l'année. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 16 Time Intelligence Presque toutes les solutions BI que vous rencontrez requièrent l'assistant Time Intelligence. Les fonctions Time Intelligence permettent de calculer des résumés de l'année jusqu'à ce jour et des comparaisons avec l'année précédente. MDX et DAX fournissent des fonctions Time Series ; toutefois, chacune utilise une conception du modèle de données légèrement différente. Les modèles multidimensionnels fournissent des fonctions Time Intelligence prêtes à l'emploi au moyen de l'Assistant Analysis Services Business Intelligence. Avec cet Assistant, les calculs de temps peuvent être ajoutés à la création de la dimension de temps et appliqués à toutes les mesures du modèle. Bien que l'assistant ne soit qu'un moyen parmi d'autres de créer des calculs de temps, vous pouvez également écrire vos propres calculs MDX dans un modèle multidimensionnel. Dans les modèles tabulaires, bien qu'il n'y ait pas d'assistant de création de calculs Time Intelligence, vous pouvez les créer manuellement en créant des formules DAX qui exploitent plusieurs fonctions, dont TOTALMTD, TOTALYTD et SAMEPERIODSLASTYEAR. Indicateurs de performance clés Les indicateurs de performance clés (KPI) identifient les mesures spéciales que vous souhaitez surveiller par rapport à une valeur cible, au moyen d'un indicateur visuel tel qu'un feu rouge. Les modèles tabulaires et multidimensionnels prennent en charge l'un comme l'autre les indicateurs de performance clés. Les deux permettent d'affecter une cible pour une mesure et de comparer la valeur réelle à la cible pour évaluer l'état des performances de la mesure. Les modèles multidimensionnels permettent en outre d'évaluer la tendance de l'indicateur de performance clé et d'affecter un indicateur visuel distinct pour représenter la façon dont il évolue dans le temps. Conversion monétaire Les conversions monétaires permettent de convertir des données monétaires d'une ou plusieurs devises sources dans une ou plusieurs devises de déclaration. Par exemple, si les transactions de vente de votre organisation sont en EUR, en JPY et en USD, pour consolider la déclaration des ventes de l'ensemble de votre entreprise, vous devez convertir les transactions de vente dans une ou plusieurs devises de déclaration. Pour implémenter des conversions monétaires dans l'un des deux types de modélisation, vous devez avoir accès aux taux de change et inclure ces données dans votre modèle. Dans les modèles multidimensionnels, vous pouvez utiliser l'Assistant Analysis Services Business Intelligence pour créer des calculs de conversion monétaire MDX optimisés pour prendre en charge plusieurs sources et devises de déclaration. Dans un modèle tabulaire, vous pouvez créer votre propre solution de conversion monétaire en créant des formules DAX. Jeux nommés Dans la modélisation multidimensionnelle, les jeux nommés vous permettent de retourner un ensemble de membres de dimension fréquemment utilisés dans des applications de reporting. Par exemple, vous pouvez créer un jeu nommé pour retourner les 12 derniers mois. En créant ce jeu nommé dans votre cube, vous pouvez définir de manière centralisée la logique du jeu, pour accéder au jeu à partir de n'importe quelle application de reporting, et pour simplifier la logique enregistrée dans votre application de reporting. Pour créer le jeu nommé des 12 derniers mois (Last 12 Months), vous pouvez utiliser l'expression MDX suivante. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 17 Create Set CurrentCube.[Last 12 Months] As Max([Date].[Calendar].[Month]).Lag(11):Max([Date].[Calendar].[Month]) Les jeux nommés ne sont pas disponibles dans la modélisation tabulaire. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 18 Accès aux données et stockage Performances et extensibilité Les performances et l'extensibilité sont des facteurs importants qui doivent être considérés pour la réussite d'une solution BI. Chaque expérience de modélisation repose sur des technologies sous-jacentes différentes ; chacune a des caractéristiques de performances et des comportements distincts que vous devez comprendre pour choisir la solution de modélisation adéquate. Modèles multidimensionnels Comme indiqué précédemment dans ce livre blanc, les modèles multidimensionnels Analysis Services utilisent un moteur OLAP. Sur disque, les données OLAP peuvent être stockées dans les architectures de données MOLAP et ROLAP. Dans MOLAP, les données sont stockées sur le disque dans un format multidimensionnel optimisé, avec une compression 3x classique. Dans ROLAP, les données sont stockées dans la base de données relationnelle source. En matière de performances, il est généralement utile de distinguer : les performances des requêtes et les performances de traitement. Performance des requêtes Les performances des requêtes affectent directement la qualité de l'expérience de l'utilisateur. Par conséquent, il s'agit du benchmark principal utilisé pour évaluer la réussite d'une implémentation OLAP. Analysis Services fournit plusieurs mécanismes pour accélérer les performances des requêtes, notamment des agrégations, la mise en cache, et l'extraction de données indexées. En outre, vous pouvez améliorer les performances des requêtes en optimisant la conception de vos attributs de dimension, des cubes, et des requêtes MDX. L'option principale qui s'offre à vous pour optimiser les performances des requêtes est d'utiliser des agrégations. Une agrégation est un récapitulatif précalculé des données, utilisé pour améliorer les performances des requêtes dans les modèles multidimensionnels. Lorsque vous interrogez un modèle multidimensionnel, le processeur de requêtes Analysis Services décompose la requête en demandes pour le moteur de stockage OLAP. Pour chaque demande, le moteur de stockage tente d'abord de récupérer les données du cache du moteur de stockage en mémoire. Si aucune donnée n'est disponible dans le cache, il tente de récupérer les données d'une agrégation. Si aucune agrégation n'est présente, il récupère les données des partitions d'un groupe de mesures. En concevant des agrégations de données, vous identifiez le schéma d'agrégation le plus efficace pour votre charge de travail d'interrogation. Lorsque vous concevez des agrégations, vous devez tenir compte des avantages qu'elles offrent pour l'interrogation, et comparer cela au temps requis pour créer et actualiser les agrégations. En fait, ajouter des agrégations inutiles peut empirer les performances des requêtes, car si les correspondances sont rares, l'agrégation est déplacée dans le cache de fichier en risquant d'écraser ce qu'il contient. La mise en cache est tout aussi essentielle pour régler les performances des requêtes Analysis Services. Vous devez disposer de suffisamment de mémoire pour stocker toutes les données de dimension, et pour mettre en cache les résultats de la requête. Lors de l'interrogation, la mémoire est principalement utilisée pour stocker les résultats mis en cache dans le moteur de stockage et les caches du processeur de requêtes. Pour optimiser les avantages de la mise en cache, vous pouvez augmenter la réactivité de la requête en préchargeant les données dans l'un des deux caches ou dans les deux caches à la fois. Cette opération peut être effectuée avant l'exécution d'une ou plusieurs requêtes, ou en utilisant l'instruction de création du cache. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 19 Performances de traitement Le traitement est l'opération qui actualise les données d'une base de données Analysis Services. Plus les performances de traitement sont rapides, plus vite les utilisateurs peuvent accéder aux données actualisées. Analysis Services fournit plusieurs mécanismes pour optimiser les performances de traitement, notamment la conception efficace des dimensions, les agrégations, les partitions, et une stratégie de traitement économique (qui compare, par exemple, le traitement incrémentiel, l'actualisation complète et la mise en cache proactive). Vous pouvez utiliser les partitions pour séparer des données de mesure (généralement, les données de la table de faits) en unités physiques. Une utilisation efficace des partitions peut améliorer les performances des requêtes, les performances de traitement, et faciliter la gestion des données. Pour chaque partition, vous pouvez utiliser une conception d'agrégation et une planification de l'actualisation distinctes, ce qui peut optimiser considérablement les performances. Pour chaque table de faits, vous pouvez également associer les partitions MOLAP et ROLAP. Ce type de stratégie de partitionnement permet l'interrogation en temps réel, ou bien d'accéder à des jeux de données trop gros pour être traités dans un cube. Des techniques d'optimisation des requêtes et du traitement telles que celles-ci peuvent vous aider à mettre à l'échelle vos modèles multidimensionnels afin de gérer des téraoctets de données. Pour plus d'informations sur le réglage des performances, consultez Guide des performances d'Analysis Services 2008 R2 (http://sqlcat.com/sqlcat/b/whitepapers/archive/2011/10/10/analysis-services-2008-r2performance-guide.aspx). Modèles tabulaires Les modèles tabulaires utilisent le moteur d'analyse xVelocity, qui permet le traitement des données en mémoire, ou DirectQuery, qui transmet les requêtes à la base de données source pour exploiter les fonctions de traitement des requêtes. Les avantages des bases de données en colonnes et du traitement des données en mémoire sont équivalents. Les bases de données en colonnes autorisent une compression plus élevée que le stockage traditionnel, généralement une compression 10x, en fonction de la cardinalité des données. La cardinalité des données se focalise sur la caractérisation de la distribution des données au sein d'une colonne unique. Une cardinalité élevée signifie que les valeurs des données dans une colonne sont fortement uniques (par exemple, le nombre de clients). Une cardinalité faible signifie que les valeurs des données dans une colonne peuvent se répéter (par exemple, le sexe et l'état civil). Plus la cardinalité des données est faible, plus la compression est élevée, ce qui signifie que davantage de données peuvent tenir dans la mémoire à tout moment. Comme pour les modeleurs de données, il est important de comprendre la cardinalité de vos données pour déterminer les jeux de données qui conviennent mieux à votre modèle tabulaire, et les besoins de mémoire associés pour prendre en charge le modèle. Performances des requêtes Lorsqu'un utilisateur interroge un modèle tabulaire, le moteur exécute des analyses de mémoire pour récupérer les données et calculer les agrégations à la volée, sans besoin de traiter les E/S du disque. Cette approche peut considérablement améliorer les performances des requêtes sans nécessiter de paramétrage spécial, ni une gestion de l'agrégation. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 20 La façon la plus simple et adaptée d'optimiser les performances des requêtes pour les modèles tabulaires est d'augmenter la mémoire disponible. Du point de vue de l'extensibilité, le volume des données est essentiellement limité par la mémoire physique. Il est recommandé de disposer d'une mémoire suffisante pour contenir toutes les données dans votre modèle tabulaire. Dans les scénarios où la mémoire est limitée, le moteur en mémoire fournit également une pagination de base, selon la mémoire physique. De plus, il existe des paramètres de configuration côté serveur qui permettent de gérer plus précisément la mémoire disponible pour les modèles tabulaires. Pour plus d'informations sur la configuration de la mémoire du modèle tabulaire, consultez Propriétés de mémoire (http://msdn.microsoft.com/fr-fr/library/ms174514.aspx). Performances de traitement En ce qui concerne les performances de traitement, les modèles tabulaires se distinguent des modèles multidimensionnels de deux façons : Contrairement aux modèles multidimensionnels, les modèles tabulaires chargent les données directement dans la mémoire et ne requièrent pas l'écriture des données sur le disque. Étant donné que les modèles tabulaires ne catégorisent pas les données en dimensions et groupes de mesures, le traitement peut être beaucoup plus souple. Ces deux différences se traduisent par moins de surcharge à chaque actualisation des données, ce qui, à son tour, accélère le bouclage et augmente l'agilité. Prenons l'exemple suivant. Dans votre organisation, il est courant que les représentants se déplacent régulièrement dans plusieurs régions. Les utilisateurs souhaitent consulter les chiffres de vente cumulés par dernière région visitée et par affectation des représentants. Dans un modèle multidimensionnel, pour accomplir cette tâche, vous devez commencer par actualiser la dimension de l'organisation des ventes. Une fois la dimension commerciale actualisée, vous devez actualiser la partition du groupe des mesures de vente. L'actualisation de la partition des ventes met à jour les données et les agrégations détaillées. L'étape finale de la préparation des données (recommandée en tant que meilleure pratique) consiste à interroger le cache des requêtes Analysis Services pour récupérer les informations utiles sur le disque en mémoire. Selon votre conception de modèle de données, la taille des données, et la technique de traitement choisie (traitement incrémentiel ou complet), cela peut prendre plusieurs minutes ou plusieurs heures. La bonne nouvelle est qu'il existe plusieurs techniques ayant fait leurs preuves. Les professionnels BI les utilisent tous les jours pour optimiser l'empreinte du traitement des modèles multidimensionnels en équilibrant les besoins de traitement des données et les demandes de disponibilité des données. Examinons à présent le même scénario dans un modèle tabulaire. Dans le modèle tabulaire, les concepts de dimensions et de groupes de mesures n'existent pas. En revanche, les données sont organisées dans des tables qui possèdent des relations entre elles. Supposez que les données de l'organisation des ventes et les données de vente se trouvent dans leurs tables respectives et soient liées par une relation basée sur le représentant. Avec cette conception, lorsque vous actualisez la table d'organisation des ventes, elle met automatiquement à jour toutes les colonnes calculées, les relations, et les hiérarchies utilisateur impactées. Cela signifie que les données de vente reflètent automatiquement les cumuls par région actualisés, sans besoin d'être retraitées. Cette souplesse offre des avantages considérables lorsque vos dimensions changent rapidement et les données doivent refléter les dernières mises à jour. En outre, notez qu'avec les modèles tabulaires, il n'est pas nécessaire de créer des agrégations, d'écrire des données sur le disque, ou d'interroger le cache des requêtes pour obtenir les données en mémoire. Avec les modèles tabulaires, les données passent directement du disque à la mémoire et sont prêtes à l'emploi. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 21 Similairement aux modèles multidimensionnels, les modèles tabulaires vous permettent d'éclater les données de vos données en partitions, en évitant les traitements de données inutiles. Par exemple, vous pouvez diviser les tables en plusieurs partitions : une partition mensuelle pour chaque mois de l'année en cours, et une partition annuelle pour chacune des années précédentes. Cette approche permet d'isoler les partitions qui nécessitent une actualisation. Contrairement aux modèles multidimensionnels, notez que bien que vous puissiez traiter plusieurs tables en parallèle, vous ne pouvez pas traiter les partitions d'une seule table en parallèle. DirectQuery Comme alternative au mode en mémoire xVelocity des modèles tabulaires, les professionnels BI peuvent créer des modèles tabulaires à l'aide du mode DirectQuery. DirectQuery est disponible pour les modèles tabulaires avec des sources de données SQL Server. Il permet de contourner le traitement des données en passant les requêtes et les calculs DAX à la base de données source pour tirer parti des fonctionnalités de SQL Server. Cela peut s'avérer utile pour les grands volumes de données nécessitant une actualisation fréquente. Avec DirectQuery, toutefois, les colonnes calculées et certaines fonctions DAX ne sont pas prises en charge. Programmabilité AMO (Analysis Management Objects) est l'API de développement et de gestion des objets Analysis Services. Elle a été créée avant la modélisation tabulaire, puis ajoutée à Analysis Services. Par conséquent, elle contient uniquement les classes des objets traditionnellement associés à la modélisation multidimensionnelle : les cubes, les dimensions, les groupes de mesures, les scripts MDX, etc. Toutefois, cette API peut également être utilisée pour développer et gérer les modèles tabulaires. Il s'agit d'un avantage de la modélisation multidimensionnelle et tabulaire encapsulé par le modèle sémantique BI. Alors que les modèles tabulaires et dimensionnels ont une structure interne différente, BISM présente la même interface externe. Bien que vous puissiez utiliser AMO pour programmer des modèles tabulaires et multidimensionnels à la fois, il s'agit d'une interface moins intuitive pour les modèles tabulaires. Pour plus d'informations et un exemple de code AMO de modèle tabulaire, consultez Didacticiels sur Analysis Services (http://msdn.microsoft.com/fr-fr/library/hh231701.aspx) Sécurité Il est important de se doter d'une stratégie de sécurité des données appropriée pour garantir que chaque utilisateur a accès aux données appropriées. Les organisations doivent contrôler l'accès aux données afin d'assurer la sécurité de leurs ressources et se conformer aux règlements sur le respect de la vie privée. Les modèles multidimensionnels et les modèles tabulaires proposent un ensemble de fonctions robustes qui répondent à une vaste gamme d'exigences de sécurité. Il existe de légères variantes dans les fonctions, qu'il est important de comprendre avant de choisir l'expérience de modélisation la plus adaptée à vos besoins de sécurité. Dans Analysis Services, vous gérez des projets multidimensionnels et tabulaires en créant un rôle et en accordant des autorisations au rôle. Ensuite, vous ajoutez des noms d'utilisateur et des groupes Windows au rôle, leur accordant ainsi des accès en fonction des autorisations du rôle. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 22 Sécurité au niveau de la ligne/de l'attribut Dans un projet multidimensionnel, vous utilisez le concept de sécurité des données de dimension pour gérer l'accès au niveau de la ligne. Pour implémenter la sécurité des données de dimension pour un rôle, vous accordez ou refusez l'accès aux données de dimension en sélectionnant ou en désélectionnant des membres de la dimension. Par ailleurs, vous pouvez implémenter une configuration de sécurité plus complexe en définissant un jeu de membres à l'aide d'une expression MDX. Vous pouvez également indiquer si le rôle doit être accordé ou refusé aux nouveaux membres de la dimension. L'accès que vous accordez ou refusez à un membre de la dimension impacte l'accès d'un rôle aux membres associés de la dimension. Par exemple, si vous limitez un rôle de sorte qu'il ne puisse accéder qu'à la sous-catégorie de produit Vélos tout terrain, les membres du rôle peuvent uniquement consulter la catégorie de produit Vélos et les produits et les ventes qui appartiennent à la sous-catégorie Vélos tout terrain. Dans un projet tabulaire, vous implémentez la sécurité au niveau de la ligne en accordant l'accès aux lignes d'une table. Dans un projet tabulaire SQL Server Data Tools, vous accordez les autorisations en entrant une expression DAX qui filtre les lignes d'une table. Le rôle a accès aux nouvelles lignes de la table si elles correspondent au filtre DAX. L'accès que vous accordez à une ligne dans une table impacte l'accès d'un rôle aux lignes des tables associées. Si deux tables ont une relation un-à-plusieurs, les filtres de lignes sur la table du côté « un » de la relation filtrent les lignes de la table du côté « plusieurs » de la relation, mais pas dans l'autre sens. Par exemple, si vous limitez un rôle de sorte qu'il ne puisse voir que la ligne Vélos tous terrain dans la table de souscatégorie de produit, les membres du rôle peuvent uniquement voir les lignes des tables des produits et des ventes liées à la sous-catégorie Vélos. Toutefois, les membres du rôle peuvent toujours voir toutes les lignes de la table de catégories de produits (vélos, habillement, et ainsi de suite.). Sécurité dynamique Votre organisation peut être amenée à limiter l'accès aux données en fonction de l'ID d'un utilisateur ou d'autres critères dynamiques. Par exemple, les associés sont uniquement autorisés à voir leurs propres performances et leurs données RH. Toutefois, la création d'un rôle de sécurité pour chaque personne dans une entreprise peut s'avérer impossible. Au lieu de cela, vous pouvez implémenter la sécurité dynamique, qui permet de piloter la logique de sécurité en fonction de l'ID d'un utilisateur ou d'autres critères dynamiques. Les projets tabulaires et multidimensionnels prennent en charge la sécurité dynamique. Vous pouvez configurer une sécurité dynamique basée sur l'utilisateur si vos données contiennent une relation entre les ID d'utilisateur et les données auxquelles les utilisateurs peuvent accéder, en incluant la relation dans l'expression MDX ou DAX que vous utilisez pour gérer les autorisations. Sécurité au niveau de la cellule et sécurité avancée Pour de nombreuses applications, il est nécessaire de restreindre l'accès aux données avec des critères plus complexes qu'une simple ligne dans une table. Prenez, par exemple, une enquête de satisfaction des employés qui partage les résultats agrégés d'une enquête de rétroaction. Ces modèles contiennent souvent des données très sensibles, et chaque réponse à l'enquête doit rester confidentielle. Même si le modèle ne contient pas les noms des utilisateurs, si l'échantillon est restreint, l'identité des participants peut être facilement déduite. Dans ce cas, vous pouvez implémenter une logique plus complexe qui tient compte de la taille de l'échantillon, et donne accès à la mesure résultante uniquement si le nombre de réponses est supérieur à un certain seuil. En outre, il peut y avoir des questions et des combinaisons métriques spécifiques que vous souhaitez restreindre de sorte qu'elles ne soient visibles qu'aux RH. Les projets multidimensionnels vous permettent d'implémenter directement des fonctionnalités de sécurité avancées qui ne sont pas disponibles dans un projet tabulaire. Dans un projet multidimensionnel, vous pouvez implémenter la sécurité au niveau des cellules pour restreindre l'accès à une cellule ou à un groupe de cellules spécifique dans votre modèle. La sécurité au niveau des cellules n'est pas fournie dans un modèle tabulaire. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 23 En outre, les projets multidimensionnels vous permettent de contrôler l'utilisation des valeurs totales affichées, d'accorder ou de refuser l'autorisation d'explorer des données au niveau du détail, et de créer des membres par défaut pour chaque rôle. Dans un projet multidimensionnel, les valeurs de synthèse préagrégées sont calculées lorsque les données sont traitées dans un modèle pour améliorer les temps de réponse des requêtes. Par exemple, la valeur « Ventes de tous les produits » est une valeur précalculée. La sécurité des données de la dimension est appliquée après le traitement des données, par conséquent, même si un utilisateur ne peut accéder qu'à la catégorie Vélos, par défaut, la valeur « Ventes de tous les produits » est la somme des ventes pour Accessoires, Vélos, Habillement, et ainsi de suite. Il peut s'agir ou non de la valeur que vous souhaitez afficher pour les membres du rôle. Dans ce cas, si vous souhaitez que la valeur « Ventes de tous les produits » soit limitée à la valeur « Ventes de vélos », vous devez activer les valeurs totales affichées. En activant les valeurs totales affichées, vous limitez les valeurs de synthèse, de sorte qu'elles doivent être égales à la somme des valeurs de détail qu'un rôle a l'autorisation de voir. Cette modification affecte le temps de réponse des requêtes, car les valeurs de synthèse doivent être calculées au moment de la requête. Les projets tabulaires ne précalculent pas les valeurs de synthèse, par conséquent, ces dernières sont toujours égales à la somme des valeurs de détails, autrement dit, les valeurs totales affichées sont toujours activées dans un modèle tabulaire. Dans un modèle multidimensionnel, vous pouvez accorder l'autorisation d'exploration au niveau du détail rôle par rôle. Dans un modèle tabulaire, les rôles ne sont pas utilisés pour contrôler l'accès à la fonction d'extraction. En revanche, tous les rôles peuvent explorer les valeurs au niveau du détail. Dans un modèle multidimensionnel, vous pouvez spécifier un membre par défaut pour chaque attribut dans une dimension. Un membre par défaut se comporte comme un filtre qui est appliqué automatiquement. Par exemple, si le membre par défaut de la valeur Année est 2012, alors par défaut, seules les données de 2012 s'affichent. Toutefois, un utilisateur peut choisir de consulter les données d'une année différente, ou d'afficher les données de toutes les années. Dans un modèle multidimensionnel, vous pouvez configurer un membre par défaut pour chaque attribut qui s'applique à tous les rôles, ou bien définir un membre par défaut différent rôle par rôle. Vous ne pouvez pas spécifier une valeur par défaut dans un module tabulaire. En revanche, si vous souhaitez un filtre par défaut, vous devez configurer cette fonction dans votre outil de reporting et d'analyse. Résumé Dans SQL Server 2012, Microsoft a introduit le modèle sémantique Business Intelligence (BISM) pour prendre en charge une vaste gamme de besoins de reporting et d'analyse. Les deux expériences de modélisation contenues dans le modèle BISM, la modélisation multidimensionnelle et la modélisation tabulaire, offrent des fonctionnalités supplémentaires qui vous permettent de choisir les fonctions les mieux adaptées à vos besoins. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 24 La modélisation tabulaire propose une expérience de modélisation facile d'accès, avec des fonctions qui satisferont la plupart des besoins de reporting et d'analyse. La plupart des utilisateurs savent utiliser des tables et des relations et apprennent rapidement à implémenter la logique métier au moyen du langage DAX, apparenté à Excel. Cette facilité d'utilisation, ainsi que la modélisation simple et souple offerte par l'expérience tabulaire, permettent de développer rapidement les solutions. Le moteur en mémoire et orienté colonne xVelocity offre un temps de réponse aux requêtes extrêmement rapide pour des jeux de données qui peuvent contenir des milliards d'enregistrements. Les modèles tabulaires prennent en charge tous les outils de reporting et d'analyse qui génèrent les requêtes MDX, comme Excel et Reporting Services, ainsi que Reporting Services Power View, qui génère les requêtes DAX. La modélisation multidimensionnelle propose des fonctions étendues pour vous aider à relever les défis BI plus complexes et à grande échelle. Le modèle de données multidimensionnel associé à MDX fournit des fonctionnalités prêtes à l'emploi pour la création de modèles élaborés, et l'implémentation d'une logique métier complexe. Le stockage des données sur disque, les agrégats précalculés, et la mise en cache dans la mémoire, permettent aux modèles multidimensionnels de monter en charge jusqu'à plusieurs téraoctets et fournissent des réponses rapides aux requêtes. Avec la sécurité au niveau des cellules, vous pouvez répondre à des exigences de sécurité rigoureuses. En résumé, la modélisation tabulaire propose une expérience de modélisation simplifiée, avec des fonctions susceptibles de satisfaire la plupart de vos besoins de reporting et d'analyse. Si vous avez besoin d'une modélisation, d'une logique métier, ou d'une sécurité complexes, ou si vous cherchez une solution à très grande échelle, la modélisation multidimensionnelle est probablement mieux adaptée à vos besoins. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 25 Le tableau suivant résume et compare les caractéristiques des modèles multidimensionnels et tabulaires. Groupe de fonctions Critère de décision Temps d'implémentation Courbe d'apprentissage Multidimensionnel/ Tabulaire / / Modèle de données Relations des données Modèle de données Hiérarchies Modèle de données Fonctionnalités de modélisation supplémentaires Langage de calcul Logique métier Logique métier Logique métier / / Calculs / / / Fonctions d'agrégation / Modélisation multidimensionnelle Temps d'implémentation plus long. Modélisation tabulaire Temps d'implémentation plus court. L'apprentissage de la modélisation dimensionnelle et du langage MDX est plus ardu, mais ces solutions fournissent des fonctions complexes en mode natif. Un-à-plusieurs. Plusieurs-à-plusieurs. Les relations de référence doivent être explicitement modélisées. La modélisation relationnelle et le langage DAX apparenté à Excel sont plus simples à aborder mais si vos besoins sont complexes, des expressions DAX sophistiquées seront requises. Un-à-plusieurs. La relation plusieurs-à-plusieurs requiert des expressions DAX. La modélisation des relations entre les tables crée des relations de référence. Prise en charge native pour les hiérarchies standard. Les hiérarchies parent-enfant requièrent des expressions DAX. Perspectives et extractions Prise en charge native pour les hiérarchies standard, déséquilibrées, et parent-enfant Perspectives, traductions, actions, extractions, procédures stockées et écriture différée. MDX Prise en charge native des calculs courants et complexes. Sum, Count, Min, Max, Distinct Count, None, ByAccount, AverageOfChildren, FirstChild, LastChild, FirstNonEmpty et LastNonEmpty. DAX Prise en charge native des calculs courants et de nombreux calculs complexes. Sum, Count, Min, Max, Average, DistinctCount, et différentes fonctions Time Intelligence comme FirstDate, LastDate, OpeningBalanceMonth et ClosingBalanceMonth. Groupe de fonctions Logique métier Critère de décision Logique de hiérarchie Multidimensionnel/ Tabulaire Modélisation multidimensionnelle Fonctions d'exploration des hiérarchies standard et parent-enfant. / Logique métier Logique métier Indicateurs de performance clés Conversion monétaire Accès aux données et stockage Accès aux données et stockage Montée en charge Accès aux données et stockage Accès aux données et stockage Sources de données / / / Performances / Réel, objectif, état et tendance, avec des indicateurs graphiques Prise en charge de la conversion multidevise à l'aide de l'Assistant Business Intelligence. Très grande échelle (plusieurs téraoctets) Index et mesures préagrégées stockés sur le disque. Données de la dimension et résultats des requêtes mis en cache dans la mémoire. Compression de données d'environ 3x. Bases de données relationnelles. / Langage de requête / MDX Modélisation tabulaire Fonctions DAX pour explorer les hiérarchies de type parent-enfant, expressions DAX pour implémenter la logique dans les dimensions standard. La logique de hiérarchie est généralement plus difficile avec DAX. Réel, objectif et état avec des indicateurs graphiques. Implémentation à l'aide d'expressions DAX. Grande échelle (des milliards d'enregistrements) Stockage des données basé sur la colonne, en mémoire. Compression de données d'environ 10x. Bases de données relationnelles, Excel, texte, flux OData, Azure Data Market, Analysis Services. DAX MDX (mode In-Memory uniquement) Groupe de fonctions Accès aux données et stockage Critère de décision Stockage de données Multidimensionnel/ Tabulaire / Accès aux données et stockage Accès aux données et stockage Compression des données / Programmabilité Sécurité Sécurité / / - Moins de fonctions. - Plus de fonctions. Modélisation tabulaire In-Memory - Toutes les données mises en cache dans la mémoire utilisent le moteur d'analyse orienté colonnes xVelocity DirectQuery - Données stockées dans SQL Server 2012. ROLAP - Dimensions, faits et données agrégées stockés dans une base de données relationnelle. Généralement 3x. Généralement 10x. Excel Services, Reporting services, Microsoft PerformancePoint, et d'autres outils clients. Reporting Services Power View, Excel, Reporting Services, PerformancePoint, et d'autres outils clients. / Outils clients Accès aux données et stockage Modélisation multidimensionnelle MOLAP - Dimensions, faits et données agrégées stockés sur le disque. Données de la dimension et résultats des requêtes mis en cache dans la mémoire. Reporting Services Power View pris en charge dans les futures versions de SQL Server. XMLA, ASSL, ADOMD.NET, MSOLAP, AMO, Windows PowerShell pour AMO. Développée pour être utilisée avec les modèles multidimensionnels. Sécurité au niveau des membres de la dimension et au niveau de la cellule Sécurité dynamique. XMLA, ASSL, ADOMD.NET, MSOLAP, AMO, PowerShell pour AMO. Disponible mais moins intuitive dans les modèles tabulaires. Sécurité au niveau des lignes Sécurité dynamique. Pour plus d'informations Site Web SQL Server http://www.microsoft.com/sqlserver/ TechCenter SQL Server http://technet.microsoft.com/fr-fr/sqlserver/ Centre de développement SQL Server http://msdn.microsoft.com/fr-fr/sqlserver/ Blog de l'équipe Analysis Services et PowerPivot http://blogs.msdn.com/b/analysisservices/ Analysis Services http://msdn.microsoft.com/fr-fr/library/bb522607.aspx Modélisation multidimensionnelle (SSAS) http://msdn.microsoft.com/fr-fr/library/hh230904.aspx Modélisation tabulaire (SSAS Tabulaire) http://msdn.microsoft.com/fr-fr/library/hh212945.aspx Fonctionnalités par mode de serveur ou par type de solution (SSAS) http://msdn.microsoft.com/fr-fr/library/hh212940(v=sql.110).aspx Avez-vous trouvé ce document utile ? Nous apprécions vos commentaires. Sur une échelle de 1 (faible) à 5 (excellent), quelle note donneriez-vous à ce document ? Expliquez pourquoi. Par exemple : Avez-vous attribué une bonne note car le document fournit de bons exemples, contient des captures d'écran très utiles, est clairement rédigé, ou pour d'autres raisons ? Avez-vous attribué une mauvaise note car le document fournit de mauvais exemples, contient des captures d'écran pas claires ou est mal rédigé ? Vos commentaires nous aident à améliorer la qualité des livres blancs que nous publions. Envoyez vos commentaires. Choisir un paradigme de modélisation des données dans SQL Server 2012 Analysis Services 29