La réécriture permet aux utilisateurs de mettre à jour les données des analyses.
Rubriques :
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 :
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>
Les administrateurs peuvent permettre aux utilisateurs de modifier les données dans les analyses et les tableaux de bord.
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.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.
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.
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>