Calculs personnalisés sur les cubes en mode "aggregate storage"

Les calculs personnalisés étendent les fonctionnalités analytiques d'Essbase en permettant l'exécution de calculs récurrents sur des cubes en mode "aggregate storage" (ASO). Vous pouvez cibler certaines zones de cube pour le calcul, en fournissant des informations de débit, de crédit et de contrepartie pour la comptabilité.

Vous pouvez écrire des calculs personnalisés pour les cubes en mode "aggregate storage" qui mettent à jour les cellules de niveau cible 0. Les scripts de calcul personnalisés sont exprimés en MDX.

A l'aide de calculs personnalisés, vous pouvez effectuer des calculs de base sur les soldes de compte dans un grand livre et écrire les résultats dans les membres de niveau 0 ciblés d'un cube en mode "aggregate storage" Essbase. Vous pouvez effectuer des calculs sur les soldes comptables ou sur des montants fixes et vous pouvez planifier la répétition de chaque période comptable.

Les calculs personnalisés peuvent être utiles lorsque le cube est utilisé pour le reporting GL, où la comptabilité à double entrée est en vigueur. Les éléments de débit, tels que les actifs et les dépenses, doivent être équilibrés avec les éléments de crédit, tels que les capitaux propres et les revenus.

Utilisez le workflow suivant pour créer et exécuter des calculs personnalisés :

  • Créez un script de calcul exprimé en MDX.

  • Sélectionnez une zone du cube dans laquelle le calcul sera exécuté. Vous indiquez la zone lors de l'exécution à l'aide des paramètres de cible et de PDV (point de vue).

  • Si vous utilisez le traitement de débit et de crédit, sélectionnez les membres de débit et de crédit de l'outline pour écrire les valeurs positives et négatives. Vous fournissez ces paramètres lors de l'exécution.

  • Si vous utilisez des écritures de contrepartie, sélectionnez la zone dans laquelle les écritures de contrepartie doivent être effectuées. Vous fournissez ce paramètre lors de l'exécution à l'aide d'un tuple MDX. Si un décalage n'est pas spécifié ou est vide, le calcul du décalage n'est pas effectué.

    Remarques :

    Dans la comptabilité générale, une écriture de contrepartie est une mesure de contrepartie du côté opposé du livre. Par exemple, un crédit de 100 $ en janvier peut avoir une contrepartie de 100 $ ajoutée au côté débit du livre, de sorte que le livre peut être équilibré en vue d'une dépense à venir de ce montant.

  • Exécutez le script de calcul personnalisé.

Liste des critères de calcul personnalisés

Lorsque vous concevez des calculs personnalisés pour des cubes en mode "aggregate storage" (ASO) Essbase, les critères à prendre en compte sont les suivants : PDV (région de contexte), script de calcul MDX, cible (où les résultats sont écrits), région source (référencée par des formules), valeur de décalage facultative et membres de crédit et de débit facultatifs.

La fonctionnalité de calcul personnalisé dépend de divers critères spécifiés. Consultez ces termes avant de continuer.

Tableau 38-1 Description des critères de calcul personnalisés

Critères Description

PDV

Région symétrique de la base de données qui décrit le contexte dans lequel les calculs personnalisés sont effectués.

Les membres d'attribut ne peuvent pas être utilisés pour cet argument.

Script de calcul

Script de calcul exprimé en MDX.

Les membres d'attribut ne peuvent pas être utilisés dans la partie gauche de l'équation.

Target

Argument de tuple exprimé en MDX qui définit la région du cube dans laquelle les résultats de calcul sont écrits. Cet argument est combiné avec le côté gauche de chaque formule et le décalage pour déterminer l'emplacement d'écriture des résultats et des valeurs de décalage.

Les membres d'attribut ne peuvent pas être utilisés pour cet argument.

(Facultatif) Décalage

Emplacement de la base de données dans lequel une valeur de contrepartie est écrite pour chaque montant source.

Les membres d'attribut ne peuvent pas être utilisés pour cet argument.

(Facultatif) Membres crédit et débit

Dans la comptabilité à double entrée, équilibrer les écritures comptables pour une transaction. Les deux sont des expressions membres MDX. Le membre débit indique un membre pour lequel des valeurs de résultat positives sont écrites et le membre crédit indique un membre pour lequel des valeurs de résultat négatives sont écrites.

Les membres d'attribut ne peuvent pas être utilisés pour cet argument.

Région source

Expression de jeu MDX indiquant la région du cube à laquelle les formules du script font référence.

Ecrire et exécuter des calculs personnalisés ASO

Ecrivez et exécutez des calculs personnalisés pour les cubes en mode "aggregate storage" Essbase afin de mettre à jour les cellules de niveau 0 cible. Les scripts de calcul personnalisés sont exprimés en MDX. Pour exécuter les scripts, utilisez le calcul d'exécution MaxL.

