Charger des données dans des cubes en mode "aggregate storage"

Les cubes en mode "aggregate storage" (ASO) Essbase facilitent l'analyse de très grandes dimensions contenant jusqu'à un million de membres ou plus. Pour vous aider à charger des données vers des outlines aussi volumineuses, vous pouvez effectuer un chargement incrémentiel, gérer les tampons de chargement des données et fusionner/remplacer des tranches de données.

Pour prendre en charge efficacement le chargement de valeurs de données dans de tels cubes volumineux, Essbase :

  • Permet de traiter plusieurs sources de données via des tampons de chargement de données temporaires

  • Permet de contrôler le pourcentage de ressources utilisées par un tampon de chargement de données

  • Permet à un cube en mode "aggregate storage" de contenir plusieurs tranches de données (une requête adressée à la base de données accède à chaque tranche et collecte toutes les cellules de données)

  • Fournit un processus de chargement incrémentiel des données qui se termine dans un laps de temps proportionnel à la taille des données incrémentielles

Pour charger des valeurs dans des cubes en mode "aggregate storage", vous pouvez utiliser la page Travaux dans l'interface Web Essbase, ou utiliser les instructions Alter database et Import data dans MaxL. Les exemples de ce document sont basés sur l'utilisation de MaxL.

Remarques :

Si des valeurs ont été calculées et stockées via une agrégation, Essbase met automatiquement à jour les valeurs stockées de niveau supérieur lorsque les valeurs de données sont modifiées. Aucune étape de calcul supplémentaire n'est nécessaire. L'existence et la taille d'une agrégation peuvent affecter le temps nécessaire à l'exécution d'un chargement de données.

Vous ne pouvez pas exporter de données lors du chargement de données dans un cube.

Lorsque vous copiez une application ASO, pour conserver toutes les données du cube, vous devez fusionner toutes les tranches de données incrémentielles dans la tranche de base de données principale avant de copier l'application. Les données des tranches de données incrémentielles non fusionnées ne sont pas copiées.

Charger les données de manière incrémentielle via un tampon de chargement de données

Si vous utilisez le chargement incrémentiel de données pour charger des valeurs de données dans un cube en mode "aggregate storage" (ASO) Essbase, vous pouvez améliorer les performances. Essbase charge les valeurs dans un tampon de chargement de données temporaire en premier, avec une écriture finale dans le stockage une fois toutes les sources de données lues.

L'utilisation de l'instruction import data MaxL pour charger des valeurs de données à partir d'une source de données unique n'implique pas le tampon de chargement des données en mode "aggregate storage".

Si vous utilisez plusieurs instructions Importer des données de base de données MaxL pour charger des valeurs de données dans des cubes en mode "aggregate storage", Essbase peut utiliser un tampon de chargement de données temporaire et terminer l'écriture finale dans le stockage une fois que toutes les sources de données ont été lues. L'utilisation du tampon de chargement des données en mode "aggregate storage" peut améliorer considérablement les performances globales de chargement des données.

Dans le tampon de chargement des données en mode "aggregate storage", Essbase trie et valide les valeurs une fois toutes les sources de données lues. Si plusieurs enregistrements (ou doublons) sont détectés pour une cellule de données spécifique, les valeurs sont cumulées. Essbase stocke ensuite les valeurs cumulées (remplacement, ajout ou soustraction de valeurs de données existantes dans le cube).

Remarques :

Lors de l'utilisation du tampon de chargement de données en mode "aggregate storage", le choix de remplacer, d'ajouter ou de soustraire des valeurs est spécifié pour l'ensemble complet des sources de données lors du chargement du contenu du tampon de données dans le cube.

Bien que le tampon de chargement des données existe en mémoire, vous ne pouvez pas créer d'agrégation ni fusionner de tranches, car ces opérations nécessitent beaucoup de ressources. Toutefois, vous pouvez charger des données dans d'autres tampons de chargement de données, et exécuter des requêtes et d'autres opérations sur le cube. Il peut y avoir une brève attente pour les requêtes, jusqu'à ce que l'ensemble de données complet soit validé et que des agrégations soient créées.

