Pages

Monday, 3 February 2014

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


Below is the difference between "Single Table Source" and "Multiple Logical Table Sources" in OBIEE
If a logical table in BMM layer has only one table used as a source table then it is called as Single Logical Table Source and in case the logical table in BMM layer has used more than one tables as the source to it then it is called as Multiple Logical Table Sources.

For example -
Fact table has Multiple Logical Table as (in general) sources used in Fact tables come from different - different physical tables.

What is the use of LTS (Logical Table Source) in OBIEE

Logical table sources define the mappings from a single logical table to one or more physical tables. A logical table contains one or more logical table source. The mapping between physical columns and logical columns are done in this element.
The definition of the logical table source is used:
  • to specify transformations/calculations (in the column mapping tab),
  • to enable aggregate navigation and fragmentation (in the content tab)
The Content tab of the Logical Table Source is used to define :
  • any aggregate table content definitions (specify the grain of the physical tables),
  • fragmented table definitions for the source,
  • and WHERE clauses (if you want to limit the number of rows returned).

Saturday, 1 February 2014

OBIEE Suite Bundle Patches - Useful information

Good news for all the OBIEE implementer’s. Going forward Oracle is going to provide bundle patch scheduled every quarterly(you can plan upgrade activities well ahead), each patch consist of critical bugs fixes, security bugs and or small feature enhancements. Bundle patch is “One Integrated, Well Tested” and you don’t have to worry about patch conflicts with ‘one-off’ patches.
Bundle patches have moved to a calendar based numbering scheme. Example: 1.1.1.7.131017 (YYMMDD format 2013 Oct 17)
For additional details take a look at KM document “OBIEE Suite Bundle Patches (Doc ID 1591422.1)

Thursday, 30 January 2014

Cast Function in OBEE 11g

Cast Function



           Cast is to convert data type.

For e.g:
create table a as
Select CAST(hire_date AS CHAR(40))"H_DATE" FROM employees;

select * from a;

DATE_TIME_DISPLAY_FORMAT = "yyyy/mm/dd hh:mi:ss" ;
DATE_DISPLAY_FORMAT = "yyyy/mm/dd" ;
           TIME_DISPLAY_FORMAT = "hh:mi:ss" ;

Rank Function in OBIEE 11g

Rank Function

1) Select the columns necessary


2) If you are ranking Revenue then select Revenue two times
      3) Click on edit formula on the second measure
 



    4)  Select the rank function from the functions tab
   Functionf(…) -> Aggregate data ->Rank

       5)  Select custom heading to customize your heading (changing name of the column)
Click close once selected

    6)   Click on the measure again in the selected criteria and sort ascending.

Result:

Freeze Column header in OBIEE 11g(11.1.1.6.0)

Freeze Column header in OBIEE 11g(11.1.1.6.0)
We have a feature in OBIEE 11.1.1.6.0 that freezes the data column header. So when a user scrolls down to the bottom of the report, the column header stays in place and only the data rows move.

By default this Freeze option is not enabled. We need to turn ON by adding set of attributes in  instanceconfig.xml file under 

<Views> element, between<GridView>… </GridView> class.

To do this

Navigate to the path 
“<MiddlewareHome>\instances\instance2\config\OracleBIPresentationServicesComponent\coreapplication_obips1″

Open instanceconfig.xml file and add the below entry between <Views> and </Views> tag

<GridViews>
< DefaultScrollingEnabled>true</DefaultScrollingEnabled>
< DefaultRowFetchSlicesCount>200</DefaultRowFetchSlicesCount>
< DefaultColumnFetchSlicesCount>300</DefaultColumnFetchSlicesCount>
< DefaultFreezeHeadersClientRowBlockSize>60</DefaultFreezeHeadersClientRowBlockSize>
< DefaultFreezeHeadersClientColumnBlockSize>15</DefaultFreezeHeadersClientColumnBlockSize>
< /GridViews>


Note: Above entry freeze column header option is enabled when number of rows is greater than 200. You can specify the number of rows as you desire. 

1.       Save the file
2.       Start the Presentation Services. 

I configured for 200 rows, so if the record count increases after 200 records,

We can click on “Get more rows” to get more rows as shown in below screen


This is how table should look like:


Wednesday, 29 January 2014

Top 5 new features for OBIEE 11.1.1.7.1

Top 5 new features for OBIEE 11.1.1.7.1

.
OBIEE’s 11.1.1.7 release has enhanced the server’s experience.  Some of the new features have been long-time awaited before finally coming into light.
At Clearpeaks we found some new features really worth-noting, especially when casually most of those are actually not caught at first sight. Following we present our top 5 new features with a short explanation and some screenshots.

