You are here

Siebel Analytics & OBIEE

OBIEE Interview Questions and Answers FAQ

1. Define repository in terms of Siebel Analytics

o Repository stores the Meta data information. Siebel repository is a file system ,extension of the repository file. rpd.
o META DATA REPOSITORY
o With Siebel Analytics Server, all the rules needed for security, data modeling, aggregate navigation, caching, and connectivity is stored in metadata repositories.
o Each metadata repository can store multiple business models. Siebel Analytics Server can access multiple repositories

2.What is the end to end life cycle of Siebel Analytics?

o Siebel Analytics life cycle
1. Gather Business Requirements
2. Identify source systems
3. Design ETL to load to a DW if source data doesn’t exist.
4. Build a repository
5. Build dashboard or use answers for reporting.
6. Define security (LDAP or External table…)
7. Based on performance, decide on aggregations and/or caching mechanism.
8. Testing and QA.

3. What were you schemas? How does Siebel Architecture works? Explain the three layers. How do you import sources?

o There are five parts of Siebel Architecture.
1. Clients
2. Siebel analytics Web Server
3. Siebel analytics server
4. Siebel analytics scheduler
5. data sorces
o Metadata that represents the analytical Model Is created using the siebel Analytics Administration tool.
o Repository divided into three layer
1. Physical – Represents the data Sources
2. Business – models the Data sources into Facts And Dimension
3. Presentation – Specifies the users view of the model;rendered in Siebel answer

4.  If you have 3 facts and 4 dimension and you need to join would you recommend joining fact with fact? If no than what is the option? Why you won’t join fact to fact?

o In the BMM layer, create one logical table (fact) and add the 3 fact table as logical table source

5. What is connection pool and how many connection pools did you have in your last project?

o connection pool is needed for every physical database.
o It contains information about the connection to the database, not the database itself.
o Can use either shared user accounts or can use pass-through accounts -Use: USER and PASSWORD for pass through .
o We can have multiple connection pools for each group to avoid waitin

6. Purpose of Alias Tables

o An Alias table (Alias) is a physical table with the type of Alias. It is a reference to a logical table source, and inherits all its column definitions and some properties from the logical table source. A logical table source shows how the logical objects are mapped to the physical layer and can be mapped to physical tables, stored procedures, and select statements. An alias table can be a reference to any of these logical table source types.
o Alias Tables can be an important part of designing a physical layer. The following is a list of the main reasons to create an alias table:  To reuse an existing table more than once in your physical layer (without having to import it several times).
 To set up multiple alias tables, each with different keys, names, or joins
o To help you design sophisticated star or snowflake structures in the business model layer. Alias tables are critical in the process of converting ER Schemas to Dimensional Schemas.

7. How do you define the relationship between facts and dimensions in BMM layer?

o Using complex join ,we can define relationship between facts and dimentions in BMM layer.

8.What is time series wizard? When and how do you use it?

o We can do comparison for certain measures ( revenue.,sales etc.. ) for current year vs previous year, we can do for month or week and day also
o Identify the time periods need to be compared and then period table keys to the previous time period.
o The period table needs to contain a column that will contain “Year Ago” information.
o The fact tables needs to have year ago totals.
o To use the “Time series wizard”. After creating your business model right click the business model and click on “Time Series Wizard”.
o The Time Series Wizard prompts you to create names for the comparison measures that it adds to the business model.
o The Time Series Wizard prompts you to select the period table used for the comparison measures
o Select the column in the period table that provides the key to the comparison period. This column would be the column containing “Year Ago” information in the period table.
o Select the measures you want to compare and then Select the calculations you want to generate. For ex: Measure: Total Dollars and calculations are Change and Percent change.
o Once the Time series wizard is run the output will be:
a) Aliases for the fact tables (in the physical layer)
b) Joins between period table and alias fact tables
c) Comparison measures
d) Logical table sources
o In the General tab of the Logical table source etc you can find “Generated by Time Series Wizard” in the description section
o Then you can add these comparision measures to the presentation layer for your reports.
o Ex: Total sales of current qtr vs previous qtr vs same qtr year ago

9.  Did you create any new logical column in BMM layer, how?

o Yes. We can create new logical column in BMM layer.
o Example: Right click on fact table -new lgical column-give name for new logical column like Total cost.
o Now in fact table source,we have one option column mapping, in that we can do all calculation for that new column.

10.  Can you use physical join in BMM layer?

o yes we can use physical join in BMM layer.when there is SCD type 2 we need complex join in BMM layer.

11.Can you use outer join in BMM layer?

o yes we can.When we are doing complex join in BMM layer ,there is one option type,outer join is there.

12.  What are other ways of improving summary query reports other than Aggregate Navigation and Cache Management

 Indexes
 Join algorithm
 Mat/view query rewrite
 Web proper report design its optimal by making sure that it is not getting any addition column or rows

13.  What is level-base matrics?

