Med återskrivning kan användarna uppdatera data från analyser.
Avsnitt:
Med återskrivning kan användarna uppdatera data direkt från infopaneler och analyser.
Användare med behörigheten Återskrivning till databas ser återskrivningsfält som redigerbara fält i analyser. De värden de anger sparas till databasen. Användare som saknar behörigheten Återskrivning till databas ser återskrivningsfält som skrivskyddade fält.
Om en användare skriver in ett värde i ett redigerbart fält och klickar på återskrivningsknappen så kör applikationen det SQL-kommando för insert
eller update
som angetts i en återskrivningsmall. Om kommandot utförs uppdateras analysen med det nya värdet. Om ett fel uppstår, antingen vid läsning av mallen eller vid körning av SQL-kommandot, visas ett felmeddelande.
Kommandot insert
körs när en post inte finns än och användaren anger nya data i tabellen. I det här fallet har en användare skrivit i en tabellpost vars ursprungliga värde var null. Kommandot update
körs när en användare ändrar befintliga data. Om du vill visa en post som ännu inte finns i den fysiska tabellen kan du skapa en annan liknande tabell. Använd den här liknande tabellen för att visa platshållarposter som en användare kan ändra.
Obs!:
När du skapar återskrivningsmallar måste du inkludera ett kommando av typen insert
och ett av typen update
även om inte båda används. Om du t.ex. bara utför en insert
måste du inkludera en tom update
-sats, <update></update>
, som i den här XML-koden:
insert
-kommandon och två tomma update
-satser. Mer information om hur du skapar och strukturerar XML-filer för återskrivning finns i Skapa filer för återskrivningsmallar.
<?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>
Administratörer kan ge användarna möjlighet att redigera data i analyser och infopaneler.
Användare kan göra återskrivningar till alla datakällor som tillåter exekvering av SQL-frågor från Oracle Analytics .
När du konfigurerar för återskrivning ska du hålla följande begränsningar i åtanke:
Numeriska kolumner får endast innehålla siffror. De får inte innehålla några dataformateringstecken som dollartecken ($), pundtecken, nummertecken (#) eller procenttecken (%).
Textkolumner får endast innehålla strängdata.
Om en inloggad användare redan visar en infopanel som innehåller en analys i vilken data har ändrats med återskrivning förnyas dessa data inte automatiskt i infopanelen. Användaren måste förnya infopanelen manuellt för att kunna se uppdaterade data.
Du kan bara använda mallmekanismen med tabellvyer och endast för data med enkelvärden. Mallmekanismen stöds inte för pivottabellvyer eller någon annan typ av vy, för flervärdesdata eller för listrutekolumner med data med enkelvärde.
Alla värden i återskrivningskolumner är redigerbara. Vid visning i en kontext som inte är utskriftsanpassad visas redigerbara fält som om användaren har behörigheten Återskrivning till databas. När en logisk kolumn är mappad till en fysisk kolumn som kan ändras returnerar emellertid den logiska kolumnen värden för flera nivåskärningspunkter. Det här scenariot kan orsaka problem.
Alla fält i en analys kan flaggas som ett återskrivningsfält, till och med om de inte kan härledas till den återskrivningstabell du skapat. Du kan emellertid inte köra återskrivningsåtgärden om tabellen inte har aktiverats för återskrivning. Innehållsdesignern har ansvaret för att fälten taggas rätt.
En mall kan innehålla andra SQL-satser än insert
och update
. Återskrivningsfunktionen överför dessa satser till databasen. Oracle stöder eller rekommenderar emellertid inte användningen av några andra satser än insert
och update
.
Oracle Analytics utför endast minimal validering av datainmatningar. Om fältet är numeriskt och användaren anger textdata upptäcker Oracle Analytics det och hindrar dessa ogiltiga data från att införas i databasen. Däremot upptäcks inte andra former av ogiltiga indata (värden som ligger utanför intervallet, indata som är en blandning av text och numeriska data osv.). När användaren klickar på återskrivningsknappen och en infogning eller uppdatering körs resulterar ogiltiga data i ett felmeddelande från databasen. Sedan kan användaren korrigera den felaktiga inmatningen. Innehållskonstruktörer kan inkludera text i återskrivningsanalysen för att hjälpa användaren, till exempel "Det är inte tillåtet att ange en blandning av alfanumeriska värden i ett fält för numeriska data".
Mallmekanismen passar inte för att ange vilka nya poster som helst. Du ska med andra ord inte använda den som ett verktyg för datainmatning.
När du skapar en tabell för återskrivning ska du se till att åtminstone en kolumn inte inkluderar återskrivningskapacitet, utan inkluderar värden som är unika för varje rad och som inte är null.
Återskrivningsanalyser har inte stöd för nedborrning. I och med att nedborrning ändrar tabellstrukturen fungerar inte återskrivningsmallen.
Varning:
Mallmekanismen tar användarinmatningar och skriver dem direkt till databasen. Du har ansvaret för den fysiska databasens säkerhet. För optimal säkerhet ska du lagra databastabeller för återskrivning i en unik databasinstans.En återskrivningsmallfil är en XML-formaterad fil som innehåller en eller flera återskrivningsmallar.
En återskrivningsmall består av ett WebMessage
-element som anger mallens namn, anslutningspoolen och de SQL-satser som behövs för att infoga och uppdatera poster i de tabeller och kolumner för återskrivning som du skapat. När innehållskonstruktörer aktiverar en tabellvy för återskrivning måste de ange namnet på återskrivningsmallen som ska användas till att infoga och uppdatera posterna i tabellvyn.
En återskrivningsmall måste uppfylla följande krav:
WebMessage
: Du måste ange ett namn på återskrivningsmallen med attributet name
i WebMessage-elementet.
Om återskrivningen ska fungera på rätt sätt måste innehållskonstruktören ange namnet på återskrivningsmallen som ska användas till att infoga och uppdatera posterna i vyn när innehållskonstruktören aktiverar en tabellvy för återskrivning.
I det här exemplet visas en återskrivningsmall med namnet SetQuotaUseID
.
<WebMessage name="SetQuotaUseID">
connectionPool
: För att uppfylla säkerhetskraven måste du ange anslutningspoolen ihop med SQL-kommandona för att infoga och uppdatera poster. Dessa SQL-kommandon refererar till de värden som överförs i återskrivningsschemat för att generera SQL-satserna för att ändra databastabellen.
VALUES
: kolumnvärden kan refereras per kolumn-id eller kolumnposition. Användning av kolumn-id rekommenderas.
Placera sträng- och datumvärden inom apostrofer. Apostrofer behövs inte runt numeriska värden.
Kolumn-id – varje kolumn-id är alfanumeriskt och slumpmässigt genererat. Du hittar kolumn-id:n i XML-definitionen för analysen som finns på fliken Avancerat i analysredigeraren. Det kan till exempel vara kolumn-id-värden som: @{c5f6e60e1d6eb1098}
, @{c3a93e65731210ed1}
, '@{c6b8735ea60ff3011}'
När du använder kolumn-id:n fungerar återskrivningen också när kolumnernas ordning ändras.
Kolumnposition – kolumnpositionernas numrering går från 1. Det kan till exempel vara kolumnpositionsvärden som: @1
, @3
, '@5'
Om kolumnernas ordning ändras slutar återskrivningen att fungera. Därför rekommenderas du att använda kolumn-id:n.
Du måste inkludera ett element av typen <insert>
och ett av typen <update>
i mallen. Om du inte vill inkludera SQL-kommandon i elementen måste du infoga ett blanksteg mellan den inledande och avslutande taggen. Du måste till exempel ange elementet som:
<insert> </insert>
Istället för:
<insert></insert>
Om du utelämnar blanksteget visas ett felmeddelande för återskrivning, t.ex. "Systemet kan inte läsa återskrivningsmallen min_mall".
Om en parameters datatyp inte är ett heltal eller ett reellt tal omger du det med apostrofer. Om databasen inte utför bekräftelser automatiskt lägger du till den valfria postUpdate
-noden efter insert
- och update
-noderna för att tvinga igenom bekräftelsen. postUpdate
-noden ser vanligen ut ungefär så här:
<postUpdate>COMMIT</postUpdate>
Exempel på återskrivningsmallfil med kolumn-id-syntax
En återskrivningsmallfil som refererar värden per kolumn-id kan se ut ungefär så här:
<?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>
Exempel på återskrivningsmallfil med kolumnpositionssyntax
En återskrivningsmallfil som refererar värden per kolumnposition kan se ut ungefär så här:
<?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>