Med tilbageskrivning kan brugere opdatere data fra analyser.
Emner:
Med tilbageskrivning kan brugere opdatere dine data direkte fra instrumentbrætter og analyser.
Brugere med privilegiet Skriv tilbage til database kan se tilbageskrivningsfelter som redigerbare felter i analyser. De værdier, som de angiver, gemmes i databasen. Brugere uden privilegiet Skriv tilbage til database kan se tilbageskrivningsfelter som skrivebeskyttede felter.
Hvis en bruger indtaster en værdi i et redigerbart felt og klikker på tilbageskrivningsknappen, kører applikationen den insert
- eller update
-SQL-kommando, der er defineret i en tilbageskrivningsskabelon. Hvis det lykkes at udføre kommandoen, opdateres analysen med den nye værdi. Hvis der opstår fejl ved enten læsning af skabelonen eller kørsel af SQL-kommandoen, vises en fejlmeddelelse.
Kommandoen insert
køres, når en record endnu ikke eksisterer, og brugeren indtaster nye data i tabellen. I dette tilfælde har en bruger indtastet en tabel-record, hvor værdien oprindeligt var NULL. Kommandoen update
køres, når en bruger modificerer eksisterende data. For at vise en record, der endnu ikke findes i den fysiske tabel, kan du oprette en anden tilsvarende tabel. Brug den tilsvarende tabel til at vise pladsholder-records, som en bruger kan ændre.
Bemærk:
Når du opretter tilbageskrivningsskabeloner, skal du inkludere både en insert
-kommando og en update
-kommando, selvom de ikke bruges begge to. Hvis du for eksempel kun udfører en insert
, skal du inkludere en tom update
-sætning <update></update>
, som i denne XML-kode:
insert
-kommandoer og to tomme update
-sætninger. Se Oprette filer til tilbageskrivningsskabeloner for at få flere oplysninger om at oprette og strukturere XML-tilbageskrivningsfiler.
<?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>
Administratorer kan give brugere adgang til at redigere dataene i analyser og instrumentbrætter.
Brugere kan skrive tilbage til enhver datakilde, der tillader udførelsen af SQL-forespørgsler fra Oracle Analytics .
Når du konfigurerer for tilbageskrivning, skal du overveje følgende begrænsninger:
Numeriske kolonner må kun indeholde tal. De må ikke indeholde nogen dataformateringstegn såsom dollartegn ($), firkanter eller hash-tegn (#), procenttegn (%) osv.
Tekstkolonner må kun indeholde strengdata.
Hvis en bruger, der er logget på, allerede ser et instrumentbræt, som indeholder en analyse, hvor data er blevet modificeret vha. tilbageskrivning, opfriskes dataene ikke automatisk i instrumentbrættet. For at kunne se de opdaterede data skal brugeren manuelt opfriske instrumentbrættet.
Du kan kun bruge skabelonmekanismen sammen med tabelvisninger og kun til enkeltværdidata. Skabelonmekanismen understøttes ikke til pivottabelvisninger eller nogen anden type af visning, til flerværdidata eller til rullekolonner med enkeltværdidata.
Alle værdier i tilbageskrivningskolonner kan redigeres. Når de vises i ikke-printervenlig kontekst, vises redigerbare felter, som om brugeren har privilegiet Skriv tilbage til database. Men når en logisk kolonne mappes til en fysisk kolonne, der kan ændres, returnerer den logiske kolonne værdier for flere niveauskæringspunkter. Dette scenarie kan give problemer.
Ethvert felt i en analyse kan markeres som et tilbageskrivningsfelt, selvom det ikke er afledt fra den tilbageskrivningstabel, som du har oprettet. Men du kan ikke køre tilbageskrivningsoperationen, hvis tabellen ikke er aktiveret til tilbageskrivning. Ansvaret for korrekt tagging af felter påhviler indholdsdesigneren.
En skabelon kan indeholde andre SQL-sætninger end insert
og update
. Tilbageskrivningsfunktionen videregiver disse sætninger til databasen. Men Oracle hverken understøtter eller anbefaler brugen af andre sætninger end insert
og update
.
Oracle Analytics udfører kun minimal validering af datainput. Hvis feltet er numerisk, og brugeren indtaster tekstdata, registrerer Oracle Analytics det og forhindrer ugyldige data i at gå til databasen. Men det registrerer ikke andre former for ugyldige datainput (værdier uden for interval, blandet tekst og numeriske data osv.). Når brugeren klikker på tilbageskrivningsknappen, og en indsætning eller opdatering køres, medfører ugyldige data en fejlmeddelelse fra databasen. Brugeren kan derefter rette fejlinputtet. Indholdsdesignere kan medtage tekst i tilbageskrivningsanalysen for at hjælpe brugeren, for eksempel "Indtastning af blandede alfanumeriske værdier i et numerisk datafelt er ikke tilladt".
Skabelonmekanismen er ikke egnet til indtastning af tilfældige nye records. Du skal med andre ord ikke bruge den som værktøj til datainput.
Når du opretter en tabel til tilbageskrivning, skal du sørge for, at mindst én kolonne ikke indeholder tilbageskrivningsfunktion, men indeholder værdier, der er entydige for hver række og ikke er NULL.
Tilbageskrivningsanalyser understøtter ikke nedboring. Fordi nedboring modificerer tabelstrukturen, fungerer tilbageskrivningsskabelonen ikke.
Forsigtig:
Skabelonmekanismen tager brugerinput og skriver det direkte til databasen. Sikkerheden af den fysiske database er dit eget ansvar. For at få optimal sikkerhed skal du lagre databasetabeller til tilbageskrivning i en entydig databaseinstans.En skabelonfil til tilbageskrivning er en XML-formateret fil, som indeholder en eller flere tilbageskrivningsskabeloner.
En tilbageskrivningsskabelon består af et WebMessage
-element, der angiver navnet på skabelonen, forbindelsespuljen og de SQL-sætninger, der er nødvendige for at indsætte og opdatere records i de tilbageskrivningstabeller og -kolonner, som du har oprettet. Når indholdsdesignere aktiverer en tabelvisning til tilbageskrivning, skal de angive navnet på den tilbageskrivningsskabelon, der skal bruges til at indsætte og opdatere records i tabelvisningen.
En tilbageskrivningsskabelon skal opfylde følgende krav:
WebMessage
: Du skal angive et navn til tilbageskrivningsskabelonen vha. attributten name
i elementet WebMessage.
For at få tilbageskrivning til at fungere korrekt, når en tabelvisning aktiveres til tilbageskrivning, skal en indholdsdesigner angive navnet på den tilbageskrivningsskabelon, der skal bruges til at indsætte og opdatere records i visningen.
Dette eksempel viser en tilbageskrivningsskabelon kaldet SetQuotaUseID
.
<WebMessage name="SetQuotaUseID">
connectionPool
: For at opfylde sikkerhedskrav skal du angive forbindelsespuljen sammen med SQL-kommandoerne for at indsætte og opdatere records. Disse SQL-kommandoer refererer til de værdier, der videregives i tilbageskrivningsskemaet for at generere SQL-sætningerne til modificering af databasetabellen.
VALUES
: Kolonneværdier kan refereres til af enten kolonne-id eller kolonneposition. Brugen af kolonne-id foretrækkes.
Indsæt streng- og datoværdier i enkelte anførselstegn. Enkelte anførselstegn er ikke påkrævet til numeriske værdier.
Kolonne-id - Hver kolonne-id er alfanumerisk og vilkårligt genereret. Du kan finde kolonne-id'er i XML-definitionen af analysen, der er tilgængelig på fanen Avanceret i analyseeditoren. For eksempel kolonne-id-værdier som: @{c5f6e60e1d6eb1098}
, @{c3a93e65731210ed1}
, '@{c6b8735ea60ff3011}'
Når du bruger kolonne-id'er, fortsætter tilbageskrivning med at fungere, selvom rækkefølgen af kolonner ændres.
Kolonneposition - Kolonnepositioner starter nummerering med 1. For eksempel værdier for kolonneposition som: @1
, @3
, '@5'
Hvis rækkefølgen af kolonner ændres, fungerer tilbageskrivning ikke længere, og det er årsagen til, at kolonne-id'er foretrækkes.
Du skal medtage både et <insert>
- og et <update>
-element i skabelonen. Hvis du ikke vil medtage SQL-kommandoer i elementerne, skal du indsætte et tomt mellemrum mellem åbnings- og afslutnings-tags. Du skal for eksempel indtaste elementet som:
<insert> </insert>
I stedet for:
<insert></insert>
Hvis du udelader det tomme mellemrum, kan du se en fejlmeddelelse om tilbageskrivning såsom "Systemet kan ikke læse tilbageskrivningsskabelonen 'my_template'".
Hvis en parameters datatype ikke er et heltal eller reelt tal, skal du tilføje enkelte anførselstegn omkring det. Hvis databasen ikke udfører bekræftelser automatisk, skal du tilføje den valgfrie postUpdate
-node efter insert
- og update
-noderne for at gennemtvinge bekræftelsen. Noden postUpdate
følger typisk dette eksempel:
<postUpdate>COMMIT</postUpdate>
Eksempel på skabelonfil til tilbageskrivning vha. kolonne-id-syntaks
En skabelonfil til tilbageskrivning, som refererer til værdier efter kolonne-id, kan ligne dette eksempel:
<?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>
Eksempel på skabelonfil til tilbageskrivning, der bruger syntaks for kolonneposition
En skabelonfil til tilbageskrivning, som refererer til værdier efter kolonneposition, kan ligne dette eksempel:
<?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>