Le tampon de chargement des données existe en mémoire jusqu'à ce que le contenu du tampon soit validé dans le cube ou que l'application soit redémarrée, moment auquel le tampon est détruit. Même si l'opération de validation échoue, le tampon est détruit et les données ne sont pas chargées dans le cube. Vous pouvez détruire manuellement un tampon de chargement de données à l'aide de l'instruction Alter database MaxL.

Remarques :

L'arrêt de l'application avant la validation du contenu du tampon détruit le tampon. Dans ce cas, après le redémarrage de l'application, vous devez initialiser un nouveau tampon et y charger les données.

Pour utiliser le tampon de chargement des données pour les cubes en mode "aggregate storage", procédez comme suit :

  1. Préparez le tampon de chargement de données, où les valeurs de données sont triées et cumulées à l'aide de l'instruction alter database MaxL pour initialiser un tampon de chargement de données en mode "aggregate storage". Par exemple :
    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1;
  2. Chargez les données de vos sources dans le tampon de chargement de données à l'aide de l'instruction import database MaxL. Utilisez plusieurs instructions pour charger des données à partir de plusieurs sources. Vous pouvez inclure toute combinaison de sources de données. Indiquez un fichier de règles si la source de données en requiert un.

    L'exemple suivant charge deux sources de données, dont l'une utilise un fichier de règles, dans le même tampon de chargement de données :

    import database ASOsamp.Basic data 
       from server data_file 'file_1.txt' 
       to load_buffer with buffer_id 1
       on error abort; 
    import database ASOsamp.Basic data
       from server data_file 'file_2' 
       using server rules_file ‘rule’ 
       to load_buffer with buffer_id 1
       on error abort;
    

    Pour charger des données dans plusieurs tampons de chargement simultanément, reportez-vous à Chargements de données multiples en parallèle.

  3. Utilisez l'instruction Importer des données MaxL pour valider le contenu du tampon de chargement des données dans le cube. Par exemple :
    import database ASOsamp.Basic data 
       from load_buffer with buffer_id 1;

    Pour valider le contenu de plusieurs tampons de chargement de données dans le cube à l'aide d'une instruction MaxL, reportez-vous à Chargements de données multiples en parallèle.

L'exemple de chargement incrémentiel de données suivant fournit des performances optimales lorsque les nouvelles valeurs de données ne se croisent pas avec les valeurs existantes :

  1. Créez un tampon de chargement de données unique à l'aide des propriétés ignore_missing_values et ignore_zero_values. Exemple :

    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1
       property ignore_missing_values, ignore_zero_values;

    Si le cube doit être disponible pour les demandes d'envoi de données en cours de mise à jour, initialisez le tampon de chargement de données avec la grammaire resource_usage définie pour 80 %. Exemple :

    alter database ASOsamp.Basic 
       initialize load_buffer with buffer_id 1
       resource_usage 0.8 property
       ignore_missing_values, ignore_zero_values;
  2. Chargez les données dans la mémoire tampon. Exemple :

    import database ASOsamp.Basic data 
       from server data_file 'file_1.txt' 
       to load_buffer with buffer_id 1
       on error abort; 
    import database ASOsamp.Basic data
       from server data_file 'file_2'
       to load_buffer with buffer_id 1
       on error abort;
    
  3. Validez le contenu du tampon de chargement des données dans le cube en créant une tranche et en ajoutant des valeurs. Exemple :

    import database ASOsamp.Basic data 
       from load_buffer with buffer_id 1
       add values create slice;

Utilisation de la ressource de tampon de chargement de données et de l'espace disque

Lorsque vous utilisez le chargement incrémentiel de données pour charger des valeurs de données dans un cube en mode "aggregate storage" (ASO) Essbase, vous pouvez mettre des contraintes sur l'utilisation autorisée des ressources et le temps d'attente pour le tampon de chargement temporaire des données. Vous pouvez réduire l'utilisation de l'espace disque en gérant le tablespace.

Contrôler l'utilisation des ressources du tampon de chargement de données

