Friday 19 March 2021

Error: "No ODBC system data source is defined for Oracle BI Server"

Error: 

"No ODBC system data source is defined for Oracle BI Server" When Launching The Oracle BI Administrator In Online Mode Using a Newly Created OBIEE 12c Domain.

I was attempting to launch the Oracle BI Administrator (BI Developer Client Tool) in online mode using a newly created OBIEE 12c domain, the following error occurs:

STEPS TO REPRODUCE


The following steps can be utilized to reproduce the error:

  • Browse to $BIDomain\bitools\bin
  • Launch admintool.cmd
  • Select File > Open > Online (or select the blue folder icon)
  • Note the error which occurs as mentioned above.

CAUSE


This issue is caused by a missing ODBC System DSN for the OBIEE domain installed on Windows.

When creating the domain for OBIEE 12c, if creating a new domain using the Primavera Analytics BAR file or creating the OBI domain using the "clean slate" deployment method, a System ODBC DSN is not created out of box.  When using the Administrator in online mode, this DSN is required and if not present will return the reported error.

SOLUTION

To resolve this issue, you must create a System DNS for the OBIEE domain using the following low level steps:
  1. Browse to Control Panel > Administrative Tools
  2. Click Data Sources (ODBC)
  3. In the ODBC Data Sources Administrator Screen, click System DSN
  4. Select Add...
  5. On the Create New Data Source screen, select Oracle BI Server, then Finish
  6. In the Oracle BI Server DSN Configuration:
    • Enter any name in the name field
    • Enter any description in the description field
    • Enter the servername for BI Server in the server field.
    • Select Next
    • Enter a login ID/password with Administrator role (for example, weblogic user of the OBIEE 12c domain)
    • In the Port field, enter the port number for the obis bi server process
    • By default, 9514. 
    • This can be found in Enterprise Manager:
    • Click Target Navigation icon (ss1) > Business Intelligence > biinstance > Availability > Processes tab
    • Select the Save login ID checkbox
    • Select the Connect checkbox
    • Select Next
    • Select Finish
  • Close the ODBC Data Source Administrator screen. 
  • Relaunch the Oracle BI Administrator tool and the system DSN will now be available.
Reference: docs.oracle.com

Happy Blogging.!!

Thursday 18 March 2021

How to Install Data Visualisation Desktop(DVD) on Windows 10? DVD 12c

As we all know, installation of Oracle Analytics Desktop is a straightforward like in general software installation with Next > Next and Next.

Having said this, though we have installed Analytics Desktop in easy way, it doesn't include everything that it can offer, as Machine learning and advanced analytics are optional components that's why they aren't included in the Oracle Analytics Desktop installation. You must install machine learning to use Diagnostics Analytics (Explain), Machine Learning Studio, or advanced analytics.

Follow below steps to install Data Visualisation Machine Learning Framework on Windows.

  • Go to the Windows Start menu, browse to Oracle, and click Install DVML

  • The installer starts on completion of the download. Follow the displayed instructions to install machine learning to the selected install path.

  • Click Finish to close the installer.
  • When prompted, press any key to close the terminal window.
  • If Oracle Analytics Desktop was running during the installation, then restart it.
I hope this helps, cheers.!! 

Monday 11 March 2019

Type of Database Connections / Services in Autonomous Data Warehouse

Autonomous Data Warehouse provides three database services that you can choose when connecting to your database. These are named as HIGH, MEDIUM, and LOW services and provide different levels of performance and concurrency.

The HIGH database service provides the maximum amount of CPU resources for a query, however this also means the number of concurrent queries you can run in this service will not be as much as the other services. The number of concurrent SQL statements that can be run in this service is 3, this number is independent of the number of CPUs in your database.

The MEDIUM database service provides multiple compute and IO resources for a query. This service provides more concurrency compared to the HIGH database service. The number of concurrent SQL statements that can be run in this service depends on the number of CPUs in your database and scales linearly with the number of CPUs.

The LOW database service provides the least amount of resources for a query, and any number of concurrent queries you can run in this service.
As a user you need to pick the database service based on your performance and concurrency requirements.

The typical screen looks like as below,

If you need any further details, kindly leave your comments below.. Happy blogging.. :)

Friday 8 March 2019

Oracle Cloud Platform - Introduction to Autonomous Data Warehouse

What is an Autonomous Data Warehouse?

Oracle Autonomous Data Warehouse provides an easy-to-use, fully autonomous database that scales elastically, delivers fast query performance and requires no database administration.

