Showing posts with label ConsultingBI. Show all posts
Showing posts with label ConsultingBI. Show all posts

Thursday, August 20, 2015

SUBTOTALS FOR SOME METRICS AND NOT FOR OTHERS

Hi All,
This will be a quick post. Yesterday, I stumbled upon an issue where I was requested to show subtotal for some metrics in the table where as not to show subtotal for other Metrics.
Thing to highlight was that all of the metrics were aggregated by default in RPD.
Now one might be tempted to:
* Go to the results tab, then edit the table view.
* In the Columns and Measures section, choose if you want the totals to display after or before.
* Click on the mouse icon on the metrics, where you want to display the totals for, and choose aggregation rule as sum, and none for the metrics that you dont want to display the totals for.
Strangely, this might work in some case, while in some cases it won’t. You might see NULL in those columns where you didn’t want subtotals
The trick lies in going to Criteria Tab once again, go to the metric you don’t want the total on, and then select
Aggregation Rule (Totals Row) as None
Run the report once again. You will see few metrics showing totals whereas few metrics not showing subtotals, as intended.
Another thing to note is that this would not have been the issue in Pivot table at all. But I wanted to refrain from using the same lest TMP tables would have been created as my dataset was large.

VERTICAL CLUSTERING IN OBIEE

Vertical scaling in OBIEE means adding more Business Intelligence Components to the same computer to make use of the hardware resources. There are cases when the middleware hardware is sized with many CPUs and more Memory, so in order to make use of them then we have to do vertical scaling.
Where Vertical Clustering is to do more with one BI components in one server, horizontal clustering deals more with configuring multiple instances of BI server in different boxes. This is useful not only for load sharing, but also at times when one server is down. There are more to the world of Horizontal Clustering. But I will cover this in my later post.
Coming back to Vertical Clustering…
Though there were some workaround available in 10g, Vertical Clustering has been introduced in 11g.
Unlike Horizontal, this does not provide high availability when the server itself goes down. In this type of clustering generally 3 components are clustered

  1. BI Server
  2. BI Presentation Services
  3. Java Host

That is, all the components that can act in active-active configuration can be clustered in Vertical Clustering. Other components like Scheduler, Cluster Controller which work in active-passive fashion are generally not clustered vertically.

* Log Into EM
* Navigate to the deployment section. (Since we are doing vertical clustering, we do not need to have a shared drive for the repository & the web catalogs. But again its better to identify a drive that can potentially be shared in the future with other machines as Vertical Clustering does not provide high availability (for future migration to horizontal clustering)).
* Once the drive is identified (one for RPD and the other for Web Catalog), copy the web catalog to the shared drive. In the deployment section of the Enterprise Manager, enter the shared directory details of both the RPD and the Web Catalog.
* Upload the repository (RPD) into the shared drive using the enterprise manager.

VC1

* Access the Fusion Middleware Control 11g.
* Select core application under Business Intelligence
* Select Capacity Management.
* Go to Scalability tab and click Lock and Edit Configuration. Now the Enterprise Manager will allow editing the values.

VC2

This will automatically create new instances(within the main instance) in BI EE for both the BI Server and Presentation Server(after Activating the changes). We can validate this by looking at the number of directories under
{ORACLEINSTANCE}/bifoundation/OracleBIServerComponent and
{ORACLEINSTANCE}/bifoundation/OracleBIPresentationServerComponent

VC3

Since we selected two, 2 new directories will be created for the new BI Server and Presentation Server that we added through the EM. Lets now start these new components through the capacity management interface

VC4

Once the scaling out is completed, opmn will be aware of the newly created components.
Till Next Time!

OBIEE METADATA LINEAGE

I will talk about a generic topic today (more from Application Maintenance Perspective). Lets say we have created our RPD and various reports.
How we will track if we have to:
1) Change the source/ formula of a column which is coming in the report.
2) We have made the change in column formula in BMM Layer in the Report. How to identify the impacted Reports
3) There is a physical column in the RPD which has been deleted now. Will this be impacting any reports.
4) Who are the owners or who have the permissions to check any particular report, etc
For questions like above and many more, application owners would like to document a sort of tracker which has details of all of above. We call this metadata lineage or data lineage.
From OBIEE perspective, we keep this lineage at two levels:
1) Catalog Level
2) RPD Level
Catalog Level
To extract all information related to report, its columns, owners, permissions, path, etc. we can use a feature available through catalog manager.
To generate this report, open catalog manager and follow the below steps:
1. Locate the folder in catalog manager whose information is required. To generate this info for entire catalog, one can share the root folder itself.
2. Select Tools > Create Report.
Met1
3. In the Create Catalog Report dialog, select the columns that you want to include in the report
Met2
4. Click OK
5. Lets save this csv file as CatalogDetails.csv
Repository Level:
All repository objects information can be generated with Repository documentation utility available within OBIEE Administrator tool.
How to use this utility:
1. Open the Oracle BI Administration tool and open the required RPD
2. In the OBIEE Administration tool, select Tools > Utilities.
3. In the Utilities dialog, select the Repository Documentation utility and click Execute
Met3
4 Lets save this csv file as RPDDetails.csv
Now a user/ developer/ owner can check these two files back and forth to verify if anything can break due to new changes. I leave to my readers if they want to import back these two files into RPD and play around by creating reports based on our imported metadata lineage.
Till Next Time,
Happy Exploring.