o Leval-base matrics means, having a measure pinned at a certain level of the dimension. For Example, if you have a measure called “Dollars”, you can create a Level Based Measure” called “Yearly Dollars” which (you guessed it) is Dollars for a Year. This measure will always return the value for the year even if you drill down to a lower level like quarter, month… etc. To create a level based measure, create a new logical column based on the original measure (like Dollars in the example above). Drag and drop the new logical column to the appropriate level in the Dimension hierarchy (in the above example you will drag and drop it to Year in Time Dim
o A LBM is a metric that is defined for a specific level or intersection of levels.
o Monthly Total Sales or Quarterly Sales are the examples.
o You can compare monthly sales with quarterly sales. You can compare customer orders this quarter to orders this year

14.  What is logging level?Where can you set logging levels?

o You can enable logging level for individual users; you cannot configure a logging level for a group.
o Set the logging level based on the amount of logging you want to do. In normal operations, logging is generally disabled (the logging level is set to 0). If you decide to enable logging, choose a logging
o level of 1 or 2. These two levels are designed for use by Siebel Analytics Server administrators.
o Set Logging Level
1. In the Administration Tool, select Manage > Security.
2. The Security Manager dialog box appears.
3. Double-click the user.s user ID.
4. The User dialog box appears.
5. Set the logging level by clicking the Up or Down arrows next to the Logging Level field

15.  What is variable in sieble?

o You can use variables in a repository to streamline administrative tasks and modify metadata content dynamically to adjust to a chainging data environment.The Administration Tool includes a Variable Manager for defining variables

16.  What is system variable and non system variable?
o System variables
o System variables are session variables that the Siebel Analytics Server and Siebel Analytics Web use for specific purposes. System variables have reserved names, which cannot be used for other kinds of variables (such as static or dynamic repository variables, or for nonsystem session variables).
o When using these variables in the Web,preface their names with NQ_SESSION. For example, to filter a column on the value of the variable LOGLEVEL set the filter to the Variable NQ_SESSION.LOGLEVEL.
o Nonsystem variables.
o A common use for nonsystem session variables is setting user filters. For example, you could define a nonsystem variable called SalesRegion that would be initialized to the name of the user.s sales region. You could then set a security filter for all members of a group that would allow them to see only data pertinent to their region.
o When using these variables in the Web, preface their names with NQ_SESSION. For example, to filter a column on the value of the variable SalesRegion set the filter to the Variable NQ_SESSION.SalesRegion.

17.  What are different types of variables? Explain each.
o There are two classes of variables:
1. Repository variables
2. Session variables.
Repository variables.
A repository variable has a single value at any point in time. There are two types of repository variables:
static : This value persists, and does not change until a Siebel Analytics Server administrator decides to change it.
dynamic:The values are refreshed by data returned from queries. When defining a dynamic repository variable, you will create an initialization block or use a preexisting one that contains a SQL query. You will also set up a schedule that the Siebel Analytics Server will follow to execute the query and periodically refresh the value of the variable.
Session Variables
Session variables are created and assigned a value when each user logs on. There are two types of session variables:
1.system
2.nonsystem.

18.  What are the cache management? Name all of them and their uses. For Event polling table do u need the table in your physical layer?

o Monitoring and managing the cashe is cache management.There are three ways to do that.
o Disable caching for the system.(INI NQ config file), Cashe persistence time for specified physical tables and Setting event polling table.
 Disable caching for the system.(INI NQ config file :
You can disable caching for the whole system by setting the ENABLE parameter to NO in the NQSConfig.INI file and restarting the Siebel Analytics Server. Disabling caching stops all new cache entries and stops any new queries from using the existing cache. Disabling caching allows you to enable it at a later time without losing any entries already stored in the cache.
Cashe persistence time for specified physical tables :
You can specify a cachable attribute for each physical table; that is, if queries involving the specified table can be added to the cache to answer future queries. To enable caching for a particular physical table, select the table in the Physical layer of the Administration Tool and select the option Make table cachable in the General tab of the Physical Table properties dialog box. You can also use the Cache Persistence Time settings to specify how long the entries for this table should persist in the query cache. This is useful for OLTP data sources and other data sources that are updated frequently, potentially down to every few seconds.
Setting event polling table :
Siebel Analytics Server event polling tables store information about updates in the underlying databases. An application (such as an application that loads data into a data mart) could be configured to add rows to an event polling table each time a database table is updated. The Analytics server polls this table at set intervals and invalidates any cache entries corresponding to the updated tables.
o For event polling table ,It is a standalone table and doesn’t require to be joined with other tables in the physical layer

19. What is Authentication? How many types of authentication.

 Authentication is the process by which a system verifies, through the use of a user ID and password, that a user has the necessary permissions and authorizations to log in and access data. The Siebel Analytics Server authenticates each connection request it receives.

  •  Operaing system autentication
  •  External table authentication
  •  Database authentication
  •  LDAP authentication

20. What is object level security?

There are two types of object level security: Repository level and Web level
 Repository level : In presention layar we can set Repository level security by giving permission or deny permission to users/groups to see particular table or column.
 web level:thisprovides security for objects stored in the siebel anlytics web catlog,such as dashboards,dashboards pages,folder,and reportsyou can only view the objects for which you are authorized. For example,a mid level manager may not be granted access to a dashboard containing summary information for an entire department.

21. What is data level security?

This controls the type an amount of data that you can see in a report.When multiple users run the same report the results that are returned to each depend on their access rights and roles in the organization.For example a sales vice president sees results for alll regions, while a sales representative for a particular region sees onlu datafor that region.

22.  What is the difference between Data Level Security and Object Level Security?

 Data level security controls the type and amount of data that you can see in a reports.Objectlevel security provides security for objects stored in the siebel analytics web catlog, like dashboards,dashboards pages,folder,and reports.

22. How do you implement security using External Tables and LDAP?

Instead of storing user IDs and passwords in a Siebel Analytics Server repository, you can maintain lists of users and their passwords in an external database table and use this table for authentication purposes. The external database table contains user IDs and passwords, and could contain other information, including group membership and display names used for Siebel Analytics Web users. The table could also contain the names of specific database catalogs or schemas to use for each user when querying data

Instead of storing user IDs and passwords in a Siebel Analytics Server repository, you can have the Siebel Analytics Server pass the user ID and password entered by the user to an LDAP(Lightweight Directory Access Protocol ) server for authentication. The server uses clear text passwords in LDAP authentication. Make sure your LDAP servers are set up to allow this.

23.  If you have 2 fact and you want to do report on one with quarter level and the other with month level how do you do that with just one time dimension?

Using levelbase matrics.

24.  Did you work on a stand alone Siebel system or was it integrated to other platforms?

Deploying the Siebel analytics platform without other Siebel applications is called Siebel analytics Stand -Alone .If your deployment includes other siebel Analytics Application it called integrated analytics -You can say Stand-Alone siebel analytics

25. How to sort columns in rpd and web?

Sorting on web column, sort in the rpd its sort order column

26. If you want to create new logical column where will you create (in repository or dashboard) why?

I will create new logical column in repository.because if it is in repository,you can use for any report.If you create new logical column in dashboard then it is going to affect on those reports ,which are on that dashboard.you can not use that new logical column for other dashboard(or request)

27. What is complex join, and where it is used?
o we can join dimention table and fact table in BMM layer using complex join.when there is SCD type 2 we have to use complex join in Bmm layer.

28. If you have dimension table like customer, item, time and fact table like sale and if you want to find out how often a customer comes to store and buys a particular item, what will you do?

write a query as “SELECT customer_name, item_name, sale_date, sum(qty) FROM customer_dim a, item_dim b, time_dim c, sale_fact d WHERE d.cust_key = a.cust_key AND d.item_key = b.item_key AND d.time_key = c.time_key GROUP BY customer_name, item_name, sale_date”

29. You worked on standalone or integrated system?

 Standalone.

30.  If you want to limit the users by the certain region to access only certain data, what would you do?

 using data level security.  Siebel Analytics Administrator: go to Manage -> Security in left hand pane u will find the user, groups, LDAP server, Hierarchy
What you can do is select the user and right click and go to properties, you will find two tabs named as users and logon, go to user tab and click at permission button in front of user name you have selected as soon as u click at permission you will get a new window with user group permission having three tabs named as general ,query limits and filter and you can specify your condition at filter tab, in which you can select presentation table ,presentation columns ,logical table and logical columns where you can apply the condition according to your requirement for the selected user or groups.

31. If there are 100 users accessing data, and you want to know the logging details of all the users, where can you find that?

To set a user.s logging level
1. In the Administration Tool, select Manage > Security.
The Security Manager dialog box appears.
2. Double-click the user.s user ID. The User dialog box appears.
3. Set the logging level by clicking the Up or Down arrows next to the Logging Level field

32.  How do implement event polling table?

Siebel Analytics Server event polling tables store information about updates in the underlying databases. An application (such as an application that loads data into a data mart) could be configured to add rows to an event polling table each time a database table is updated. The Analytics server polls this table at set intervals and invalidates any cache entries corresponding to the updated tables.

33.Can you migrate the presentation layer only to different server

No we can’t do only presentation layer. And ask him for more information and use one of the above answers

  • Create a ODBC connection in the different serve and access the layer.
  • Copy the Rpd and migrate it to other server

34.  Define pipeline. Did you use it in your projects?

Yes, pipelines are the stages in a particular transaction. assessment, finance etc.

35. How do you create filter on repository?

 Where condition on content tab.

36. How do you work in a multi user environment? What are the steps?

  1. Create a shared directory on the network for Multi-user Development (MUD).
  2. Open the rpd to use in MUD. From Tools->Options, setup the MUD directory to point to the above directory.
  3. Define projects within the rpd to allow multiple users to develop within their subject area or Facts.
  4. Save and move the rpd to the shared directory setup in point 1.
  5. When users work in the MUD mode, they open the admin tool and start with
  6. MUD ->Checkout to checkout the project they need to work on (not use the File open as you would usually do).
  7. After completely the development, user checkin the changes back to the network and merge the changes.

37.  Where are passwords for userid? Ldap,external table authentication stored respectively?

passwords for userid are in siebel analytics server repository Ldap authentication in Ldap server external database in a table in external database

38. Can you bypass siebel analytics server security ?if so how?

yes you can by-pass by setting authententication type in NQSCONFIG file in the security section as:authentication_type=bypass_nqs.instanceconfig.xml and nqsconfig.ini are the 2 places

39. Where can you add new groups and set permissions?

you can add groups by going to manage>security>add new groups> You can give permissions to a group for query limitation and filter conditions.

40.what are the things you can do in the BMM layer?

Aggrigation navigation,level base matrics,time series wizard,create new logical column,comlex join.

41. what is Ragged hierarchy? and how do u manage it

Ragged Hierarchy is one of the different kinds of hierarchy.

A hierarchy in which each level has a consistent meaning, but the branches have inconsistent depths because at least one member attribute in a branch level is unpopulated. A ragged hierarchy can represent a geographic hierarchy in which the meaning of each level such as city or country is used consistently, but the depth of the hierarchy varies.

 For example, a geographic hierarchy that has Continent, Country, Province/State, and City levels defined. One branch has North America as the Continent, United States as the Country, California as the Province or State, and San Francisco as the City. However, the hierarchy becomes ragged when one member does not have an entry at all of the levels. For example, another branch has Europe as the Continent, Greece as the Country, and Athens as the City, but has no entry for the Province or State level because this level is not applicable to Greece for the business model in this example. In this example, the Greece and United States branches descend to different depths, creating a ragged hierarchy.

42. What is the difference between Single Logical Table Source and Multiple Logical Table Sources?

If a logical table in BMM layer has only one Table as the source table then it is Single LTS.

If the logical table in BMM layer has more than one table as the sources to it then it is called Multiple LTS.

Ex: Usually Fact table has Multiple LTS’, for which sources will be coming from different Physical tables.


43.Can you let me know how many aggregate tables you have in your project? On what basis have you created them?

As per resume justification document

44. How do you bring/relate the aggregate tables into the Siebel analytics Logical layer?

One way of bringing the Aggregate Tables into the BMM layer is by bringing them as Logical Table sources for the corresponding Fact table.

This is done by dragging and dropping the aggregate table into the corresponding fact table. After doing that establish the column mappings and the set the aggregation levels.

45. How do you know which report is hitting which table, either the fact table or the aggregate table?

After running the report, go to “Administration” tab and go to click on “Manage Sessions”. There you can find the queries that are run and in the “View Log” option in the Session Management you can find which report is hitting which table.

46. Suppose I have report which is running for about 3 minutes typically. What is the first step you take to improve the performance of the query?

Find the sql query of the report in Admin->manage Session-> run the sql query on toad ->read the explain plan output ->modify the SQL based on the explain plan output

47. Suppose you have a report which has the option of running on aggregate table. How does the tool know to hit the Aggregate table and for that what the steps you follow to configure them?

Explain the process of Aggregate navigation

48. Have you heard of Implicit Facts? If, so what are they?

An implicit fact column is a column that will be added to a query when it contains columns from two or more dimension tables and no measures. You will not see the column in the results. It is used to specify a default join path between dimension tables when there are several possible alternatives.

For example, there might be many star schemas in the database that have the Campaign dimension and the Customer dimension, such as the following stars:

  • Campaign History star. Stores customers targeted in campaign.
  • Campaign Response star. Stores customer responses to a campaign.
  • Order star. Stores customers who placed orders as a result of a campaign.


In this example, because Campaign and Customer information might appear in many segmentation catalogs, users selecting to count customers from the targeted campaigns catalog would be expecting to count customers that have been targeted in specific campaigns.


 To make sure that the join relationship between Customers and Campaigns is through the campaign history fact table, a campaign history implicit fact needs to be specified in Campaign History segmentation catalog. The following guidelines should be followed in creating

 segmentation catalogs:
 Each segmentation catalog should be created so that all columns come from only one physical star.

 Because the Marketing module user interface has special features that allow users to specify their aggregations, level-based measures typically should not be exposed to segmentation users in a segmentation catalog.

49. What is aggregate navigation? How do you configure the Aggregate tables in Siebel Analytics?

Aggregate tables store precomputed results, which are measures that have been aggregated (typically summed) over a set of dimensional attributes. Using aggregate tables is a very popular technique for speeding up query response times in decision support systems.

 If you are writing SQL queries or using a tool that only understands what physical tables exist (and not their meaning), taking advantage of aggregate tables and putting them to good use becomes more difficult as the number of aggregate tables increases. The aggregate navigation capability of the Siebel Analytics Server, however, allows queries to use the information stored in aggregate tables automatically, without query authors or query tools having to specify aggregate tables in their queries. The Siebel Analytics Server allows you to concentrate on asking the right business question; the server decides which tables provide the fastest answers.

50.  (Assume you are in BMM layer) We have 4 dimension tables, in that, 2 tables need to have hierarchy, then in such a case is it mandatory to create hierarchies for all the dimension tables?

 No, its not mandatory to define hierarchies to other Dimension tables.

51.  Can you have multiple data sources in Siebel Analytics?

 Yes.

52.  How do you deal with case statement and expressions in siebel analytics?

use expression builder to create case when…then.. end statement

53. Do you know about Initialization Blocks? Can you give me an example where you used them?

Init blocks are used for instantiating a session when a user logs in.

To create dynamic variable you have to create IB to write sql statement.

54. what is query repository tool?

  • It is utility of Seibel/OBIEE Admin tool
  • allows you to examine the repository metadata tool
  •  for example: search for objects based on name,type.
  •  Examine relationship between metadata objects like which column in the presentation layer maps to which table in physical layer

55.  what is JDK and why do we need it?

Java Development Kit (JDK), A software package that contains the minimal set of tools needed to write, compile, debug, and run Java applets.

56. Oracle doesn’t recommend Opaque Views because of performance considerations, so why/when do we use them?

an opaque view is a physical layer table that consists of select statement. an opaque view should be used only if there is no other solution.

57. Can you migrate the presentation layer to a different server.

No we have to migrate the whole web & rpd files

58. How do you identify what are the dimension tables and how do you decide them during the Business/Data modeling?

Dimension tables contain descriptions that data analysts use as they query the database. For example, the Store table contains store names and addresses; the Product table contains product packaging information; and the Period table contains month, quarter, and year values. Every table contains a primary key that consists of one or more columns; each row in a table is uniquely identified by its primary-key value or values

59.  Why do we have multiple LTS in BMM layer?What is the purpose?

to improve the performance and query response time.

60. what is the full form of rpd?

there is no full form for rpd as such, it is just a repository file (Rapidfile Database)

61. how do i disable cache for only 2 particular tables?

in the physical layer, right click on the table there we will have the option which says cacheable

62.  How do you split a table in the rpd given the condition. ( the condition given was Broker and customer in the same table) Split Broker and customer.

 we need to make an alias table in the physical layer.

63.  What type of protocol did you use in SAS?

TCP/IP

Siebel Analytics Web Services

Siebel Analytics provides a Simple Object Access Protocol (SOAP) programming interface to extract and deliver data and manage the content of the Siebel Analytics Web Catalog. This document gives an overview on how to use this functionality to show a Siebel Analytics report in a HTML page.

Scope

This Proof of Concept (POC) involves the use of Java Development Kit, Apache Tomcat Server and Apache Axis apart from Siebel Analytics. This document only gives an overview of the SOAP Interface provided by Siebel Analytics and an example of how to use Java to display a simple report in a HTML page using the Web Services provide by Siebel Analytics.

A primer on Web Services and installation/ setup of the required software is beyond the scope of this document.

Siebel Analytics Web Services Overview

Siebel Analytics provides a set of web services which can be called by a third party HTML page to display an Analytics report/ dashboard. It also provides services to manage/ alter the structure of the analytics web catalog. The Siebel Analytics Web SOAP API allows external applications such as J2EE and .NET to use Siebel Analytics as an analytical calculation and data integration engine. It provides a set of Web services that allow external applications to communicate with the Siebel Analytics Web server. You can use the Siebel Analytics Web SOAP API to extract results from Siebel Analytics Web and deliver them to external applications and Web application environments.

The following Web Services are provided:

  • HtmlViewService Service– embeds Siebel Analytics Web HTML results in third-party dynamic Web pages such as Active Server Pages (ASP), Java Server Pages (JSP) and Portal frameworks.
  • MetadataService Service– retrieves descriptions of Siebel Analytics schema objects like tables, columns & subject areas.
  • ReplicationService Service– provides web catalog replication methods.
  • ReportEditingService Service– provides methods for passing and merging of report parameters and the Siebel Analytics Web data to create and return results.
  • SAWSessionService Service– provides authentication and other session-related methods.
  • SecurityService Service– provides methods for identifying accounts and privelleges.
  • WebCatalogService Service– provides methods for navigating and managing the web catalog and reading and writing web catalog objects in XML format.
  • XMLViewService Service– retrieves results from Siebel Analytics Web in XML format.

Siebel Analytics provides a WSDL for these web services, which can be accessed through the following URL http://some_host/analytics/saw.dll?WSDL. This describes all the information that is required to make a call to the Siebel Analytics Web.

Software Requirements

This Proof of Concept was executed with the following software:

  • Siebel Analytics 7.8.4
  • JDK 1.6
  • Apache Tomcat 5.5
  • Apache Axis 1.4

Assumptions

  • The reader has a basic understanding of Web Services and Siebel Analytics.
  • The reader should be conversant with Java.
  • All required software have been properly installed and configured.
  • Siebel Analytics is licensed for SOAP API.

Implementation Approach Overview

The following approach was taken to display a Siebel Analytics report in a HTML page.

  • The WSDL for the web services was accessed through http://AnalyticsPOC/analytics/saw.dll?WSDL.
  • The WSDL2Java utility of Apache Axis was used for getting the proxy classes from the WSDL.
  • The java client was written to make a call to the Siebel Analytics Web to get the report results and write the report HTML code to a HTML

 

The WSDL

The WSDL details all the information required for calling the web services from an external source. The WSDL for the Analytics SOAP API can be accessed through the following URL – http://AnalyticsPOC/analytics/saw.dll?WSDL. Here AnalyticsPOC is your analytics server. You will need to save this file with a .WSDL extension.

WSDL2Java Utility

The WSDL provides all the information required to make a call to the Siebel Analytics Web; however before the java client can be written the proxy classes need to be generated from the WSDL. Apache Axis provides a utility - WSDL2Java – for this. After correctly installing the JDK, Tomcat and Apache Axis the proxy classes can be generated by typing the following command on a DOS window.

java org.apache.axis.wsdl.WSDL2Java -Ncom.siebel.analytics.web/soap/v3 = com.siebel.analytics.web.soap -Ncom.siebel.analytics.web/report/v1 = com.siebel.analytics.web.report -Ncom.siebel.analytics.web/expression/v1 = com.siebel.analytics.web.expression WSDL_File.wsdl

Here WSDL_File.wsdl is the file to which you have saved the WSDL got from http://AnalyticsPOC/analytics/saw.dll?WSDL

After running this utility the following directory structure should get created - com\siebel\analytics\web\expression and com\siebel\analytics\web\soap. The former contains the java classes required for working with expressions and the latter stores the java classes for the web services. All the java code in these 2 folders needs to be compiled before they can be used in the java client.

The Java Client

The java client uses the proxy classes generated through the WSDL2Java utility to make a call to the Siebel Analytics Web to get the report definition and display write it to the HTML file.

For the purpose of this POC only two Web Services were used – SAWSessionService and HTMLViewService. The SAWSessionService is used to establish a session and logon to the Siebel Analytics Web. After this the HTMLViewService was used to get the HTML code for the report.

The HTML result of the report was written to a HTML file and the report was then viewed.

Challenges and Resolution

 

S. No.

Challenge

Resolution

1

While compiling the java code got the following error

 

Exception in thread "main" java.lang.UnsupportedClassVersionError: AnalyticsReport (Unsupported major.minor version 50.0

)

at java.lang.ClassLoader.defineClass0(Native Method)

at java.lang.ClassLoader.defineClass(Unknown Source)

at java.security.SecureClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.defineClass(Unknown Source)

at java.net.URLClassLoader.access$100(Unknown Source)

at java.net.URLClassLoader$1.run(Unknown Source)

at java.security.AccessController.doPrivileged(Native Method)

at java.net.URLClassLoader.findClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClass(Unknown Source)

at java.lang.ClassLoader.loadClassInternal(Unknown Source)

There were 2 different versions of JVM installed on the machine. The code got compiled in a higher version but while running the code a lower version of java was being used.

 

After removing the older version of JVM from the path things worked fine.

2

While generating the proxy classes for the WSDL the following error message was given

 

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/axis/wsdl/WSDL2Java

Set the CLASSPATH variable correctly

3

While generating the proxy classes for the WSDL the following error message was given

 

Exception in thread "main" java.lang.NoClassDefFoundError: javax.wsdl.Definition

at org.apache.axis.wsdl.toJava.JavaGeneratorFactory.class$(JavaGeneratorFactory.java:68)

at org.apache.axis.wsdl.toJava.JavaGeneratorFactory.addDefinitionGenerators(JavaGeneratorFactory.java:179)

at org.apache.axis.wsdl.toJava.JavaGeneratorFactory.addGenerators(JavaGeneratorFactory.java:133)

at org.apache.axis.wsdl.toJava.JavaGeneratorFactory.<init>(JavaGeneratorFactory.java:111)

at org.apache.axis.wsdl.toJava.Emitter.<init>(Emitter.java:159)

at org.apache.axis.wsdl.WSDL2Java.createParser(WSDL2Java.java:209)

at org.apache.axis.wsdl.gen.WSDL2.<init>(WSDL2.java:96)

at org.apache.axis.wsdl.WSDL2Java.<init>(WSDL2Java.java:194)

at org.apache.axis.wsdl.WSDL2Java.main(WSDL2Java.java:371)

Adding the jar file wsdl4j.jar to the CLASSPATH solved the problem

4

While generating the proxy classes for the WSDL the following error message was given

 

WSDLException (at /wsdl:definitions/wsdl:import): faultCode=OTHER_ERROR: Unable to resolve imported document at 'Wsdl/Sc

hemas/SAWServices.xsd', relative to 'file:/C:/Documents and Settings/shaild/Desktop/Kunal/Web Services POC/Code/java/saw

.wsdl': This file was not found: file:/C:/Documents and Settings/shaild/Desktop/Kunal/Web Services POC/Code/java/Wsdl/Sc

hemas/SAWServices.xsd: java.io.FileNotFoundException: This file was not found: file:/C:/Documents and Settings/shaild/De

sktop/Kunal/Web Services POC/Code/java/Wsdl/Schemas/SAWServices.xsd

at com.ibm.wsdl.util.StringUtils.getContentAsInputStream(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.parseImport(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:516)

at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)

at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)

at java.lang.Thread.run(Thread.java:619)

 

at com.ibm.wsdl.xml.WSDLReaderImpl.parseImport(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)

at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:516)