Oracle Autonomous Data Warehouse is built around the market leading Oracle database and comes with fully automated data warehouse specific features that deliver outstanding query performance.  This environment is delivered as a fully managed cloud service running on optimised high-end Oracle hardware systems.  You don’t need to spend time thinking about how you should store your data, when or how to back it up or how to tune your queries. Oracle take care of everything for us.



Easy

Fully-managed cloud service that makes it very simple to provision a data warehouse, quickly and easily load data and query that data using built-in web-based tools such as notebooks.

Oracle’s unique autonomous database framework ensures high availability and automatic security–without requiring any additional tasks.

Fast

Delivers high performance data warehousing straight out-of-the-box with unparalleled scalability and reliability. Built on key Oracle Database capabilities: parallelism, columnar processing and compression. All aspects of performance tuning are automatically managed so the service requires no database tuning.

Elastic

Scale as needed-create and expand your data warehouse’s compute and storage capacity on demand and independently of each other with no downtime. Pay only for the resources you consume.

Complete

Integrates directly with the full spectrum of business analytics, data integration and IoT services within Oracle's comprehensive range of integrated cloud solutions.

How to Get Your Free Cloud Trial Account

If you already have an Oracle Cloud account then you can skip this section. If you don't have an Oracle Cloud account then you can quickly and easily sign up for a free trial account that provides:
  • $300 of free credits good for up to 3500 hours of Oracle Cloud usage
  • Credits can be used on all eligible Cloud Platform and Infrastructure services for the next 30 days
  • Your credit card will only be used for verification purposes and will not be charged unless you 'Upgrade to Paid' in My Services
  • Click on the link below to go to the trial sign-up page which will allow you to request your free cloud account.
    https://cloud.oracle.com/tryit
When you signup to the Cloud Console, you will have the option of choosing the REGION for your new data warehouse instance.

To ensure you get the very best experience possible during this workshop we recommend that when creating instances of Autonomous Data Warehouse in North America Data Region, please choose data centre in Phoenix. When creating instances of Autonomous Data Warehouse in EMEA and APAC, please choose data centre in Frankfurt.

Pre-requisites to getting start with

1. SQL Developer

To download and install SQL Developer please follow this link, http://www.oracle.com/technetwork/developer-tools/sql-developer/downloads/index.html and select the operating system for your computer. This page also has instructions on how to install SQL Developer on Windows, Mac OSX and Linux.

If you already have SQL Developer installed on your computer then please check the version. The minimum version that is required to connect to an Oracle Autonomous Data Warehouse Cloud is SQL Developer 17.4.

2. Data Visualization Desktop 

To download and install Data Visualization Desktop please follow this link, https://www.oracle.com/technetwork/middleware/oracle-data-visualization/downloads/oracle-data-visualization-desktop-2938957.html and select the operating system for your computer. This page also has instructions on how to install DVD on Windows and Mac OSX.

If you already have Data Visualisation Desktop installed on your computer then please check the version. The minimum version that is required to connect to an Oracle Autonomous Data Warehouse Cloud is 12c 12.2.5.0.0.

Part 1. Provisioning an ADW Instance

In this section you will be provisioning an ADW instance using the cloud console.

STEP 1: Sign in to Oracle Cloud

  • Go to cloud.oracle.com, click Sign In to sign in with your Oracle Cloud account.
  • Enter your Cloud Account Name and click Next.
  • Enter your Oracle Cloud password, and click Sign In.

STEP 2: Oracle Cloud Infrastructure (OCI) : Create a Compartment

This article shows how to create a compartment, a container for a group of related resources, under Oracle Cloud Infrastructure (OCI).

Considerations: 

Some things to consider before you create your first compartment.
  • A compartment is a container for grouping together related resources.
  • You can alter the compartment description and tags at any point, but the compartment name is fixed, so pick a name wisely. If you change your mind, the only option is to delete it, and you will see below why that may not be possible.
  • Resources like virtual cloud networks, compute instances and databases are created in a compartment. Once created, they can't be moved to a new compartment.

Create a Compartment

  • Use the top-left menu to select the "Identity > Compartments" option.
  • Click the "Create Compartment" button.
  • Enter the compartment name and description, the click the "Create Compartment" button.
  • The new compartment is now listed on the compartments dashboard.
  • You can now create resources in the compartment.

STEP 2: Create an ADW Instance

  • Once you are logged in, you are taken to the cloud services dashboard where you can see all the services available to you such as this.
  • Select the any non-root compartment, or another compartment of your choice where you will create your new ADW instance.
