Share
Embed
2-in-1: RPD Magic and Hyperion Planning "Adapter"
The best way to explain the powerful modeling capabilities of OBIEE is with a real-use case, and for this session it will be the relational database of Hyperion Planning applications, not a model designed for reporting but for application needs. Use the advanced modeling capabilities of OBIEE to transform the relational schema of Hyperion Planning with what we call some "RPD magic." The target is to fill the gap when reporting against Planning, using only Essbase and missing the content of the relational database, to end with a federation of Essbase and the relational source without ETL, just with OBIEE and some magic.
Gianni Ceresa
June 22, 2015
Transcript
44 slides
-
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Gianni Ceresa, Rittman Mead ODTUG KScope15, June 2015 2-in-1: RPD Magic and Hyperion Planning “Adapter” -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Gianni Ceresa Principal Consultant for Rittman Mead based in Switzerland About 8 years working with Oracle BI & EPM tools Providing BI support on OTN forums Blogger at http://www.rittmanmead.com/blog/ email: [email protected] twitter: @G_Ceresa -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com About Rittman Mead Oracle BI and DW Gold partner Winner of five UKOUG Partner of the Year awards in 2013 and 2014 - including BI World leading specialist partner for technical excellence, solutions delivery and innovation in Oracle BI Approximately 80 consultants worldwide All expert in Oracle BI and DW Offices in US (Atlanta), Europe, Australia and India Skills in broad range of supporting Oracle tools: OBIEE, OBIA, ODIEE, Essbase, Oracle OLAP GoldenGate, Endeca -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com What happen in the next 55 minutes ? The original plan: 2-in-1: RPD Magic and Hyperion Planning “Adapter” How to use the power of RPD modelling to implement a kind of Hyperion Planning “Adapter” using the content of the relation database of a Planning application But something happened … 11.1.1.9 is now GA … The new plan: 2 topics in 1 session: The new Planning source in OBIEE 11.1.1.9 and some RPD “tricks” With the new support for Hyperion Planning it’s better to use that new source instead of complex modelling as this is now the official supported way (and it’s easier) Would be a shame to not talk about RPD, so let’s have a look at 2-3 things that aren’t really “magic” but not so common … -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Hyperion Planning finally supported May 14, 2015 : OBIEE 11.1.1.9 is GA One of the new features: Access to Hyperion Planning Data Sources What? How? Where? Via an ADM “driver” Not lot of details in the documentation, better to try it by myself -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com But first, what is the challenge with Planning? For most of the people Hyperion Planning is Essbase Essbase store numeric figures For reporting it’s often enough But there is more Each Planning app has a relational database Contains a copy of the Essbase outline Cells attributes Special features of the UI and forms For “operational” reporting on Planning these information are important -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? “Enterprise Wide Planning, Budgeting and Forecasting” “Oracle Hyperion Planning is a centralized, Microsoft Office and Web-based planning, budgeting and forecasting solution that integrates financial and operational planning processes and improves business predictability.” (source: oracle.com) -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? 1 Planning application = 1 schema = 142 tables (Planning 11.1.2.4) Transactional application schema, multiple dependencies between objects -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com A reminder: what is Hyperion Planning? The outline is stored in few tables HSP_OBJECT is a central object parent-child structure - PARENT_ID = OBJECT_ID members names aliases etc. -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Back to OBIEE: import Metadata In the wizard a new type has been added for “Hyperion ADM”: Hyperion Planning Only 3 fields : - URL (server, port and Planning application name) - Planning username - Planning password AdminTool NQSConfig.INI require JAVAHOST_HOSTNAME_OR_IP_ADDRESSES setting -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Import Metadata : error … It doesn’t work … -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Import Metadata : there is a bug … For the URL the suggested format is: adm:thin:com.hyperion.ap.hsp.HspAdmDriver:<Server>:<Port>:<Application> Oracle published a “patch” for the documentation saying to change it: adm:thin:com.hyperion.ap.hsp.HspAdmDriver:<Server>%3A<Port>:<Application> What changed? The port now uses%3A, the ASCII code for “ : “ Why do you need to change the “ : “ by its ASCII code? Probably because “ : “ is the separator they use in the URL for all the other parameters and they have a piece of logic in place splitting the URL in parts based on that character. But the port is optional as you can also use the default HTTP 80 and not specify it… -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com How does a Planning application look like in RPD? Nothing really “exciting”… Looks like an Essbase application Parent-child dimensions All the aliases are created All the UDA are created A list of measure A standard “Value” one Lot of attributes for the measure Everything created by default, no real options available in AdminTool -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Does it work? Planning analysis sample in OBIEE -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Planning analysis sample in OBIEE -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com But what is this ADM driver? It just looks like a kind of webservice TCP calls AdminTool send pieces of XML via POST requests ADM reply with even more XML Session based - Login first and get a Session ID - Provide the Session ID in every single call - Logout at the end Easy to read and understand XML - Would be easy to use the same ADM interface in custom developed applications -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – Test case Extremely simple example to see how the new ADM source works Dimension “Period” List of member names Filter - Generation = 4 - Level = 0 Expected result: Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – OBIEE OBIEE analysis Really simple! OBIEE cache = OFF To observe the communication between OBIEE and Planning 2 useful tools: TCPDUMP + TCPFLOW (tcpflow makes it easier to read) -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – TCP flow between OBIEE and Planning call 1 = login call 30 = query In between list of all cubes for each cube list all dims and all UDAs login query -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – How does the query looks like? LSQL (from the logs) SELECT 0 s_0, "Plan1 - Plan1"."Period"."Period Name" s_1, SORTKEY("Plan1 - Plan1"."Period"."Period Name") s_2 FROM "Plan1 - Plan1“ WHERE (("Period"."Period Level" = 0) AND ("Period"."Period Gen" = 4)) ORDER BY 1, 3 ASC NULLS LAST, 2 ASC NULLS LAST FETCH FIRST 65001 ROWS ONLY -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – How does the query looks like? Physical query (from the logs) Sending query to database named EPM_KScope_Vision (id: <<90097>>), connection pool named Connection Pool, logical request hash 31e70a60, physical request hash 9aeb05b2: [[ Plan1:en:SELECT * FROM "Period" WHERE FilterBySecurity(), AllMembers() ]] Is this the real query sent via ADM? Where are my filters on Generation = 4 and Level = 0 ? -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – How does the query looks like? req_mbr_query has, between other XML attributes, one named QXML which contains the query for ADM: <?xml version="1.0" encoding="UTF-8"?> <COMPOSITEOPERATION TYPE="MemberQuery"> <OPERATION TYPE="Select"> <MULTIVALUE> <STRING>*</STRING> </MULTIVALUE> <STRING>Period</STRING> </OPERATION> <COMPOSITEOPERATION TYPE="Filter"> <COMPOSITEOPERATION TYPE="List"> <OPERATION TYPE="FilterBySecurity"></OPERATION> <OPERATION TYPE="AllMembers"></OPERATION> </COMPOSITEOPERATION> </COMPOSITEOPERATION> </COMPOSITEOPERATION> It really looks like the physical query logged by OBIEE (just in a XML format) And the filters on Generation = 4 and Level = 0 aren’t there… -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM example – Query result result of the “req_mbr_query” call: <?xml version="1.0" standalone="yes"?> <res_mbr_query><sID>...</sID> <mbrList enc="1"> <formCell cellType="10" readOnly="false" queryGeneration="1" order="0" oldName="BegBalance" mbrId="50019" dimId="34" mbrName="BegBalance" dimName="Period" parentName="Period" layoutType="-1" locationStyle="0" parentId="34" objectType="34" baseMbrId="0" objdefId="-1" ordinal="0.0" hasChildren="false" generation="1" aliases="x---------x|x---------x" memberId="50019" level="0" dataStorage="0" consolOp2="5" consolOp4="5" consolOp1="5"/> <formCell cellType="10" readOnly="false" queryGeneration="3" order="0" oldName="Jan" mbrId="50023" dimId="34" mbrName="Jan" dimName="Period" parentName="Q1" layoutType="-1" locationStyle="0" parentId="50022" objectType="34" baseMbrId="0" objdefId="-1" ordinal="0.0" hasChildren="false" generation="3" memberId="50023" level="0" dataStorage="0"/> …. All the members of the dimension are returned with some attributes, including Level and Generation The filter will be done by OBIEE -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM vs Essbase : which one is better for performance? The Essbase source is more “native” OBIEE interact directly with Essbase generating MDX queries With ADM OBIEE interact with a Java service on the Planning server OBIEE doesn’t talk to Essbase or the relation database The Java service is the only one aware of the Essbase application and relation database schema where the application is stored Compile a mix of attributes from both sources and send data back - return ID from the database for dimensions, members, aliases etc. -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com ADM vs Essbase : which one is better for performance? The comparison: a simple list of members for a dimension (the 12 months) ADM: tons of TCP calls in both directions, lot of data sent back to OBIEE - High CPU load (Java doing “something”) - Would be better with caching - But: when to refresh the cache? Not like a ETL job calling the cache purge script … Essbase: less calls, less data sent between OBIEE and Essbase - MDX query produced by OBIEE The natural conclusion would be that if only the content of the Essbase application is required in a report the Essbase source is better … (to be tested over time with a real use case) -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Second part – RPD “tricks” RPD “magic” (but not so magic…) In Essbase you have 2-pass calculation, in RPD you can have 2-pass modelling / SQL generation - Reusable “models” by using OBIEE as source for OBIEE Fragmentation: extend the OOTB feature by a more flexible solution - the “WHERE clause” - also a solution for security implementation -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling Never thought it would be nice to “reuse” a RPD model to do another one based on it? Or to be able to use some of the business model derived columns next to some physical tables to produces something else? Or to split the modelling of a complex physical source (maybe an application or a pure transactional model) in multiple steps to be able to test and validate piece by piece the logic? It’s possible! And not just by some advanced RPD modelling How? 5 steps… -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling 1) Model some physical source(s) in a Business Model and the related Subject Area 2) Test it doing some analysis on it to get data 3) Write the required LSQL to get the info you look for 4) In the RPD create a new physical source using ODBC on OBIEE itself 5) Create a “view” source containing a LSQL query Define columns based on the expected result (and data types) Use it as a normal physical source object -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling The result? Reusable RPD models Example: flatten out a parent-child on a dynamic number of dimensions (for example the outline in the relational schema of an Hyperion Planning application) A table contains parent-child objects (members) A table contains the list of “root” elements (dimensions) Re-use the logic to make a parent-child dimension flat for every single dimension without doing it by hand for every single dimension A new dimension will require only to create a new alias or physical view object If new levels required => add in a single place NQS calls can be used in that way (as Christian Berg presented at KScope14) -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling Time to try it … -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling : demo -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – 2-pass modelling : demo -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Fragmentation The default fragmentation support simple fragmentations rules Multiple limits The columns used in the fragmentation rule must be in the analysis - If an analysis doesn’t include any of the fragmentation column then all the LTS are matched - Time series functions aren’t able to use fragmented time dimensions correctly - Limited operators and logic for the condition -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Alternative fragmentation Using the WHERE clause allow for more powerful conditions Allow to implement “fake” fragmentation allowing the analysis to drive which LTS to use Alternative implementation of security Provide a secured dimension In parallel to a non-secured one The analysis can freely decide which dimension to use based on profile, roles etc. Attention: less strict than row level security (the developer can use the non-secured LTS by mistake) The downside is that all the LTS are used by the query and it’s the DB not returning any result based on WHERE conditions Sending a kind of “WHERE 1=2” condition to avoid matching a LTS -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Alternative fragmentation Time to try it … -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Alternative fragmentation : demo “Dim Org unit”.”Security” is a kind of fake column, exists only in the BMM and has hardcoded values (one for each LTS) and it’s used to have a “Fragmentation content” formula and avoid the Admin Tool to raise a warning when missing. Also used to drive the selection of the LTS from the Analysis itself if required. -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Alternative fragmentation : demo “Dim Calendar”.”Src table” is a kind of fake column, exists only in the BMM and has hardcoded values (one for each LTS) and it’s used to have a “Fragmentation content” formula and avoid the Admin Tool to raise a warning when missing. Also used to drive the selection of the LTS from the Analysis itself if required. -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com RPD – Alternative fragmentation : demo -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Thank you for attending ! -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com Gianni Ceresa, Rittman Mead ODTUG KScope15, June 2015 2-in-1: RPD Magic and Hyperion Planning “Adapter” -
T : +44 (0) 1273 911 268 (UK) or (888)
631-1410 (USA) or +61 3 9596 7186 (Australia & New Zealand) or +91 997 256 7970 (India) E : [email protected] W : www.rittmanmead.com