Lors d'un chargement incrémentiel de données, Essbase utilise le cache en mode "aggregate storage" pour trier les données. Vous pouvez contrôler la quantité de cache qu'un tampon de chargement de données peut utiliser en indiquant le pourcentage. Le pourcentage est un nombre compris entre .01 et 1,0 inclus ; seuls deux chiffres après la virgule sont significatifs ; par exemple, 0,029 est interprété comme 0,02. Par défaut, l'utilisation des ressources d'un tampon de chargement de données est définie sur 1.0 et l'utilisation totale des ressources de tous les tampons de chargement de données créés sur une base de données ne peut pas dépasser 1.0. Par exemple, s'il existe un tampon de taille 0,9, vous ne pouvez pas créer un autre tampon de taille supérieure à 0,1.

Remarques :

Les opérations d'envoi créent en interne des tampons de chargement de taille 0.2. Par conséquent, un tampon de chargement de taille par défaut 1.0 entraînera l'échec des opérations d'envoi en raison d'un manque de ressources de tampon de chargement de données.

Pour définir la quantité de ressources que le tampon est autorisé à utiliser, indiquez le pourcentage lorsque vous lancez le chargement de données dans l'interface Web Essbase. Si vous utilisez MaxL, utilisez l'instruction alter database MaxL avec la grammaire resource_usage.

Par exemple, pour définir resource_usage sur 50 % du cache total, utilisez l'instruction suivante :

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   resource_usage .5;

Si vous prévoyez d'exécuter des opérations d'envoi simultané, utilisez les paramètres de configuration ASOLOADBUFFERWAIT et l'instruction alter database MaxL avec la grammaire wait_for_resources. ASOLOADBUFFERWAIT s'applique à la création de tampons de chargement de données en mode "aggregate storage" avec l'option wait_for_resources, et s'applique aux allocations, aux calculs personnalisés et aux opérations de mise à jour des données.

Gérer l'espace disque pour les chargements de données incrémentiels

Les chargements de données incrémentiels sur les cubes en mode "aggregate storage" peuvent utiliser jusqu'à deux fois la taille de vos fichiers de données en cours. Par exemple, supposons que la taille des données d'un cube soit de 1 Go et que la taille du chargement incrémentiel de données soit de 200 Mo, pour une taille totale de 1,2 Go. Au cours du processus de chargement incrémentiel des données, Essbase peut utiliser jusqu'à 2,4 Go d'espace disque.

Dans les cas où les bases de données dépassent 2 Go, vous pouvez réduire l'utilisation de l'espace disque en définissant la taille de fichier maximale du tablespace par défaut sur 2 Go au maximum.

Pour définir la taille de fichier maximale du tablespace par défaut, vous pouvez utiliser l'instruction alter tablespace MaxL.

Propriétés du tampon de chargement de données

Lorsque vous chargez de manière incrémentielle des valeurs de données dans un tampon de chargement en mode "aggregate storage" (ASO), vous pouvez indiquer à Essbase d'ignorer les valeurs manquantes et nulles dans les données source, et vous pouvez résoudre les conflits de cellules (éliminer les agrégations non valides en combinant des cellules en double).

Les propriétés du tampon de chargement de données que vous pouvez définir sont les suivantes :

  • ignore_missing_values : ignore les valeurs #MI dans le flux de données entrantes

  • ignore_zero_values : ignore les zéros dans le flux de données entrantes

  • aggregate_use_last : combine les cellules en double en utilisant la valeur de la cellule qui a été chargée en dernier dans le tampon de chargement

    Remarques :

    Lorsque vous chargez des valeurs de texte et de date dans une base de données en mode "aggregate storage", utilisez la propriété aggregate_use_last pour éliminer les agrégations non valides. Pour obtenir d'autres instructions, reportez-vous à la section Load, Clear, and Export Text and Date Measures.

Si vous utilisez plusieurs propriétés dans la commande et qu'il y a un conflit, la dernière propriété répertoriée est prioritaire.

Gestion des valeurs manquantes et des zéros dans le flux de données

Lors du chargement incrémentiel des données, vous pouvez indiquer comment les valeurs manquantes et nulles dans les données source sont traitées lors du chargement des données dans le tampon de chargement des données.

Pour définir les propriétés du tampon de chargement des données, utilisez l'instruction alter database MaxL avec la grammaire property.

Exemple :

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   property ignore_missing_values, ignore_zero_values;

Résoudre les conflits de cellules

