Déployer la réécriture

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

Rubriques :

À propos de la réécriture pour les administrateurs

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

Les utilisateurs dotés du privilège Réécrire dans la base de données voient les champs de réécriture comme pouvant être modifiés dans les analyses. Les valeurs qu'ils entrent sont enregistrées dans la base de données. Les utilisateurs qui ne sont pas dotés du privilège Réécrire dans la base de données voient les champs de réécriture comme étant accessibles en lecture seule.

Si un utilisateur entre une valeur dans un champ pouvant être modifié et clique sur le bouton Réécrire, l'application exécute la commande SQL insert ou update définie dans un modèle de réécriture. Si la commande réussit, l'analyse est mise à jour avec la nouvelle valeur. Si une erreur survient lors de la lecture du modèle ou de l'exécution de la commande SQL, un message d'erreur s'affiche.

La commande insert est exécutée lorsqu'un enregistrement n'existe pas encore et que l'utilisateur entre de nouvelles données dans la table. Dans ce cas, l'utilisateur a entré dans la table un enregistrement dont les valeurs étaient vides initialement. 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 similaire. Utilisez cette table similaire pour afficher les enregistrements d'espace réservé qu'un utilisateur peut modifier.

Note :

Lorsque vous créez des modèles de réécriture, vous devez inclure une commande insert et une commande update, même si elles ne sont pas utilisées. Par exemple, si vous effectuez seulement une opération insert, vous devez inclure un énoncé update <update></update> vide, comme dans ce code XML :

Voici un exemple de fichier XML de réécriture contenant deux commandes insert et deux énoncés update vides. Pour savoir comment créer et structurer des fichiers XML de réécriture, voir Créer des 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>

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

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

  1. Configurez le modèle sémantique .

    Note :

    Procédez comme suit si vous utilisez l'outil d'administration de modèle pour développer des modèles sémantiques. Si vous utilisez le modélisateur sémantique, voir

    Activer la réécriture dans les colonnes .

    1. Dans l'outil d'administration de modèle, ouvrez le modèle sémantique (fichier .rpd).
    2. Dans la couche physique, cliquez deux fois sur la table physique qui contient la colonne pour laquelle vous voulez activer la réécriture.
    3. Dans l'onglet Général de la boîte de dialogue Table physique, vérifiez que l'option Pouvant être mis en mémoire cache n'est pas sélectionnée. Si vous la désélectionnez, les utilisateurs de Presentation Services peuvent voir les mises à jour immédiatement.
    4. Dans la couche Modèle d'affaires et mappage, 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, sélectionnez Autorisations.
    8. Sélectionnez l'autorisation Lecture/écriture pour les utilisateurs et les rôles d'application appropriés.
    9. Enregistrer les modifications.
  2. Créez un document XML à l'aide de votre modèle (ou de vos modèles) de réécriture. Voir Créer des fichiers de modèle de réécriture.

    Votre document XML peut contenir plusieurs modèles. Cet exemple présente un document XML contenant 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>
    Note : 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 effectuez seulement une opération insert, vous devez inclure l'énoncé update <update></update> vide.
  3. Copiez le document XML contenant vos modèles de réécriture dans le presse-papiers.
  4. Appliquez le modèle de réécriture dans Oracle Analytics :
    1. Cliquez sur Console, puis sur Paramètres de système avancés.
    2. Dans XML de modèle de réécriture, collez le modèle de réécriture que vous avez copié à l'étape 3.
  5. Accordez les autorisations pour utiliser le code de réécriture :
    1. Naviguez jusqu'à la page d'accueil de l'interface classique et cliquez sur Administration.
    2. Sous Sécurité, cliquez sur Gérer les privilèges et naviguez jusqu'à Réécrire.
    3. Accordez l'autorisation Réécrire dans la base de données à Utilisateur authentifié.
    4. Accordez l'autorisation Gérer la réécriture à Administrateur de service BI.
  6. Pour activer la réécriture dans les colonnes :
    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 des 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 zone Activer la réécriture est disponible.
    3. Sélectionnez l'option Activer la réécriture.
    4. Spécifiez la valeur des autres options si vous voulez modifier la valeur par défaut.
    5. Enregistrer les modifications.
    La colonne est activée pour la réécriture dans toute analyse l'incluant.
  7. Pour activer la réécriture dans les vues de table :
    1. Dans l'éditeur d'analyse, ouvrez la vue de table aux fins de modification.
    2. Cliquez sur Voir les propriétés.
    3. Dans la boîte de dialogue Propriétés de table, cliquez sur l'onglet Réécrire.
    4. Sélectionnez l'option Activer la réécriture.
    5. Sélectionnez la zone Nom du modèle, spécifiez la valeur "WebMessage name=" dans le modèle de réécriture que vous avez indiqué à l'étape 2.
      Par exemple, le nom du modèle pour l'exemple de modèle à l'étape 2 est 'SetQuotaUseID'.
    6. Enregistrer les modifications.

Limitations concernant la réécriture

Les utilisateurs peuvent réécrire dans toute source de données qui permet l'exécution d'interrogations SQL à partir d'Oracle Analytics .