at org.apache.axis.wsdl.symbolTable.SymbolTable.populate(SymbolTable.java:495)

at org.apache.axis.wsdl.gen.Parser$WSDLRunnable.run(Parser.java:361)

at java.lang.Thread.run(Thread.java:619)

The proxy classes were being generated on a different machine and the WSDL was pointing to a schema XSD which was on a different path.

 

After altering the WSDL file so that the path for the schema XSD was accessible the proxy classes were successfully generated.

5

On running the client to connect to the Webservice using the Logon() method of SAWSessionService a Soap Fault (Assertion Failure) is thrown.

The underlying cause for this were the changes made to targetNameSpace & ImportNameSpacein the WSDL. These namspaces had a ‘/’ in them due to which the classes that were created by the Axis WSDL2Java utility had a ‘/’ in the name of the package. This ‘/’ caused the compiler to fail.

 

There is a runtime parameter for WSDL2Java which can be used to specify the Namespace to Package mapping. After using that the Logon() method was running as expected.

 

The WSDL2Java command used was

 

java org.apache.axis.wsdl.WSDL2Java -Ncom.siebel.analytics.web/soap/v3=com.siebel.analytics.web.soap -Ncom.siebel.analytics.web/report/v1=com.siebel.analytics.web.report -Ncom.siebel.analytics.web/expression/v1=com.siebel.analytics.web.expression Analytics.wsdl

