Configurer la table de faits et identifier la dimension dynamique

Une table de faits présente dans la base de données Autonomous Data Warehouse stocke les données du cube Essbase comportant une partition fédérée. Si vous ne disposez pas d'une table de faits répondant aux exigences pour les partitions fédérées, vous devez en créer une. Vous devez également comprendre ce qu'est une dimension dynamique afin de pouvoir en sélectionner une à partir de votre cube Essbase.

Avant de commencer cette section, créez une application et un cube Essbase si vous ne l'avez pas encore fait.

Créer la table de faits

Pour les partitions fédérées, la table de faits stocke les valeurs de données du cube Essbase. Si la table de faits requise ne figure pas dans la base de données Autonomous Data Warehouse, vous devez en créer une.

Avant de commencer, assurez-vous que vous disposez d'un schéma vide pour la table de faits. Voir Créer un schéma pour les partitions fédérées.

La table de faits doit être dans un format compatible avec Essbase, c'est-à-dire qu'elle doit répondre aux exigences suivantes en ce qui concerne son contenu et sa forme :

  • Chaque dimension (autre qu'une dimension d'attribut) du cube doit être représentée sous la forme d'un en-tête de colonne unique, et l'une d'elles (généralement celle qui contient les mesures/comptes) doit être pivotée dans deux colonnes ou plus.

    Note :

    Partout ailleurs dans la documentation, la dimension qui est pivotée est appelée dimension dynamique.

  • La table de faits doit être composée d'enregistrements uniques (pas de doublons), avec une rangée par séquence d'intersections de cellules Essbase.

Si vous connaissez les exportations de données Essbase,vous noterez que la forme de la table de faits est exactement la même que pour une exportation de colonne Essbase.

Comme pour une exportation de colonne, la table de faits doit inclure :

  • une colonne pour chaque dimension (autre qu'une dimension d'attribut) de la structure (sauf pour la dimension dynamique);

  • une colonne pour chaque membre stocké de la dimension dynamique.

Voici l'exemple d'une table de faits dans laquelle la dimension de mesures a été pivotée, ce qui signifie qu'il s'agit de la dimension dynamique. La dimension dynamique a une incidence sur la forme de la table de faits, car les membres stockés de cette dimension deviennent des en-têtes de colonne : SALES, COGS, MARKETING, PAYROLL, MISC, INTITIAL_INVENTORY et ADDITIONS.


Table de faits contenant des données et métadonnées dénormalisées

Vous pouvez créer la table de faits à l'aide de SQL ou à partir d'une exportation de données Essbase. Vous pouvez charger des données dans la table de faits à l'aide des outils pour la base de données Autonomous Data Warehouse ou de la fonctionnalité de chargement de données pour Essbase.

Autres directives pour la création d'une table de faits :

  • La table de faits doit contenir moins de 1 000 colonnes.

  • N'incluez pas de colonnes qui seront mappées dans Essbase à des dimensions d'attribut.

  • La table de faits ne doit pas avoir une précision inférieure au format binary64 (double) de la norme IEE.

  • La table de faits doit comporter des chaînes internationalisées pour les membres de dimension, de type NVARCHAR2 et avec une longueur de caractère de 1024 bits.

Exemple de création d'une table de faits

