Terugschrijven implementeren

Met terugschrijven kunnen gebruikers gegevens vanuit analysen bijwerken.

Onderwerpen:

Terugschrijven voor beheerders

Met terugschrijven kunnen gebruikers uw gegevens rechtstreeks bijwerken vanaf dashboards en analysen.

Gebruikers met het recht Terugschrijven naar database zien in analysen velden voor terugschrijven als bewerkbare velden. De waarden die ze invoeren, worden in de database opgeslagen. Gebruikers zonder het recht Terugschrijven naar database zien velden voor terugschrijven als alleen-lezen velden.

Als een gebruiker een waarde in een bewerkbaar veld typt en op de knop 'Terugschrijven' klikt, voert de applicatie de SQL-opdracht insert of update uit die is gedefinieerd in een sjabloon voor terugschrijven. Als de opdracht is uitgevoerd, wordt de analyse met de nieuwe waarde bijgewerkt. Als er een fout optreedt bij het lezen van de sjabloon of het uitvoeren van de SQL-opdracht, wordt er een foutbericht weergegeven.

De opdracht insert wordt uitgevoerd als er nog geen record bestaat en de gebruiker nieuwe gegevens in de tabel invoert. In dit geval heeft een gebruiker een tabelrecord ingevoerd waarvan de waarde oorspronkelijk null was. De opdracht update wordt uitgevoerd als een gebruiker bestaande gegevens wijzigt. Als u een record wilt weergeven dat nog niet voorkomt in de fysieke tabel, kunt u een andere, soortgelijke tabel maken. Gebruik de soortgelijke tabel om plaatsaanduidingsrecords weer te geven die door een gebruiker kunnen worden gewijzigd.

Opmerking:

Wanneer u sjablonen voor terugschrijven maakt, moet u daarin een opdracht insert en een opdracht update opnemen, zelfs als beide niet worden gebruikt. Als u bijvoorbeeld alleen insert uitvoert, moet u ook een leeg statement update (<update></update>) opnemen, zoals in deze XML-code:

Hier ziet u een voorbeeld van een xml-bestand voor terugschrijven met daarin twee opdrachten insert en twee lege statements update. Zie Write-backsjabloonbestanden maken voor meer informatie over het maken en structureren van xml-bestanden voor terugschrijven.
<?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>

Terugschrijven activeren in analysen en dashboards