5th: New parameters for dashboard prompted links
This release includes a bunch of new parameters to customize prompted links on dashboards such as:
new features OBIEE
Figure 5: New parameters for dashboard prompted links
  • $Action=[Navigate/Print/Download] ->  New actions to take by prompted link.
  • &var#= -> Identifies the variable used in a variable prompt or that is set by a column prompt.
  • &val[grp,sv,eval,sql]#= -> Sets the value of a prompt to a custom [group's catalog path/server variable/presentation variable/logical SQL statement].
  • &formulause#= -> Identifies whether a prompt value is a code value or a display value (in a repository that is configured for the double column feature). If you do not use this parameter, it is assumed that the value is a display value.
Required for prompts that use hierarchical columns
  • &hierid#= -> Identifies the hierarchy ID.
  • &dimid#= -> Identifies the dimension ID.
  • &tblnm#= -> Identifies the table name.
Optional
  • &cov#= -> Sets the variable of a column prompt that also sets a variable.
  • &psa#= -> Identifies a primary subject area for a prompt.
Detailed documentation on params: Oracle website
4th: Prompt constraints can now be set to be limited by more than one column
new features OBIEE
Figure 4.1: Prompts constraints limited by more than one column
This function allows related prompts to be filtered according to others in cascade. In the following example, month is limited by year, and week by month and year. The value shown is limited by multiple constraints, but we still have the option to view other unrelated date prompts. The feature of multi-selecting constraints is especially useful for viewing values defined by cascade dimensions.
new features OBIEE
Figure 4.2: Prompt constraints by cascade dimensions
3rd: Null Row/Columns suppression
Either at analysis or at viewer level (which overrides the previous one), null suppression options can now be indicated, affecting views such as: (pivot) table, (advanced) trellis, graph, gauge and funnel views, when an entire row or column contains null values.  They are simply hidden from the view. Be aware that after this change null rows and columns will be hidden by default, so you need to explicitly ask for them (slight change of logic).
new features OBIEE
Figure 3.1: Null Row/Columns suppression
new features OBIEE
Figure 3.2: Null Row/Columns suppression at analysis level
2nd: Freeze Column Option
The Column properties entry now allows you to anchor a column (or more) at any edge of a dashboard layout.
graph_new_1
 Figure 2.1: Freeze Column Option
 graph_new_2
 Figure 2.2: Freezed Column
1st(our winner) Better Excel Integration
A lof of effort has been put in improving Excel integration in OBIEE. Aside from updating compatibility to recent Excel graph_new_3versions, a couple of add-ins have been designed for Excel to be used as a template designer and as a grapher, with direct connections to OBIEEs datasources.
  • Excel 2007+ Analysis exporting: The exporting facility is updated to the last version
graph_new_4
Figure 1.1: Excel 2007+ Analysis exporting                                                                       Figure 1.2: Download Links to multiple EPM tools from OBIEE Home page where 2 Excel related ones outshine (Hyperion Smart View and Template builder for Word which includes the Template Builder Add-In for Excel)
Template Builder Enhancements: Excel template Builder comes bundled alongside Template Builder for Word tool which can be downloaded from Home page, as part of the BI Desktop Tools. It automatically installs an Add-In to Excel. Given that it already includes a function for importing Excel Analyzer templates, it can only be installed after the removal of the later.  Once in Excel, you can connect directly from it to BI Publisher server to create new reports in the catalog, upload templates from your Excel session, and download sample XML data.
By doing this, two new features in Template Builder are enabled. Inserting fields provides us an automatic mapping by means of a treeview selection menu of the data structure of the sample so it saves us from manually assign defined names to cells. It also fills the new cell with data from the sample just for testing purposes. Repeating groups is another feature which allows us a similar thing, that is, defining a single XML structure from data and render it as many times as the sample contains this structure.
graph_new_5
Figure 1.3: Excel Template Builder new features
Additional info at the Oracle website and Oracle blog.
 Installing Smart View for Office: Hyperion Smart View add-in for MS Office provides an integrated interface designed for OBIEE and Oracle Enterprise Performance Management. For instance, you can create new analyses from scratch in an excel file and save them in the catalogue.  Old phased-out Oracle BI office is still available at install.
