Définition d'attributions d'étendue à l'aide de commandes de scripts
Dans les tâches des deux rubriques précédentes de cette leçon, vous avez appris à ajouter des membres calculés et des calculs de jeu nommé au script de calcul d'un cube. En plus de ces deux types spécifiques de calculs MDX (Multidimensional Expressions), vous pouvez aussi utiliser l'outil Nouvelle commande de script pour effectuer presque toutes les actions dans un cube pris en charge par MDX.
Dans Microsoft SQL Server 2005 Analysis Services (SSAS), les scripts MDX peuvent s'appliquer soit au cube tout entier, soit à des sections spécifiques du cube, à des points spécifiques de l'exécution du script. Vous avez déjà fait connaissance avec la commande de script par défaut, l'instruction CALCULATE, qui remplit les cellules du cube avec des données agrégées en fonction de l'étendue par défaut.
L'étendue par défaut est le cube tout entier, mais comme indiqué dans la rubrique précédente, vous pouvez utiliser l'instruction SCOPE pour définir une étendue plus limitée, qu'il est convenu d'appeler un sous-cube, puis appliquer un script MDX seulement à cet espace particulier du cube. L'instruction SCOPE définit l'étendue de toutes les expressions et instructions MDX suivantes dans le script de calcul jusqu'à ce que l'étendue actuelle soit terminée ou redéfinie. L'instruction THIS est ensuite utilisée pour appliquer une expression MDX à l'étendue actuelle. Vous pouvez utiliser l'instruction BACK_COLOR pour spécifier une couleur de cellule d'arrière-plan pour les cellules de l'étendue actuelle, afin de faciliter le débogage.
Les tâches de cette rubrique vont consister à utiliser les instructions SCOPE et THIS pour définir les quotas de vente pour chaque trimestre de l'année fiscale. Vous allouerez ensuite les quotas de vente au niveau des mois pour toutes les années fiscales dans le cube. Vous apprendrez également à utiliser des points d'arrêt pour faciliter le débogage du script de calcul.
Examen des allocations de quotas sur le montant des ventes chronologiquement et par employé
Pour examiner les allocations de quotas sur le montant des ventes chronologiquement et par employé
Ouvrez le Concepteur de cube pour le cube du didacticiel de Analysis Services, puis cliquez sur l'onglet Navigateur.
Supprimez toutes les hiérarchies et toutes les mesures du volet Données et tous les membres de dimension du volet Filtre.
Ajoutez la mesure Sales Amount Quota à partir du groupe de mesures Sales Quotas à la zone des données du volet Données.
Ajoutez la hiérarchie Fiscal Time définie par l'utilisateur à la colonne.
Ajoutez la hiérarchie multiniveau Employee Name à la zone de lignes.
Notez qu'aucune valeur de quota de ventes n'a été définie pour l'année fiscale 2005.
Dans la zone de colonnes, supprimez FY 2002 et FY 2003.
Dans la zone de colonnes, développez successivement FY2004, H1 FY 2004, puis Q3 FY 2004.
Remarquez que le quota sur le montant des ventes pour chaque mois fiscal du trimestre fiscal est égal au quota sur le montant des ventes pour le trimestre fiscal tout entier. Ceci est dû au fait que, dans le groupe de mesures Sales Quota, le trimestre est la plus petite subdivision dans la dimension chronologique, comme l'a expliqué la leçon 5.
L'image suivante montre le quota de ventes pour chaque employé qui a un quota de ventes pour chaque mois du quatrième trimestre de l'année fiscale 2004.
Définition de l'étendue du calcul du quota sur le montant des ventes pour l'année fiscale 2005
Dans cette tâche, vous allez examiner l'étendue actuelle, la modifier, puis définir un calcul qui détermine les valeurs de quota sur le montant des ventes pour l'année fiscale 2005 en fonction des valeurs pour l'année fiscale 2004.
Pour définir l'étendue du calcul du quota sur le montant des ventes pour l'année fiscale 2005
Sélectionnez l'onglet Calculs, puis sélectionnez Mode Formulaire dans la barre d'outils.
Dans le volet Organisateur de script, sélectionnez Large Resellers, puis cliquez sur Nouvelle commande de script dans la barre d'outils de l'onglet Calculs.
Notez qu'un script vide apparaît dans le volet Expressions de calcul et que cette commande de script est affichée avec un titre vide dans le volet Organisateur de script.
Dans le volet Expressions de calcul, tapez l'instruction suivante :
/* Changing Scope to All or Default Member */ SCOPE (ROOT())
Cette instruction SCOPE définit comme nouvelle étendue du cube le membre All, ou membre par défaut, pour tous les attributs du cube.
Cliquez sur Nouvelle commande de script dans la barre d'outils de l'onglet Calculs, puis tapez l'instruction suivante dans le volet Expressions de calcul :
/* Defining the cube scope for the sales amount quotas for FY2005 */ SCOPE ()
Observez qu'un trait rouge sinueux apparaît sous la parenthèse finale, pour indiquer que vous devez définir un jeu de membres entre les parenthèses pour l'instruction SCOPE. Vous allez commencer par ajouter la mesure Sales Amount Quota à l'instruction SCOPE afin d'inclure cette mesure dans l'étendue.
Sous l'onglet Métadonnées du volet Outils de calcul, développez Mesures, Sales Quotas, puis faites glisser la mesure Sales Amount Quota et placez-la entre les parenthèses pour l'instruction SCOPE dans le volet Expressions de calcul.
Observez que le trait rouge sinueux disparaît. Ensuite, vous allez ajouter le membre de dimension FY 2005 à l'instruction SCOPE pour ajouter ce membre de dimension chronologique à l'étendue actuelle.
Sous l'onglet Métadonnées du volet Outils de calcul, développez successivement Date, Fiscal, Fiscal Time, Fiscal Year, puis faites glisser le membre FY 2005 dans l'instruction SCOPE dans le volet Expressions de calcul immédiatement après le membre [Sales Amount Quota] du jeu que vous définissez.
Observez le trait rouge sinueux sous la partie [Date] de ce nouveau membre du jeu. Ce trait vous informe de la présence d'une erreur de syntaxe immédiatement avant ce membre de dimension, parce qu'une virgule est nécessaire pour séparer les membres du jeu à l'intérieur de l'instruction SCOPE.
Ajoutez la virgule nécessaire avant la partie [Date] du membre FY 2005 de la dimension Date.
Observez que le trait rouge sinueux initial disparaît. Ensuite, vous allez ajouter les membres de la hiérarchie définie par l'utilisateur Employees dans la dimension Employee à l'instruction SCOPE pour ajouter ces membres à l'étendue actuelle.
Sous l'onglet Métadonnées du volet Outils de calcul, développez Employee et faites glisser la hiérarchie définie par l'utilisateur Employees dans l'instruction SCOPE dans le volet Expressions de calcul immédiatement après le membre [Date].[Fiscal Time].[Fiscal Year].&[2005] du jeu que vous définissez.
Observez le trait rouge sinueux sous la partie [Employee] de ce nouveau membre de ce jeu, qui indique qu'une virgule est nécessaire pour séparer les membres du jeu à l'intérieur de l'instruction SCOPE.
Ajoutez la virgule nécessaire avant la partie [Employee] du nouveau membre.
Observez que le trait rouge sinueux initial disparaît.
À la fin du membre [Employee].[Employees] de ce jeu à l'intérieur de l'instruction SCOPE, ajoutez la clause suivante pour terminer la définition de ce troisième membre du jeu :
.Members
Cette clause spécifie que tous les membres de la hiérarchie Employees dans la dimension Employee doivent être inclus dans l'étendue actuelle du cube.
Vérifiez que votre instruction SCOPE achevée correspond au script suivant :
SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Time].[Fiscal Year].&[2005], [Employee].[Employees].Members)
Vous achevez ainsi la définition d'étendue qui crée le sous-cube auquel vous allez appliquer une expression MDX pour calculer le quota du montant des ventes pour Fiscal Year 2005.
Dans la barre d'outils de l'onglet Calculs, cliquez sur Mode Script, puis examinez les commandes de script que vous venez d'ajouter.
Notez que chaque commande de script apparaît telle que vous l'avez tapée dans le volet Expressions de calcul, mais qu'un point-virgule lui a été ajouté à la fin. Remarquez également que le commentaire précédant chaque commande de script en facilite la compréhension, comme le montre l'image suivante.
Définition et test du calcul du nouveau quota sur le montant des ventes pour l'année fiscale 2005
Dans cette procédure, vous allez ajouter une nouvelle commande de script au script de calcul afin de calculer le quota sur le montant des ventes pour l'année fiscale 2005 pour tous les membres de la dimension Employee. Toutefois, au lieu d'ajouter la commande de script dans le mode Formulaire, vous allez l'ajouter directement dans le mode Script. En mode Script, veillez à séparer les commandes de script par des points-virgules.
Pour définir et tester le calcul du nouveau quota sur le montant des ventes pour l'année fiscale 2005
Dans le mode Script, tapez les instructions suivantes sur une nouvelle ligne à la fin du script de calcul :
/* Applying a calculation to the subcube */ THIS = [Date].[Fiscal Time].[Fiscal Year].&[2004] * 1.25;
L'instruction THIS alloue une nouvelle valeur à la mesure Sales Amount Quota à l'intersection du membre Employee et du membre FY 2005 du sous-cube. La nouvelle valeur est basée sur la valeur qui existe pour l'intersection du membre Employee et de la mesure Sales Amount Quota dans Fiscal Year 2004 multipliée par 1,25.
Dans le volet Expressions de calcul, cliquez dans la marge à gauche de l'instruction THIS pour définir un point d'arrêt.
Notez qu'un point rouge apparaît dans cette marge et que l'instruction est mise en surbrillance en rouge, comme le montre l'image suivante. Lorsque vous exécutez ce projet en mode débogage, les modifications de votre projet sont déployées vers votre instance de Analysis Services, le cube est traité et le script de calcul s'exécute jusqu'à la rencontre du point d'arrêt. Vous pouvez ensuite exécuter en pas à pas les scripts restants, un par un. Si vous exécutez le projet en mode débogage sans avoir défini de point d'arrêt, le script de calcul s'interrompt dès le premier calcul, l'instruction CALCULATE.
Dans le menu Débogage, cliquez sur Démarrer le débogage (ou appuyez sur la touche F5).
Le projet est déployé et traité, et le script de calcul s'exécute jusqu'à la rencontre du point d'arrêt.
Masquez toutes les fenêtres ancrées pour fournir une plus grande surface pour afficher le volet Tableau croisé qui apparaît en bas de l'onglet Calculs.
Le volet Tableau croisé s'affiche pour faciliter le débogage, comme le montre l'image suivante.
Dans le volet Tableau croisé, ajoutez la mesure Sales Amount Quota à la zone de données, ajoutez la hiérarchie définie par l'utilisateur Date.Fiscal Time à la zone de colonnes, puis ajoutez la hiérarchie d'attributs Employee Name à partir de la dimension Employee à la zone de lignes.
Observez que le membre FY 2005 du niveau Fiscal Year pour la mesure Sales Amount Quota pour chaque employé ne contient aucune valeur dans la zone de données pour la mesure Sales Amount Quota, comme le montre l'image suivante. Par défaut, les cellules vides sont affichées dans le volet Tableau croisé en mode débogage.
Appuyez sur F10 pour exécuter l'instruction THIS et calculer le quota sur le montant des ventes pour l'année fiscale 2005.
Remarquez que les cellules du volet Tableau croisé à l'intersection de la mesure Sales Amount Quota, du membre de dimension FY 2005 et du membre Employee Name sont maintenant calculées. Remarquez aussi que les cellules affectées par l'instruction THIS sont sélectionnées en jaune. Une icône de barre d'outils permet d'activer ou de désactiver la mise en surbrillance des cellules modifiées. Par défaut, les cellules modifiées sont mises en surbrillance.
Dans le volet Tableau croisé, supprimez FY 2002, FY 2003, et FY 2004 de la zone de colonnes.
Cliquez avec le bouton droit n'importe où puis cliquez sur Afficher les cellules vides pour supprimer la coche en regard de cette option et masquer toutes les cellules vides (cette option est aussi disponible sur la barre d'outils de l'onglet Calculs). Ainsi, il est plus facile de voir tous les employés qui ont des valeurs de quota sur le montant des ventes, comme le montre l'image suivante.
Dans le volet Tableau croisé, développez FY 2005 dans la zone de colonnes.
Remarquez que vous ne pouvez pas développer FY 2005 parce que les valeurs pour les membres H1 FY 2005 à l'intersection de la mesure Sales Amount Quota et de la hiérarchie d'attribut Employee Name n'ont pas été calculées (parce qu'elles se trouvaient en dehors de l'étendue actuelle).
Pour voir les cellules vides pour les valeurs des membres H1 FY 2005, cliquez n'importe où dans le volet Tableau croisé et cliquez sur Afficher les cellules vides dans la barre d'outils de l'onglet Calculs, ce qui affiche toutes les cellules vides, comme le montre l'image suivante.
Dans le menu Débogage, cliquez sur Arrêter le débogage (ou appuyez sur MAJ-F5).
Supprimez le point d'arrêt du script de calcul en cliquant dessus dans la marge gauche.
Allocation de quotas sur le montant des ventes aux semestres et aux trimestres de l'année fiscale 2005
Dans cette procédure, vous allez modifier l'étendue pour inclure les membres des semestres fiscaux de l'année fiscale 2005 au lieu du membre de l'année fiscale 2005 et vous allouerez la moitié du quota sur le montant des ventes pour l'année fiscale 2005 à chaque semestre de l'année fiscale 2005. Vous modifierez ensuite l'étendue pour inclure les membres des trimestres fiscaux de l'année fiscale 2005 au lieu du membre de l'année fiscale 2005, puis allouerez un quart du quota sur le montant des ventes pour l'année fiscale 2005 à chaque trimestre de l'année fiscale . Pour finir, vous testerez ces allocations.
Pour allouer des quotas sur le montant des ventes aux semestres et aux trimestres de l'année fiscale 2005
Dans le mode Script du volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :
/* Allocation of Sales Amount Quota to the 2005 Fiscal Semesters */ SCOPE ( [Date].[Fiscal Semester].[Fiscal Semester].Members );
Cette instruction SCOPE est une instruction SCOPE imbriquée parce qu'aucune instruction END SCOPE n'apparaît entre cette instruction SCOPE et l'instruction SCOPE précédente. Une instruction SCOPE imbriquée hérite l'étendue du parent pour les attributs dont l'étendue n'est pas redéfinie. L'instruction SCOPE précédente ne modifie directement ni la mesure Sales Amount Quota, ni la hiérarchie définie par l'utilisateur Employees et ni la hiérarchie définie par l'utilisateur Fiscal Time. Au lieu de cela, elle ajoute chaque membre de la hiérarchie d'attribut Fiscal Semester à la définition du sous-cube (à l'aide de la fonction Members). Pour plus d'informations, consultez Members (Set) (MDX). De l'instruction imbriquée SCOPE, il résulte que l'espace du cube contient maintenant tous les membres qui sont à l'intersection du membre Employee et de la mesure Sales Amount Quota dans un semestre fiscal de Fiscal Year 2005 (il n'y a actuellement qu'un seul semestre fiscal dans Fiscal Year 2005 dans le cube).
Dans le volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
Cette instruction alloue à chaque semestre fiscal dans l'espace de cube défini la valeur calculée pour le trimestre fiscal. La fonction CurrentMember.Parent est utilisée pour allouer à chaque membre un quart de la valeur de son parent. Pour plus d'informations, consultez CurrentMember (MDX) et Parent (MDX).
Dans le volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :
/* Allocation of Sales Amount Quota to the 2005 Fiscal Quarters */ SCOPE ( [Date].[Fiscal Quarter].[Fiscal Quarter].Members );
Cette instruction SCOPE est aussi une instruction SCOPE imbriquée parce qu'aucune instruction END SCOPE n'apparaît entre cette instruction SCOPE et l'instruction SCOPE précédente. L'instruction SCOPE précédente ne modifie directement ni la mesure Sales Amount Quota, ni la hiérarchie définie par l'utilisateur Employees et ni la hiérarchie définie par l'utilisateur Fiscal Time. Au lieu de cela, elle ajoute chaque membre de la hiérarchie d'attribut Fiscal Quarter à la définition du sous-cube (à l'aide de la fonction Members). Il en résulte que l'espace du cube contient maintenant tous les membres qui sont à l'intersection du membre Employee et de la mesure Sales Amount Quota dans un semestre fiscal de Fiscal Year 2005 (il n'y a actuellement qu'un seul semestre fiscal dans Fiscal Year 2005 dans le cube).
Dans le volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 2;
Cette instruction alloue à chaque trimestre fiscal dans l'espace de cube défini la valeur calculée pour le trimestre fiscal. La fonction CurrentMember.Parent est utilisée pour allouer à chaque membre la moitié de la valeur de son parent.
Dans le volet Expressions de calcul, cliquez dans la marge à côté de l'instruction SCOPE finale pour définir un point d'arrêt, puis appuyez sur la touche F5.
Le script de calcul s'exécute jusqu'à la rencontre du point d'arrêt.
Cliquez n'importe où dans la zone des données du volet Tableau croisé, puis cliquez sur Afficher les cellules vides dans la barre d'outils de l'onglet Calculs pour masquer les cellules vides.
Remarquez que le volet des données est rempli avec les mêmes mesures et hiérarchies que celles que vous avez utilisées lors du dernier passage à travers le débogueur, et que la valeur pour le membre H1 FY 2005 (qui est égale à la moitié de la valeur de son parent) a été calculée, comme le montre l'image ci-après.
Enfin, notez que la valeur pour chaque membre FY 2005 est recalculée en fonction de l'agrégation de ses membres, qui dans ce cas se limitent au premier semestre fiscal de l'année fiscale. La valeur du membre Fiscal Year 2005 est influencée par le calcul pour le membre Fiscal Semester 2005 parce que chaque script s'exécute en tant que passage distinct. Pour figer une valeur existante de sorte qu'elle ne soit pas influencée par les instructions suivantes du script de calcul, utilisez l'instruction FREEZE. Pour plus d'informations, consultez Instruction FREEZE (MDX).
Dans la zone de colonnes, développez H1 FY 2005.
Remarquez que la valeur pour le membre Q1 FY 2005 n'a pas encore été calculée.
Cliquez n'importe où dans la zone des données du volet Tableau croisé, puis cliquez sur Afficher les cellules vides dans la barre d'outils de l'onglet Calculs.
Dans la zone de colonnes, développez Q1 FY 2005.
Remarquez qu'aucune valeur n'est allouée aux deux mois du premier trimestre de Fiscal Year 2005 parce que ces membres ne se trouvent pas encore dans l'étendue du sous-cube actuel (jusqu'à ce que les deux dernières instructions du script soient exécutées). La dimension chronologique dans le cube du didacticiel Analysis Services ne contient que les deux premiers mois de Fiscal Year 2005. Par conséquent, il n'y a aucun membre Q2 FY 2005.
Appuyez sur la touche F10 pour exécuter l'instruction SCOPE et appuyez sur la touche F10 de nouveau pour exécuter l'instruction finale du script de calcul, ce qui applique le calcul au sous-cube actuel.
Remarquez que la valeur pour le membre Q1 FY 2005 est calculée, et que les valeurs des membres H1 FY 2005 et FY 2005 sont recalculées (par agrégation de leurs membres enfants), comme le montre l'image suivante. Observez également que la valeur pour chaque mois fiscal de Fiscal Year 2005 (juillet et août 2005) n'est pas calculée. Dans la procédure suivante, vous allez allouer des valeurs appropriées à chaque trimestre.
Dans le menu Débogage, cliquez sur Arrêter le débogage (ou appuyez sur MAJ-F5).
Supprimez le point d'arrêt dans le script de calcul.
Allocation de quotas sur le montant des ventes à des mois
Dans cette procédure, vous allez modifier l'étendue pour inclure le niveau du mois fiscal dans toutes les années fiscales (les instructions SCOPE précédentes limitaient les calculs à l'année fiscale 2005). Ensuite, vous allez allouer à chaque mois fiscal un tiers de la valeur du trimestre fiscal pour le quota sur le montant des ventes de chaque employé.
Pour allouer des quotas sur le montant des ventes à des mois
Dans le volet Expressions de calcul, ajoutez les instructions suivantes sur une nouvelle ligne à la fin du script de calcul :
/* Allocate Quotas to Months */ SCOPE ( [Date].[Fiscal Time].[Fiscal Month].Members );
Cette instruction SCOPE est une nouvelle instruction SCOPE imbriquée qui modifie l'espace de cube auquel vous allez appliquer une expression MDX pour allouer des quotas sur le montant des ventes à chaque mois fiscal en fonction de la valeur pour chaque trimestre fiscal. Cette instruction SCOPE est semblable à l'instruction SCOPE imbriquée précédente, mais remarquez qu'une nouvelle étendue est employée pour la hiérarchie définie par l'utilisateur Fiscal Time elle-même. Il en résulte que les membres de l'espace de cube incluront désormais tous les membres de mois fiscal de la dimension Date, et non seulement les membres de mois fiscal de Fiscal Year 2005.
Remarque : Comparez cette modification de l'étendue du cube à celle de la procédure précédente pour vérifier que vous comprenez la différence entre les deux instructions de modification de l'étendue. Dans le volet Expressions de calcul, ajoutez les instructions suivantes sur une nouvelle ligne à la fin du script de calcul :
THIS = [Date].[Fiscal Time].CurrentMember.Parent / 3;
Cette instruction alloue à chaque membre de mois de la hiérarchie Fiscal Time un tiers de la valeur de son parent (le niveau trimestre). Ce calcul s'appliquera à tous les mois fiscaux dans le cube.
Dans le volet Expressions de calcul, cliquez dans la marge à gauche de l'instruction THIS finale pour définir un point d'arrêt, puis appuyez sur la touche F5.
Examinez les valeurs pour juillet 2004 et août 2004.
Remarquez qu'aucune valeur n'a encore été calculée pour juillet 2004 ou août 2004.
Cliquez avec le bouton droit n'importe où dans le volet Données, puis cliquez sur Afficher les cellules vides pour n'afficher que les cellules contenant des valeurs.
Ainsi, vous verrez plus facilement comment l'instruction finale est appliquée au script de calcul.
Appuyez sur F10 pour exécuter l'instruction finale.
Observez que la valeur Sales Amount Quota de chaque employé pour chaque mois fiscal est calculée en divisant par trois la valeur parente, comme le montre l'image suivante.
Dans la zone de colonnes, supprimez FY 2005, puis ajoutez Q4 FY 2004.
Développez successivement FY 2004, H2 FY 2004, et Q4 FY 2004.
Remarquez que la valeur pour chaque mois fiscal est égale à la valeur totale pour le trimestre fiscal, comme le montre l'image suivante.
Dans le menu Débogage, cliquez sur Arrêter le débogage.
Supprimez le point d'arrêt dans le script de calcul.
Dans la barre d'outils, cliquez sur Enregistrer tout.
Remarque : |
---|
Un projet finalisé jusqu'à la leçon 6 est disponible en téléchargeant et en installant les exemples mis à jour. Pour plus d'informations, consultez la rubrique relative à l'obtention des exemples mis à jour dans Installation des exemples. |
Leçon suivante
Leçon 7 : Définition d'indicateurs de performance clés
Voir aussi
Autres ressources
Création et modification de scripts MDX
Instruction SCOPE (MDX)
Contenu de FORE_COLOR et BACK_COLOR (MDX)
This (MDX)
Instruction FREEZE (MDX)
CurrentMember (MDX)
Parent (MDX)
Members (Set) (MDX)