Beheerders kunnen gebruikers in staat stellen de gegevens in analysen en dashboards te bewerken.

  1. Stel het semantische model in.

    Opmerking:

    Volg deze stappen als u Model Administration Tool gebruikt om semantische modellen te ontwikkelen. Als u Semantic Modeler gebruikt, raadpleegt u voor meer informatie:

    Terugschrijven voor kolommen activeren .

    1. Open in Model Administration Tool het RPD-bestand voor semantische modellen.
    2. Dubbelklik in de fysieke laag op de fysieke tabel met de kolom waarvoor u terugschrijven wilt activeren.
    3. Controleer op het tabblad Algemeen van het dialoogvenster Fysieke tabel of In cache is gedeselecteerd. Als u deze optie deselecteert, krijgen gebruikers van Presentation Services updates onmiddellijk te zien.
    4. Dubbelklik in de laag Bedrijfsmodel en toewijzing op de overeenkomstige logische kolom.
    5. Selecteer in het dialoogvenster Logische kolom de optie Beschrijfbaar en klik op OK.
    6. Dubbelklik in de laag Presentatie op de kolom die overeenkomt met de logische kolom waarvoor u terugschrijven hebt geactiveerd.
    7. Klik in het dialoogvenster Presentatiekolom op Rechten.
    8. Selecteer het recht Lezen/Schrijven voor de desbetreffende gebruikers en applicatierollen.
    9. Sla uw wijzigingen op.
  2. Maak een XML-document met uw sjabloon (of sjablonen) voor terugschrijven. Zie voor meer informatie: Write-backsjabloonbestanden maken.

    Uw xml-document kan meerdere sjablonen bevatten. In dit voorbeeld ziet u een xml-document met twee sjablonen (SetQuotaUseID en SetForecastUseID).

    <?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 regiontypequota SET Dollars=@{c0432jkl53eb92cd8} WHERE YR=@{c5f6e60e1d6eb1098} AND Quarter=@{c5d7e483445037d9e} AND Region='@{c3a93e65731210ed1}' AND ItemType='@{c6b8735ea60ff3011}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    <WebMessage name="SetForecastUseID">
          <XML>
             <writeBack connectionPool="Supplier">
                <insert>INSERT INTO regiontypeforecast VALUES(@{c83ebf607f3cb8320},@{cb7e2046a0fba2204},'@{c5a93e65d31f10e01}','@{c5a93e65d31f10e0}',@{c7322jkl93ev92cd8})</insert>
                <update>UPDATE regiontypeforecast SET Dollars=@{c7322jkl93ev92cd8} WHERE YR=@{c83ebf607f3cb8320} AND Quarter=@{cb7e2046a0fba2204} AND Region='@{c5a93e65d31f10e01}' AND ItemType='@{c5a93e65d31f10e0}'</update>
             </writeBack>
          </XML>
       </WebMessage>
    </WebMessageTable>
    </WebMessageTables>
    Opmerking: u moet in de sjabloon een element <insert> en een element <update> opnemen, zelfs als beide elementen niet worden gebruikt. Als u bijvoorbeeld alleen iets invoegt met insert, moet u ook een leeg update-statement opnemen, zoals <update></update>.
  3. Kopieer het xml-document met de sjablonen voor terugschrijven naar het klembord.
  4. Ga als volgt te werk om uw sjabloon voor terugschrijven toe te passen in Oracle Analytics:
    1. Klik op Console en vervolgens op Geavanceerde systeeminstellingen.
    2. Plak de sjabloon voor terugschrijven die u in stap 3 hebt gekopieerd, in XML-sjabloon voor terugschrijven.
  5. Ga als volgt te werk om rechten te verlenen voor het gebruik van de code voor terugschrijven:
    1. Ga naar de klassieke beginpagina en klik op Beheer.
    2. Klik onder Beveiliging op Rechten beheren en ga naar Terugschrijven.
    3. Verleen Terugschrijven naar database aan Geverifieerde gebruiker.
    4. Verleen Terugschrijven beheren aan BI-servicebeheerder.
  6. Ga als volgt te werk om terugschrijven in kolommen te activeren:
    1. Geef in de analyse-editor de kolomeigenschappen van de kolom weer waarvoor u terugschrijven wilt activeren.
    2. Klik in het dialoogvenster 'Kolomeigenschappen' op het tabblad Terugschrijven.
      Als de kolom geschikt is gemaakt voor terugschrijven in het semantisch model, is het selectievakje Terugschrijven activeren beschikbaar.
    3. Selecteer de optie Terugschrijven activeren.
    4. Geef de waarde van andere opties op als u de standaardwaarde wilt wijzigen.
    5. Sla uw wijzigingen op.
    De kolom wordt voor terugschrijven geactiveerd in elke analyse waarin deze kolom is opgenomen.
  7. Ga als volgt te werk om terugschrijven in tabelweergave te activeren:
    1. Open de tabelweergave die u wilt bewerken in de analyse-editor.
    2. Klik op Eigenschappen bekijken.
    3. Klik in het dialoogvenster Tabeleigenschappen op het tabblad Terugschrijven.
    4. Selecteer de optie Terugschrijven activeren.
    5. Schakel het vakje Sjabloonnaam in en geef de waarde van 'WebMessage-naam=' op in de sjabloon voor terugschrijven die u in stap 2 hebt opgegeven.
      Bijvoorbeeld: de Sjabloonnaam voor de voorbeeldsjabloon in stap 2 is 'SetQuotaUseID'.
    6. Sla uw wijzigingen op.

Beperkingen van terugschrijven

Gebruikers kunnen terugschrijven naar elke gegevensbron die de uitvoering van SQL-zoekopdrachten vanuit Oracle Analytics toestaat.