6

The HTML code being returned from the Analytics Web Server points to a few javascript and css files. The path of these files was not being set properly; there was ‘Missing_’ being prefixed to the name of the file. Because of this a scripting error “object is undefined’ was being thrown.

This was basically because the correct browser user agent was not being passed to the Analytics Web Server.

 

Instead of using the logon method of the SAWSessionService web service the longonex or impersonateex methods were used. These methods take the user-agent as an input parameter. The correct value for he user-agent can be got by typing the following command in the address bar of the browser

 

javascript:alert(navigator.userAgent)

 

This value needs to be passed as a string argument to the logonex/ impersonateex methods.

References

  • Siebel Bookshelf – eAI Volume II: Integration Platform technologies
  • Siebel Analytics Web Services Guide
Time zone implementation for Oracle BI reporting

To implement multiple Time zone implementations, one has to modify the instanceconfig.xml to invoke certain OOB features available with OBI implementation.

Things to consider before implementing multiple time zones:

  • Data obtained from the source systems have to be stored in GMT in the OLAP Database.

  • Data can also be offset to a certain time if the source system cannot store the time data in GMT.

The data will displayed to the user according to the time zone specified by the user in the preferences in "My Account".

Depending on the Analytics user's location as set in the preferences, he/she will be able to see the data in that particular time zone that the user has configured. There are also options to display a default time zone  for the entire data set.

