Déploiement de la réécriture

La réécriture permet aux utilisateurs de mettre à jour les données à partir des analyses.

Rubriques :

A propos de la réécriture pour les administrateurs

La réécriture permet aux utilisateurs de mettre à jour les données directement à partir des tableaux de bord et des analyses.

Les champs de réécriture apparaissent comme des champs modifiables dans les analyses pour les utilisateurs disposant du privilège Réécrire dans la base de données. Les valeurs qu'ils saisissent sont enregistrées dans la base de données Les champs de réécriture apparaissent comme des champs en lecture seule pour les utilisateurs ne disposant pas du privilège Réécrire dans la base de données.

Si un utilisateur saisit une valeur dans un champ modifiable et clique sur le bouton de réécriture, l'application exécute la commande SQL insert ou update définie dans le modèle de réécriture. Si la commande fonctionne, l'analyse est mise à jour avec la nouvelle valeur. En cas d'erreur lors de la lecture du modèle ou de l'exécution de la commande SQL, un message d'erreur apparaît.

La commande insert est exécutée lorsqu'un enregistrement n'existe pas encore et que l'utilisateur saisit de nouvelles données dans la table. Dans ce cas, l'utilisateur a effectué une saisie dans un enregistrement de table dans lequel la valeur d'origine était NULL. La commande update est exécutée lorsqu'un utilisateur modifie des données existantes. Pour afficher un enregistrement qui n'existe pas encore dans la table physique, vous pouvez créer une autre table analogue. Servez-vous de cette table analogue pour afficher des enregistrements de réserve qu'un utilisateur peut modifier.

Remarque :

Lorsque vous créez des modèles de réécriture, vous devez inclure à la fois une commande insert et une commande update, même si elles ne sont pas utilisées. Par exemple, si vous n'exécutez qu'une commande insert, vous devez inclure une instruction update vide (<update></update>), comme dans le code XML ci-après.

Voici un exemple de fichier XML de réécriture qui contient deux commandes insert et deux instructions update vides. Pour en savoir plus sur la création et la structuration des fichiers XML de réécriture, reportez-vous à Création de fichiers de modèle de réécriture.
<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuotaUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
            <update></update>
         </writeBack>
      </XML>
   </WebMessage>
<WebMessage name="SetForecastUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e0}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
            <update></update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

Activation de la réécriture dans les analyses et tableaux de bord