More info: OBIEE blog, Rittman&Mead
graph_new_6b
graph_new_7
Figures 1.4 and 1.5: Installing Smart View for office
Bonus track: MAD and its' custom plugins
Mobile Application Designer is one of the best features introduced in 11.1.1.7.1. It allows you to create mobile applications in a fast and simple way.
However, it often lacks a certain degree of flexibility to customize the look. What a lot of people do not know is that you can code JS plugins, and use them on the interface just by dropping them in <REPOSITORY>/Admin/Plugins folder.
Let´s take for instance the Youtube Plugin code to understand the structure of an expected plugin.
MyYoutubePlugin.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
{
 id: "com.oracle.xdo.youtube",
 component: {
 name: "Youtube Video",
 cssClass: "youtube",
 tooltip: "Insert Youtube Video"
 },
 properties: [
 {key: "width", label:"Width", type:"length", value:"450px"},
 {key: "height", label:"Height", type:"length", value:"370px"},
 {key: "videoid", label:"Video ID", type:"string", value:"TK7KYaCEGZU"}
 ],
 render: function(context, containerElem, rows, fields, props) {
 var videoid = props["videoid"];
 var width = props["width"];
 var height = props["height"];
  
var widthPx = xdo.api.getPixelValue(width);
 var heightPx = xdo.api.getPixelValue(height);
  
var iframe = '<iframe id="'+context.id+'_iframe" style="z-index: -1;" src="http://www.youtube.com/embed/'+videoid+'?wmode=transparent" height="240" width="320"></iframe>';
 xdo.dom.DOMElement.set(containerElem, iframe);
 }
 }
Currently 2 available methods from the xdo.api are exposed uniquely in the MAD docs for their use in the main render function, xdo.api.handleClickEvent and xdo.api.getPixelValue .
There is another tag at the id/properties/render level, fields, which enables you using graphs' typical placeholder for dropping model fields.
fields: [
{name: "labelField", caption: "Drop Label Field Here", fieldType:"label", dataType:"string"},
{name: "dataField", caption: "Drop Data Field Here", fieldType:"measure", dataType: "number", formula: "summation"}
],
We hope you enjoyed the read and would be happy if you leave us a comment on which are you favourite new features of OBIEE 7.1.

Monday, 27 January 2014

OBIA 7.9.6.3 Customization Types, Tips and Best Practice Guidelines

Oracle Business Intelligence Application 7.9.6.3 Customization Types, Tips and Best Practice Guidelines
I would like to share some of the Oracle Business Intelligence Application (OBIA) customization tips and best practices guidelines from my knowledge base. This document is based on my experiences of BI Apps implementation over the period of last 10/11 years since Siebel days and extract from Oracle’s standard documentation around BI Apps.
OBIA Architecture
OBIA Architecture has following components i.e. ETL Architecture, Data Model, Metadata (Repository), Dashboard/Webcat along with security.