Lors de la configuration pour la réécriture, gardez à l'esprit les limitations 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 le signe dollar ($), le carré (#), le signe pourcentage (%), etc.

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

  • Si un utilisateur connecté consulte déjà un tableau de bord contenant une analyse dont les données ont été modifiées à l'aide de la fonction de réécriture, les données ne sont pas actualisées automatiquement dans le tableau de bord. Pour voir 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 les vues de table et uniquement pour les données à valeur unique. 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 peuvent être modifiées. Lorsqu'ils sont affichés dans un contexte non imprimable, les champs modifiables apparaissent comme si l'utilisateur disposait du privilège Réécrire dans la base de données. Toutefois, lorsqu'une colonne logique est mappée à une colonne physique qui peut être modifiée, la première retourne des valeurs pour les intersections à niveaux multiples. Ce scénario peut occasionner des problèmes.

  • Tout champ d'une analyse peut être marqué en tant que champ de réécriture, même s'il ne provient pas de la table de réécriture que vous avez créée. Toutefois, l'opération de réécriture ne peut pas aboutir si la réécriture n'est pas activée pour la table. Il incombe au concepteur de contenu de baliser correctement les champs.

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

  • Oracle Analytics n'effectue qu'une validation minimale des entrées de données. Si le champ est numérique et que l'utilisateur entre des données de texte, Oracle Analytics le détecte et empêche l'envoi des données non valides à la base de données. Toutefois, il ne détecte pas les autres formes d'entrée de données non valides (valeurs hors intervalle, mélange de texte et de valeurs 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, la base de données envoie un message d'erreur pour indiquer que les données ne sont pas valides. L'utilisateur peut alors corriger l'entrée incorrecte. Les concepteurs de contenu peuvent inclure du texte dans l'analyse de réécriture pour aider l'utilisateur, par exemple, "L'entrée de valeurs alphanumériques mixtes dans un champ de données numériques n'est pas autorisé.".

  • Le mécanisme de modèle ne convient pas pour l'entrée de nouveaux enregistrements arbitraires. Autrement dit, ne l'utilisez pas comme 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 inclut non pas la capacité de réécriture mais des valeurs uniques pour chaque rangée et non nulles.

  • Les analyses de réécriture ne prennent pas en charge le forage. Étant donné que le forage modifie la structure de la table, le modèle de réécriture ne fonctionne pas.

    Attention :

    Le mécanisme de modèle prend l'entrée d'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 propre 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éer des fichiers de modèle de réécriture

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

Un modèle de réécriture comprend un élément WebMessage indiquant le nom du modèle, la réserve de connexions et les énoncés SQL nécessaires pour insérer et mettre à jour les enregistrements dans les tables et les colonnes de réécriture que vous avez créées. Lorsque les concepteurs de contenu activent la réécriture pour une vue de table, ils doivent spécifier le nom du modèle de réécriture à utiliser pour insérer et mettre à jour les enregistrements dans la vue de table.

Exigences pour un modèle de réécriture

Un modèle de réécriture doit répondre aux exigences suivantes :

  • WebMessage : Vous devez spécifier un nom pour le modèle de réécriture à l'aide de l'attribut name de l'élément WebMessage.

    Pour que la réécriture fonctionne correctement, lors de son activation pour une vue de table, le concepteur de contenu doit spécifier le nom du modèle de réécriture à utiliser pour insérer et mettre à jour les enregistrements dans la vue.

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

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool : Pour répondre aux exigences de sécurité, vous devez spécifier la réserve de connexions ainsi que 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 énoncés SQL permettant de modifier la table de base de données.

  • VALUES : Les valeurs de colonne peuvent être référencées par ID colonne ou position de colonne. Il est préférable d'utiliser un ID colonne.

    Placez les valeurs de chaîne et de date entre guillemets simples. Il n'est pas nécessaire d'utiliser des guillemets simples pour les valeurs numériques.

    • ID colonne - Chaque ID colonne est une valeur alphanumérique générée de manière aléatoire. Les ID colonne figurent dans la définition XML de l'analyse disponible dans l'onglet Avancé de l'éditeur d'analyse. Voici un exemple de valeurs d'ID colonne : @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Lorsque vous utilisez des ID colonne, la réécriture continue de fonctionner même si l'ordre des colonnes change.

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

    • Position de colonne - La numérotation des positions de colonne commence à 1. Voici un exemple de valeurs de position de colonne : @1, @3, '@5'

      Si l'ordre des colonnes change, la réécriture ne fonctionne plus. Il est donc préférable d'utiliser des ID colonne.

  • 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 une espace entre les balises d'ouverture et de fermeture. Par exemple, vous devez entrer l'élément comme suit :

    <insert> </insert>
    

    À la place de :

    <insert></insert>
    

    Si vous omettez l'espace, un message d'erreur de réécriture, tel que "Le système ne parvient pas à lire le modèle de réécriture 'mon_modèle'", s'affiche.

  • Si les données d'un paramètre ne sont pas de type nombre entier ou nombre réel, placez-les entre guillemets simples. Si la base de données n'effectue pas les validations de manière automatique, ajoutez le noeud postUpdate facultatif après les noeuds insert et update pour forcer la validation. Le noeud postUpdate se présente généralement comme suit :

    <postUpdate>COMMIT</postUpdate>
    

Exemple de fichier de modèle de réécriture avec la syntaxe d'ID colonne

Un fichier de modèle de réécriture qui référence des valeurs par ID colonne peut se présenter comme suit :

<?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 fichier de modèle de réécriture avec la syntaxe de position de colonne

Un fichier de modèle de réécriture qui référence des valeurs par position de colonne peut se présenter comme suit :

<?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>