Effacement des données des cubes en mode "aggregate storage"

Vous pouvez effacer toutes les données d'un cube en mode "aggregate storage" (ASO) Essbase, ou vous pouvez effacer les données d'une région spécifiée, en conservant les données situées dans d'autres régions. Vous pouvez effectuer des effacements physiques ou logiques.

Pour effacer des données, vous devez disposer du même droit d'accès d'application que pour le chargement de données (Droit d'accès de mise à jour de base de données ou supérieur).

Vous pouvez utiliser un travail Effacer les données dans l'interface Web Essbase, ou utiliser la commande clear de l'interface de ligne de commande ou l'instruction Alter database MaxL avec la grammaire Effacer les données dans la région. MaxL est un exemple de cette rubrique.

Effacement des données de régions spécifiques

Cette méthode est utile lorsque vous souhaitez supprimer des données volatiles (telles que les données correspondant au dernier mois), tout en conservant les données historiques.

Les méthodes d'effacement des données d'une région ASO incluent les effacements physiques et logiques.

  • Effacer physique

    Les cellules d'entrée de la région indiquée sont enlevées physiquement du cube en mode "aggregate storage", comme illustré ci-dessous.

    Figure 37-2 Effacement physique d'une région de données


    Cette image montre comment les cellules d'entrée sont physiquement supprimées lors de l'effacement de données à l'aide de la méthode physique.

    Si le cube contient plusieurs tranches de données, l'opération d'effacement physique de la région fusionne automatiquement toutes les tranches de données dans la tranche de données principale. Une fois les données de la région indiquée effacées, Essbase matérialise toutes les vues agrégées qui étaient présentes dans la tranche de données principale avant l'opération d'effacement de la région.

    La durée d'exécution du processus d'effacement physique des données, proportionnelle à la taille des données d'entrée, et non pas à celle des données en cours d'effacement. Par conséquent, vous pouvez utiliser cette méthode uniquement lors de la suppression de grandes tranches de données.

    Pour effacer physiquement les données, utilisez l'instruction alter database MaxL avec la grammaire clear data in region et le mot-clé physical :

    alter database appname.dbname clear data in region 'MDX set expression' physical;

    Pour gagner du temps, vous pouvez utiliser une liste séparée par des virgules de MDX set expressions pour effacer les données de plusieurs régions physiques.

  • Effacement logique

    Les cellules d'entrée de la région indiquée sont écrites dans une nouvelle tranche des données avec des valeurs de compensation négatives qui générez une valeur nulle pour les cellules à effacer, comme illustré ci-dessous.

    Figure 37-3 Effacement logique d'une région de données


    Cette image illustre la création d'une nouvelle tranche de données avec des valeurs de compensation lors de l'effacement de données à l'aide de la méthode logique.

    L'opération d'effacement logique de région fusionne automatiquement uniquement la tranche de données avec des valeurs nulles dans la tranche de données principale ; les autres tranches de données du cube ne sont pas fusionnées. Une fois les données de la région indiquée effacées, Essbase matérialise les vues agrégées uniquement dans la nouvelle tranche de données.

    La durée d'exécution du processus d'effacement logique des données est proportionnelle à la taille des données à effacer. Comme des cellules de compensation sont créées, cette option augmente la taille du cube.

    Pour effacer logiquement les données, utilisez l'instruction alter database MaxL avec la grammaire clear data in region, mais sans le mot-clé physical :

    alter database appname.dbname clear data in region 'MDX set expression';

    Les interrogations de la région effacée logiquement renvoient des valeurs nulles au lieu de valeurs #MISSING. Vous devrez peut-être mettre à jour les formules qui reposent sur les valeurs #MISSING pour les cellules vides.

    Pour supprimer les cellules dont la valeur est égale à zéro, utilisez l'instruction alter database MaxL avec la clause merge, y compris le mot-clé remove_zero_cells :

    alter database appname.dbname merge all data remove_zero_cells;

    Remarques :

    Oracle ne recommande pas d'effectuer une deuxième opération d'effacement logique de région sur la même région, car la deuxième opération n'efface pas les cellules de compensation créées dans la première opération et ne crée pas de nouvelles cellules de compensation.

Pour spécifier la région ASO à effacer, suivez les instructions suivantes :

  • La région doit être symétrique. Exemple :

    • {(Jan, Budget)} est une région symétrique valide qui efface toutes les données de budget pour Jan.

    • {(Jan, Forecast1),(Feb, Forecast2)} n'est pas une région valide, car elle se compose de deux régions asymétriques (janvier, prévision1 et février, prévision2).

  • Les membres individuels d'une dimension de la spécification de région doivent être stockés.

  • Les membres de la région ne peuvent pas être :

    • Membres dynamiques (membres avec des formules MDX implicites ou explicites)

    • Dimensions d'attribut source

      Si vous devez effacer des cellules à l'aide d'un attribut, utilisez la fonction MDX Attribut.

  • Les membres de la région peuvent être des membres de niveau supérieur dans des hiérarchies stockées, ce qui est un moyen pratique de spécifier plusieurs membres de niveau 0.

    Par exemple, vous pouvez spécifier Qrt1, ce qui équivaut à spécifier Jan, Feb et Mar (les enfants de niveau 0 de Qrt1) :


    Cette image présente un contour, comme décrit dans le texte précédant l'image.

    Les deux instructions MaxL suivantes produisent les mêmes résultats :

    alter database appname.dbname clear data in region '{Qtr1}';
    alter database appname.dbname clear data in region '{Jan, Feb, Mar}';
  • Pour les effacements physiques uniquement, les membres de la région peuvent être des membres de niveau supérieur dans les hiérarchies alternatives.

    Par exemple, vous pouvez spécifier High End Merchandise, qui est identique à la spécification Flat Panel, HDTV, Digital Recorders et Notebooks (les enfants de niveau 0 partagés de High End Merchandise) :


    Cette image présente un contour, comme décrit dans le texte précédant l'image.

    Les deux instructions MaxL suivantes produisent les mêmes résultats :

    alter database appname.dbname clear data in region '{High End Merchandise}';
    alter database appname.dbname clear data in region '{[Flat Panel],[HDTV],[Digital Recorders],[Notebooks]}';

    Pour spécifier des membres dans d'autres hiérarchies lors de l'effacement logique des données, utilisez la fonction MDX Descendants.

    Remarques :

    Lorsque la région contient des membres de niveau supérieur issus de hiérarchies alternatives, les performances peuvent diminuer. Dans ce cas, envisagez d'utiliser uniquement des membres de niveau 0.

  • L'expression de jeu MDX doit être placée entre apostrophes.

Par exemple, pour effacer toutes les données de janvier pour les scénarios Forecast1 et Forecast2, utilisez l'instruction suivante :

alter database ASOSamp.Basic clear data in region 'CrossJoin({Jan},{Forecast1, Forecast2})';

Au cours de l'opération d'effacement de région, vous ne pouvez pas effectuer d'opérations de mise à jour du cube (telles que le chargement de données, la fusion de tranches de données ou l'effacement de données d'une autre région) ni exporter de données. Vous pouvez interroger le cube. Toutefois, les résultats de la requête sont basés sur le jeu de données avant l'opération d'effacement de région.

La clause effacer les données dans la région ne peut pas effacer les données de l'ensemble du cube.

Compensation de toutes les données

L'effacement de toutes les données d'un cube en mode "aggregate storage" est identique à celui d'un cube en mode "block storage". Pour effacer l'intégralité du cube, utilisez l'instruction Alter database MaxL avec le mot-clé reset :

alter database appname.dbname reset;