OBIA Pre-Built Contents
Oracle Business Intelligence Applications 7.9.6.3 are pre-built solutions from source to dashboard. The pre-built solution contents are:   
Pre-built Analytics Data Warehouse Model
The Business Analytics Data Warehouse is the persistent layer where information is stored for retrieval when required. The data warehouse resides in a relational database platform like Oracle, IBM DB2 LUW, Teradata or Microsoft SQL Server. It consists of transaction grain tables used to capture facts from the key business processes across the organization. The model consists of current snapshots, periodic snapshots and aggregate tables to support complex analysis requirements along with the hundreds of dimension tables conformed across the fact tables which contribute to enrich the analyses.
Pre-built Data Integration Components (ETL/E-LT)  
Data Integration components ( data extraction routines) are used to integrate data from various operational systems such as E-Business Suite, PeopleSoft Enterprise, Oracle's Siebel CRM Applications, Oracle JD Edwards Applications, and third party legacy systems, and load the information in the Business Analytics Data Warehouse.
The data integration components are built using either the Informatica Power Center data integration platform (ETL) or Oracle Data Integrator (E-LT). It uses a layered approach based on data warehouse best practices, which is open and flexible which provides ease of configuration and customization to enable changing the out of the box transformation rules, adding additional attributes, facts and dimensions.
Pre-built Metadata (BI Repository)
The metadata layer includes the definition of role based views, dimensions, metrics, hierarchies, calculations, aggregation rules, canonical dime dimensions, time series metrics, roles and security. The metadata layer is built on the Oracle Business Intelligence Enterprise Edition platform using the Admin Tool, a core component of the BI server, which is designed to meet the requirements of the Common Information Model to deliver consistent and integrated information to business users, by capturing the data from multiple source systems. Oracle Business Intelligence Applications provides ready to use pre-built metadata covering dimensions, metrics and hierarchies. In addition, the pre-built metadata includes the capability to leverage the security profiles inherited from operational systems such as Oracle EBS, PeopleSoft and JD Edwards.
Pre-built OBI-EE dashboard and report content (Catalog)
The OBIEE Presentation Catalog contains pre-built metrics, analytic decision workflows, reports, dashboards and alerts used to deliver information, stored in the Business Analytics Data Warehouse, to information consumers. These services are built on the Oracle Business Intelligence Enterprise Edition delivery platform, which is designed to meet the requirements of an enterprise business intelligence solution. Pre-built reports and dashboards are built on industry best practices, and provide rich content covering functional areas including sales, service, marketing, finance, supply chain, order management, procurement and human resources.
Customization Best Practice – Keep it to Minimum
In line with other Oracle applications products in general, customization should be kept to minimum and wherever possible out-of-the-box (OOTB) functionality should be employed.  This should be done in such manner that future upgrades to the product will not require significant amount of rework, i.e. where there is a good match between the requirements and the out-of-the-box functionality. However, in reality it is often unavoidable. 
Customization Reality – It is Unavoidable
It is often seen that certain key business requirements are not covered by the pre-built contents (Out of Box contents), For example the OOTB Data Warehouse may not include certain attributes customer would like to report on from the source system, or more likely, require an external secondary data store (file, RDBMS, XML, and OLAP) to include additional reporting matrices.
For a rapid development we must re-use as much of the OOTB data model as possible to avoid “re-inventing the wheel” by developing data objects that have already been populated by BI-Apps. There are number of situations where there is a need to modify the pre-built contents.
In these cases it is important to follow certain guidelines and techniques when developing non-standard BI elements. This blog is an attempt to detail guidelines on how to develop custom objects to integrate into BI Apps. The idea is to follow the same design techniques and guidelines that BI Apps uses to build OOTB contents for customization. This approach would be helpful to maintain the oracle’s high standard development practices and keep “look and feel” like standard BI-Apps content.
Types of Customization and Impacts
There are 6 types of customizations that will be implemented.  These customizations can be as simple as exposing already existing attributes in the DW to the Presentation Layer of OBI-EE.  They can also be as complex as creating new dimension, facts and external data sources. The new report creation is not in scope of the this discussion.
The following are the main extensions covered in this blog.
TYPE A- Simple Extensions and Adding Simple/Complex Logical Definition
The Data Warehouse has a vast amount of attributes within its data model.  However, not all this data is exposed to the repository and dashboards.  One of the simplest customizations is to expose the attribute top the Presentation Layer of OBI-EE.
Creating new logical definitions (simple-moderate-complex) based on physical/logical columns already exposed should also be included into the Type A category. Time Series Logical columns are an example of this type of customization.  
Impact:
·     Changes only in the OBI-EE repository in the Physical, Logical and Presentation Layer are needed.
TYPE B- Attribute Extensions
Adding attributes to existing dimensions and measures to existing facts.  The complexity of this customization depends on the SQL required to populate the attribute.  If the attribute is part of an existing table in an existing query then the inclusion is very simple.
Impact: 
  • Additional column(s) to the physical staging and target tables.
  • Changing existing SDE source mapping to add the additional column(s) to the SQL query and the target table.
  • Changing existing SIL target mapping to add the additional column(s) to the SQL extraction query to the target table.
  • Changes required to the OBI-EE repository to add the column to the Physical and modeled through to the Business and Presentation Layers.
TYPE C- Additional Fact, Parent Child Hierarchies Table, Bridge Table
Adding new Facts, Parent Child Hierarchies (value hierarchies) or Bridge tables (a technique for modeling Many-to-Many relationships) will require new SDE mappings for extraction to the DW staging area and new SIL loading routines from the staging area to the DW 
Impact:
  • Additional physical tables created in the staging and DW areas.
  • Add new SDE source mapping to populate the target staging table
  • Add new SIL target mapping to populate the DW target table
  • Import the new data objects to the OBI-EE repository and model the physical through to the Business and Presentation Layers.
  • Optionally applying security filtering.
  • Adding new SDE and SIL to the DAC dependency
TYPE D- Localization of Oracle Business Intelligence (Repository Metadata, Oracle BI Data or Report and Dashboard)
Localization of Oracle Business Intelligence requires three configurations i.e. localization of Oracle BI Repository Metadata, localization of Oracle BI Data and localization of Reports and Dashboards. These configurations require configuration file changes, creating metadata objects to support it which includes initialization block, externalize metadata objects etc , DW tables and routine to populate the language dependent data.
Impact:
  • Additional translation tables/ Modification to existing columns in staging and DW areas.
  • Add/Modify SDE source mapping to populate the target staging table.
  • Add/Modify SIL target mapping to populate the DW target table.
  • Session Variables and Configuration Settings and creation of supporting metadata objects
  • Import the data objects to the OBI-EE repository and model the physical through to the Business and Presentation Layers.
  • Adding new SDE and SIL to the DAC dependency if required  