WORKING THROUGH RPD PATCH FILES

Most of us work in RPD through Admin Tool only – Changes, BMM layer changes, Creation of Variables, Updating variables, etc and what not.
However, there is one thing very interesting which can expedite making small incremental changes in RPD and that is – Patching.
A Patch file is xml file generated from RPD. This xml file can be either of whole Repository or can be a small file of differences between two RPDs.
The second option entice me very much as I think this can be used in multiple scenarios.
Let me illustrate how to work on Patch files by giving one example. There can be multiple applications of this but that I would leave to my readers as food for though for now.
Imagine you have a RPD (BiCoach.RPD) that has variables which define the connection pool details.
Patch1

Patch2
Here we have created three static Repository variables that are used in connection pool physical layer.
Now the value of connection pools change very frequently as per your OBIEE Environment. i.e Different database name, userid, password for integration environment or production environment or so on. We are taking here example of small number of variables but this list can be huge depending on your RPD.
Lets create a quick small patch file that has only details of these variables.
1. Copy the same RPD and rename it as BiCoach_Dev.rpd
2. Modify the values of those 3 variables.
Patch3
3. Compare both the RPDs.
4. Create the Patch as mentioned. Save the file as ‘RPDDifference.xml
Patch4
5. This is how the created Patch file looks
Patch5
6. You might notice that for each element, there is specific id and uid is generated. This remains constant. However, for our exercise, we can delete id and uid for each of the variables but lets retain this.
7. Now, I am making change in this xml file and updating values as per my Integration Environment.
Patch6
8. Next Lets apply this patch in our original RPD – BiCoach.RPD.
Patch7
Patch8
9. Click Next. New RPD ‘BiCoach(1).RPD’ is created. Lets see our updated variables.
Patch9

This really offer multiple avenue for its application: be it for Support team or Others. I will let this for readers to explore.
Please continue to drop your emails/ suggestions. Till next time,
Happy Exploring!

RPD NOT OPENING IN ONLINE MODE

Opening RPD in online mode is the fastest way to make incremental changes in the already running OBIEE server. Though Oracle always recommend to deploy the RPD from EM, whenever there are large changes in the RPD, users can always resort to make online changes should the scope of change is less.
RPDNot1
However, it should be noted that making change online affects performance intermittently.
In this post, I will explain to troubleshoot scenarios when RPD is not opening in online mode. The error message says Repository can only be opened as Read-Only
RPDNot2
To resolve this:
RPDNot3
Open EM
  • Go to Capacity Management
  • Select the Performance Tab
  • Uncheck the “Disallow RPD Updates” checkbox
  • Apply the change and Restart the server
You are ready to make changes again in RPD in online mode

REFRESH GUIDS

In Oracle Business Intelligence 11g Release 1 (11.1.1), users are recognized by their global unique identifiers (GUIDs), not by their names. GUIDs are identifiers that are completely unique for a given user. Using GUIDs to identify users provides a higher level of security because it ensures that data and metadata is uniquely secured for a specific user, independent of the user name.
Wherever possible, secure access to data and metadata using application roles rather than individual users.
Refreshing GUIDs/ GUID Synchronization/ GUID regeneration
GUID refresh updates any metadata references to user GUIDs in the Oracle BI repository and Oracle BI Presentation Catalog. During the GUID refresh process, each user name is looked up in the identity store. Then, all metadata references to the GUID associated with that user name are replaced with the GUID in the identity store.
When?? If Oracle best practices are not observed and Oracle Business Intelligence repository data is migrated between systems that have different GUIDs for the same users, GUID refresh is required for the system to function. This is not a recommended practice, because it raises the risk that data and metadata secured to one user (for example, John Smith, who left the company two weeks ago) becomes accessible to another user (for example, John Smith, who joined last week). Using application roles wherever possible and using GUIDs consistently across the full development production lifecycle prevents this problem from occurring.