Note - Avoid the use of the Root & ManagedCompartmentforPaaS compartment as this is an Oracle default used for Oracle Platform Services.
  • Specify a memorable display name for the instance. Also specify your database's name, for this lab use ADWH.
  • Next, select the number of CPUs and storage size. Here, we use 2 CPUs and 1 TB of storage.

  • Then, specify an ADMIN password for the instance, and a confirmation of it. Make a note of this password.
  • Click "Create Autonomous Database"
  • Your instance will begin provisioning. Once the state goes from Provisioning to Available, click on your display name to see its details.
  • You now have created your first Autonomous Data Warehouse instance. Have a look at your instance's details here including its name, database version, CPU count and storage size. This might take 3-4 minutes to create the instance for you.

Part 2. Connecting to ADW

As ADW only accepts secure connections to the database, you need to download a wallet file containing your credentials first. The wallet can be downloaded either from the instance's details page, or from the ADW service console.

STEP 1: Downloading the Connection Wallet

In your database's instance details page, click DB Connection.

STEP 2: Download the Connection Wallet

  • Under Download a Connection Wallet, click Download.
  • Specify a password of your choice for the wallet. You will need this password when connecting to the database via SQL Developer later, and is also used as the JKS keystore password for JDBC applications that use JKS for security. Click Download to download the wallet file to your client machine.

Note: If you are prevented from downloading your Connection Wallet, it may be due to your browser's pop-blocker. Please disable it or create an exception for Oracle Cloud domains.

Connecting to the database using SQL Developer

  • Start SQL Developer and create a connection for your database using the default administrator account 'ADMIN' by following these steps.
  • Click the New Connection icon in the Connections toolbox on the top left of the SQL Developer homepage.
  • Fill in the connection details as below:
Connection Name: ADMIN_HIGH
Username: ADMIN
Password: The password you specified during provisioning your instance
Connection Type: Cloud Wallet
Configuration File: Enter the full path for the wallet file you downloaded before, or click the Browse button to point to the location of the file.
Service: There are 3 pre-configured database services for each database. Pick <databasename>_high for this lab. 
For example, if you the database you created was named ADWH, select ADWH_high as the service.

Note : SQL Developer versions prior to 18.3 ask for a Keystore Password. Here, you would enter the password you specified when downloading the wallet from ADW.

  • Test your connection by clicking the Test button, if it succeeds save your connection information by clicking Save, then connect to your database by clicking the Connect button. An entry for the new connection appears under Connections.
  • If you are behind a VPN or Firewall and this Test fails, make sure you have SQL Developer 18.3 or higher. This version and above will allow you to select the "Use HTTP Proxy Host" option for a Cloud Wallet type connection. While creating your new ADW connection here, provide your proxy's Host and Port. If you are unsure where to find this, you may look at your computer's connection settings or contact your Network Administrator.
You're in.. :) Happy stay.!! 

Wednesday 4 April 2018

Bursting in OBIEE

What is Bursting?

Bursting is a process of splitting data into blocks, generating documents for each block, and delivering the documents to one or more destinations. The data for the report is generated by executing a query once and then splitting the data based on a "Key" value. For each block of the data, a separate document is generated and delivered.

Using BI Publisher's bursting feature you can split a single report based on an element in the data model and deliver the report based on a second element in the data model. Driven by the delivery element, you can apply a different template, output format, delivery method, and locale to each split segment of your report. Example implementations include:
  • Invoice generation and delivery based on customer-specific layouts and delivery preference
  • Financial reporting to generate a master report of all cost centers, splitting out individual cost center reports to the appropriate manager
  • Generation of pay slips to all employees based on one extract and delivered via e-mail
------

As we are told by Oracle team, OBIEE is not a tool for bursting of reports, use BIP instead. Agree.!! We all had a problem with bursting in OBIEE. The only tool providing this feature is BI Publisher but it requires a lot of extra efforts to complete a bursting defination using a separate data model since it dosen't leverage the RPD data model for bursting. 

There are already three ways through which we can do the FTP of bursted report sets to a shared physical location using Java Script or VB Script or installing EJB methods. Every one of this comes along with some limitations like we cannot change the directory for export or we cannot export it to remote/shared location, and even using this methods it is really confusing to end-users to set parameters as expected in the respected scripts. You can find my posts for exporting (bursting) reports using Java Script / VB Script.

Copy Results to the File System - Using Java Scipt (Windows Only)
Copy Results to the File System - Using VB Scipt (Windows Only)