TYPE E- Fact Granularity Change
Add new Dimensions to an existing Fact requires changes to existing SDE and SIL mappings for the Fact table.  In addition, SDE and SIL mappings are required to implement new dimensions.
Impact:
  • Additional physical dimension table created in the staging & DW areas.
  • Additional key fields to staging and DW fact tables.
  • Add new SDE source mapping to populate the new target staging table.
  • Add new SIL target mapping to populate the DW target table.
  • Changing existing SDE source mapping to add the additional keys staging fact table.
  • Changing existing SIL target mapping to add the additional key column(s) to the DW target fact table.  Also, include the key lookup to the new dimension.
  • Create SDE & SIL workflows.
  • Create DAC tasks with required dependencies.
  • Import the new data objects to the OBI-EE repository and model the physical through to the Business and Presentation Layers.
  • Changes required to the OBI-EE repository to model new Physical model and modeled through to the Business and Presentation Layers.
  • Optionally applying security filtering.
TYPE F- New Star Schema
New facts and some new dimensions integrated with existing dimensions.
Impact:
  • Additional physical dimension and fact table(s) created in the staging & DW areas.
  • For each new physical dimension table and fact table a new SDE source mapping to populate the new target staging tables.
  • For each new physical dimension table and fact table a new SIL target mapping to populate the DW target table.
  • Create SDE & SIL workflows
  • Create DAC tasks with required dependencies.
  • Import the new data objects to the OBI-EE repository and model the physical through to the Business and Presentation Layers.
  • Optionally applying security filtering.
TYPE G- Additional Source Systems or Using Universal Adaptors
Adding a second home-grown or non-supported data source.  OOTB BI-Apps has one supported data source.  However, it is possible that you want to integrate other data sources into the Business Analytic Warehouse (BAW).  Additional sources can include simple spreadsheets to interlacing data into existing data models. 
Interlacing is a method of loading data into the existing data model without matching & merging into the supported data source.  For example, there might be Purchase Orders from a different ERP system that you want to provide integrated reporting with eBS.  In this case you will need to integrate dimensional and fact data.
Another example is to use the universal adaptors to push the data into the BI Apps. The universal adaptors implementation lists following impacts.
Impact:
  • Additional columns created for additional attributes in dimension and fact table(s) created in the staging & DW areas.
  • Modify the universal adaptor SDE mapping &  SIL mappings to include additional attributes if any
  • Create SDE workflow
  • Create DAC tasks with required dependencies.
  • Import the new columns data objects to the OBI-EE repository and model the physical through to the Business and Presentation Layers.
In the next blog of this series I would like to cover the naming conventions and development guidelines that should be followed when developing new attributes, tables, dimensions and facts in the Business Analytics Warehouse (BAW) and new/changed repository objects in the OBIEE repository.


I would like to cover the naming conventions and development guidelines that should be followed when developing new attributes, tables, dimensions and facts in the Business Analytics Warehouse (BAW) and new/changed repository objects in the OBIEE repository.

In this blog my focus would be more on database objects modification standard practices and guidelines such as tables, columns and indexes.

Why Best Practices? – The standard and guidelines for database schema, tables, columns and indexes is for better manageability and simplify the future upgrades. In long term it would help to reduce the application day to day cost and successive upgrades.
  
Database Schema and Objects

The Business Analytics Warehouse (BAW) is the pre-built Data Warehouse as part of BI-Apps.  The database schema will be decided by the installation team.  A default is “BAW”.  It contains both the staging tables and DW target tables. All customized tables, columns, indexes and other database objects MUST be added to BAW schema. (Best Practice DB 1)

Why to add in BAW Schema? – For better manageability and avoid any cross schema joins at OBIEE or Informatica Level as I understand cross schema joins within repository and Informatica would more complicated than keeping it simple. The mantra is keep it simple.

The database objects changes which is been done within the database schema and objects should use best practices for creating and managing versions and comments option of underline databases. The database objects customization should use versions and comments features of database for better traceability. (Best Practice DB 2)

Why Versions and Comments? Putting comments on tables and columns based on phase of projects, user created and date would be useful and provide enough traceability of customization done.

In addition make sure that what so ever customization done to database objects should be imported into the DAC container. The database objects customization should be imported into the DAC container. (Best Practice DB 3)

Why Import? DAC should be your central repository which would be used to migrate the database objects customization from development environment to test and then production. We should avoid using word/text file as a storage option for database objects.


Tables

Naming of Tables

The naming conventions used for tables in the Oracle BI Data Warehouse are as follows.  The naming conventions for tables defined in BI Data Warehouse should be followed if custom tables are created in the warehouse. (Best Practice DB 4)

Why Standard Naming Conentions? It would help to identify meaning of each of the table and its significance and usability in overall solution.

The names of the Oracle Data Warehouse tables consist of three parts:

Prefix
Name
Suffix

The three components are capitalized and separated by an underscore (_), e.g. W_GL_OTHER_F. Each component has a meaning, as described in the table below:

Component
Value
Meaning
Prefix
W_
Out-of-the-box warehouse table
Prefix
WC_
Custom warehouse table
Suffix
_F
Fact table (base)
Suffix
_FS
Staging Fact table (base)
Suffix
_A
Aggregate fact table (base)
Suffix
_D
Dimension table (base)
Suffix
_DS
Staging Dimension table (base)
Suffix
_DH
Dimension hierarchy table (base)
Suffix
_SCD
Slowly changing dimension table (base)
Suffix
_MD
Mini-dimension table
Suffix
_H
Helper table
Suffix
_HS
Helper Staging Table
Suffix
_TMP
Pre Staging Temporary table
Suffix
_G, _GS, _S
Internal Table
Prefix
_UD
Unbounded dimension
Prefix
_DHLS
Staging for Dimension Helper
Prefix
_DHL
Dimension Helper Table
Prefix
_M
Map Dimension


The types of tables used by the Oracle Business Analytics Warehouse are as follows. The developer should use following types of tables; I believe the list of the tables used has covered almost all types of tables possible for DW solution. Any new addition would be a treated as a new entrant in the family and should be welcomed. (Best Practice DB 5)

Why different types? The type of the table and its description would be helpful to understand its significance in overall solution

Table Type
Description
Aggregate tables (_A)
Contain summed (aggregated) data
Dimension tables (_D)
Star analysis dimensions
Staging tables for Dimension (_DS)
Tables used to hold dimension information that have not been through the final ETL transformations.
Staging tables for Usage Accelerator
(WS_)
Tables containing the necessary columns for the ETL transformations
Dimension Hierarchy tables (_DH)
Tables that store the dimension's hierarchical structure
Dimension Helper tables (_DHL)
Tables that store M:M relationships between twojoining dimension tables
Staging tables for Dimension Helper
(_DHLS)
Staging tables for storing M:M relationships between
two joining dimension tables
Fact tables (_F)
Contain the metrics being analyzed by dimensions.
Fact Staging tables (_FS)
Staging tables used to hold the metrics being analyzed by dimensions that have not been through the final ETL transformations
Internal tables (_G, _GS, _S)
Internal tables are used primarily by ETL mappingsfor data transformation and controlling ETL runs
Helper tables (_H)
Helper tables are inserted between the fact and dimension tables to support a many-to-many (M:M) relationship between fact and dimension records
Map dimension tables (_M)
Tables that store cross-referencing mappings between the external data ID and the internal ID
Mini dimension tables (_MD)
Include combinations of the most queried attributes of their parent dimensions. The database joins these small tables to the fact tables
Primary extract tables (_PE)
Tables that are used to support the soft delete feature. The table includes all the primary key columns (integration ID column) from the source system. When a delete event happens, the full extract from the source compares the data previously extracted in the primary extract table to determine if a physical deletion was done in the transactional database. The soft delete feature is disabled by default. Therefore, the primary extract tables are not populated until you enable the soft delete feature
Unbounded dimension tables(_UD)
Tables containing information that is not bounded in transactional database data but should be treated as bounded data in the Oracle Business Analytics Warehouse

Columns

Naming of Columns

This section describes the naming conventions used for columns in the Oracle BI Data Warehouse.  The naming conventions for columns defined in BI Data Warehouse should be followed if custom columns are created in the warehouse. (Best Practice DB 6)

Why Naming Convention for Columns? It would help to identify meaning of each of the column and its significance and usability in overall table usage.

The columns of the Oracle Data Warehouse tables consist of three parts:

Prefix
Name
Suffix

The three components are capitalized and separated by an underscore (_), e.g. X_BUDGET_AMT. Each component has a meaning, as described in the table below:

Component
Value
Meaning
Prefix
X_
Custom warehouse column
Suffix
_AMT
This column contains a currency amount
Suffix
_CD
The column value is based on the contents of the List of Values (LOV)
Suffix
_DT
This column contains a date or date time value.
Suffix
_FLG
This column contains a Boolean value where Y indicates Yes or True; N indicates No or False
Suffix
_I
Language Independent Code
Suffix
_ID
Columns are used in staging tables, they corresponds to the source identifier
Suffix
_WID
Identifier generated by Oracle BI linking dimensionand fact tables, except for ROW_WID
Suffix
_NAME
Name corresponding to the code column (columns ending with _CODE)
Suffix
_DESC
Long Description corresponding to the code column (columns ending with _CODE)
Suffix
_NUM
This column contains a number or an identifying alphanumeric value

