OBIEE and Working with Oracle Enterprise Metadata Management



Today I got a chance to explore on Metadata Management Tool and thought of sharing information with you on how to get started. As a prerequisite I assume you have installed already OEMM, if not take a look at this wonderful rittmanmead blog and especially on  Why and How to use Oracle Metadata Management 12c. Part 1: Getting Started

Overview Section
Metadata Management is a very handy tool for developers or business users who wanted to know source lineage with minimal effort or wanted to perform an impact analysis. There are very few implementation will take care to store metadata information (How a metric calculated, what is a source of presentation attribute etc)  and majority of times it involves manual work, by using this tool with very minimal effort we can achieve same thing and this can be expandable to any complex implementation easily.

With this tool we can achieve 1) Analysis to data warehouse and  to source Lineage  2) Can perform impact analysis (how many reports exists with attribute "Order Detail" 3) Can add user comments to metadata ( How a measure being calculated or Why we are in doing this way only etc) 4) Can easily integrated with majority of databases and etls and has built in scheduler to schedule the jobs. 5) Visualize datamodels. 6) Visualize architecture diagram.

It has 2 major components – 1) Metadata Manager MM : This is kind of technical work where we configure about metadata and perform impact analysis or discover lineage or display Architecture Diagrams etc. Whereas 2) Metadata Explorer ME: This allow users to explore/search about metadata. In following sections I will explain in more detailed.


Working with Metadata Manager MM:
a)      As soon as you login to MM you will see a "Welcome" page from left side pane (Repository Pane) , by using right click menu on Repository , choose "New" Folder and created a folder as per your need.

b)      Highlight folder and click on new "Model" inside a newly created folder.


c)       Provide a name to your datamodel – here I am saying "OBIEE"   and select Import type as " …Enterprise Edition".
There are 3 types of OBIEE imports can be performed,
a.       Oracle Business Intelligence (OBI) Answers : With this type , we can import catalog.
b.      Oracle Business Intelligence (OBI) Server     : With this type import we can import RPD – there is no direct way to import RPD directly first we have to convert RPD into UDML or XML using repository tools then feed it to MM.
c.       Oracle Business Intelligence (OBI) Enterprise Edition: With this type of import we can import catalog as well as rpd-udml.
d)      Now in "Import Setup" tab on "Create Model" pop-up provide all required information
Server URL: This is the url where analytics services are running.
Login User: Provide user information as how you login to server (OS user details).
Login Password: OS user password.
File: UDML or xml file where RPD details are available
As previously said , we will not be able to feed whole RPD, we need to convert it to xml or udml.
                For UDML file creation - $OracleBIHome$\server\Bin\nQUDMLGen.exe -U Administrator -P Administrator -R paint.rpd -O paint.udml -N -Q -8
                In order to convert RPD as XML – use following command.
                                Run the bi-init.cmd  from directory ORACLE_INSTANCE\bifoundation\OracleBIApplication\coreapplication\setup\bi-init then
                                Execute biserverxmlgen -R paint.rpd -P Admin123 -O paint.xml -N -Q -8
               
Rest keep them as per your need. And test connectivity by clicking Test link. If there are any errors then fix them.

e)      Optionally you can configure "Import Schedule" , "Security" and "Triggers" tabs.
Perform Import operation, it will display import messages as shown below.


f)       After import your will be able to view model "OBIEE" and double click on it, it will display 2nd pane , i.e. Model Directory it displays all the objects from RPD and Catalog.

g)      Highlight any report and double click on it (example "Contribution Waterfall" report) now in 3rd pane it is displaying what are views that report had and presentation attributes it has.
h)      Highlight any attribute on 3rd pane – in Properties pane (4th pane) you will be able to see that object properties.

Now coming to Utilizing Metadata Manager:

Typical datawarehouse look like below, from source layer we will bring data using ETL into warehouse layer from there using OBIEE analysis will create reports, to















Performing Lineage: Now let me walk you throw performing a lineage on following highlighted columns

Click on Trace data lineage , this will pop what is the scope is it in model or configuration.
Configuration is nothing but couple of models configured as one configuration, example – majority of times we will have source system – so create a model for source system, then if we have ETL's then DAC or Informatica or ODI may exists so create a model for them , and one model for OBIEE which includes RPD and Catalog, now with these 3 models create one configuration.

Now we can see its lineage – Once you expand each semantic layer by expanding – you will be able to see under that layer how it is changed or mapped. Example – once we expand BI Repository you will be able to see all 3 layers of RPD and how an attribute mapped.


Now let's take a look at Impact Analysis example:

Highlight any presentation attribute which you want to perform impact analysis

And it is showing – source to Presentation lineage.


Now let's learn about Metadata Management Explorer :

You can able to launch explored from tool bar menu , in web URL you will see something like "/MM/Explorer" and prompt you to select configuration, select one.
You will be able to view BROWSE objects based on the configuration you selected. Here in picture it is showing only Database and Oracle Business Intelligence  as in my configuration only those 2 repositories are there. By using browse capabilities we will be able to view corresponding technology each and every object.
Here is one such sample – browse Oracle Business Intelligence –Tree view – expanded dashboards to see what are all the pages(Children) are there.



