Med tilbakeskriving kan brukere oppdatere data fra analyser.
Emner:
Med tilbakeskriving kan brukere oppdatere dataene direkte fra instrumentpaneler og analyser.
Brukere med privilegiet Skriv tilbake til database ser tilbakeskrivingsfelt som redigerbare felt i analyser. Verdiene de angir, lagres i databasen. Brukere uten privilegiet Skriv tilbake til database ser tilbakeskrivingsfelt som skrivebeskyttede felt.
Hvis en bruker skriver inn en verdi i et redigerbart felt og klikker på tilbakeskrivingsknappen, kjører applikasjonen SQL-kommandoen insert
ellerupdate
som er definert i en tilbakeskrivingsmal. Hvis kommandoen blir utført, oppdateres analysen med den nye verdien. Hvis det oppstår en feil i lesingen av malen eller kjøringen av SQL-kommandoen, vises det en feilmelding.
Kommandoen insert
kjøres når en post ikke finnes ennå, og brukeren angir nye data i tabellen. I dette tilfellet har brukeren skrevet inn en tabellpost der den opprinnelige verdien var null. Kommandoen update
kjøres når en bruker endrer eksisterende data. Hvis du vil vise en post som ikke finnes i den fysiske tabellen ennå, kan du opprette en annen lignende tabell. Bruk den lignende tabellen til å vise plassholderposter som en bruker kan endre.
Merknad:
Når du oppretter tilbakeskrivingsmaler, må du ta med både en insert
-kommando og en update
-kommando, selv om ikke begge brukes. Hvis du for eksempel bare kjører en insert
-kommando, må du ta med en tom update
-setning <update></update>
, som i denne XML-koden:
insert
-kommandoer og to tomme update
-setninger. Se Opprette tilbakeskrivingsmalfiler hvis du vil vite mer om hvordan du oppretter og strukturerer XML-tilbakeskrivingsfiler.
<?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 gjøre det mulig for brukere å redigere dataene i analyser og instrumentpaneler.
Brukerne kan skrive tilbake til hvilken som helst datakilde som tillater utførelse av SQL-spørringer fra Oracle Analytics.
Når du konfigurerer for tilbakeskriving, må du ta hensyn til følgende begrensninger:
Numeriske kolonner kan bare inneholde tall. De kan ikke inneholde dataformateringstegn, for eksempel dollartegn ($), pundtegn, nummertegn (#) eller prosenttegn (%).
Tekstkolonner kan bare inneholde strengdata.
Hvis en pålogget bruker allerede viser et instrumentpanel som inneholder en analyse der data er endret med tilbakeskriving, oppfriskes ikke dataene på instrumentpanelet automatisk. Brukeren må oppfriske instrumentpanelet manuelt for å se de oppdaterte dataene.
Du kan bare bruke malmekanismen med tabellvisninger, og bare for data med én verdi. Malmekanismen støttes ikke for pivottabellvisninger eller andre typer visninger, for data med flere verdier eller for rullegardinkolonner med data med én verdi.
Alle verdier i tilbakeskrivingskolonner kan redigeres. Ved visning i en kontekst som ikke er egnet for utskrift, vises redigerbare felt som om brukeren har privilegiet Skriv tilbake til database. Når en logisk kolonne er tilordnet til en fysisk kolonne som kan endres, returnerer imidlertid den logiske kolonnen verdier for skjæringspunkt med flere nivåer. Dette scenarioet kan føre til problemer.
Alle felt i en analyse kan flagges som tilbakeskrivingsfelt, selv om de ikke er utledet fra tilbakeskrivingstabellen du opprettet. Du kan imidlertid ikke kjøre tilbakeskrivingsoperasjonen på riktig måte hvis tabellen ikke er aktivert for tilbakeskriving. Innholdsutformeren har ansvaret for riktig merking av felt.
En mal kan inneholde andre SQL-setninger enn insert
og update
. Tilbakeskrivingsfunksjonen sender disse setningene til databasen. Oracle støtter imidlertid ikke og anbefaler ikke bruk av andre setninger enn insert
eller update
.
Oracle Analytics utfører bare minimal validering av inndata. Hvis feltet er numerisk og brukeren angir tekstdata, oppdager Oracle Analytics det og forhindrer at de ugyldige dataene sendes til databasen. Applikasjonen oppdager imidlertid ikke andre typer ugyldige inndata (for eksempel verdier utenfor gyldig område eller blanding av tekst og tall). Når brukeren klikker på tilbakeskrivingsknappen og en innsetting eller oppdatering kjøres, fører ugyldige data til en feilmelding fra databasen. Brukeren kan så rette opp de feilaktige inndataene. Innholdsutformere kan inkludere tekst i tilbakeskrivingsanalysen som hjelp til brukeren, for eksempel "Det er ikke tillatt å angi en blanding av tekst- og tallverdier i et numerisk datafelt."
Malmekanismen er ikke egnet for angivelse av vilkårlige nye poster. Du kan med andre ord ikke bruke den som et inndataverktøy.
Når du oppretter en tabell for tilbakeskriving, må du sørge for at minst én kolonne ikke inkluderer tilbakeskrivingsmulighet, men inkluderer verdier som er unike for hver enkelt rad, og som ikke er null.
Tilbakeskrivingsanalyser støtter ikke neddrilling. Ettersom neddrilling endrer tabellstrukturen, fungerer ikke tilbakeskrivingsmalen.
Forsiktig:
Malmekanismen tar brukerinndata og skriver dem direkte til databasen. Sikkerheten for den fysiske databasen er ditt eget ansvar. Du kan oppnå optimal sikkerhet ved å lagre tilbakeskrivingsdatabasetabeller i en unik databaseforekomst.En tilbakeskrivingsmalfil er en XML-formatert fil som inneholder én eller flere tilbakeskrivingsmaler.
En tilbakeskrivingsmal består av et WebMessage
-element som angir navnet på malen, tilkoblingsreserven og SQL-setningene som er nødvendige for å sette inn og oppdatere poster i tilbakeskrivingstabellene og kolonnene du har opprettet. Når innholdsutformere aktiverer en tabellvisning for tilbakeskriving, må de angi navnet på tilbakeskrivingsmalen som skal brukes til å sette inn og oppdatere postene i tabellvisningen.
En tilbakeskrivingsmal må oppfylle følgende krav:
WebMessage
: Du må angi et navn for tilbakeskrivingsmalen ved hjelp av attributtet name
i WebMessage-elementet.
Når en innholdsutformer aktiverer en tabellvisning for tilbakeskriving, må han/hun angi navnet på tilbakeskrivingsmalen som skal brukes til å sette inn og oppdatere postene i visningen, for at tilbakeskrivingen skal fungere på riktig måte.
Dette eksemplet viser en tilbakeskrivingsmal som kalles SetQuotaUseID
.
<WebMessage name="SetQuotaUseID">
connectionPool
: For å oppfylle sikkerhetskravene må du angi tilkoblingsreserven og SQL-kommandoene for innsetting av oppdatering av poster. Disse SQL-kommandoene refererer til verdiene som er sendt i tilbakeskrivingsskjemaet for å generere SQL-setningene som skal endre databasetabellen.
VALUES
: Det kan refereres til kolonneverdier med kolonne-ID eller kolonneposisjon. Bruk av kolonne-ID foretrekkes.
Streng- og datoverdier må stå i enkle anførselstegn. Enkle anførselstegn er ikke nødvendig for numeriske verdier.
Kolonne-ID: Hver enkelt kolonne-ID er alfanumerisk og tilfeldig generert. Du finner kolonne-ID-er i XML-definisjonen for analysen, som er tilgjengelig i fanen Avansert i redigeringsprogrammet for analyser. Her er noen eksempler på kolonne-ID-verdier: @{c5f6e60e1d6eb1098}
, @{c3a93e65731210ed1}
, '@{c6b8735ea60ff3011}'
Når du bruker kolonne-ID-er, fortsetter tilbakeskrivingen å fungere selv om rekkefølgen på kolonnene endres.
Kolonneposisjon: Nummereringen av kolonneposisjoner starter med 1. Her er noen eksempler på kolonneposisjonsverdier: @1
, @3
, '@5'
Hvis rekkefølgen på kolonnene endres, fungerer ikke tilbakeskrivingen lenger, og dette er grunnen til at kolonne-ID-er foretrekkes.
Du må inkludere både et <insert>
-element og et <update>
-element i malen. Hvis du vil inkludere SQL-kommandoer i elementene, må du sette inn et mellomrom mellom den innledende og den avsluttende koden. Du må for eksempel angi elementet slik:
<insert> </insert>
Og ikke slik:
<insert></insert>
Hvis du utelater mellomrommet, ser du en tilbakeskrivingsmelding som "Systemet kan ikke lese tilbakeskrivingsmalen 'min_mal'".
Hvis datatypen for en parameter ikke er et heltall eller reelt tall, plasserer du den i enkle anførselstegn. Hvis databasen ikke utfører lagringer automatisk, legger du til det valgfrie knutepunktet postUpdate
etter knutepunktene insert
og update
for å tvinge frem lagringen. Knutepunktet postUpdate
følger vanligvis dette eksemplet:
<postUpdate>COMMIT</postUpdate>
Eksempel på en tilbakeskrivingsmalfil som bruker syntaksen med kolonne-ID
En tilbakeskrivingsmalfil som refererer til verdier med kolonne-ID, kan se ut som dette eksemplet:
<?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å en tilbakeskrivingsmalfil som bruker syntaksen med kolonneposisjon
En tilbakeskrivingsmalfil som refererer til verdier med kolonneposisjon, kan se ut som dette eksemplet:
<?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>