All new tables, whether Fact or Dimension MUST contain the following important fields :( Best Practice DB 7)

Why System Fields? It would provide metadata information about the data and DML operations. Metadata of data such as source identifier, source type, created by, creation date etc is useful in many ways such as setting up changed data capture, setting up DML operations such as insert, update and up-sert.


Column Name
Column Type
Required in Area
Description
INTEGRATION_ID
VARCHAR2(80 CHAR)
Staging / DW
Stores the primary key or unique identifier of a record in the source table.
DATASOURCE_NUM
NUMBER(10)
Staging / DW
Stores the data source from which the data is extracted – this is setup in DAC.  E-Business Suite = 4.  New external sources should have their own unique number.
ETL_PROC_WID
NUMBER(10)
DW
Stores the ID of the ETL process information; details of ETL process are stored in the W_ETL_RUN in the warehouse
ROW_WID
NUMBER
DW
Is the sequence number generated during the ETL process; unique identifier (sequence number) for the tables.
CREATED_ON_DT
DATE
Staging / DW
Stores the creation date of a record in the primary source table
CHANGED_ON_DT
AUX1_CHANGED_ON_DT
AUX2_CHANGED_ON_DT
AUX3_CHANGED_ON_DT
AUX4_CHANGED_ON_DT
DATE
Staging / DW
Stores the last update date of a record in the primary source table
Additional column prefixed by AUX# can be added to store the last update date related to auxiliary source tables
CREATED_BY_ID
VARCHAR2(80)
Staging
Stores the user id who created a record in the primary source table
CREATED_BY_WID
NUMBER(10,0)
DW
Surrogate key of the user id who created a record in the primary source table
CHANGED_BY_ID
VARCHAR2(80)
Staging
Stores the user id who last updated a record in the primary source table
CHANGED_BY_WID
NUMBER(10,0)
DW
Surrogate key of the user id who last updated a record in the primary source table
TENANT_ID
VARCHAR2(80)
Staging / DW
This permits to distinguish distinct source instances having a common data source num identifier
Default value is ‘DEFAULT’



Miscellaneous Technical columns for new tables


All new tables, MAY contain the following important fields:( Best Practice DB 8)

Why Flg Columns ? It would provide metadata information about the data and DML operations. Metadata of data such as source identifier, source type, created by, creation date etc is useful in many ways such as setting up changed data capture, setting up DML operations such as insert, update and upsert.     


Column Name
Column type
Required in Area
Description
CURRENT_FLG
CHAR(1)
DW
For Slowly changing dimension purpose
DELETE_FLG
CHAR(1)
Staging / DW
For Soft/Hard delete purposes
W_INSERT_DT
DATE
DW
optional insertion date for ETL audit purpose
W_UPDATE_DT
DATE
DW
optional update date for ETL audit purpose
SRC_EFF_FROM_DATE
DATE
Staging / DW
For Type 2,3 or 6 slowly changing dimension purpose
SRC_EFF_TO_DATE
DATE
Staging / DW
For Type 2,3 or 6 slowly changing dimension purpose
EFFECTIVE_FROM_DATE
DATE
Staging / DW
For Type 2,3 or 6 slowly changing dimension purpose
EFFECTIVE_TO_DATE
DATE
Staging / DW
For Type 2,3 or 6 slowly changing dimension purpose



Miscellaneous Technical columns for new tables

The currency codes for related system columns are as follows:( Best Practice DB 9)

Why Currency Codes? To support reporting in multiple currencies is one of the prime features of BI Apps implementations.       


System Column
Description
DOC_CURR_CODE
Code for the currency in which the document was created in the source system.
LOC_CURR_CODE
Usually the reporting currency code for the financial company in which the document was created.
GRP_CURR_CODE
The primary group reporting currency code for the group of companies or organizations in which the document was created.
LOC_EXCHANGE_RATE
Currency conversion rate from the document currency code to the
local currency code.
GLOBAL1_EXCHANGE_RATE
Currency conversion rate from the document currency code to the primary group currency code.
GLOBAL2_EXCHANGE_RATE
Currency conversion rate from the document currency code to the GLOBAL1 currency code.
GLOBAL3_EXCHANGE_RATE
Currency conversion rate from document currency code to the GLOBAL2 currency code.

























Indexes

Naming of Indexes

The naming conventions used for Indexes in the Oracle BI Data Warehouse are as follows. The naming conventions for indexes defined in BI Data Warehouse should be followed if custom indexes are created in the warehouse. (Best Practice DB 10)

Why Naming Conventions for Indexes ? It would help to identify custom indexes and its significance and usability in overall solution.

The index name of the Oracle Data Warehouse tables consists of two parts