Houd rekening met de volgende beperkingen als u gaat configureren voor terugschrijven:

  • Numerieke kolommen mogen alleen getallen bevatten. Ze mogen geen tekens voor tekenopmaak bevatten, zoals dollartekens ($), hekjes (#), procenttekens (%), enzovoort.

  • Tekstkolommen mogen alleen gegevensstrings bevatten.

  • Als een gebruiker die is ingelogd al een dashboard met een analyse bekijkt waarin de gegevens zijn gewijzigd via terugschrijven, worden de gegevens niet automatisch vernieuwd in het dashboard. Om de bijgewerkte gegevens weer te geven, moet de gebruiker het dashboard handmatig vernieuwen.

  • U kunt het sjabloonmechanisme alleen gebruiken met tabelweergaven en alleen voor enkele-waardegegevens. Het sjabloonmechanisme wordt niet ondersteund voor draaitabelweergaven of elk ander soort weergave, voor meerdere-waardengegevens of voor vervolgkeuzekolommen met enkele-waardegegevens.

  • Alle waarden in terugschrijfkolommen zijn bewerkbaar. Als bewerkbare velden in een niet-printervriendelijke context worden getoond, worden ze weergegeven alsof de gebruiker het recht Terugschrijven naar database heeft. Als een logische kolom echter wordt gekoppeld aan een fysieke kolom die kan veranderen, retourneert de logische kolom waarden voor meerdere niveausnijpunten. Dit scenario kan problemen veroorzaken.

  • Elk veld in een analyse kan worden gemarkeerd als een terugschrijfveld, zelfs als het is afgeleid van de terugschrijftabel die u hebt gemaakt. Het is echter niet mogelijk om de terugschrijfbewerking uit te voeren als de tabel niet is geactiveerd voor terugschrijven. De inhoudontwerper is verantwoordelijk voor het juist taggen van velden.

  • Een sjabloon kan andere SQL-statements bevatten dan insert en update. De terugschrijffunctie geeft deze statements door aan de database. Oracle biedt echter geen ondersteuning voor het gebruik van andere statements dan insert of update en adviseert dit ook niet.

  • Oracle Analytics voert slechts een minimale validatie van gegevensinvoer uit. Als het veld numeriek is en de gebruiker tekstgegevens invoert, detecteert Oracle Analytics dat en voorkomt dat de ongeldige gegevens in de database worden opgeslagen. Andere soorten ongeldige ingevoerde gegevens worden echter niet gedetecteerd (waarden buiten bereik, tekst en getallen door elkaar, enzovoort). Als de gebruiker op de knop voor terugschrijven klikt en er een 'invoegen'- of 'bijwerken'-bewerking wordt uitgevoerd, resulteren ongeldige gegevens in een foutbericht van de database. De gebruiker kan de onjuiste invoer vervolgens corrigeren. Inhoudontwerpers kunnen tekst opnemen in de terugschrijfanalyse om de gebruiker te helpen, zoals, "Het invoeren van alfanumerieke waarden in een numeriek veld is niet toegestaan."

  • Het sjabloonmechanisme is niet geschikt voor de invoer van willekeurige nieuwe records. Gebruik het mechanisme dus niet als een tool voor gegevensinvoer.

  • Als u een tabel voor terugschrijven maakt, zorg er dan voor dat ten minste één kolom geen mogelijkheid voor terugschrijven biedt. De tabel moet wel waarden bevatten die uniek zijn voor elke rij en die niet null zijn.

  • Terugschrijfanalyses bieden geen ondersteuning voor inzoomen. De reden hiervoor is dat bij inzoomen de tabelstructuur wordt gewijzigd en de terugschrijfsjabloon niet werkt.

    Let op:

    Het sjabloonmechanisme accepteert de invoer van de gebruiker en schrijft deze direct weg naar de database. De beveiliging van de fysieke database is uw eigen verantwoordelijkheid. Voor een optimale beveiliging moet u de databasetabellen voor terugschrijven opslaan in een unieke database-instance.

Write-backsjabloonbestanden maken

Een write-backsjabloon is een bestand met XML-opmaak dat een of meer write-backsjablonen bevat.

Een write-backsjabloon bestaat uit een WebMessage-element dat het volgende opgeeft: de naam van het sjabloon, de verbindingsgroep en de SQL-statements die nodig zijn voor het invoegen en bijwerken van records in de door u gemaakte write-backtabellen en -kolommen. Wanneer inhoudontwerpers een tabelweergave voor write back activeren, moeten ze de naam van het write-backsjabloon opgeven dat wordt gebruikt om de records in de tabelweergave in te voegen en bij te werken.

De vereisten voor een write-backsjabloon

Een write-backsjabloon moet aan de volgende vereisten voldoen:

  • WebMessage: u moet een naam voor het write-backsjabloon opgeven met behulp van het attribuut naam in het WebMessage-element.

    Voor een correcte werking van write-back, moet een inhoudontwerper bij het activeren van een tabelweergave voor write-back de naam van het write-backsjabloon opgeven dat moet worden gebruikt om de records in de weergave in te voegen en bij te werken.

    Dit voorbeeld toont een write-backsjabloon met de naam SetQuotaUseID.

    <WebMessage name="SetQuotaUseID">
    
  • connectionPool: als u wilt voldoen aan de beveiligingsvereisten moet u de verbindingsgroep opgeven, evenals de SQL-opdrachten voor het invoegen en bijwerken van records. Deze SQL-opdrachten verwijzen naar de waarden die in het write-backschema zijn goedgekeurd voor het genereren van de SQL-statements waarmee de databasetabel wordt bewerkt.

  • VALUES: er kan naar kolomwaarden worden verwezen met de kolom-ID of de kolompositie. Het gebruik van de kolom-ID heeft de voorkeur.

    Omring string- en datumwaarden met enkele aanhalingstekens. Enkele aanhalingstekens zijn niet nodig voor numerieke waarden.

    • Kolom-ID: elke kolom-ID is alfanumeriek en willekeurig gegenereerd. U vindt kolom-ID's in de XML-definitie van de analyse die in het tabblad Geavanceerd van de analyse-editor beschikbaar is. Bijvoorbeeld kolom-ID-waarden zoals: @{c5f6e60e1d6eb1098}, @{c3a93e65731210ed1}, '@{c6b8735ea60ff3011}'

      Wanneer u kolom-ID's gebruikt, blijft write-back werken zelfs als de volgorde van kolommen wijzigt.

      XML in het tabblad 'Geavanceerd' van de analyse-editor

    • Kolompositie: kolomposities beginnen met het cijfer 1. Bijvoorbeeld kolom-ID-waarden zoals: @1, @3, '@5'

      Als de volgorde van kolommen wijzigt, werkt write-back niet meer. Dit is de reden waarom kolom-ID's de voorkeur hebben.

  • U moet in het sjabloon een element <insert> en een element <update> opnemen. Als u geen SQL-opdrachten in de elementen wilt opnemen, moet u een spatie tussen de openende en sluitende tags invoegen. U moet het element bijvoorbeeld als volgt invoeren:

    <insert> </insert>
    

    En niet op deze manier:

    <insert></insert>
    

    Als u geen spatie invoegt, dan krijgt u een write-backfoutmelding zoals "Het systeem kan het write-backsjabloon "my_template" niet lezen".

  • Als het gegevenstype van de parameter geen geheel getal of een reëel getal is, moet u het tussen enkele aanhalingstekens zetten. Als de database niet automatisch vastleggingen uitvoert, voegt u de optionele node postUpdate toe na de nodes insert en update om de vastlegging te forceren. De node postUpdate volgt normaliter dit voorbeeld:

    <postUpdate>COMMIT</postUpdate>
    

Voorbeeld van een write-backsjabloonbestand met behulp van kolom-ID-syntax

Een write-backsjabloonbestand dat naar waarden verwijst door kolom-ID, kan er als volgt uitzien:

<?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>

Voorbeeld van een write-backsjabloonbestand met behulp van kolompositiesyntax

Een write-backsjabloonbestand dat naar waarden verwijst door kolompositie, kan er als volgt uitzien:

<?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>