A sample code to be inserted into instanceconfig.xml would be as follows:

(instanceconfig.xml) in which the <TimeZone> element has been added.

<TimeZone>

<DefaultDataOffset>0</DefaultDataOffset>

<Logging>(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana</Logging>

<DefaultUserPreferred>(GMT-08:00) Pacific Time (US &amp; Canada); Tijuana</DefaultUserPreferred>

<DefaultDataDisplay>(GMT-06:00) Central Time (US &amp; Canada)</DefaultDataDisplay>

</TimeZone>

One can also navigate to  folder $\OracleBIData\common\timezone for a default set of timezones available OOB, if needed you are allowedto add any number of time zones to the xml file.

Analytics Password Automation
There have been cases in analytics repository migration where the entire repository (popularly known as rpd in the developers circle) files needs to be moved to other environments due to code merge issues or developers not adhering to coding standards or due to any unforeseen issues. In such cases where the repository has multiple physical databases configured, it becomes a tedious and time consuming process to update the connection pool credentials (UID, PWD Data source name each of the connection pools created) manually and is also prone to mistakes. These errors might lead to incorrect database being queried upon or account being locked. To avoid such issues, one can use the nqUDML executables to automate this entire process.
 
Process to update development rpd with QA credentials during the migration.
 
Open the existing QA repository using the Administration Tool. Copy + Paste the connection pool to a notepad file. One can see the UDML definition of the connection pool. This UDML definition gives the Datasource name, UID and the encrypted password. Save this notepad file (dev2qa.txt or any name which identifies it with what it contains)
 
By using nqUDMLExec command line utility provided with Oracle BI, one can update the connection pool. It requires and accepts the following arguments.
 
-U : Administrator
-P : Password of the base repository
-I  : input script (in this case is the dev2qa.txt file)
-B : Base repository (in this case is the development rpd)
-O : Output repository (the updated repository with development metadata and QA credentials)
 
Usage: 
:\>nqUDMLExec –U Administrator –P SADMIN –I dev2qa.txt –B dev.rpd –O qa.rpd
 
 
Advantages
 
  • Multiple connection pools can be updated at the same time without manual intervention.
  • After the first time setup of the passwords in the connection pool by the DBA/OBI Administrators, they are encrypted and cannot be misused by developers.
  • Static variables, used in DSN names and UIDs can also be updated using this method.
  • Local repository users and groups and also be administered by having a one-time setup patch file for each environment.
Generating user and group list from Analytics Repository using VB Script
Default analytics repository based authentication get a little tedious to generate the list of users and associated groups via the manual process. To simply this, a VB Script can be written and used to generate the list of users and associated groups. This script uses the UDML export of the repository to generate the list in text file.
 
This text file is a delimited format file, which can be imported to Microsoft Excel for further analysis. This can also be used to maintain the user/group security setup.
 
Benefits:
  • For user access issues, this output file can be used for determining the security privileges.
  • Reduces manual intervention.
Report Formatting by editing XML in Oracle BI

Pivot Tables in Siebel Analytics and Oracle BI does not provide option to display more than one decimal place in the report out-of-box. The business might need more for their analysis. To display more decimal places, the report XML can be edited. This can be done using advanced tab and changing the attributes minDigits and maxDigits in XML as shown below.

E.g.

minDigits="0" maxDigits="0"  will display 0 decimal places

minDigits="1" maxDigits="1"  will display 1 decimal places

minDigits="4" maxDigits=" 4" will display 4 decimal places

Benefits: Having more than one decimal places for percentage the analysis would be more accurate (eg. 2.57 being round off to 2.6 which is not accurate. Customers may demand for more decimal places if the analysis is based on the least value and has huge amount of data having more variation.

ETL - Performance Improvement Tips

ETL jobs run every day to pull data from Transactional OLTP database Servers and Load Analytical OLAP warehouse data bases takes more time than its expected, Follwing are tips that will help you improve the ETL performance.
Following are the daily running ETLs along with the current (before applying Improvement Tips) timings:-

ETL Name

Time Taken(Min) Before Optimization

ETL 1

132 (Avg. for Latest 15 ETL runs)

ETL 2

462 (Avg. for Latest 15 ETL run)

ETL 3

450-500 (Avg for Latest 15 ETLs.)

 

Views Definition Optimization:- There were 3 main views used to get the data from the main source tables. The existing definition of the views was:-

  • SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK)JOIN S_SRV_REQ SR(NOLOCK) ON ACT.SRA_SR_ID = SR.ROW_ID
     
  • SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK)JOIN S_DOC_AGREE ITR(NOLOCK)ON ITR.ROW_ID = ACT.AGREEMENT_ID WHERE ITR.X_QUICK_TICKET_ROW_ID IS NOT NULL
     
  • SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK)JOIN S_PROD_DEFECT IR(NOLOCK)ON ACT.SRA_DEFECT_ID = IR.ROW_ID

    Here the S_EVT_ACT, S_SRV_REQ, S_DOC_AGREE and S_PROD_DEFECT are main source Transactional database tables having huge data. While pulling from these views, the task was taking almost 1 Hr for each view. (This each view is used in 3 different ETLs).
    The reason for taking that much time was because of the join condition with main tables and for Optimizing those Views, Join condition between the main tables has been edited so that View should not query the S_SRV_REQ table for the View 1, S_DOC_AGREE for the view 2 and S_PROD_DEFECT for the view 3. So the views definition has been changed like following:-

    1. SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK)WHERE ACT.SRA_SR_ID IS NOT NULL
    2. SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK)WHERE ACT.AGREEMENT_ID IS NOT NULL
    3. SELECT ACT.* FROM S_EVT_ACT ACT(NOLOCK) WHERE ACT.SRA_DEFECT_ID IS NOT NUL

      above view definitions are doing look up in the same table rather then main table look up..

      Results: After changing the views definition as shown above, it really has improved the performance. Now the data pull task is taking just 2-3 minutes against the 1 hour earlier time. So save of almost 50 minutes for each ETL.

      1. SSIS Lookup Task (Null Column Handling):- There was one lookup task as a process of ETL processing through SSIS package that was taking almost 4 hrs each day means for each incremental day processing records it was taking almost 4 hrs that was very abnormal and was affecting the reporting very badly. So while analyzing the task following issues has been found:-
        1. There was one column in the Source-Destination mapping that is not mapped with the source. So there was no data in this column and this column name was Country for this example.
        2. Look up SQL was like following:-

       

      SELECT ROW_WID,PERSONNELNUMBER,COUNTRY FROM WC_PERBIGAREA_D(NOLOCK)

      As Country or say any columns that is being used in the Look UP SQL is having NULL values then the Look Up SQL will always return the same no of records for each incremental run means As the comparison with NULL always return False so the Look Up will always iterate for all the records in the Incremental pull against the Null Country Record in the existing table and returns the Incremental multiplied Null values records. That’s why it was taking almost same 4 Hrs for each incremental run.

      Solution:- Following changes has been for improving the Look Up task performance beasically the NULL values has been handled:

      1. Update Column(NULL):Updated the main WC_PERBIGAREA_D (NOLOCK) table for the COUNTRY column from NULL value to the relevant value by joining the tables to populate correct country value.
      2. Modified Lookup Mapping: Modified the LookUp target mapping to include COUNTRY (Missing Column) mapping also so that from this point onwards the Country values should not become NULL and Should not effect the performance.

       

      Results: After doing the above changes, the task is now completing in 10-15 minutes. Its again almost 4 hrs save in ETL execution time.

      1. Dead Lock Prevention: “It’s always a best solution to prevent Deadlock to occur at very first place rather then letting Deadlock occur and then recovering from Deadlock”. In one of the SSIS package task, there was truncation of main destination table and then loading fresh full data each time means each ETL run. After analyzing what we observed was that at the time of Truncation of this particular table, as truncation needs exclusive lock, if any user is querying that table then it is getting in to dead lock/Hanged state until unless that blocking is cleared manually. So due to this, ETL some times hanged for 2-3 hrs or even a day also. It was really impacting the daily ETL Performance.

       

      Solution:

      1. Created new temporary table having same schema definition as main destination table that is being truncated in each ETL run.
      2. In each incremental run, truncated only the temporary table and loaded data into the temporary table. So deadlock/blocking is prevented by not truncating the main table.
      3. And for the data insertion from temporary table to the Main table followed the UPDATE/INSERT strategy. This way there was no hanging of ETL because now table is not exclusively locked and no user queries are affected and the ETL start running faster as there is no hanging point now. And the performance is also consistent.

      Results:

        1. ETL’s Performance improved because there are no blocking points.
        2. Users Queries are not affected.
        3. Consistent ETL Performance.

      Following are the daily running ETLs timing after applying Improvement Tips:

      ETL Name

      Time Taken(Minutes) After Optimization

      Solution Applied

      ETL 1

      68(Avg. for 15 ETL runs)

      Solution 1.

      ETL 2

      151 (Avg. for 15 ETL run)

      Solution 1 & 3.

      ETL 3

      200 (Avg. for 15 ETL runs )

      Solution 1 & 2.

       

       

      Image1
      ETL 1 Performance Graph after Applying Solution 1

       

      Image2

      ETL 2 Performance Graph after Applying Solution 1 & 3

      Image3

      ETL 3 Performance Graph after Applying Solution 1 & 2
       

Report Formatting by editing XML in Oracle BI

Pivot Tables in Siebel Analytics and Oracle BI does not provide option to display more than one decimal place in the report out-of-box. The business might need more for their analysis.

To display more decimal places, the report XML can be edited. This can be done using advanced tab and changing the attributes minDigits and maxDigits in XML as shown below.

E.g. minDigits="0" maxDigits="0"  will display 0 decimal places

minDigits="1" maxDigits="1"  will display 1 decimal places

minDigits="4" maxDigits=" 4" will display 4 decimal places

Benefits: Having more than one decimal places for percentage the analysis would be more accurate (eg. 2.57 being round off to 2.6 which is not accurate). Customers may demand for more decimal places if the analysis is based on the least value and has huge amount of data having more variation.

Subscribe to Siebel Analytics &amp; OBIEE