Prefix
Name
Suffix

The three components are capitalized and separated by an underscore (_), e.g. W_GL_BALANCE_F_U1, each component has a meaning as described in the table below.

Component
Value
Description
Prefix
W_
Standard Data Warehouse Table
Prefix
WC_
Custom Table
Name
XXX
Table Name (e.g. W_GL_BALANCE_F)
Suffix
_U1
Unique Index ( e.g. composite index on INTEGRATION_ID and DATASOURCE_NUM_ID
Suffix
_F1
Non Unique Dimensional Reference Key Index ( e.g.  bitmap index such as BALANCE_DT_WID )
Suffix
_M1
Non Unique Index ( e.g. bitmap or normal index or composite normal index )
















Best Practices for Indexes
The best practices for the indexes are as below.

·         The custom indexes in Source System ( e.g. Oracle EBS) for incremental Loads performance can be categorized into following groups and action need to taken based on facts
o   Tables that do not have indexes on LAST_UPDATE_DATE in the latest EBS releases, but there are no performance implications reported with indexes on LAST_UPDATE_DATE column.
o   Tables that have indexes on LAST_UPDATE_DATE columns, introduced in Oracle EBS Release 12.
o   Tables that cannot have indexes on LAST_UPDATE_DATE because of serious performance degradations in the source EBS environments.
The indexes on source system should have prefix OBIEE_ and DO NOT follow to the standard source system index naming conventions (e.g. OBIEE_OE_ORDER_HEADERS_ALL)(Best Practice DB 11)

Why? This is to make sure that these custom indexes are managed separately from the rest of the standard indexes.
·         Staging tables typically do not require indices, not a strict rule
Don’t hesitate to include indexes on staging table if necessary(Best Practice DB12).  

Why? Let common sense prevails, I hate strict rules; if you prove the index would help you in data load performance don’t worry go ahead and just do it.

·         Create indices on all columns that the ETL uses for dimensions and facts. For example:
o   ROW_WIDs of dimensions and facts
o   INTEGRATION_ID
o   DATASOURCE_NUM_ID
o   Flags
o   Dimensional Reference Keys  of fact tables
Create indices on all system columns such as ROW_WID, INTEGRATION_ID etc used within ETL processes.This is absolutely MUST for ETL performance. (Best Practice DB13).    

Why? ETL Performance, without these indices I can tell you that your ETL won’t run efficiently.

·         Create Bitmap Indexes for Dimensional reference keys and flags, treat this a MUST requirement. (Best Practice DB14).   
Why? With Bitmap Indexes for Dimensional reference keys and flags allows us to use STAR TRANSFORMATION.I believe it is absolutely essential to achieve best query performances.

Make sure that the database parameter for STAR TRANSFORMATION & Repository Database Parameters setting has been in place.  
·         Carefully consider on which columns to put filter conditions (Best Practice DB15).
Why? Setting up index on column which we used to put condition in report would improve performance for obvious reason.
·         Define indices to improve query performance(Best Practice DB16)
o   Inspect standard repository objects for guidance
Why? The index creation processes should be driven by business requirements rather than physical structures and conventional wisdom. I believe the reporting system is a mainly a business support system and should be driven by business requirements.

·         Register new indices in the DAC, treat this as a MUST requirement ( Best Practice DB17)
Options within DAC are
o   Local or Partitioned Index
o   Query Index or ETL Index
o   The DAC server drops and re-creates indices during a full load and /or incremental load

Why?  As I said earlier DAC should be your central repository for all database objects which includes indexes. This is helpful during migration of code from development instance to test and finally to production. DAC would be useful to maintain drop and re-recreate indices during full load and/or incremental load.

·         Review/Revisit Index Strategy on regular basis ( Best Practice DB18)

Why?  Review and Revisit the Indices should be done on regular basis, particularly with every new release which might end up with different usage pattern and query performances.

·         The best practices for handling BI Applications indexes in Exadata Warehouse (Best Practice DB19):

Why? Exadata, Exalytics are specially designed engineering system and requires different approach. Based on my experience in this area the success mantra is don’t rush to any conclusion, make sure that proper comprehensive benchmarking is done before dropping or disabling any indices.
o   Turn on Index usage monitoring to identify any unused indexes and drop / disable them in your environment.
o   Consider pinning the critical target tables in smart flash cache
o   Consider building custom aggregates to pre-aggregate more data and simplify queries performance.
o   Drop selected query indexes and disable them in DAC to use Exadata Storage Indexes / Full Table Scans only after running comprehensive benchmarks and ensuring no impact on any other queries performance.
I hope you find the second part of this series informative and useful. My plan is to write next couple of blogs on guideline on Informatica, DAC and Repository customisation.