Les administrateurs peuvent permettre aux utilisateurs de modifier les données dans les analyses et tableaux de bord.

  1. Configurez votre modèle sémantique .

    Remarque :

    Suivez ces étapes si vous utilisez l'outil d'administration de modèle pour développer des modèles sémantiques. Si vous utilisez le modeleur sémantique, reportez-vous à

    Activation de la réécriture sur les colonnes .

    1. Dans l'outil d'administration de modèle, ouvrez votre modèle sémantique (fichier .rpd).
    2. Dans la couche physique, cliquez deux fois sur la table physique contenant la colonne pour laquelle vous souhaitez activer la réécriture.
    3. Dans l'onglet Général de la boîte de dialogue Table physique, vérifiez que l'option Mise en mémoire cache possible n'est pas sélectionnée. Si vous désélectionnez cette option, vous vous assurez que les utilisateurs de Presentation Services voient les mises à jour immédiatement.
    4. Dans la couche Modèle de gestion et correspondance, cliquez deux fois sur la colonne logique correspondante.
    5. Dans la boîte de dialogue Colonne logique, sélectionnez Accessible en écriture, puis cliquez sur OK.
    6. Dans la couche Présentation, cliquez deux fois sur la colonne qui correspond à la colonne logique pour laquelle vous avez activé la réécriture.
    7. Dans la boîte de dialogue Colonne de présentation, cliquez sur Droits d'accès.
    8. Sélectionnez le droit d'accès Lecture/Ecriture pour les utilisateurs et les rôles d'application appropriés.
    9. Enregistrez les modifications.
  2. Créez un document XML avec vos modèles de réécriture. Reportez-vous à Création de fichiers de modèle de réécriture.

    Le document XML peut contenir plusieurs modèles. Cet exemple montre un document XML qui contient deux modèles (SetQuotaUseID et SetForecastUseID).

    <?xml version="1.0" encoding="utf-8" ?>
    <WebMessageTables xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="oracle.bi.presentation/writebackschemas/v1">
    <WebMessageTable lang="en-us" system="WriteBack" table="Messages">
       <WebMessage name="SetQuotaUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
                <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    <WebMessage name="SetForecastUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e01}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
                <update>UPDATE regiontypeforecast SET Dollars=@{c7322jkl93ev92cd8} WHERE YR=@{c83ebf607f3cb8320} AND Quarter=@{cb7e2046a0fba2204} AND Region='@{c5a93e65d31f10e01}' AND ItemType='@{c5a93e65d31f10e0}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    </WebMessageTable>
    </WebMessageTables>
    Remarque : vous devez inclure un élément <insert> et un élément <update>, même s'ils ne sont pas utilisés. Par exemple, si vous n'exécutez qu'une commande insert, vous devez inclure une instruction update vide : <update></update>.
  3. Copiez le document XML contenant vos modèles de réécriture dans le presse-papiers.
  4. Appliquez votre modèle de réécriture dans Oracle Analytics :
    1. Cliquez sur Console, puis sur Paramètres système.
    2. Dans Fichier XML de modèle de réécriture, collez le modèle de réécriture que vous avez copié à l'étape 3.
  5. Octroyez des droits d'accès pour utiliser le code de réécriture :
    1. Accédez à la page d'accueil classique, puis cliquez sur Administration.
    2. Sous Sécurité, cliquez sur Gérer les privilèges et accédez à Réécrire.
    3. Octroyez le privilège Réécrire dans la base de données à l'utilisateur authentifié.
    4. Octroyez le privilège Gérer la réécriture à l'administrateur de service BI.
  6. Pour activer la réécriture dans les colonnes, procédez comme suit :
    1. Dans l'éditeur d'analyse, affichez les propriétés de la colonne pour laquelle vous voulez activer la réécriture.
    2. Dans la boîte de dialogue Propriétés de colonne, cliquez sur l'onglet Réécrire.
      Si la colonne a été activée pour la réécriture dans le modèle sémantique, la case Activer la réécriture est disponible.
    3. Sélectionnez l'option Activer la réécriture.
    4. Indiquez la valeur des autres options si vous souhaitez modifier les valeurs par défaut.
    5. Enregistrez les modifications.
    La réécriture est activée pour la colonne dans toutes les analyses qui comprennent cette dernière.
  7. Pour activer la réécriture dans les vues de table, procédez comme suit :
    1. Dans l'éditeur d'analyse, ouvrez la vue de table à des fins de modification.
    2. Cliquez sur Visualiser les propriétés.
    3. Dans la boîte de dialogue Propriétés de la table, cliquez sur l'onglet Réécrire.
    4. Sélectionnez l'option Activer la réécriture.
    5. Cochez la case Nom de modèle, puis indiquez la valeur "WebMessage name=" dans le modèle de réécriture que vous avez spécifié à l'étape 2.
      Par exemple, le nom de modèle de l'exemple de modèle à l'étape 2 est SetQuotaUseID.
    6. Enregistrez les modifications.

Limites relatives à la réécriture

Les utilisateurs peuvent effectuer une réécriture dans n'importe quelle source de données qui autorise l'exécution de requêtes SQL à partir d'Oracle Analytics.

