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