Ecrire des calculs personnalisés

Un script de calcul personnalisé est un fichier que vous créez et stockez avec l'extension .csc. Créez le script de calcul personnalisé avec une ou plusieurs paires d'expression de tuple dans MDX, terminées par des points-virgules. Syntaxe :

tuple := numeric_value_expression;

tuple est une spécification MDX composée d'au moins un membre. Dans le cas d'un membre, aucun ne fait partie de la même dimension. Le tuple doit être sur le côté gauche de l'équation et est le facteur principal pour déterminer où les résultats du calcul personnalisé sont écrits.

Seuls les noms de membre sont autorisés dans l'expression de tuple. L'utilisation des fonctions MDX n'est pas prise en charge pour les scripts de calcul personnalisés.

Remarques :

Le facteur secondaire déterminant la cible des résultats est le paramètre target, et le troisième facteur est le paramètre POV. Vous indiquez les deuxième et troisième paramètres lors de l'exécution du calcul, plutôt que dans le cadre du script de calcul.

numeric_value_expression est une expression simple de valeur numérique MDX simple, telle qu'un nombre ou une opération arithmétique. L'expression doit se trouver sur le côté droit de l'équation. Seuls les opérateurs arithmétiques sont autorisés. Une erreur est renvoyée si des opérateurs non arithmétiques (tels que les instructions AND, OR ou IF) sont utilisés.

Les noms de membre peuvent être utilisés dans l'expression de valeur numérique, mais l'utilisation de fonctions de membre n'est pas prise en charge pour les scripts de calcul personnalisés.

Les membres d'attribut ne peuvent pas être utilisés à gauche de l'équation dans un script de calcul personnalisé.

Vous devez également définir la région source, qui sert de conseil sur les performances pour Essbase. Essbase pré-extrait les données spécifiées dans la région source et les utilise pour effectuer le calcul spécifié dans le script.

Exécuter des calculs personnalisés

Vous pouvez exécuter des calculs personnalisés à l'aide de l'instruction MaxL Exécuter le calcul (stockage agrégé).

Vous pouvez également exécuter des scripts de calcul personnalisés à l'aide de l'API, en appelant la méthode API Java IEssPerformCustomCalc.performCustomCalc, ou la fonction API C EssPerformCustomCalcASO.

Vous pouvez également utiliser Oracle Hyperion Calculation Manager pour concevoir un calcul personnalisé et le déployer pour exécution dans Enterprise Scheduling Services.

Exemple de cas d'utilisation pour les calculs personnalisés

Cet exemple de cas d'utilisation pour un calcul personnalisé sur un cube en mode "aggregate storage" (ASO) Essbase utilise un membre de crédit, un membre de débit et une contrepartie pour effectuer des allocations de frais de location d'entreprise.

Prenons l'exemple d'une outline avec les dimensions suivantes :

  • Société, contenant CompanyA, CompanyB et d'autres enfants.

  • Service, contenant les services numérotés tels que 101, 102 et 103.

  • Compte, dans lequel le compte 5740 est un compte de charges de loyer et SQFT est un compte statistique utilisé pour enregistrer la superficie de chaque service.

  • Scénario, dans lequel le membre Réel est l'endroit où les données sont publiées, et le membre Allocation est l'endroit où les allocations et les calculs personnalisés sont stockés. Le membre Scenario est un parent qui regroupe les membres enfant Actual et Allocation.

  • Année, dimension Temps organisée par mois et trimestres.

  • La géographie est une dimension organisée par états et villes.

  • AmountType, dans lequel le débit est la cible et le crédit est le décalage.

  • Projet, dimension contenant des projets tels que Proj1 ou Proj2.

Le PDV est une expression de jeu MDX indiquant où le calcul personnalisé doit être exécuté. Elle est indiquée comme suit :

CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
           Descendants( Geography, Geography.Levels(0)) )

Le membre de débit est une expression de membre MDX indiquant un membre de débit auquel les valeurs de résultat positives doivent être écrites. Elle est indiquée en tant que [BeginningBalance_Debit].

CreditMember est une expression de membre MDX indiquant un membre de crédit auquel les valeurs de résultat négatives et de contrepartie doivent être écrites. Elle est indiquée en tant que [BeginningBalance_Credit].

Remarques :

Le décalage est écrit dans le membre de débit si la somme de toutes les valeurs de résultat est négative.

Le décalage est une expression de tuple MDX indiquant où les entrées de compensation doivent être effectuées. Elle est indiquée en tant que ([Account_NA], [Project_NA]).

L'expression de décalage est combinée avec la cible et le PDV pour déterminer l'emplacement où les entrées de décalage sont effectuées. Si les dimensions se chevauchent, l'ordre de résolution de l'emplacement de décalage est le décalage, la cible et le PDV, dans cet ordre.

La cible est une expression de tuple MDX indiquant où écrire les résultats du calcul personnalisé. Il est indiqué comme (Allocation).