Lors de la configuration de la réécriture, gardez en tête les limites suivantes :

  • Les colonnes numériques ne doivent contenir que des nombres. Elles ne doivent pas contenir de caractères de formatage de données tels que des symboles dollar ($), des symboles dièse (#), des symboles de pourcentage (%), etc.

  • Les colonnes de texte ne doivent contenir que des données de chaîne.

  • Si un utilisateur connecté est déjà en train de visualiser un tableau de bord qui contient une analyse dans laquelle des données ont été modifiées à l'aide de la réécriture, les données ne sont pas automatiquement actualisées dans le tableau de bord. Pour afficher les données mises à jour, l'utilisateur doit actualiser manuellement le tableau de bord.

  • Vous pouvez utiliser le mécanisme de modèle uniquement avec des vues de table et pour des données à valeur uniquement. Le mécanisme de modèle n'est pas pris en charge pour les vues de tableau croisé dynamique ou tout autre type de vue, pour les données à valeurs multiples ou pour les colonnes de liste déroulante avec des données à valeur unique.

  • Toutes les valeurs des colonnes de réécriture sont modifiables. Dans un contexte non destiné à l'impression, les champs modifiables sont affichés comme si l'utilisateur disposait du privilège Réécrire dans la base de données. Cependant, lorsqu'une colonne logique est mise en correspondance avec une colonne physique modifiable, la colonne logique renvoie des valeurs pour les intersections à plusieurs niveaux. Ce scénario peut provoquer des problèmes.

  • Tous les champs d'une analyse peuvent être marqués comme champs de réécriture, même s'ils ne proviennent pas de la table de réécriture que vous avez créée. Cependant, vous ne pouvez pas exécuter l'opération de réécriture si la réécriture n'est pas activée pour la table. La responsabilité du balisage correct des champs incombe au concepteur de contenu.

  • Un modèle peut contenir des instructions SQL autres que insert et update. La fonction de réécriture transmet ces instructions à la base de données. Toutefois, Oracle ne prend pas en charge ni ne recommande l'utilisation d'instructions autres que insert ou update.

  • Oracle Analytics effectue uniquement une validation minimale des entrées de données. Si le champ est numérique et que l'utilisateur saisit des données textuelles, Oracle Analytics le détecte et empêche l'envoi des données non valides à la base de données. Cependant, il ne détecte pas les autres formes d'entrées de données non valides (valeurs hors limites, mélange de valeurs textuelles et numériques, etc.). Lorsque l'utilisateur clique sur le bouton de réécriture et qu'une insertion ou une mise à jour est exécutée, les données non valides entraînent un message d'erreur provenant de la base de données. L'utilisateur peut ensuite corriger l'entrée qui pose problème. Les concepteurs de contenu peuvent inclure du texte dans l'analyse de réécriture pour aider l'utilisateur, par exemple : "La saisie de valeurs alphanumériques dans un champ de données numériques n'est pas autorisée".

  • Le mécanisme de modèle ne convient pas à la saisie de nouveaux enregistrements arbitraires. En d'autres termes, ne l'utilisez pas en tant qu'outil d'entrée de données.

  • Lors de la création d'une table pour la réécriture, assurez-vous qu'au moins une colonne n'inclut pas la capacité de réécriture mais qu'elle inclut des valeurs uniques non NULL pour chaque ligne.

  • Les analyses de réécriture ne prennent pas en charge l'analyse descendante. Etant donné que l'analyse descendante modifie la structure de table, le modèle de réécriture ne fonctionne pas.

    Prudence :

    Le mécanisme de modèle prend l'entrée utilisateur et l'écrit directement dans la base de données. La sécurité de la base de données physique relève de votre responsabilité. Pour une sécurité optimale, stockez les tables de base de données de réécriture dans une instance de base de données unique.

Création de fichiers de modèle de réécriture

Un fichier de modèle de réécriture est un fichier au format XML qui contient au moins un modèle de réécriture.

Un modèle de réécriture est un élément WebMessage qui indique le nom du modèle, le pool de connexions et les instructions SQL nécessaires pour insérer et mettre à jour des enregistrements dans les tables et colonnes de réécriture que vous avez créées. Lorsque les concepteurs de contenu activent une vue de table pour la réécriture, ils doivent indiquer le nom du modèle de réécriture à utiliser pour insérer et mettre à jour les enregistrements dans la vue de table.

Exigences relatives à un modèle de réécriture

Un modèle de réécriture doit respecter les exigences suivantes :

  • WebMessage : vous devez indiquer le nom du modèle de réécriture à l'aide de l'attribut name dans l'élément WebMessage.

    Afin que la réécriture fonctionne correctement, lors de l'activation d'une vue de table pour la réécriture, un concepteur de contenu doit indiquer le nom du modèle de réécriture à utiliser pour insérer et mettre à jour les enregistrements dans la vue.

    Cet exemple montre un modèle de réécriture appelé SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool : afin de respecter les exigences en matière de sécurité, vous devez indiquer le pool de connexions avec les commandes SQL permettant d'insérer et de mettre à jour les enregistrements. Ces commandes SQL référencent les valeurs transmises au schéma de réécriture pour générer les instructions SQL afin de modifier la table de base de données.

  • VALUES : les valeurs de colonne peuvent être référencées par ID de colonne ou position de colonne. L'utilisation de l'ID de colonne est à privilégier.

    Placez les valeurs de chaîne et de date entre apostrophes. Les apostrophes ne sont pas requises pour les valeurs numériques.

    • ID de colonne : chaque ID de colonne est une valeur alphanumérique générée de façon aléatoire. Vous trouverez les ID de colonne dans la définition XML de l'analyse qui est disponible dans l'onglet Avancé de l'éditeur d'analyse. Exemples de valeur d'ID de colonne : @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Lorsque vous utilisez des ID de colonne, la réécriture fonctionne toujours même si l'ordre des colonnes est modifié.

      Représentation XML dans l'onglet Avancé de l'éditeur d'analyse

    • Position de colonne : la numérotation des positions de colonne débute à 1. Exemples de valeur de position de colonne : @1, @3, '@5'

      Si l'ordre des colonnes est modifié, la réécriture ne fonctionne plus. C'est la raison pour laquelle les ID de colonnes sont à privilégier.

  • Vous devez inclure un élément <insert> et un élément <update> dans le modèle. Si vous ne voulez pas inclure de commandes SQL dans les éléments, vous devez insérer un espace entre les balises d'ouverture et de fermeture. Par exemple, vous devez saisir l'élément comme suit :

    <insert> </insert>
    

    plutôt que :

    <insert></insert>
    

    Si vous oubliez l'espace, un message d'erreur de réécriture tel que "Le système ne peut pas lire le modèle de réécriture 'my_template'" apparaîtra.

  • Si le type de données d'un paramètre n'est pas un nombre entier ou réel, placez-le entre apostrophes. Si la base de données n'effectue pas automatiquement des validations, ajoutez le noeud postUpdate facultatif après les noeuds insert et update pour forcer la validation. Le noeud postUpdate suit généralement l'exemple ci-après :

    <postUpdate>COMMIT</postUpdate>
    

Exemple de syntaxe de fichier de modèle de réécriture utilisant les ID de colonne

Un fichier de modèle de réécriture qui référence les valeurs par ID de colonne peut ressembler à l'exemple suivant :

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuotaUseID">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@{c5f6e60e1d6eb1098},@{c5d7e483445037d9e},'@{c3a93e65731210ed1}','@{c6b8735ea60ff3011}',@{c0432jkl53eb92cd8})</insert>
            <update>UPDATE regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>

Exemple de syntaxe de fichier de modèle de réécriture utilisant les positions de colonne

Un fichier de modèle de réécriture qui référence les valeurs par position de colonne peut ressembler à l'exemple suivant :

<?xml version="1.0" encoding="utf-8" ?>
<WebMessageTables xmlns:sawm="com.siebel.analytics.web/message/v1">
<WebMessageTable lang="en-us" system="WriteBack" table="Messages">
   <WebMessage name="SetQuota">
      <XML>
         <writeBack connectionPool="Supplier">
            <insert>INSERT INTO regiontypequota VALUES(@1,@2,'@3','@4',@5)</insert>
            <update>UPDATE regiontypequota SET Dollars=@5 WHERE YR=@1 AND Quarter=@2 AND Region='@3' AND ItemType='@4'</update>
         </writeBack>
      </XML>
   </WebMessage>
</WebMessageTable>
</WebMessageTables>