Calculer un sous-ensemble de données dans le cube
Pour éviter de calculer plus que nécessaire, calculez un sous-ensemble de données dans la base de données Essbase. Vous pouvez indiquer des sous-ensembles à l'aide de n'importe quelle combinaison de fonctions d'ensemble de membres, d'instructions FIX pour spécifier des inclusions et d'instructions EXCLUDE pour spécifier des exclusions.
Pour calculer un sous-ensemble de données dans le cube, utilisez l'une des méthodes suivantes :
-
Créez une formule à l'aide de fonctions d'ensemble de membres pour calculer les listes de membres.
-
Utilisez les commandes FIX...ENDFIX pour calculer une plage de valeurs par inclusion.
-
Utilisez les commandes EXCLUDE...ENDEXCLUDE pour calculer une plage de valeurs par exclusion.
Remarques :
Lorsque l'option Calcul intelligent est activée, les blocs de données nouvellement calculés ne sont pas marqués comme propres après un calcul partiel d'une base de données. Lorsque vous calculez un sous-ensemble d'une base de données, vous pouvez utiliser la commande SET CLEARUPDATESTATUS AFTER pour vous assurer que les blocs nouvellement calculés sont marqués comme propres. L'utilisation de cette commande garantit qu'Essbase recalcule la base de données aussi efficacement que possible à l'aide du calcul intelligent.
Calculer les listes de membres
Les fonctions de calcul d'ensemble de membres Essbase génèrent une liste de membres basée sur un membre que vous indiquez.
Par exemple, la fonction @IDESCENDANTS génère une liste de tous les descendants d'un membre spécifié. Lorsque vous utilisez une fonction d'ensemble de membres dans une formule, Essbase génère une liste de membres avant de calculer la formule.
Dans l'exemple suivant, la commande @IDESCENDANTS du membre Total Expenses génère une liste de ces membres : Total Expenses, lui-même et ses descendants, qui sont Marketing, Payroll et Divers :
@IDESCENDANTS("Total Expenses");Voir aussi
Utiliser la commande FIX
Utilisez la commande FIX dans les scripts de calcul en mode "block storage" Essbase pour définir les membres à inclure dans le calcul. Les blocs FIX vous permettent d'optimiser les performances en évitant le surcalcul. FIX vous permet également de calculer des parties distinctes du cube à l'aide de différentes formules.
Un bloc FIX de votre script de calcul vous aide à définir des tranches de données à inclure dans le calcul.
Par exemple, le bloc FIX suivant calcule uniquement les valeurs Budget pour les descendants de East (New York, Massachusetts, Floride, Connecticut et New Hampshire) :
FIX(Budget,@DESCENDANTS(East))
CALC DIM(Year, Measures, Product);
ENDFIXL'exemple suivant corrige les combinaisons de membres pour les enfants de East qui ont un UDA de New Mkt :
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
Marketing = Marketing * 1.1;
ENDFIXL'exemple suivant utilise une correspondance avec caractère générique ( ? ? ?) pour corriger les noms de membre qui se terminent par les caractères -10, qui sont les membres 100-10, 200-10, 300-10 et 400-10 :
FIX(@MATCH(Product, "???-10"))
Price = Price * 1.1;
ENDFIXLorsque vous utilisez la commande FIX uniquement sur une dimension dense, Essbase extrait l'intégralité du bloc qui contient la ou les valeurs requises pour les membres que vous indiquez. Les E/S ne sont pas affectées et le temps de calcul est amélioré.
Lorsque vous utilisez la commande FIX sur une dimension dispersée, Essbase extrait le bloc pour les membres de dimension dispersée spécifiés. Les E/S peuvent être considérablement réduites.
Essbase parcourt la base de données une fois pour chaque commande FIX que vous utilisez sur les membres de dimension dense. Si possible, combinez des blocs FIX pour améliorer les performances de calcul.
Par exemple, à l'aide d'une commande FIX, le script de calcul suivant entraîne le cycle d'Essbase dans la base de données une seule fois, en calculant les valeurs Réel et Budget :
FIX(Actual,Budget)
CALC DIM(Year, Measures);
ENDFIXEn revanche, à l'aide de deux commandes FIX, le script de calcul suivant entraîne le cycle d'Essbase dans la base de données deux fois : une fois les valeurs de données réelles calculées et une fois les valeurs de données budgétaires calculées :
FIX(Actual)
CALC DIM(Year, Measures);
ENDFIX
FIX(Budget)
CALC DIM(Year, Measures);
ENDFIXVous ne pouvez pas exécuter une instruction FIX sur un sous-ensemble d'une dimension que vous calculez dans une commande FIX. Par exemple, le script de calcul suivant renvoie un message d'erreur car l'opération CALC DIM calcule la dimension Market entière, bien que l'instruction FIX ci-dessus corrige les membres spécifiques de la dimension Market :
FIX(@CHILDREN(East) AND @UDA(Market,"New Mkt"))
CALC DIM(Year, Measures, Product, Market);
ENDFIXLes commandes FIX peuvent être imbriquées dans d'autres blocs de commande FIX. Toutefois, l'utilisation incorrecte des commandes FIX imbriquées peut entraîner des résultats incorrects. Par exemple, l'intention du script de calcul suivant est d'affecter 1 à tous les enfants de East, puis 2 à New York :
FIX (@CHILDREN(EAST))
"100-10"=1;
FIX ("New York")
"100-10"=2;
ENDFIX
ENDFIXCependant, la commande FIX imbriquée se fixe sur un sous-ensemble de la dimension qui est spécifié par la commande FIX au-dessus (ce qui n'est pas autorisé). Par conséquent, le script affecte 2 à tous les enfants de East car le script s'exécute comme s'il était écrit comme suit :
FIX (@CHILDREN(EAST),''New York'')
"100-10"=1;
"100-10"=2;
ENDFIXAu lieu d'utiliser des commandes FIX imbriquées, utilisez deux blocs de commande FIX distincts. Exemple :
FIX (@CHILDREN(EAST))
"100-10"=1;
ENDFIX
FIX ("New York")
"100-10"=2;
ENDFIXLa variable (varName) définie par une commande de calcul VAR ne peut pas être utilisée dans l'instruction de membre FIX. Les membres FIX sont évalués avant l'exécution du calcul et les variables sont évaluées pendant l'exécution après la définition de l'instruction FIX. Etant donné que les variables peuvent changer pendant l'exécution du calcul, vous ne pouvez pas utiliser la variable dans le cadre de l'instruction FIX. L'exemple suivant illustre l'utilisation incorrecte de la variable dans l'instruction de membre FIX :
VAR varName=1;
FIX (@relative(@memberat(@List("Product1","Product2"),varName),0))
COMMANDS;
ENDFIXVoir aussi
Utiliser la commande d'exclusion
Utilisez le bloc de commande EXCLUDE..ENDEXCLUDE dans les scripts de calcul en mode "block storage" Essbase pour définir les membres à exclure du calcul.
Parfois, il est plus facile de spécifier les membres à ne pas inclure dans un calcul que de définir les membres à inclure.
Il peut être plus simple de spécifier des membres qui ne doivent pas être calculés dans une commande EXCLUDE…ENDEXCLUDE que de spécifier une combinaison complexe de noms de membre dans une commande FIX…ENDFIX.
Voir aussi