Refreshing User GUIDs

To refresh user GUIDs, perform the following steps on APPHOST1 and APPHOST2. Note that GUID refresh must occur with only one node operating at a time.
1.    Stop Oracle BI Server and Presentation Services on all nodes except where you are refreshing the user GUIDs. For example:
cd ORACLE_BASE/admin/instancen/bin
./opmnctl stopproc ias-component=coreapplication_obips1
./opmnctl stopproc ias-component=coreapplication_obis1
2.    Update the FMW_UPDATE_ROLE_AND_USER_REF_GUIDS parameter in NQSConfig.INI:
Open NQSConfig.INI for editing at:
ORACLE_INSTANCE/config/OracleBIServerComponent/coreapplication_obisn
3.    Locate the FMW_UPDATE_ROLE_AND_USER_REF_GUIDS parameter and set it to YES, as follows:
4.    FMW_UPDATE_ROLE_AND_USER_REF_GUIDS = YES;
5.    Save and close the file.
6.    Update the Catalog element in the instanceconfig.xml file:
Open instanceconfig.xml for editing at:
ORACLE_INSTANCE/config/OracleBIPresentationServicesComponent/coreapplication_obipsn
Locate the Catalog element and update it as follows:
<Catalog>
<UpgradeAndExit>false</UpgradeAndExit>
<UpdateAccountGUIDs>UpdateAndExit</UpdateAccountGUIDs>
</Catalog>
Save and close the file.
7.    On the node where you are refreshing the GUIDs, start the Oracle BI Server and Presentation Services using opmnctl:
cd ORACLE_BASE/admin/instancen/bin
./opmnctl startproc ias-component=coreapplication_obis1
8.     After you confirm that the Oracle BI Server is running, then start Presentation Services:
./opmnctl startproc ias-component=coreapplication_obips1
9.    Set the FMW_UPDATE_ROLE_AND_USER_REF_GUIDS parameter in NQSConfig.INI back to NO.
Important: You must perform this step to ensure that your system is secure.
10.    Update the Catalog element in instanceconfig.xml to remove the UpdateAccount GUIDs entry.
11.    Restart the Oracle Business Intelligence system components using opmnctl:
cd ORACLE_BASE/admin/instancen/bin
./opmnctl stopall
./opmnctl startall

CHANGING COMMA SEPARATOR

Let’s explore today something related to Locale settings in OBIEE 11g.
We have thousand separators in OBIEE:
Comma1
What if this comma(,) is to be replaced with underscore ( _ ) or any other symbol:
Open localedefinitions.xml. Usual path (\Middleware\Oracle_BI1\bifoundation\web\display)
Locate the below tag
<property name=”thousandsSeparator”>,</property>
Comma2
Replace comma with underscore
Comma3
Save the localedefinitions.xml and restart the services.
Run the same analysis.
Comma4
We are now having _ as separator.
Continue Exploring !

GROUPING VALUES IN PROMPT

Hi Friends,
Recently, we got a requirement to have grouping in the Dashboard prompts. I remember doing that few years back but thought to blog it as not many details are available. This is pretty easy stuff and should not take long for you to incorporate in your BI kitty.
Let’s say we have a Column ‘Day Name’. We would like to categorize our weekend (Saturday and Sunday) as Holiday so that if user selects ‘Holiday’, prompt will pass both Saturday and Sunday to the Report.
Now since we don’t have ‘Holiday’ included in our database, we are going to create a Group to achieve the same.
  • Create an analysis on that subject area and go to the Results tab. Click the icon with 3 blue dots and a star in the menu bar.
Group1
  • Create your group by choosing a Display Label (“Holiday“) and selecting the column and the value you want to put inside (Saturday and Sunday)
Group2
Group3
  • Expand the Selection Steps pane at the bottom of the screen and click on your group (Holiday) –>Save Group As… and save it under the subject area content folder.
Group4
  • In your Dashboard prompt add the same column, expend the Options and for Choice List Values select Specific Column Values, then click the Plus sign.
  • Add all the possible column values (all 7 days of the week in our case) from Column Values pane and add our group (Holiday) from Catalog pane.
Bi Coach Remarks: The usage of Groups in Prompts is only limited “Specific Custom Value” option only. Thus, the demerit of this option or the best place where Groups should be used is where the prompt values are supposed to remain static over the period of time. Else, all those changing values would have to be included in Selection. (Not the option that I would recommend)
Group5
We are done. You can see all the days of the week and our created group in the prompt
Group6
Till next time, Happy Exploring!