Pour résoudre les conflits de cellules pour les cellules en double, vous pouvez indiquer si la dernière cellule chargée dans le tampon de chargement doit être utilisée.

Par défaut, lorsque des cellules avec des clés identiques sont chargées dans le même tampon de chargement de données, Essbase résout le conflit de cellules en ajoutant les valeurs ensemble.

Pour créer un tampon de chargement de données qui combine des cellules en double en acceptant la valeur de la cellule chargée en dernier dans le tampon de chargement, utilisez l'instruction alter database MaxL avec la grammaire aggregate_use_last.

Exemple :

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1
   property aggregate_use_last;

Remarques :

Lors de l'utilisation de tampons de chargement de données avec la grammaire aggregate_use_last, les chargements de données sont considérablement plus lents, même s'il n'y a pas de clés en double.

Chargements de données multiples en parallèle

Plusieurs tampons de chargement de données peuvent exister sur un cube en mode "aggregate storage" (ASO) Essbase. Même si la validation ne peut être active qu'à la fois, vous pouvez valider plusieurs tampons de chargement de données dans la même opération, ce qui est plus rapide que l'opération de validation individuelle.

Pour charger des données dans plusieurs tampons de chargement de données simultanément, utilisez des sessions MaxL Shell distinctes. Par exemple, dans une session MaxL Shell, chargez les données dans un tampon avec un ID de 1 :

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 1 resource_usage 0.5;
import database ASOsamp.Basic data
   from data_file "dataload1.txt"
   to load_buffer with buffer_id 1
   on error abort;

Simultanément, dans une autre session MaxL Shell, chargez les données dans un tampon avec un ID de 2 :

alter database ASOsamp.Basic
   initialize load_buffer with buffer_id 2 resource_usage 0.5;
import database ASOsamp.Basic data
   from data_file "dataload2.txt"
   to load_buffer with buffer_id 2
   on error abort;

Lorsque les données sont entièrement chargées dans les tampons de chargement de données, utilisez une instruction MaxL pour valider le contenu des deux tampons dans la base de données à l'aide d'une liste d'ID de tampon séparés par des virgules :

Par exemple, cette instruction charge le contenu des mémoires tampons 1 et 2 :

import database ASOsamp.Basic data 
   from load_buffer with buffer_id 1, 2;

Remarques :

Lorsque vous chargez des données SQL dans des cubes en mode "aggregate storage", vous pouvez utiliser jusqu'à huit fichiers de règles pour charger des données en parallèle. Cette fonctionnalité est différente du processus décrit ci-dessus. Lorsque vous effectuez plusieurs chargements de données SQL en parallèle, vous pouvez utiliser une instruction import database MaxL avec la grammaire utilisant plusieurs fichiers de règles. Essbase initialise plusieurs tampons de chargement de données en mode "aggregate storage" temporaires (un pour chaque fichier de règles) et valide le contenu de tous les tampons dans le cube en une seule opération.

Répertorier les tampons de chargement de données pour un cube en mode "aggregate storage"

Plusieurs tampons de chargement de données peuvent exister sur un cube en mode "aggregate storage" (ASO) Essbase. Pour obtenir la liste et la description des tampons de chargement de données qui existent sur le cube, utilisez l'instruction query database MaxL avec la grammaire list load_buffers.

La syntaxe de l'instruction MaxL pour répertorier les tampons de chargement de données ASO est la suivante :

query database appname.dbname list load_buffers;

Cette instruction renvoie les informations suivantes sur chaque tampon de chargement de données existant :

Tableau 37-2 Informations sur le tampon de chargement de données

Champ Description

ID_tampon

ID d'un tampon de chargement de données (nombre compris entre 1 et 4 294 967 296).

interne

Booléen qui indique si le tampon de chargement des données a été créé en interne par Essbase (TRUE) ou par un utilisateur (FALSE).

actif

Valeur booléenne indiquant si le tampon de chargement des données est actuellement utilisé par une opération de chargement des données.

utilisation des ressources

Pourcentage (nombre compris entre .01 et 1.0 inclus) du cache en mode "aggregate storage" que le tampon de chargement de données est autorisé à utiliser.

méthode d'agrégation