Now coming to Metadata Explorer Search tab: I see this is very powerfull tool as we can search for metadata by technology.

Here is sample search results are shown here.

Here are few search key words and expected results , in short make use of + or - symbols to restrict results.

To search for
Example
Result
Any words
sales order
Any result containing the word "sales" or the word "order"
Exact phrase
"sales order"
Any result containing the exact phrase "sales order"
All words
+sales +order
Any result containing BOTH the words "sales" and "order"
Exclude words
sales –order
Any result containing the word "sales" but cannot contain the word "order"
Wild card end
sale*
Any result containing part of a word beginning with "sale"
Parent and child
sales.order
Any result where the parent is named "sales" and the child is named "order".  E.g., the attribute "order" contained within the entity "sales".
Exact name
.order
Any result only containing the word "order"
Object Type
type:Column
Any result which is of type "Column"
Property Type
property:name
Any result where the search criteria matches the name


Bottom line : With a minimal configuration effort we will be able to perform impact/lineage across all technologies.

Happy Sunday !!!

Power of/Capabilities of Oracle BI Administration - Tool Query Repository Tool


It was a bit relaxing day so thought of blog something but not sure what to blog L. I guess many people might be knowing about this but thought of re-sharing as it may help at least some one.
Okay lets goto topic. If you have some question like following , all those are can be answered using Querying the repository.

a)    How to find all hidden presentation attributes (may be based on some condition)
An example query filter (there could be other options):

•        In the Administration Tool, navigate to:  Tools > Query Repository (Ctrl+Q)
•        Name: * (to query all)
•        Type: Presentation Column
•        Click Filter
o        Click 'Item' row to bring up drop down arrow
o        Choose 'Visibility Filter'
o        In the next column, click in the row to choose the '< >' (not null) operator
o        Leave the Value column blank
o        Click 'OK'
•        Click 'Query'
Like this we can answer many of following questions.
 b)   How to do I know impact of an foreign key. Where all it is joined , if you have a single alias in physical it is easy to find where all it is joined but if you have many aliases and you don't know what are those aliases (Example Date Dimension could have more than 100 aliases – you want to know what are those and what is the count of joins and join conditions etc).
In other words find all joins with in RPD , with what are the facts joined with dimension on which condition.



Launch query tool , choose type as "Physical Foreign Key"  , optionally you can set filters (if you are looking for all joins then don't choose any filters) , now make sure using "Columns" button choose all required columns ie Table1, Table2, Join Expression as bare minimum as bare minimum then run the "Query". Using "Save" button you can save them to spreadsheet.

c)    How do I know how many presentation attributes are there (may be by subject area or so, or how many attributes with prefix as some 'abc' or
d)    How many MUDE projects are there what are those names
e)    How many ragged , skipped hierarchies are in the RPD and what are those.
f)     How many variables are there what are those default values , what is the initialization block it is associated to , what is the sql to populate the variable,
g)    How many users/roles are defined in the RPD and who are those users
h)    How to find how many nested presentation folders are there in all subject areas and what are those. (if you have old technic -> then you may have to query differently).
i)     How many time dimensions are there or how many parent child hierarchies are available.
j)     How many lookup/fact/Bridge tables are there and what are those.
k)    How many presentation attributes have different name than that of logical columns.
l)     How to find how many presentation attributes are re-named with alias or in other words report created long back, but presentation attributes are modified , we can find find old alias and corresponding new presentation attribute.
In order to achieve this name should be * , type from drop down "Presentation Table" if looking for presentation table , "Presentation Column" for column, Click in on 'Filter" and choose Alias operator as not equal and input values as NULL.


m)  How to find more than 2 levels Hierarchical attributes
n)    How to find all metrics which has aggregate as SUM /MIN/AVG etc

   

o)   How to find all derived attributes and what are those ?
p)   Find out all the logical sources which has filter in it.


q)    How to find all Logical source which are disabled for query also there are many other filters as shown below
   



Bottom line we can do many things with Query Repository tool, it is very useful for OBIEE administrators to quickly find few useful things and save the results to present.

I hope you like the post.

Goldengate: How to handle soft deletes

How are you all , it has been a  long while since my last blog so thought of sharing some useful information on goldengate, let us try to implement soft deletes in the goldengate.

Concept: 
      In the source table record got deleted , in the replicated target update the record attribute delete_flag from N to Y, if record got reinserted in the source, in the target modify delete_flag from ‘Y’ to ‘N’. If new record got inserted then delete_flag will be N and if source updates a record in the target also record should get updated but there is no change in the delete_flag value i.e. it will be N only.

Implementation details…..for example let us have source target tables as follow

CREATE TABLE source.SOFT_DETELE_IMPLEMENTATION
(
   ROW_ID      VARCHAR2(15 CHAR) ,
   LOGIN       VARCHAR2(50 CHAR)
);
  
CREATE TABLE target.SOFT_DETELE_IMPLEMENTATION
(
   ROW_ID                 VARCHAR2(15 CHAR) ,
   LOGIN                  VARCHAR2(50 CHAR) ,
   DELETE_FLG             CHAR(1 CHAR)     
);