To create bursting Using Session Variable, follow below steps.


1. Here's a data set


Take a note that JCRUZ is allocated to 2 regions.

2. Create an Initialization Block & Row-wise Session variable which will act as a filter parameter to the report.



2. Create a single report that could be sent to different people with an appropriate filter to give them only the content they needed:  i.e. bursting.


3. Configure Agents
  • Set an agent as an administrator to Configure an Agent:
  • Set "Run As" to "Recipent"
  • In "Delivery Content" set the report that you created earlier
  • In Recipent tab, include all users/Application Roles as per your requirement
  • Save the Agent



4. Run or Schedule Agent as an Administrator.

5. Try log-in with JCRUZ to open the Agent Alert.

6. Try log-in with JCRUZ

7. Here I've set the default "Home Page and Dashboard" as the destination. You can set the respective default profile to send it as an email, etc.



Monday 22 January 2018

WriteBack in Pivot Table - OBIEE 12c / OBIEE 11g

Is it really not possible to have WriteBack functionality in OBIEE Pivot table? Oracle says a strict, "NO".

So let me tell you how we can get over this biggest limitations. Do you know what's the difference between Table View and Pivot View? At least in terms of OBIEE whereas everything it deals with is XML.!! If you ever see what XML it writes in Advanced Tab for both these views, you will get to know that there's no difference as such. So, I tried to do some analysis, and come up with the below solution. Please let me know whether this works for you to or not.

If you are at OBIEE 12c version, you no longer need to add <LightWriteBack>true</LightWriteBack> tag to instanceconfig file. There is a straight forword and simple way to implement WriteBack functionality.

Some basics of WriteBack feature:

Users of a dashboard page or an analysis have the ability to modify the data that they see in a table view. This ability is often referred to as "write back." To enable this functionality, below are some steps that we need to follow, (These are for Table view by the way..)

Setting up WriteBack in the repository

(Note: It is advisable that you do all the rpd changes in Online mode to get list of all the Users / Applciaion Roles in LDAP)

Physical Layer

  • In Physical layer, Go to Physical Table that has Writable Field.
  • In General table, make sure tab ‘Cacheable’ is un-checked.

BMM Layer

  • In BMM layer, Go to Logical Table.
  • Double click on the Writable column, check the flag for Writable

Presentation Layer

  • In Presentation layer, Go to Presentation Table.
  • Double click on the Writable column > Click on Permission > Assign Read/Write Access to desired Application Roles. (In general, it would be BIContentAuthor)


Direct Database Request

  • Make sure to assign "Direct Database Request" to the desired Application Roles
  • Go to Manage > Identity > Application Roles
  • Double Click on BIContentAuthor (in my case)
  • Permission > Query Limits > Set "Execute Direct Database Request" to "Allow"


Setting up Permission from BI Presentation Services

Login with Admin privileges

  • Go to Administration > Manage Privileges under Security section > Sroll down to the WriteBack privillage section at te bottom of the page
  • Default setting would be this, Change it to below configuration,



Create analysis with WriteBack field

  • Go to Column Properties of a Writable field > WriteBack tab
  • Check the box for "Enable Write Back"