L'une des méthodes utilisées pour combiner plusieurs valeurs pour la même cellule dans le tampon :

  • AGGREGATE_SUM : ajoute des valeurs lorsque le tampon contient plusieurs valeurs pour la même cellule.

  • AGGREGATE_USE_LAST : Combinez les cellules en double sur la base de la valeur de cellule chargée en dernier dans le tampon de chargement.

ignorer_manquements

Valeur booléenne qui indique si les valeurs #MI doivent être ignorées dans le flux de données entrant.

ignorer_zéro

Valeur booléenne qui indique si les zéros doivent être ignorés dans le flux de données entrant.

Reportez-vous à Base de données de requête (stockage d'agrégation)

Créer une tranche de données

Vous pouvez valider de manière incrémentielle le tampon de chargement de données vers un cube en mode "aggregate storage" (ASO) Essbase pour créer une tranche. Après avoir chargé le nouveau secteur dans le cube, Essbase crée toutes les vues nécessaires sur celui-ci (telles que des vues agrégées) avant que les nouvelles données ne soient visibles pour les requêtes.

La création d'une tranche de données est utile car elle améliore les performances des chargements de données incrémentiels. La durée d'un chargement incrémentiel de données est proportionnelle à la quantité de nouvelles données ; la taille du cube n'est pas un facteur.

Pour créer une tranche de données, utilisez l'instruction import database MaxL avec la grammaire create slice.

Par exemple, pour créer une tranche en remplaçant les valeurs (valeur par défaut), utilisez l'instruction suivante :

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override values create slice;

Remarques :

Si vous utilisez des valeurs de remplacement lors de la création d'une tranche, les valeurs #MISSING sont remplacées par des zéros. L'utilisation de cette option est beaucoup plus lente que l'utilisation des options d'ajout de valeurs ou de soustraction de valeurs.

Voir : Importer des données (stockage agrégé)

Fusionner des secteurs de données incrémentielles

Lors du chargement incrémentiel de données vers un cube en mode "aggregate storage" (ASO), vous pouvez fusionner manuellement les tranches de données incrémentielles vers la tranche de cube principale, ou vous pouvez utiliser AUTOMERGE pour configurer Essbase afin de fusionner automatiquement les tranches pendant le chargement des données.

Fusion automatique de tranches de données incrémentielles lors d'un chargement de données vers un cube en mode "aggregate storage"

A l'aide des paramètres de configuration AUTOMERGE et AUTOMERGEMAXSLICENUMBER, vous pouvez indiquer si Essbase fusionne automatiquement les tranches de données incrémentielles au cours d'un chargement de données vers un cube en mode "aggregate storage".

Options de configuration d'AUTOMERGE :

  • ALWAYS : indique de fusionner automatiquement les tranches de données incrémentielles lors d'un chargement de données vers un cube en mode "aggregate storage". Par défaut, les fusions sont exécutées une fois pour quatre tranches de données incrémentielles consécutives. Toutefois, si le paramètre de configuration AUTOMERGEMAXSLICENUMBER est utilisé, le processus de fusion automatique est activé lorsque la valeur AUTOMERGEMAXSLICENUMBER est dépassée. La taille des tranches de données incrémentielles n'est pas un facteur dans la sélection des tranches qui sont fusionnées.

    La valeur par défaut est TOUJOURS.

  • NEVER : indique de ne jamais fusionner automatiquement les tranches de données incrémentielles au cours d'un chargement de données vers un cube en mode "aggregate storage". Pour fusionner manuellement des tranches de données incrémentielles, utilisez l'instruction alter database MaxL avec la grammaire merge.

  • SELECTIVE : indique d'activer le processus de fusion automatique des tranches de données incrémentielles lorsque le nombre de tranches de données incrémentielles spécifié dans le paramètre de configuration AUTOMERGEMAXSLICENUMBER est dépassé. Si le nombre de tranches de données incrémentielles dans le chargement de données ne dépasse pas la valeur de AUTOMERGEMAXSLICENUMBER, le processus de fusion automatique n'est pas activé.

Fusion manuelle de tranches d'informations incrémentielles

Vous pouvez fusionner toutes les tranches d'informations incrémentielles dans la tranche principale ou fusionner toutes les tranches d'informations incrémentielles en une seule tranche d'informations tout en laissant la tranche principale inchangée. Pour fusionner des tranches, vous devez disposer des mêmes privilèges que pour le chargement de données (Autorisation de mise à jour de base de données ou supérieure).

Une fois la nouvelle vue d'entrée écrite dans le cube, Essbase crée les vues agrégées pour la tranche. Les vues créées pour la nouvelle tranche sont un sous-ensemble des vues qui existent sur la tranche principale.

Remarques :

Vous ne pouvez pas exporter de données lors d'une fusion.

Si vous avez effacé des données d'une région à l'aide de l'opération d'effacement logique de région, qui génère une valeur égale à zéro pour les cellules effacées, vous pouvez choisir de supprimer les cellules de valeur égale à zéro lors de l'opération de fusion.

Pour effectuer des opérations de fusion, utilisez l'instruction alter database MaxL avec la grammaire merge.

Par exemple, pour fusionner toutes les tranches de données incrémentielles dans la tranche principale, utilisez l'instruction suivante :

alter database ASOsamp.Basic
   merge all data;

Pour fusionner toutes les tranches de données incrémentielles dans la tranche principale et supprimer les cellules à valeur zéro, utilisez l'instruction suivante :

alter database ASOsamp.Basic
   merge all data remove_zero_cells;

Pour fusionner toutes les tranches de données incrémentielles en une seule tranche de données, utilisez l'instruction suivante :

alter database ASOsamp.Basic
   merge incremental data;

Remarques :

Avant de copier une application en mode "aggregate storage", vous devez fusionner toutes les tranches de données incrémentielles dans la tranche principale. Les données des tranches de données incrémentielles non fusionnées ne sont pas copiées.

Liens connexes

AUTOMERGE

AUTOMERGEMAXSLICENUMBER

Modifier la base de données (stockage agrégé)

Remplacer les données à l'aide du contenu des tranches de données incrémentielles

Pour les ensembles de données en mode "aggregate storage" (ASO) suffisamment petits pour être complètement rechargés tout en maintenant une faible latence des données, Essbase peut enlever le contenu actuel d'un cube en mode "aggregate storage" et le remplacer par le contenu d'un tampon de chargement de données spécifié.

La fonctionnalité de remplacement atomique fait passer l'interrogation de l'ancien contenu du cube au nouveau contenu sans interrompre le service. Le jeu de données nouvellement chargé est agrégé pour créer le même jeu de vues qui existait pour le jeu de données remplacé.

Essbase permet également de remplacer atomiquement le contenu de toutes les tranches de données incrémentielles d'un cube. Considérons une situation dans laquelle les données peuvent être séparées en un ensemble de données statique relativement grand qui n'est jamais mis à jour et un ensemble de données volatiles relativement petit pour lequel les mises à jour individuelles sont difficiles à identifier mais sont limitées à l'ensemble de données volatiles. Par exemple, le jeu de données statique volumineux se compose de données de transaction historiques pour les trois dernières années. Toutefois, pour les données de transaction des deux derniers mois, les utilisateurs peuvent modifier une caractéristique d'une transaction dans la base de données source. Le suivi de ces modifications peut être extrêmement complexe. Vous pouvez charger le jeu de données statique en tant que tranche principale d'un cube et le jeu de données volatiles en tant que tranches incrémentielles.

Lors de la validation de tranches au cours du chargement incrémentiel de données ASO, Essbase enlève le contenu actuel de toutes les tranches de données incrémentielles et crée une nouvelle tranche (en utilisant la grammaire add values dans la spécification de validation de tampon de l'instruction import database MaxL) avec le contenu d'un tampon de chargement de données spécifié. Le jeu de données nouvellement chargé est complété par des vues agrégées en fonction de l'ensemble de vues existant sur la tranche principale.

Remarques :

Pour utiliser la grammaire override, créez un tampon de chargement de données avec la propriété ignore_missing_values pour des performances optimales. En outre, vous devez vous assurer qu'il n'y a pas de conflit entre les jeux de données statiques et volatiles (par exemple, il ne doit pas y avoir de valeur dans chaque jeu de données pour la même cellule).

Pour remplacer le contenu d'une base de données ou les tranches de données incrémentielles d'un cube, utilisez l'instruction import database MaxL avec la grammaire override.

Par exemple, pour remplacer le contenu d'un cube, utilisez l'instruction suivante :

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override all data;

Pour remplacer le contenu de toutes les tranches de données incrémentielles par une nouvelle tranche, utilisez l'instruction suivante :

import database ASOsamp.Basic data
   from load_buffer with buffer_id 1
   override incremental data;

Remarques :

Si le remplacement échoue, Essbase continue de traiter l'ancien jeu de données.

Dans Smart View, la commande Soumettre équivaut à utiliser la fonctionnalité de chargement de données incrémentiel avec la grammaire de remplacement.

Lors de l'exécution d'une opération d'envoi, les nouvelles demandes de verrouillage, de déverrouillage, de récupération et de verrouillage attendent la fin de l'opération d'envoi.

Voir : Importer des données (stockage agrégé)

Afficher les statistiques des tranches de données incrémentielles

Essbase fournit des statistiques sur la taille et le nombre de tranches de données en mode "aggregate storage" incrémentiel, ainsi que sur le coût de l'interrogation des tranches de données incrémentielles.

Le temps nécessaire à une requête pour accéder à toutes les tranches de données incrémentielles est exprimé en pourcentage (entre .01 et 1.0 inclus). Si un cube a une tranche principale et plusieurs tranches de données incrémentielles, une statistique de requête de 0,66 signifie que les deux tiers du temps de requête ont été consacrés à l'interrogation des tranches de données incrémentielles et un tiers à l'interrogation de la tranche de données principale. Si le coût d'interrogation des tranches de données incrémentielles est trop élevé, vous pouvez fusionner les tranches.

Pour afficher les informations sur les tranches, utilisez la grammaire list aggregate_storage slice_info dans l'instruction query database MaxL. Exemple :

query database ASOsamp.Basic list aggregate_storage slice_info;

Base de données de requête (stockage agrégé)

Renégocier des membres dans des chargements de données en mode "aggregate storage"

Les membres renégats permettent la poursuite d'un chargement de données en mode "aggregate storage" (ASO) Essbase, même si une combinaison de membres spécifiée comporte des membres manquants ou non valides.

Lorsqu'un chargement de données rencontre un membre manquant ou non valide, le chargement de données se poursuit, avec la valeur de données du membre manquant ou non valide stockée sous le membre balisé en tant que membre renégat dans la dimension. Si aucun membre renégat n'est défini dans la dimension, l'enregistrement est rejeté. Si des données existent déjà pour le membre renégat, le comportement varie selon que vous avez choisi d'ajouter des valeurs ou de remplacer des valeurs lors de la création du fichier de règles de chargement des données.

Chaque dimension ne peut avoir qu'un seul membre affecté en tant que membre renégat, et le membre renégat doit être un membre de niveau 0.

Le fichier de chargement de données suivant inclut un membre nommé SC :

Product  Measures   *Data*
NY,      Sales       100
SA,      Sales       200
SC,      Sales       300    

Dans l'outline suivante, aucun membre n'est nommé SC. Toutefois, le membre nommé SA est défini en tant que membre renégaté dans la dimension Products :

Products (+)
   NY (+)
   SA (+)
Measures (+)
   Sales (+)
   COGS (+)

Au cours du chargement des données, la valeur de la combinaison de membres SC et Sales (300) est chargée dans le membre renégat SA et Sales.

Dans le fichier de chargement de données suivant, deux enregistrements existent pour SC et Sales, chacun avec des valeurs différentes :

Product    Measures    *Data*
NY,        Sales        100
SA,        Sales        200
SC,        Sales        250
SC,        Sales        300 

Les valeurs SC et Sales (250 et 300) sont chargées dans SA et Sales. Si vous avez choisi d'ajouter des valeurs, la valeur de la cellule est 550 (250 + 300). Si vous avez choisi d'écraser les valeurs, la valeur de la cellule est la dernière chargée ; dans ce cas, 300.

Les exemples suivants illustrent le comportement des membres renégats à l'aide du fichier de chargement de données suivant :

Months    Transaction Type    Customer    Product    Price
Jan,      Sale,               Discard1,   Product1   300
Jan,      Sale,               Discard1,   Discard2   300
Jan,      Sale,               Customer1,  Discard2   300

Les options Discard1 et Discard2 n'existent pas dans le profil.

  • Exemple 1:

    Si le membre Customer1 de la dimension Customer est marqué comme renégaté et que les autres dimensions n'ont pas de membres renégatés, seul le premier enregistrement est chargé dans le croisement suivant :

    Jan    Sale    Customer1(Ren)    Product1    300

    Les deux autres enregistrements sont rejetés car la dimension Product n'a pas de membre renégaté. Les enregistrements rejetés sont consignés dans le fichier journal des membres renégats.

  • Exemple 2:

    Si le membre Product1 de la dimension Product est marqué comme renégaté et que les autres dimensions n'ont pas de membres renégatés, seul le dernier enregistrement est chargé dans le croisement suivant :

    Jan    Sale    Customer1    Product1(Ren)    300

    Les deux autres enregistrements sont rejetés car la dimension Customer n'a pas de membre renégaté. Les enregistrements rejetés sont consignés dans le fichier journal des membres renégats.

  • Exemple 3:

    Si les dimensions Customer et Product ont toutes deux des membres renégats (Customer1 et Product1), tous les enregistrements sont chargés dans le croisement suivant :

    Jan    Sale    Customer1(Ren)    Product1(Ren)    900 (or 300 if overwrite is enabled)

Exemple 4:

Dans l'exemple 4, RenMember1 est marqué comme renégat et RenMember2 est marqué comme renégat. A l'aide du fichier de chargement de données suivant, tous les enregistrements sont chargés car les dimensions Client et Produit ont des membres renouvelés.

Customer1 et Product1 ne sont pas des membres renégats. Les champs "Annuler1" et "Annuler2" n'existent pas dans le profil.

Fichier de chargement des données :

Months  Transaction Type  Customer    Product   *Data*
Jan,     Sale,            Discard1,   Product1   300
Jan,     Sale,            Discard1,   Discard2   300
Jan,     Sale,            Customer1,  Discard2   300

Les valeurs indiquées dans le fichier de chargement des données pour les membres rejetés sont chargées automatiquement dans les membres renégats désignés :

Données chargées :

Months  Measures   Customer          Product           Price
Jan     Sale       RenMember1(ren)   ProductR          300
Jan     Sale       RenMember1(ren)   RenMember2(ren)   300
Jan     Sale       CustomerR         RenMember2(ren)   300

Par défaut, la journalisation des membres renégats n'est pas activée. Pour activer la journalisation, utilisez le paramètre de configuration RENEGADELOG, qui, lorsqu'il est défini sur TRUE, active la journalisation des membres chargés dans un croisement de membres renégats.

Remarques :

Les membres renégats peuvent être référencés dans des scripts de calcul et de rapport. Les membres renégats ne sont pas pris en charge dans les chargements de données sous forme de tableau ou les opérations de mise à jour de feuille de calcul.

Différences de données source pour les chargements de données en mode "aggregate storage"

Lors du traitement des enregistrements dans les données source en vue du chargement des valeurs dans des cubes en mode "aggregate storage", Essbase traite les enregistrements uniquement pour les croisements de dimension de niveau 0 où le membre n'a pas de formule.

L'exemple suivant montre une source de données qui contient des enregistrements pour les croisements de niveau 0 uniquement. Le dernier champ contient des valeurs de données et les autres champs sont des membres de niveau 0 de leurs dimensions respectives.

Jan, Curr Year, Digital Cameras, CO, Original Price, 10784
Jan, Prev Year, Camcorders, CO, Original Price, 13573

Essbase ignore les enregistrements qui spécifient des membres de niveau supérieur et affiche le nombre d'enregistrements ignorés à la fin du chargement des données.

Par exemple, l'enregistrement suivant serait ignoré car le membre Mid West est un membre de niveau 1 :

Jan, Curr Year, Digital Cameras, Mid West, Original Price, 121301

Le tri des données n'est pas nécessaire car Essbase lit et trie les enregistrements en interne avant de valider les valeurs dans le cube.