In extract parameter file add the table which you are interested in
example: edit /app/ggate/dirprm/eextract.prm

EXTRACT EEXTRACT

SETENV (NLS_LANG = "AMERICAN_AMERICA.UTF8")
USERID dbuser_name@DB_Instance, PASSWORD password

EXTTRAIL /app/gg/trail/
-- etc

TABLE source.SOFT_DETELE_IMPLEMENTATION, &
      COLS (ROW_ID, LOGIN);


--Modify the Replicat parameter file and add following syntax for corresponding table then perform all necessary task need for extract / replication to work.

edit /app/gg/dirprm/rextract.prm

---------------------------------
-- TARGET Table mapping -- 
---------------------------------
-- following tag will allow multiple maps for single source
ALLOWDUPTARGETMAP
GETINSERTS
GETUPDATES
-- IGNOREDELETES will ignores deleted records
IGNOREDELETES
MAP source.SOFT_DETELE_IMPLEMENTATION,  TARGET target.SOFT_DETELE_IMPLEMENTATION, &
    COLMAP ( ROW_ID = ROW_ID, LOGIN =  LOGIN, DELETE_FLG = "N" ),HANDLECOLLISIONS;
IGNOREINSERTS
IGNOREUPDATES
GETDELETES
-- UPDATEDELETES will convert delete operations into update operations.
UPDATEDELETES
MAP source.SOFT_DETELE_IMPLEMENTATION,  TARGET target.SOFT_DETELE_IMPLEMENTATION, &
    COLMAP ( ROW_ID = ROW_ID, LOGIN =  LOGIN, DELETE_FLG = "Y" ),HANDLECOLLISIONS;

Unit testing:
Inserted a record into source  ( insert into SOFT_DETELE_IMPLEMENTATION values ('400','aaa');)
Target Table Values ---- 400    aaa         N     

Updated a record in the source (update SOFT_DETELE_IMPLEMENTATION set login ='upd'  where row_id ='400';)
Target Table Values ---- 400     upd        N 

deleted a record from source (delete SOFT_DETELE_IMPLEMENTATION where row_id ='400';)
Target Table Values ---- 400     upd        Y   

Inserted same record 2nd time in the source
Target Table Values ----400     aaa         N    

Source record got updated
Target Table Values ----400     upd        N  

Source record got deleted second time

Target Table Values ----400     upd        Y     


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)

Have a wonderful weekend
-- Vasu

Chrome (Version 30.0.1599.69 m) browser issue -- Patch available


If you are accessing OBIEE using Chrome browser latest version (Version 30.0.1599.69 m) , you may experience many UI issues. For this issue there exists a patch (Patch 16068402) , currently it is available for 11.1.1.6.10+, if you are below this version then you need upgrade to latest version and apply the patch.

OBIEE11g - URL's and its purpose


Based on your permissions and environment setup you will be able to access following links.

http://Your_Server_Name:7001/console    
to access Administraton Server
http://Your_Server_Name:7001/em
   to Fusion Middleware Control (FMW)
http://Your_Server_Name:9704/analytics
to verify the status of bi_server1.
http://Your_Server_Name:9704/analytics/saw.dll?IBotSummary
to create agents
http://Your_Server_Name:9704/analytics/saw.dll?bipublisherEntry&Action=new&itemType=.xdm
to create a new datamodel for BI Publisher
http://Your_Server_Name:9704/analytics/saw.dll?bieehome
to access home page
http://Your_Server_Name:9704/analytics/saw.dll?Admin
to go to Administration Page
http://Your_Server_Name:9704/analytics/saw.dll?ManageGroups
to Manage catalog groups
http://Your_Server_Name:9704/analytics/saw.dll?Sessions
to Manage sessions or for killing a session
http://Your_Server_Name:9704/analytics/saw.dll?ManageIBotSessions
to Manage Agent sessions
http://Your_Server_Name:9704/analytics/saw.dll?bipublisherEntry&Done=%2fanalytics%2fsaw.dll%3fAdmin&Action=admin
to Manage BI Publisher previleges
http://Your_Server_Name:9704/analytics/olh/l_en/biee0194.htm
to launch help documents
http://Your_Server_Name:9704/analytics/saw.dll?catalog&action=searchpanel&type=all
to perform Catalog search
http://Your_Server_Name:9704/analytics/saw.dll?perfmon
to view Performance related metrics
http://Your_Server_Name:9704/analytics/saw.dll?PrivilegeAdmin
to Manage various permissions with in analytics
http://Your_Server_Name:9704/wsm-pm
to verify the status of Web Services Manager.
http://Your_Server_Name:9704/xmlpserver
to accesss Oracle BI Publisher application.
http://Your_Server_Name:9704/ui
to Oracle Real-Time Decisions application.
http://Your_Server_Name:9704/bioffice/about.jsp
to verify the status of the Oracle BI for Microsoft Office application.
http://Your_Server_Name:9704/bicomposer
to verify the status of the Oracle BI Composer application, if this link throw error implies bi composer is not configured.
http://Your_Server_Name:9704/analytics/saw.dll?wsdl
                                       to access web services.