L'expression cible est combinée avec le PDV et le côté gauche de chaque ligne du script de calcul personnalisé pour déterminer l'emplacement où les résultats sont écrits. Si les dimensions se chevauchent, l'ordre de résolution de l'emplacement cible est le côté gauche des équations, la cible et le PDV, dans cet ordre. Dans cet exemple, les résultats sont écrits dans le membre Allocation, car la cible remplace le membre Scenario indiqué dans le PDV.

Voici un exemple de script de calcul personnalisé :

(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) := 
	((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) := 
	((AccountD,Proj1) + 
	  (AccountB,Proj2)) / 2;

Pour chaque combinaison du PDV,

  • Le script de calcul est exécuté dans le contexte de la combinaison de PDV actuelle.

  • Une valeur de décalage est écrite à l'emplacement cible.

Remarques :

Chaque formule (ligne du script de calcul) est exécutée simultanément, plutôt que séquentiellement. Par conséquent, vous ne pouvez pas utiliser le résultat d'une formule dans une formule suivante.

Pour définir la région source, examinez le script de calcul personnalisé et déterminez les membres référencés sur les côtés droits des équations. Au minimum, la région source doit inclure tous les membres des côtés droits des instructions d'affectation dans le script de calcul personnalisé.

Définissez la région source en tant qu'ensemble MDX unique. Si les membres situés sur le côté droit des équations proviennent de plusieurs dimensions, vous pouvez utiliser CrossJoin pour créer l'ensemble à partir de deux ensembles. CrossJoin n'accepte que deux ensembles. Vous devrez donc peut-être utiliser des CrossJoins imbriqués.

La région source du script de calcul personnalisé ci-dessus est la suivante :


Crossjoin(
 {[AccountB], [AccountD]}, 
   Crossjoin(
    {[Proj1], [Proj2]}, {[2007]}
   )
)

Il n'est pas nécessaire d'inclure des membres dans la région source qui ne sont pas affectés dans le script. Par exemple, si vous avez ajouté à la région source une valeur [AccountC], qui n'est pas utilisée dans le script, elle est ignorée et peut nuire légèrement aux performances.

Il n'est pas nécessaire de prendre en compte les numéros dans la région source. Par exemple, dans un script de calcul personnalisé, l'affectation suivante ne nécessite aucun ajout à la région source : ([Bud Var]):=10.

Optimiser les calculs personnalisés avec NONEMPTYTUPLE

A l'aide de la propriété NONEMPTYTUPLE, vous pouvez optimiser un script de calcul personnalisé en mode "aggregate storage" (ASO) Essbase pour économiser de la mémoire en ignorant les tuples vides lors du calcul sur des jeux de données volumineux et dispersés.

Etant donné que les jeux de données volumineux peuvent être très dispersés, l'utilisation de la propriété NONEMPTYTUPLE dans les scripts de calcul personnalisés peut optimiser votre script pour économiser de la mémoire.

Vous créez un script de calcul personnalisé avec une ou plusieurs paires d'expression de tuple dans MDX, terminées par des points-virgules. Vous pouvez éventuellement filtrer les ensembles de résultats vides à partir du calcul, en incluant la clause de propriété NONEMPTYTUPLE dans le script de calcul personnalisé.

L'utilisation de la clause de propriété NONEMPTYTUPLE dans un script de calcul personnalisé indique à Essbase que la valeur de cellule calculée pour un tuple est vide chaque fois que l'élément nonempty_member_list indiqué est vide.

Syntaxe

use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;

WHERE

  • use_optimized_way : mot-clé littéral requis pour activer l'utilisation de la propriété NONEMPTYTUPLE dans le script de calcul. Si elle est omise, les directives NONEMPTYTUPLE sont ignorées.

  • tuple : spécification MDX composée d'au moins un membre. Dans le cas des membres, aucun ne fait partie de la même dimension

  • NONEMPTYTUPLE : propriété facultative que vous pouvez utiliser pour optimiser les performances du calcul. Si vous l'utilisez, vous devez faire suivre cette propriété littérale de nonempty_member_list.

  • nonempty_member_list : noms de membre séparés par des virgules provenant de différentes dimensions.

  • numeric_value_expression : expression d'une valeur numérique MDX simple, telles qu'un nombre ou une opération arithmétique. L'expression doit se trouver sur le côté droit de l'équation. Seuls les opérateurs arithmétiques sont autorisés. Une erreur est renvoyée si des opérateurs non arithmétiques (tels que les instructions AND, OR ou IF) sont utilisés.

Exemples 

Les exemples de script de calcul personnalisé suivants incluent une clause de propriété NONEMPTYTUPLE pour filtrer les tuples vides qui ne sont pas inclus dans la passe de calcul.

use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));
([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);

Informations complémentaires

Propriétés d'optimisation MDX