Pour créer une table de faits dans la base de données Autonomous Data Warehouse, vous pouvez utiliser SQL.

  1. À l'aide de SQL Developer ou de l'outil de votre choix, connectez-vous à la base de données Autonomous Data Warehouse en tant que responsable du schéma (à partir de l'étape Créer un schéma pour les partitions fédérées).

  2. Utilisez SQL pour créer la table de faits, si vous n'en avez pas déjà une.

    Par exemple, le code SQL suivant crée une table de faits à partir des données exportées du cube Essbase, Sample Basic.

    CREATE TABLE "SAMP_FACT"
    ( "PRODUCT" NVARCHAR2(1024),
    "MARKET" NVARCHAR2(1024),
    "YEAR" NVARCHAR2(1024),
    "SCENARIO" NVARCHAR2(1024),
    "SALES" NUMBER(38,0),
    "COGS" NUMBER(38,0),
    "MARKETING" NUMBER(38,0),
    "PAYROLL" NUMBER(38,0),
    "MISC" NUMBER(38,0),
    "INITIAL_INVENTORY" NUMBER(38,0),
    "ADDITIONS" NUMBER(38,0)
    ) NOCOMPRESS LOGGING PARALLEL 4;

Notes

  • Dans l'exemple ci-dessus, le nom de la table de faits est SAMP_FACT et elle est basée sur Sample Basic.

  • Pour une performance optimale, toutes les colonnes non numériques de la table de faits doivent être de type NVARCHAR2(1024) et toutes les colonnes numériques, de type NUMBER.

  • Oracle recommande de permettre la création en parallèle de l'index dans Autonomous Data Warehouse, en ajoutant PARALLEL 4.

  • Les colonnes de métadonnées ne doivent pas permettre l'inclusion de valeurs NULL.

  • Oracle recommande NOCOMPRESS lorsque l'utilisation du cube inclut des processus de génération de données tels que le chargement de données incrémentielles ou les mises à jour de script par lots. Si le cube doit être utilisé principalement pour des opérations de lecture, utilisez COMPRESS pour optimiser la table de faits pour la production de rapports.

  • Si vous obtenez l'erreur de validation suivante en créant la table de faits, supprimez les rangées contenant des valeurs nulles.

    ORA-18265: fact table key column ("<DIM_NAME>") with value ('') not in
          dimension("<Name_of_Column") star table key column
  • Pour une performance optimale, évitez d'ajouter des contraintes particulières à la table, sauf si cela est absolument nécessaire.

  • Dans l'exemple ci-dessus, le nom de la table de faits est basé sur Sample Basic, qui est disponible dans la galerie du catalogue de fichiers Essbase. Vous pouvez exporter les données de cet exemple de cube ou de tout autre cube Essbase et les charger pour créer une table de faits. Avant de pouvoir le faire, vous devez configurer des données d'identification pour charger des données dans une application de partition fédérée. Voir Chargement de données de partition fédérée pour configurer les données d'identification et savoir comment exporter les données dans le format SGBD à l'aide de la commande DATAEXPORT.

Identifier la dimension dynamique

Dans le cadre de la conception d'une partition fédérée, vous devez sélectionner la dimension dynamique. Une dimension dynamique est une dimension que vous désignez à partir de la structure du cube Essbase pour représenter des valeurs de données numériques.

  • La dimension dynamique ne doit pas nécessairement consister en des mesures/comptes, mais elle le peut.

  • Tous les membres stockés de la dimension dynamique doivent être mappés aux colonnes de la table de faits qui représentent vos valeurs de données numériques dans Autonomous Data Warehouse.

  • Si vous devez exécuter des scripts de calcul de stockage par blocs (BSO) Essbase, sélectionnez une dimension dense comme dimension dynamique. Les scripts de calcul ne sont pas pris en charge pour les partitions fédérées si la dimension dynamique est dispersée.

  • La dimension dynamique doit comporter des noms de membres relativement statiques et un nombre de membres peu élevé. Motif : Toute modification de la dimension dynamique dans la structure du cube Essbase (par exemple, par l'ajout ou le changement de nom de membres stockés) impose de mettre manuellement à jour en conséquence la table de faits dans la base de données Autonomous Data Warehouse mais également de recréer la partition fédérée.

  • Les dimensions Essbase qui comportent des membres exigeant des formules dynamiques complexes (telles que "Opening Inventory" et "Ending Inventory", en utilisant Sample Basic comme exemple) ne doivent pas être sélectionnées comme dimension dynamique.

  • Vous fournissez votre dimension dynamique sélectionnée au moment de la création d'une partition fédérée.

  • Oracle Database est limité à 1 000 colonnes, et la dimension dynamique hérite de cette limite. Déterminez le nombre de membres de colonne admissibles dans la dimension dynamique pour faire en sorte que cette limite ne soit pas atteinte. Le nombre de combinaisons potentielles de membres stockés dans la dimension dynamique plus le nombre de dimensions dans le cube doit être supérieur ou égal à 1 000.

  • Pour les cubes de stockage agrégé, les dimensions contenant des hiérarchies de membres stockés à plusieurs niveaux ne doivent pas être sélectionnées comme dimension dynamique. Sélectionnez une dimension dynamique avec des hiérarchies dynamiques ou une hiérarchie stockée qui est une hiérarchie plate à un seul niveau (où tous les membres sont des membres stockés de niveau 0).