Here onwards, the additional steps to configure WriteBack mechanism for Pivot view.
  • Convert the data type of column from Criteria > Edit Formula. Please Note: Data type of column in database can be of any type, we are not going to change it.

  • Change the data format as HTML to make it editable.
    @[html]<input class="WBInput" type="text" novalue="false" size="10" onchange="obipswb.Grid.Change(event)" onfocus="obipswb.Grid.Focus(event)" value=@H origvalue=@H>
      Note: This is the default formatting for all writable columns in OBIEE

      • Add a Pivot view to the analysis.
      • Change the XML code of the report from Advanced tab. This will allow us to use the standard WriteBack functionality in Table view that OBIEE supports.
      Find the start of XML code for Pivot table, i.e.
        <saw:view xsi:type="saw:pivotTableView" name="pivotTableView!1" scrollingEnabled="false" rowsPerPage="25">

        Add the below code to the next line,

        <saw:displayFormat>            
        <saw:formatSpec>               
        <sawwb:writeBack xmlns:sawwb="com.siebel.analytics.web/writeback/v1" xsi:type="sawwb:tableProperties" enabled="true" toggleTableMode="false" templateName="SetWriteBack_Pivot" useTemplate="true" buttonPos="right"/>
        </saw:formatSpec>
        </saw:displayFormat>

        Write-Back Template

        The write-back template is an XML-formatted file that contains SQL statements that are needed to insert and update records in the write-back table and columns that you have created. For Table view, we specify the name of the write-back template to use in Properties of that Table View, whereas we are setting it directly in XML of that report.

        Some standard consideration while defining columns in WriteBack template:

        Values can be referenced by position such as @1, @2, @3, ETC.
        If a parameter’s data type is not an integer or real number, add single quotation marks around it.

        But don't you think so this will not be applicable to our (special..!!) Pivot table?? Yes, it doesn't. We cannot specify columns by their position. If you observe, OBIEE generates unique column IDs for each of the column, we can consider that while writing SQL statement in WriteBack template.

        <?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="Forecast">
        <XML>
        <writeBack connectionPool="FedEX_CP">
        <insert> </insert>
        <update>
        MERGE INTO D1_ORDERS2 F
        USING (
        SELECT C.NEWKEY, T.YYYYMMDD, P.PRODUCTKEY, F.ACTLEXTND 
        FROM D1_ORDERS2 F, D1_CALENDAR2 T, D1_PRODUCTS P, D1_CUSTOMER2 C
        WHERE F.CUSTKEY = C.NEWKEY 
        AND F.PERIODKEY = T.YYYYMMDD
        AND F.PRODKEY = P.PRODUCTKEY
        AND C.NAME = '@{ca28e047766770c2c}'
        AND T.YYYYMMDD = '@{cdcaf965d4e3a312d}'
        AND P.SPECIFICDESCRIPTIN = '@{c543b919b7bb3b49b}') S
        ON (F.CUSTKEY = S.NEWKEY 
        AND F.PERIODKEY = S.YYYYMMDD
        AND F.PRODKEY = S.PRODUCTKEY)
        WHEN MATCHED THEN UPDATE SET F.ACTLEXTND  = '@{ce0127765131535c9}'
        </update>
        </writeBack>
        </XML>
        </WebMessage>
        </WebMessageTable>
        </WebMessageTables>

        Modify wbpivotview.js file

        Now we will let Pivot view to do some work like his younger brother.. Let's change a JS source code file for Pivot View then. i.e. wbpivotview.js from location

        C:\Oracle\Middleware\Oracle_Home\user_projects\domains\bi\servers\bi_server1\tmp\_WL_user\analytics\za01ic\war\res\b_mozilla\views\pivot

        C:\Oracle\Middleware\Oracle_Home\user_projects\domains\bi\servers\bi_server1\tmp\_WL_user\analytics\eiguw6\war\res\b_mozilla\views\pivot

        Replace the function definition for UpdateWriteBackActionForEdge

        obipswb.Grid.UpdateWriteBackActionForEdge = function(c, f, h) {
        var g = false;
        var b = c.getWriteBackRows(f);
        if (f == obips.JSDataLayout.DATA_EDGE) {
             for (var d = 0; d < b.length; d++) {
                 var a = b[d];
                 if (!a || a.length == 0) {
                     continue
                 }
           for (var dd = 0; dd < a.length; dd++) {
                     var aa = a[dd];
               if (!aa) {
                    continue
               }
               var e = obipswb.Grid.getRecordValues(c, a, f, aa.getCoordinate().getLayer(), aa.getCoordinate().getSlice());
          
               if (obipswb.Grid.shouldDeleteRow(aa)) {
                   h.deleteRecord(e)
               } else {
                   h.updateRecord(e)
               }
               g = true
           }
             }
             return g   
            }
        for(var d = 0; d < b.length; d++) {
        var a = b[d];
        if(!a || a.length == 0) {
        continue
        }
        var e = obipswb.Grid.getRecordValues(c, a, f, a[0].getCoordinate().getLayer(), a[0].getCoordinate().getSlice());
        if(obipswb.Grid.shouldDeleteRow(a)) {
        h.deleteRecord(e)
        } else {
        h.updateRecord(e)
        }
        g = true
        }
        return g
        };

        Restart services & Test the results.

        • Restart the BI stack to reflect the changes in configuration files. 
        • Open a report in a new tab that you created earlier.
        • Try updating values from a Pivot view
        Original Report:


        Updating Values:

        Updated Results:

        I hope you guys find this helpful. Please comment if you face any issues..

        Happy Blogging.. :)

        Thursday 18 January 2018

        WriteBack Configuration In OBIEE 12c

        WriteBack in OBIEE 11g and 12c is somewhat different.. I think it is more simplified as there is no need to add any XML tag to instanceconfig.xml file. (Changing of any config files manyally is not recommended in any case, we can use  MBean Browser instead.)

        If you are at OBIEE 12c version, you no longer need to add <LightWriteBack>true</LightWriteBack> tag to instanceconfig file. There is a straight forword and simple way to implement WriteBack functionality.

        Some basics of WriteBack feature:

        Users of a dashboard page or an analysis have the ability to modify the data that they see in a table view. This ability is often referred to as "write back." To enable this functionality, below are some steps that we need to follow, (These are for Table view by the way..)

        Setting up WriteBack in the repository

        (Note: It is advisable that you do all the rpd changes in Online mode to get list of all the Users / Applciaion Roles in LDAP)
        • In Physical layer, Go to Physical Table that has Writable Field.
        • In General table, make sure tab ‘Cacheable’ is un-checked.
        • In BMM layer, Go to Logical Table.
        • Double click on the Writable column, check the flag for Writable
        • In Presentation layer, Go to Presentation Table.
        • Double click on the Writable column > Click on Permsssion > Assign Read/Write Access to desired Application Roles. (In general, it would be BIContentAuthor)

        Make sure to assign "Direct Database Request" to the desired Application Roles

        • Go to Manage > Identity > Application Roles
        • Double Click on BIContentAuthor (in my case)
        • Permission > Query Limits > Set "Execute Direct Database Request" to "Allow"

        Setting up Permission from BI Presentation Services

        • Login with Admin privileges.
        • Go to Administration > Manage Privileges under Security section > Scroll down to the WriteBack privilege section at the bottom of the page
        • Default setting would be this, Change it to below configuration,


        Create analysis with WriteBack field

        • Go to Column Properties of a Writable field > WriteBack tab
        • Check the box for "Enable Write Back"
        • Select the Text Field Width as 10. (This box is not very much clear enough but you can just click over and type the value, this worked for me)
        • Click on the Results tab.
        • Go to properties of Table View.
        • Enable WriteBack > Set Template Name


        Configuring WriteBack.xml template

        To place this template, there's a slight change in location than that was in 11g version. There is no default directory named customMessages where we are supposed to place WriteBack templates.

        Create customMessages directory under C:\Oracle\Middleware\Oracle_Home\user_projects\domains\bi\bidata\service_instances\ssi\metadata\content\msgdb\l_en

        Note: 

        You must also include SQL commands to insert and update records. These SQL commands reference the values passed in the write back schema to generate the SQL statements to modify the database table. Values can be referenced either by position (such as @1, @3) or by column ID (@{c0}, @{c2}). Column positions start numbering with 1, whereas column IDs start with c0. If a parameter’s data type is not an integer or real number, add single quotation marks around it.

        You must include both an <insert> and an <update> element in the template. If you do not want to include SQL commands within the elements, then you must insert a blank space between the opening and closing tags. The insert tag is only necessary if there
        are null values in the write back physical column. This example uses both elements. Oracle BI Server will choose between update and insert, depending on whether the column is null.

        Create a WriteBack templete as below, (Change WebMessage name, connectionPool name, SQL code as per your requirement)

        <?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="Forecast">
        <XML>
        <writeBack connectionPool="FedEX_CP">
        <insert> </insert>
        <update>
        MERGE INTO D1_ORDERS2 F
        USING (
        SELECT C.NEWKEY, T.YYYYMMDD, P.PRODUCTKEY, F.ACTLEXTND 
        FROM D1_ORDERS2 F, D1_CALENDAR2 T, D1_PRODUCTS P, D1_CUSTOMER2 C
        WHERE F.CUSTKEY = C.NEWKEY 
        AND F.PERIODKEY = T.YYYYMMDD
        AND F.PRODKEY = P.PRODUCTKEY
        AND C.NAME = '@1'
        AND T.YYYYMMDD = '@3'
        AND P.SPECIFICDESCRIPTIN = '@2') S
        ON (F.CUSTKEY = S.NEWKEY 
        AND F.PERIODKEY = S.YYYYMMDD
        AND F.PRODKEY = S.PRODUCTKEY)
        WHEN MATCHED THEN UPDATE SET F.ACTLEXTND  = '@4'
        </update>
        </writeBack>
        </XML>
        </WebMessage>
        </WebMessageTable>
        </WebMessageTables>

        Test the result

        Open a saved Analysis in another browser window and test whether the WriteBack is implemented correctly or not. If it is correctly configured, you will see a message saying "Update Successful" when you modify some values and click on Apply.

        Happy Blogging..!!