Share via


Définition d'attributions d'étendue à l'aide de commandes de scripts

Dans Analysis Services, un script MDX (Multidimensional Expressions) peut s'appliquer à l'intégralité du cube ou à des parties spécifiques de celui-ci, à des moments particuliers lors 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 par date et par employé

Pour examiner les allocations de quotas sur le montant des ventes par date et par employé

  1. Ouvrez le Concepteur de cube pour le cube du didacticiel de Analysis Services, puis cliquez sur l'onglet Navigateur.

  2. Supprimez toutes les hiérarchies et toutes les mesures du volet Données et tous les membres de dimension du volet Filtre.

  3. Ajoutez la mesure Sales Amount Quota à partir du groupe de mesures Sales Quotas à la zone des données du volet Données.

  4. Ajoutez la hiérarchie définie par l'utilisateur Fiscal Date de la dimension Date à la zone de colonne.

  5. Ajoutez la hiérarchie d'attribut Employee Name de la dimension Employee à la zone de ligne.

    Notez qu'aucune valeur de quota de ventes n'a été définie pour l'année fiscale 2005.

  6. Dans la zone de colonne, cliquez sur le bouton fléché à côté d'Année fiscale, désactivez les cases à cocher à côté de FY 2002 et FY 2003, puis cliquez sur OK.

  7. Dans la zone de colonnes, développez successivement FY2004, H2 FY 2004, puis Q4 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.

    Quota Sales amount pour chaque mois fiscal

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

  1. Sélectionnez l'onglet Calculs, puis sélectionnez Mode Formulaire dans la barre d'outils.

  2. Dans le volet Organisateur de script, sélectionnez Large Resellers, puis cliquez sur le bouton Nouvelle commande de script de 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.

  3. 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.

  4. 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. Ensuite, vous allez ajouter la mesure Sales Amount Quota à l'instruction SCOPE afin d'inclure cette mesure dans l'étendue.

  5. 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.

  6. Sous l'onglet Métadonnées du volet Outils de calcul, développez la dimension Date, Fiscal, Fiscal Date, 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.

  7. 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.

  8. Sous l'onglet Métadonnées du volet Outils de calcul, développez la dimension 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 Date].[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.

  9. Ajoutez la virgule nécessaire avant la partie [Employee] du nouveau membre.

    Observez que le trait rouge ondulé a disparu.

  10. À 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.

  11. Vérifiez que votre instruction SCOPE achevée correspond au script suivant :

    SCOPE ([Measures].[Sales Amount Quota],[Date].[Fiscal Date].[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.

  12. 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. Notez également que Analysis Services a inséré un commentaire devant chaque commande de script pour en faciliter la compréhension.

Définition et test du calcul du nouveau quota sur le montant des ventes pour l'année fiscale 2005

Dans cette tâche, 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

  1. 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 Date].[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.

  2. 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. 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 la première instruction de script, l'instruction CALCULATE.

  3. Dans le menu Déboguer, cliquez sur Démarrer le débogage. Vous pouvez également appuyer sur F5 sur votre clavier.

    Le projet est déployé et traité, et le script de calcul s'exécute jusqu'à la rencontre du point d'arrêt.

  4. 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é dynamique vous aidera pour le débogage.

  5. Dans le volet Tableau croisé dynamique, ajoutez la mesure Sales Amount Quota à la zone de données, ajoutez la hiérarchie définie par l'utilisateur Fiscal Date à la zone de colonnes, puis ajoutez la hiérarchie d'attributs Employee Name à partir de la dimension Employee à la zone de lignes. Faites défiler jusqu'en bas le tableau croisé dynamique et vérifiez les employés auxquels des quotas de ventes ont été assignés.

    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. Par défaut, les cellules vides sont affichées dans le volet Tableau croisé en mode débogage.

  6. 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.

  7. Dans le volet Tableau croisé, désactivez les cases à cocher pour supprimer FY 2002, FY 2003 et FY 2004 de la zone de colonnes.

  8. 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.

  9. 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).

  10. Pour voir les cellules vides pour les valeurs des membres H1 FY 2005, cliquez n'importe où dans le volet Tableau croisé dynamique et cliquez sur Afficher les cellules vides dans la barre d'outils de l'onglet Calculs, ce qui affiche toutes les cellules vides.

  11. Dans le menu Débogage, cliquez sur Arrêter le débogage (ou appuyez sur MAJ-F5).

  12. Supprimez le point d'arrêt du script de calcul en cliquant sur le point rouge 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 tâche, vous modifiez la portée pour inclure les semestre fiscaux membres de Fiscal Year 2005 au lieu du membre Fiscal Year 2005, puis allouez une moitié de la valeur du quota de ventes pour l'année fiscale 2005 à chaque semestre de l'année fiscale 2005. Vous modifiez ensuite la portée pour inclure les trimestres fiscaux membres de Fiscal Year 2005 au lieu du membre Fiscal Year 2005, puis allouez un quart de la valeur du quota de ventes pour l'année fiscale 2005 à chaque trimestre de l'année fiscale 2005. Pour compléter la tâche, vous testez ensuite ces allocations.

Pour allouer des quotas sur le montant des ventes aux semestres et aux trimestres de l'année fiscale 2005

  1. 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, ni la hiérarchie définie par l'utilisateur Fiscal Date. 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. Notez qu'il y a actuellement un seul semestre fiscal dans l'année fiscale 2005 dans le cube.

  2. Dans le volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :

    THIS = [Date].[Fiscal Date].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 la moitié de la valeur de son parent. Pour plus d'informations, consultez CurrentMember (MDX) et Parent (MDX).

  3. 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, ni la hiérarchie définie par l'utilisateur Fiscal Date. 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). En conséquence, l'espace du cube inclut maintenant tous les membres qui sont à l'intersection du membre Employee et de la mesure Quota sur le montant des ventes de n'importe quel trimestre fiscal de l'année fiscale 2005. Notez qu'il y a actuellement un seul trimestre fiscal dans l'année fiscale 2005 dans le cube.

  4. Dans le volet Expressions de calcul, tapez l'instruction suivante sur une nouvelle ligne à la fin du script de calcul :

    THIS = [Date].[Fiscal Date].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.

  5. 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.

  6. 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).

    Valeurs existantes épinglées à l'aide de FREEZE

  7. 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.

  8. 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.

  9. 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.

  10. 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.

    Valeur calculée pour le membre Q1 FY 2005

  11. Dans le menu Débogage, cliquez sur Arrêter le débogage (ou appuyez sur MAJ-F5).

  12. 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

  1. 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 Date].[Month Name].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 Date 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.

  2. Dans le volet Expressions de calcul, ajoutez les instructions suivantes sur une nouvelle ligne à la fin du script de calcul :

    THIS = [Date].[Fiscal Date].CurrentMember.Parent / 3; 
    

    Cette instruction alloue à chaque membre de mois de la hiérarchie Fiscal Date un tiers de la valeur de son parent (le niveau trimestre). Ce calcul s'appliquera à tous les mois fiscaux dans le cube.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Dans la zone de colonnes, supprimez FY 2005, puis ajoutez Q4 FY 2004.

  8. Développez successivement FY 2004, H2 FY 2004, et Q4 FY 2004.

    Notez que la valeur pour chaque mois fiscal est égale à la valeur totale pour le trimestre fiscal.

  9. Dans le menu Débogage, cliquez sur Arrêter le débogage.

  10. Supprimez le point d'arrêt dans le script de calcul.

  11. Dans la barre d'outils, cliquez sur Enregistrer tout.