tag:blogger.com,1999:blog-40195985599143477292024-03-12T22:02:22.661-05:00Tim Tow's Hyperion BlogTim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.comBlogger288125tag:blogger.com,1999:blog-4019598559914347729.post-24945885706123505042018-03-18T13:08:00.000-05:002018-03-18T13:08:17.162-05:00Happy 20th Anniversary to Applied OLAP!<br />
Today, March 18, 2018, is the 20 year anniversary of our incorporation! I has been a long journey since that time; here are some of the highlights:<br />
<div>
<ul>
<li>1998 - We were a one-man shop and wrote a reporting and budgeting application for a customer in New York. I spent about 150 nights that year on the road.</li>
<li>1999 - ActiveOLAP for Essbase was released and we earned the trust of two of our long-term customers. It was during the next couple of years that I traveled to the West Coast about 35 times in one year.</li>
<li>2003 - Portions of our web-service technology was acquired by Hyperion Solutions and we wrote the Hyperion Objects product based on that technology.</li>
<li>2007 - The Dodeca Spreadsheet Management System was released.</li>
<li>2014 - We hired our first resource to focus solely on sales. Prior to that, we marketed our software via 'word of mouth'.</li>
<li>2016 - The Dodeca Excel Add-In for Essbase was released and we acquired the DrillBridge product.</li>
</ul>
During this time, we have grown the company organically without outside investment. While this strategy meant we had slower growth, the benefit is that it has allowed us to focus solely on the needs of our customers and not the needs of 'investors'. It also meant that we 'ate a lot of beans' in the early days. Those were great lessons in the value of a dollar that we carry with us today in the value of the software we provide to our customers.<br />
<br />
Thank you to all of our customers. We feel lucky to work with each and every one of you and we continue to learn from each of you. We pledge to continue working hard to make your companies successful.<br />
<br />
Tim Tow<br />
Founder and President<br />
Applied OLAP, Inc</div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com1San Francisco, CA, USA37.7749295 -122.4194155000000136.9717915 -123.71030900000001 38.578067499999996 -121.12852200000002tag:blogger.com,1999:blog-4019598559914347729.post-73072453147770043802018-01-11T18:30:00.001-06:002018-01-11T18:30:05.079-06:00Using MDX for Generated Members in Essbase Reports<br />
There are times when Essbase users may need to see an ad-hoc collection of members aggregated together in Essbase, and that isn’t always an easy task. If it were an aggregation that is needed on a recurring basis, the Essbase administrator may add an alternate hierarchy to assist. Other times, users might just create a spreadsheet with the desired members in different rows or columns and use Excel formulas to add them together. In this blog post, I will cover a third option, the use of MDX to create dynamically-generated members, how to run them in Smart View, and how to make them much easier to use in Dodeca.<br />
<br />
In order to illustrate how dynamically-generated members can be used, let’s consider an example using the Sample Basic database. Here is a simple quarterly income statement query that I will use as the basis for this blog post:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">SELECT</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> {[Year].Children, Year} on COLUMNS,</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">FROM </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Sample.Basic</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">WHERE </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> ([Market].[New York], [Product].[Colas], Actual)</span><br />
<br />
The results from this simple query look like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s1600/SS1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="247" src="https://3.bp.blogspot.com/-qbFZX6fiRFU/WkhSfP0ySPI/AAAAAAAAA9s/qij-4rF_LZIcGvZeSX0kwLpSraVXV_udgCLcBGAs/s400/SS1.png" width="400" /></a></div>
<br />
<br />
This MDX is pretty straightforward, but what if you wanted to see how New York and Connecticut would look if they were combined? This is the question that a generated member can return for you.<br />
<br />
Generated members in MDX are created using the WITH MEMBER clause. Moreover, the generated member can then be used anywhere a normal member can be used, even in a slicer dimension (or what we would call a ‘page field’ in the classic Essbase add-in or a point-of-view in Smart View). Here is the query modified to use the new generated member:<br />
<br />
<span style="color: #0b5394; font-family: "courier new" , "courier" , monospace;"><b>WITH MEMBER</b></span><br />
<span style="color: #0b5394; font-family: "courier new" , "courier" , monospace;"><b> [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;">SELECT</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> {[Year].Children, Year} on COLUMNS,</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">FROM</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Sample.Basic</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">WHERE</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> (<b><span style="color: #073763;">[Market].[SelectedMarkets]</span></b>, Colas, Actual)</span><br />
<br />
The results from this query look like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s1600/SS2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://3.bp.blogspot.com/-1dbFHG2WDbk/WkhVSIacHiI/AAAAAAAAA94/ZrwQ5O5rHW8Pm3OXVdIl_N3MR4nOplDTwCLcBGAs/s400/SS2.png" width="400" /></a></div>
<br />
So far, so good, but there are a couple of things to note. First, the member displayed in the POV is not a real member; that is to be expected. This leads to the second thing in that you cannot refresh the query as an ad-hoc analysis; the dynamically generated member name will be replaced with the dimension member name in its place.<br />
<br />
To go even further, what if you want to have multiple generated members? In that case, the syntax is easy as you just continue with another MEMBER clause:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">WITH MEMBER</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> [Market].[SelectedMarkets] AS 'SUM({[New York], [Connecticut]})'</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b>MEMBER</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><b> <span style="white-space: pre;"> </span> [Product].[SelectedProducts] AS 'SUM({[Colas], [Grape]})'</b></span><br />
<span style="font-family: "courier new" , "courier" , monospace;">SELECT</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> {[Year].Children, Year} on COLUMNS,</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">FROM</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Sample.Basic</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">WHERE</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> ([Market].[SelectedMarkets], <b>[Product].[SelectedProducts]</b>, Actual)</span><br />
<br />
The results of this query look like this:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s1600/SS3.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="504" data-original-width="810" height="248" src="https://2.bp.blogspot.com/-L7UNeq1jKQM/WkhVbOI60GI/AAAAAAAAA98/uFYyztnauNgVjI-vtOjuVOmPLVcBzFXUgCLcBGAs/s400/SS3.png" width="400" /></a></div>
<br />
<br />
The syntax for creating and using generated members is not that difficult, but there are a couple of things that make it a bit more difficult than it should be for end users to use this approach.<br />
<br />
First, any time end users start having to deal with scripts of any kind, the level of complexity goes up exponentially. As one of my mentors used to say, <i>“The difference between zero lines of code and one line of code is much greater than the difference between one line of code and a hundred lines of code”</i>. In other words, it is hard to get users to deal with code of any kind.<br />
<br />
Second, once an end user has to ‘write a line of code’, or script in this case, then they assume the responsibility for it being correct. As there are differing levels of comfort and skill among users, the risk of error goes up.<br />
<br />
Finally, when users use a script like the one used in this example, they have to type in the correct member names or, again, risk error. Here is the new MDX dialog in Smart View 11.1.2.5.720 showing where users type in the MDX including the member names.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s1600/SS4.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="401" data-original-width="793" height="201" src="https://1.bp.blogspot.com/-YtC5VrG9Ip0/WkhVxMGIgrI/AAAAAAAAA-A/pPO5c4gVgk4F8c1Ksg4z1OYw715tYGT2wCLcBGAs/s400/SS4.png" width="400" /></a></div>
<br />
<br />
To make it much easier for end users, Dodeca does a couple of things. First, Dodeca developers can configure reports to use MDX without the end user ever having to know that MDX is powering the report ‘under-the-covers’. Further, Dodeca has flexible Point-of-View selectors that allow the end user to simply pick which members they want to use in the query.<br />
<br />
Dodeca report developers use tokens as a sort of substitution variables in the script. The tokens are replaced in the script at run-time by the members selected by end users. Here is the same script with tokens in place of the hard-coded values:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">WITH MEMBER</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> <span style="white-space: pre;"> </span>[Market].[SelectedMarkets] AS 'SUM({<b>[T.Market]</b>})'</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">MEMBER</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> [Product].[SelectedProducts] AS 'SUM({<b>[T.Product]</b>})' </span><br />
<span style="font-family: "courier new" , "courier" , monospace;">SELECT</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> {[Year].Children, Year} on COLUMNS,</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Hierarchize(Descendants([Profit]), POST) ON ROWS</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">FROM</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> Sample.Basic</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">WHERE</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> ([Market].[SelectedMarkets], [Product].[SelectedProducts], Actual)</span><br />
<br />
The Dodeca Essbase Scripts editor has tools to help the report developer create and test MDX scripts. Here are the Test Tokens available in the editor that allow developers to simulate the values plugged in by the Point-of-View selectors:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s1600/SS6.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="322" data-original-width="509" height="252" src="https://3.bp.blogspot.com/-Q_1_h6Tnm9E/WkhV-RogrOI/AAAAAAAAA-I/rbkehHuB2tYwceR6Z64kTbgq-zn5qEtYQCLcBGAs/s400/SS6.png" width="400" /></a></div>
<br />
And the script itself in the scripts editor which has built-in testing facilities:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s1600/SS5.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="622" data-original-width="869" height="286" src="https://4.bp.blogspot.com/-tWiADELMj_I/WkhWKr5xGzI/AAAAAAAAA-M/AZjAjhJlpkw1kHQAEqZte9YFEZrM7XAvgCLcBGAs/s400/SS5.png" width="400" /></a></div>
<br />
<br />
Finally, here is a Dodeca view that utilizes the tokenized MDX query and allows users to easily select the members they want dynamically aggregated and the report is produced without the risk of error.<br />
<br />
<a href="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s1600/SS7.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" data-original-height="645" data-original-width="1054" height="243" src="https://2.bp.blogspot.com/-SkypCSP-KOM/WkhWaq1v2mI/AAAAAAAAA-Q/iMNs7LKyytMbRgptZm4iR2zYbPF9sHJ0ACLcBGAs/s400/SS7.png" width="400" /></a><br />
<br />
Let me know if you would like to learn more about Dodeca and how it could help your company.<br />
<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com2Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963tag:blogger.com,1999:blog-4019598559914347729.post-1558446828540925642018-01-04T00:32:00.000-06:002018-01-07T17:37:37.615-06:00Windows 10 Update Killed Essbase On My Laptop! <br />
Like many Essbase consultants and developers, I run Essbase server on my Windows 10 laptop. It was a lengthy ‘Creator’s Update’ Windows update and, once it was complete, Essbase was dead on my machine. So, what do I do? First, I didn’t panic; us pilots have a way of not panicking when things don’t go as planned. We have several people internally who had this happen to them over the past several months and we fixed it each time, so there was nothing to worry about.<br />
<br />
The root cause was that my OPMN service, which runs Essbase, was gone. This happened on the other machines we have that experienced that in the past, so I went to talk with one of our resident infrastructure gurus, Jay Zuercher. I remembered there was a command that I could run to recreate the service; Jay had the command filed away somewhere and within a couple of minutes, he sent it to me:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">SC CREATE "OracleProcessManager_epmsystem1" binPath="C:\oracle\middleware\epmsystem11r1\opmn\bin\opmn.exe -S -I c:\oracle\middleware\user_projects\epmsystem1” </span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
I ran this command – as an administrator – and then went into services to set the service to start automatically and start the service running. That did not, however, result in Essbase coming back to life. Next, I looked at the Essbase logs and noted several issues having to do with security. Initially, I thought there may have been due to an issue with Shared Services, but then I remembered about the fairly common Essbase issue regarding a corrupted essbase.sec file. I don’t know if the corruption was related to the Windows Update, but the timing sure was suspect. I replaced the essbase.sec file with a backup copy and I was back in business.<br />
<br />
Hopefully this doesn’t happen to you when you update Windows but, if it does, perhaps this blog post will make your recovery quick and painless.Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com6Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963tag:blogger.com,1999:blog-4019598559914347729.post-83902842391856746942017-07-13T15:17:00.001-05:002017-07-13T15:17:43.843-05:00Possible solution for TLS 1.2 issues between Windows 10 and Oracle EPM Weblogic<br />
We have recently seen some users of both Dodeca and Hyperion products where Windows 10 machines have issues connecting to the Weblogic servers shipped with Oracle EPM due to the absence of the TLS 1.2 protocol. The underlying issue is that Windows 10 is an evolution of technology whereas Oracle EPM Weblogic, and more specifically the Java version tested and shipped with it, are stuck in the stone age. Java 1.6 started its journey to "end of life" in late 2013 and, though it continues to be covered under Extended Support, the EPM team has not delivered an update for their server. Ironically, there is even a Java 1.6 version, Update 121, that now supports TLS 1.2; EPM is on Update 35.<br />
<br />
So, what do you do? I would be very hesitant to upgrade the Java version delivered with the EPM System. After all, Oracle spent a lot of time working to certify on that version of Java. One of our Senior Support Engineers, Jay Zuercher, did find something that appears to work - it hasn't yet been widely tested but may be worth a try. Here are the steps he followed:<br />
<br />
<ol start="1" style="margin-top: 0in;" type="1">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Login to the Weblogic
console. <o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Navigate to
Environment->Servers->AnalyticProviderServices0 (or to the server in which you are attempting to connect).<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Click on the SSL tab and
expand the Advanced section at the bottom.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Enable the “Use JSSE
SSL” checkbox.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Save changes.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Navigate to the Server
Start tab.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Add the following string
to the “Arguments” box:<o:p></o:p></li>
<ol start="1" style="margin-top: 0in;" type="a">
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level2 lfo1;">-Dweblogic.security.SSL.protocolVersion=TLS1<o:p></o:p></li>
</ol>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Save changes.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Activate all changes.<o:p></o:p></li>
<li class="MsoNormal" style="margin-left: 0in; mso-list: l0 level1 lfo1;">Restart
the applicable service. <o:p></o:p></li>
</ol>
These steps are furnished with no guarantees, but hopefully you will find them helpful.<br />
<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com4tag:blogger.com,1999:blog-4019598559914347729.post-87187411375745284462017-05-23T23:08:00.000-05:002017-05-23T23:08:25.193-05:00ACE AlumniToday, I asked Oracle to move me from Oracle ACE Director status to Oracle ACE Alumni status. There are a number of reasons why I decided to change status. When I started answering questions on internet forums <i><b>years </b></i>ago, I did it to share what I had learned in order to help others. The same goes for this blog which I originally started so that I could give better and more complete answers to questions on the forums. <br />
<br />
After the Hyperion acquisition by Oracle, I was contacted by Oracle who asked if I would be interested in becoming an "Oracle ACE". It was an honor. But over time, things have changed. As more people found out about the ACE program, more people wanted to become an ACE. If you have ever monitored the OTN Essbase and Smart View forums, they have become cluttered with copy and paste posts from people obviously trying to increase their points. As the ACE program grew, it also become harder for the OTN team to manage and now require a formal activity reporting - a time report if you will - to track contributions to the community. As I am already extremely pressed for time, I decided that tracking my contributions to the community - in exchange for a free pass to Open World, just didn't make sense.<br />
<br />
All of that being said, just because I have moved to Oracle ACE Alumni status doesn't mean that I will stop contributing to the community. My company will continue to provide free downloads and support for the Next Generation (Essbase) Outline Extractor and the Outline Viewer along with free downloads of Drillbridge Community Edition. And maybe, just maybe, I will finally have time to write some new blog posts (maybe even some posts on some new Dodeca features inspired by our work with Oracle Analytics Cloud / Essbase Cloud!)<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com3Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963tag:blogger.com,1999:blog-4019598559914347729.post-58375585038434142632017-04-20T23:37:00.005-05:002017-04-20T23:54:14.140-05:00Breaking News! Dodeca Spreadsheet Management System Certified on Oracle Analytics Cloud!Now that the Oracle Analytics Cloud, or "OAC", has been released, we had to get serious about our work with one of the Oracle Analytics Cloud components, the Essbase Cloud Service, or "EssCS" for short. You would think that we <i>should </i>have been working hard on EssCS for quite some time, but we had been assured by Oracle product management that the Essbase Java API would be available in EssCS. Of course, Dodeca was built using the Essbase Java API and thus we expected that support for EssCS would be very easy.<br />
<br />
We got access to a production version of the EssCS last week and started our work. As promised by product management, the Essbase Java API is available in EssCS and, believe it or not, we did not need to change a single line of source code in order to support the Essbase Cloud. We did, however, have to update our build processes to use Java 8 instead of the decrepit Java 6 used in Essbase 11.x.<br />
<br />
As far as configuration inside Dodeca itself, the only change we made was that we configured the APSUrl in the Essbase Connection object to point to the Essbase Cloud APS instance. Note that the URL format has changed in the cloud. The Java API was accessible in Essbase 9.3.1 through Essbase 11.1.2.4 using the format:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">http://<server>:<port><b>/aps/JAPI</b></span><br />
<br />
In the cloud, this has changed to:<br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">http://<server>:<port><b>/essbase/japi</b></span><br />
<br />
The Essbase Connection configuration looks pretty much the same as the configuration for an on premise connection configuration:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-gx4ag4ESGAc/WPmCS-n2MnI/AAAAAAAAA8s/M-KmIXNgwTEvCdD4QvSxOuHRKYakwT5JQCLcB/s1600/Image1.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="290" src="https://2.bp.blogspot.com/-gx4ag4ESGAc/WPmCS-n2MnI/AAAAAAAAA8s/M-KmIXNgwTEvCdD4QvSxOuHRKYakwT5JQCLcB/s400/Image1.png" width="400" /></a></div>
<br />
<br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<br />
<br />
Of course, the Dodeca views look identical when run against an on premise or a cloud server:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-byIrYS0oAfk/WPmFo8ardTI/AAAAAAAAA84/YNtkcGabIgkvZotzCsbuVBrpMm4nNx-vACLcB/s1600/Image2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="290" src="https://1.bp.blogspot.com/-byIrYS0oAfk/WPmFo8ardTI/AAAAAAAAA84/YNtkcGabIgkvZotzCsbuVBrpMm4nNx-vACLcB/s400/Image2.png" width="400" /></a></div>
<br />
<br />
In summary, it was trivial to test Dodeca using EssCS. Every single Essbase functionality that we use in the product, from data grid operations to metadata operations and even report scripts, worked exactly the same as it does against an on premise Essbase cube. Based on our testing, we are certifying the Dodeca Spreadsheet Management System to work on the Oracle Analytics Cloud.<br />
<br />
We have a number of innovations we plan to introduce in the near future aimed to improve the Essbase Cloud experience, so stay tuned. If you are planning to come to Kscope17 in San Antonio, plan to attend the Dodeca Symposium and you may just be the first to see of these cool new things!<br />
<br /></div>
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-74764382423434052632017-02-16T00:10:00.001-06:002017-02-16T00:11:16.951-06:00Kudos to the Dodeca Support Team!Here at Applied OLAP, we have a great support team that we have tasked with doing their best to make sure our customers are happy with their Dodeca software. On most days, they are answering emails and firing up impromptu support webcasts to help our customers with any questions they have.<br />
<br />
Today, we got some great feedback from a customer after a popup support webcast. Here is an email I received today from Edgardo Rodriguez at Wall Street law firm Sullivan and Cromwell (email used with permission):<br />
<br />
<div class="MsoNormal">
<i>Hi Tim – just wanted to drop you a quick line on the tech
support I received this morning. Kevin & Rodney were helping me with
a headcount report. Have to tell you – they were great. They helped me
leverage some of their code and walked me through the finer points of using it
under our scripts – all under an hour! They also turned me on to using
the SQL retrieve as a possible solution (which I will be using shortly). <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>I appreciate you support more than you know. <o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Just thought you should know..<o:p></o:p></i></div>
<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
<i>Regards <o:p></o:p></i></div>
<br />
<div class="MsoNormal">
<i>Ed</i><o:p></o:p></div>
<br />
So, here is a special call-out to our support team. Way to go!Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-60539301128623438212017-01-02T10:55:00.001-06:002017-01-02T10:55:10.852-06:00Essbase Cloud Service Webcast Available OnlineEssbase Cloud Service is coming soon and, if you haven't had a chance to learn about it, here is how you can learn about it at your leisure. Oracle had a public webcast about two weeks ago and have made both the webcast and the slides available; you must have an Oracle login to see it. Here is the link to the EssCS webcast:<br />
<br />
<a href="https://oracleaw.webex.com/ec3000/eventcenter/recording/recordAction.do?theAction=poprecord&siteurl=oracleaw&entappname=url3000&internalRecordTicket=4832534b00000002082fc25fef595717c2101355123cdd9aefee1fdb26d0437a114ac411728004c2&renewticket=0&isurlact=true&format=short&rnd=7424814277&RCID=d37cf8769ff90e1ab08aaf5d8ad954e4&rID=104874252&needFilter=false&recordID=104874252&apiname=lsr.php&AT=pb&actappname=ec3000&&SP=EC&entactname=%2FnbrRecordingURL.do&actname=%2Feventcenter%2Fframe%2Fg.do">EssCS Webcast</a><br />
<br />
And here is a link to the slides:
<br />
<br />
<a href="https://community.oracle.com/servlet/JiveServlet/download/1009600-1-300616/EssbaseCloudService_STP_Final.pdf" target="_blank">EssCS Webcast Slides</a><br />
<br />
Essbase Cloud Service has some exciting new functionality that you should check out, even if you plan to keep your Essbase installations on-premise. Over time, I would expect that most, if not all, of the innovations you see will be released in the on-premise version of Essbase. If I were a betting man, I would guess the timing to be likely near the end of 2017 with the lrelease of "EPM 2017", which is the code name for the next major on-premise release, <br />
<br />
Enjoy!Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com3tag:blogger.com,1999:blog-4019598559914347729.post-82986098665752473622016-11-26T16:06:00.000-06:002016-11-26T16:06:28.238-06:00Another Thanksgiving EmailHere is another email we got Wednesday from a Dodeca Excel Add-In for Essbase customer. This customer has a lot of VBA macros running some automation with Essbase and asked for some assistance. We told it was as easy as replacing they Essbase function declarations file with our Dodeca Add-In function declarations file, and then setting the variables that contain the location for the Dodeca-Essbase server. In other words, replace this file:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-PtmLoJmAyZY/WDoGmEj-n3I/AAAAAAAAA7w/SzTSI2Y2xGo3H8zc9SSiR7so2W3tPDAewCLcB/s1600/VBA1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="355" src="https://4.bp.blogspot.com/-PtmLoJmAyZY/WDoGmEj-n3I/AAAAAAAAA7w/SzTSI2Y2xGo3H8zc9SSiR7so2W3tPDAewCLcB/s400/VBA1.jpg" width="400" /></a></div>
With this file:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://2.bp.blogspot.com/-0GF3N41rcq4/WDoGmFcxjLI/AAAAAAAAA7s/U8GTD6V9qq4h2v9fnvpvBzKftAjPW0PZwCLcB/s1600/VBA2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="272" src="https://2.bp.blogspot.com/-0GF3N41rcq4/WDoGmFcxjLI/AAAAAAAAA7s/U8GTD6V9qq4h2v9fnvpvBzKftAjPW0PZwCLcB/s400/VBA2.jpg" width="400" /></a></div>
<br />
<br /><br /><br /><div>
Easy, right? Here is the email:<br /><br /><div>
<i>I hadn't had a chance to test this massive file out with the latest version of the add-in yet, but was more than pleasantly surprised when I replaced the add-in code for the Dodeca wrapper and the only thing I had to do was change the connection to our new server and the file was live! It's truly drop and go! Thanks so much!!!</i>! <br /><br /> <br /> <br />
<div align="center" class="MsoNormal" style="text-align: center;">
<span style="font-family: "Times New Roman",serif; font-size: 12.0pt; mso-fareast-font-family: "Times New Roman";">
</span></div>
</div>
</div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com1tag:blogger.com,1999:blog-4019598559914347729.post-21307894024010939182016-11-23T11:12:00.001-06:002016-11-23T11:12:34.317-06:00Happy Thanksgiving (Featuring an Email That I Am Thankful For)<div class="MsoNormal">
<br /></div>
<div class="MsoNormal">
I get tons of email every day and often have hundreds of emails that have to track on a daily basis which explains, in part, my absence from doing recent blog entries. Most of the emails I track are sales and support relating to Dodeca. After all, with Dodeca, the buck stops here, right? I also get some spam in the mix. Sometimes, there is an email that <i><b><u>really</u></b></i> makes my day. Here is one of those types I received this morning:</div>
<br /><i>From: (masked) <br />Sent: Wednesday, November 23, 2016 8:48 AM<br />To: Applied OLAP Support<br />Subject: Happy Thanksgiving!<br /><br />Although we are a smaller Essbase shop at 105 users, our users are strong advocates for Essbase and use it extensively. So, it is great timing to say how thankful I am to you and your teams for developing the Dodeca Essbase Add-In. At the end of the day, it’s the user experience that drives the support for Essbase and your product will excite our user base! [And, it requires little or no support from my team!]<br /><br />Happy Thanksgiving to all! </i><br /><br /><div>
Wow! This email really made my day! To our new customer that sent this email (and who graciously granted me permission to post her words), Happy Thanksgiving to you as well. We hope this is the first of many Thanksgivings that we work together!</div>
<div>
<br /></div>
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-70188301089825896992016-09-24T21:59:00.001-05:002016-09-30T13:11:50.320-05:00Thoughts/Info on Essbase/EssCS after Oracle Open World 2016I was at Oracle Open World last week and have some notes to share on the upcoming EssCS (Essbase Cloud Service) product and on Essbase in general.<br />
<br />
EssCS will be (<strike>Infrastructure as a Service (IaaS)</strike> <i>Oops.. I realized I blew that one when I read Cameron's post on Network54!</i>) <b>Platform as a Service (PaaS)</b> product and will be priced on the number of cores and memory. I believe there will be a metered and an unmetered pricing as well (metered meaning pay per cycle or some other usage measure). According to presentations at Open World, which did have safe harbor statements meaning "do not make decisions based on this info as it could change", there will be options for 1, 2, 4, or 16 physical cores ("OCPU's") and 7.5 to 15 Gb of RAM. In addition, it will be an updated version of Essbase that is not the current on-prem version. It will feature, among other things:<br />
<br />
<br />
<ul>
<li>The new Java Agent running in Weblogic that moves security from the essbase.sec file to a relational database.</li>
<li>Simplified security</li>
<li>ASO / BSO / Hybrid</li>
<li>Sandboxing and scenario management - what if's without copying data with workflow for approval to merge into given scenarios</li>
<li>Cloud-based UI</li>
<li>Ability to specify/create an Essbase cube from Excel </li>
<li>A cube template library ("app store" type of thing)</li>
<li>A web-based outline editor (though most editing should be done in Excel)</li>
<li>EssCLI (Essbase Command Line Interface) - a sort of EPMAutomate for Essbase</li>
<li>The Essbase Java API and a new REST API (which is currently being engineered)</li>
</ul>
<br />
I do not remember hearing any dollar amount for EssCS at Open World. I expect availability in the next 3 to 6 months though it wouldn't surprise me if it were to slip further.<br />
<br />
As far as on-prem Essbase updates, I would expect that the updates we see in EssCS will go on-prem as part of the EPM 2017 on-prem release which Oracle currently believes will be delivered late in 2017 (also subject to safe harbor, etc).<br />
<br />
As far as how Oracle is selling Essbase, Essbase is now firmly in the BI organization and is being sold by the BI reps; EPM reps do not generally sell Essbase. To the Essbase team, EPM is important as they are an internal customer, but EPM is not their only customer. As such, I saw at least one presentation that promoted the idea of customers writing custom planning applications using Essbase. While some people I talked with thought that approach muddled the EPM message for customers, I see it as a situation where if they don't compete in the custom market, then someone else will. As someone who frequently is involved in complex applications where the EPM Planning product may not be a fit, I am thrilled to see that message from Oracle.<br />
<br />
<br />
<br />
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-89456752578050110382016-08-17T22:12:00.000-05:002016-08-17T22:12:55.813-05:00Cool Essbase MDX Stuff – Dimension Properties EditionI have always liked MDX as it exposes very powerful operations for creating member sets. It has this amazing ability to take a set of members, union it with another set of members, intersect it with yet another set of members, and then exclude members from yet another set. This is <b><u>very</u></b> powerful. <br />
<br />
Recently, I was talking with a customer about some creative uses for MDX and they told me about some cool things they had done with MDX. Kudos to George Cooper and Esam Jaber at Gap for showing me some creative MDX. Though this is a really cool and new-to-me technique, after doing some online searches I found that the technique isn’t new to everyone. Both Gary Crisci and Harry Gates have blogged on it already at <a href="http://garycris.blogspot.com/2014/03/mdx-queries-to-get-parentchild-and.html">http://garycris.blogspot.com/2014/03/mdx-queries-to-get-parentchild-and.html</a> and <a href="http://www.cubesavvy.com/cubesavvy-utilities-updated-mdx-capabilities">http://www.cubesavvy.com/cubesavvy-utilities-updated-mdx-capabilities</a>, respectively.<br />
<br />
This technique, which gives developers access to outline information that was not previously available, also seems to be lightning fast. I decided maybe I need to write on it as well and, of course, put my own spin on it by showing how we can use this in the Dodeca Spreadsheet Management System.<br />
<br />
So, what is it? They are called dimension properties and can utilize the PROPERTY_EXPR function. This function provides the ability to query for, and return, members related to a given member. The ability to return related members, on the same <i><b>row</b></i>, is something that is unique to the Essbase query languages. The Grid API, or query-by-example and used to retrieve data from Essbase in the classic add-in, Smart View, and Dodeca, cannot do it out of the box. The Essbase Report Script language, which is frequently used for exporting data, cannot do it either. Regardless, we have customers who have asked to how have the parent member and/or the grandparent member on the same row as a member. In the remainder of this blog post, I will explain dimension properties, and more specifically, the PROPERTY_EXPR function.<br />
<br />
For this post, I will use the Geography dimension of the ASOSamp.Sample database. The Geography dimension features members from different regions of the United States including details of the Region, the State, the City, and the Postal Code. Here is a screenshot of some members in the Geography dimension:<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-UJts4kLb_hM/V7Tx3x57hYI/AAAAAAAAA6Q/hBLzacOHwWETBHnKLlls6jEc3OcVlKpJgCLcB/s1600/screenshot1.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: 30em;"><img border="0" height="400" src="https://4.bp.blogspot.com/-UJts4kLb_hM/V7Tx3x57hYI/AAAAAAAAA6Q/hBLzacOHwWETBHnKLlls6jEc3OcVlKpJgCLcB/s400/screenshot1.jpg" width="246" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Geography dimension members</td></tr>
</tbody></table>
<br />
With this dimension, let’s suppose you would like to get outline information at the city level, or level 1 in Essbase-speak. In addition, let’s say you would like to have the state and the region as well. Finally, while we are at it, maybe you also want to know the generation number of the member. With dimension properties and the PROPERTY_EXPR function, you can get all of that information in one trip to the server. Here is the query:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Select {} on COLUMNS,</span><br />
<span style="font-family: Courier New, Courier, monospace;">Hierarchize(Descendants(Geography, Geography.Levels(1), SELF_AND_BEFORE), POST)</span><br />
<span style="font-family: Courier New, Courier, monospace;">DIMENSION PROPERTIES</span><br />
<span style="font-family: Courier New, Courier, monospace;"> GEN_NUMBER,</span><br />
<span style="font-family: Courier New, Courier, monospace;"> PROPERTY_EXPR(Geography, MEMBER_NAME, Ancestor(CurrentAxisMember(), Geography.Generations(2)),"Gen2"),</span><br />
<span style="font-family: Courier New, Courier, monospace;"> PROPERTY_EXPR(Geography, MEMBER_NAME, Ancestor(CurrentAxisMember(), Geography.Generations(3)),"Gen3")</span><br />
<span style="font-family: Courier New, Courier, monospace;"> ON ROWS</span><br />
<span style="font-family: Courier New, Courier, monospace;">FROM ASOSamp.Sample</span><br />
<br />
Let’s break down the query to examine the components. First, the Column axis specification is simple:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Select {} on COLUMNS,</span><br />
<br />
The Column axis specification contains an empty set, but why do you need to even specify a set at all? The Essbase MDX specification states that a query cannot skip axes based on a set order. It seems much more natural for me to get data back on the second axis, or the Row axis, and as the Column axis is the first specified axis, a query cannot skip the Column axis and specify a Row axis. As we really aren’t looking for any data to be returned in this query, then we can just use an empty set. <br />
<br />
Next, let’s look at the Row axis specification:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">Hierarchize(<b>Descendants(Geography, Geography.Levels(1), SELF_AND_BEFORE)</b>, POST)</span><br />
<br />
Let’s split this into sections starting from the inside out. The Descendants function returns, naturally, all of the descendants of a given member down to, and including, level 1 members in the outline. For this database, this query will return the Geography dimension down to the City level, but will not return the bottom, or zip code, level.<br />
<br />
The member set returned by the Descendants function is then sorted by the Hierarchize function.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b>Hierarchize(</b>Descendants(Geography, Geography.Levels(1), SELF_AND_BEFORE)<b>, POST)</b></span><br />
<br />
The POST argument specifies that child members are sorted before their parent as they are in the spreadsheet add-ins.<br />
<br />
Next, the DIMENSION PROPERTIES modifier for the Row axis specification provides the ability to return additional outline information related to each member returned in the set. The DIMENSION PROPERTIES specify that the generation number, the related generation 2 and generation 3 members are returned for each member in the set.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">DIMENSION PROPERTIES</span><br />
<span style="font-family: Courier New, Courier, monospace;"> GEN_NUMBER,</span><br />
<span style="font-family: Courier New, Courier, monospace;"> PROPERTY_EXPR(Geography, MEMBER_NAME, Ancestor(CurrentAxisMember(), Geography.Generations(2)),"Gen2"),</span><br />
<span style="font-family: Courier New, Courier, monospace;"> PROPERTY_EXPR(Geography, MEMBER_NAME, Ancestor(CurrentAxisMember(), Geography.Generations(3)),"Gen3")</span><br />
<br />
The GEN_NUMBER argument is self-explanatory, so let’s look at the PROPERTY_EXPR function to see how it works. Consider this portion of the statement:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">PROPERTY_EXPR(Geography, MEMBER_NAME, Ancestor(CurrentAxisMember(), Geography.Generations(2)),"Gen2")</span><br />
<br />
The first argument is the dimension name, so that is easy enough. <br />
<br />
The second argument, called the property_name argument, has a number of valid values as documented by Oracle in the documentation. Valid values are MEMBER_NAME, MEMBER_ALIAS, LEVEL_NUMBER, GEN_NUMBER, IS_EXPENSE, COMMENTS, RELATIONAL_DESCENDANTS, MEMBER_UNIQUE_NAME), an attribute dimension name, an alias-table name, or a UDA. At the time of this writing, the current docs are located at <a href="http://docs.oracle.com/cd/E26232_01/doc.11122/esb_tech_ref/frameset.htm?mdx_property_expressions.html">http://docs.oracle.com/cd/E26232_01/doc.11122/esb_tech_ref/frameset.htm?mdx_property_expressions.html</a>.<br />
<br />
The third argument is called member_value_expression and this is where the magic happens. In this argument, you can use a number of functions that return exactly one member that is related to the current member. In my example above, the Ancestor function is being used to return, for each member in the set as specified by the CurrentAxisMember function, the ancestor of that member at a given generation. Among other functions are functions that allow you to get the parent, first child, next sibling, or previous sibling of the current member.<br />
<br />
The fourth and final argument is used to give a title to the column containing the extended information.<br />
<br />
So, now that we know a bit about this syntax, what does it look like in EAS? <br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://1.bp.blogspot.com/-0QC1V39TB4g/V7Tx31J4imI/AAAAAAAAA6Y/fDLc_1dq5tk6o350R5NSgN3VpU4rHtfngCEw/s1600/screenshot2.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: 30em;"><img border="0" height="340" src="https://1.bp.blogspot.com/-0QC1V39TB4g/V7Tx31J4imI/AAAAAAAAA6Y/fDLc_1dq5tk6o350R5NSgN3VpU4rHtfngCEw/s400/screenshot2.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">MDX dimension properties in EAS</td></tr>
</tbody></table>
In their blogs, both Gary and Harry talk about ways to actually consume this information. Harry wrote a special interface to display dimension properties returned by MDX. Gary talked about the idea of using an Excel macro to parse the output. I had my own ideas on how to use dimension properties in Dodeca. I setup a simple Dodeca report and used a only 3 lines of our automation language, workbook scripting, to build the view. Here is screenshot of my simple Dodeca view.<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://4.bp.blogspot.com/-2EQFtpDflHw/V7Tx4Gi5PzI/AAAAAAAAA6U/SwgdgsGAAgAAN2AvJGd72VKwxDbwEkjiQCEw/s1600/screenshot3.jpg" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: 30em;"><img border="0" height="268" src="https://4.bp.blogspot.com/-2EQFtpDflHw/V7Tx4Gi5PzI/AAAAAAAAA6U/SwgdgsGAAgAAN2AvJGd72VKwxDbwEkjiQCEw/s400/screenshot3.jpg" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Dynamic MDX View in Dodeca</td></tr>
</tbody></table>
While running this view in Dodeca, the user can filter based on Geography, Product, and Stores dimensions and the report is highly dynamic. The automation in Dodeca performs these tasks:<br />
<ol>
<li>Returns members and properties as the descendants of a user-selected Geography member</li>
<li>Retrieves and places the dimension properties and the members on the worksheet</li>
<li>Places the selected Product and Stores dimension members in the proper location</li>
<li>Retrieves Essbase data into the worksheet</li>
<li>Creates Excel grouping based on the generation number</li>
</ol>
I will leave the step-by-step of creating this view in Dodeca to another blog post.<br />
<br />
So, how could you use dimension properties?<br />
<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com1Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963tag:blogger.com,1999:blog-4019598559914347729.post-5403846609722847692016-08-07T09:36:00.000-05:002016-08-07T09:36:05.988-05:00ODTUG Leadership Program / ODTUG Board ElectionsAs many of you know, I have spent many years helping the Hyperion community in many ways. I have wrote this blog for quite some time, have taken on the OlapUnderground Utilities and provided free support through my company, In other words, I have worked hard to give back to the community and, in return, have had many kind words from people we have helped. <br />
<br />
As a result of this spirit of giving back, I was lucky enough to be elected to the ODTUG Board of Directors which brings me to the real point of this blog post. There is an upcoming ODTUG Board Election coming up and, due to term limits, my time on the board is coming to a close. The same is true of my good friend Cameron Lackpour. With two board seats open, could *you* be the next person to step up? <br />
<br />
Here are my thoughts on what it takes to be a board member. Joining the ODTUG Board isn't just something you decide to do and it isn't an achievement that is 'a feather in someone's hat'. It is a commitment to helping others in the community for two years. But it is more than that. To be a successful ODTUG Board member, the commitment you have should be a continuation of the long-term commitment you have made to helping others. So, if you are interested in serving on the ODTUG Board at some time in the future, the thing you should do is #GetInvolved. If you are not already involved, the easiest way to get involved is to volunteer <a href="http://www.odtug.com/volunteer" target="_blank">on the ODTUG Volunteer page</a>. <br />
<br />
If you are ready to step up from that point, for a number of years, ODTUG has maintained a Leadership Program to help train the next generation of users. The application process for this year's Leadership Program is open for another week. For more information, or to submit an application for the Leadership Program, you can get more information on the <a href="http://www.odtug.com/p/cm/ld/fid=127" target="_blank">ODTUG Leadership Program page</a>.<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-50805861892665100452016-05-31T14:54:00.000-05:002016-05-31T14:58:07.649-05:00Announcing the Dodeca Spreadsheet Management System, Version 7 and the Dodeca Excel Add-In for EssbaseAfter 18 months of hard work, Applied OLAP is proud to announce the general availability of the Dodeca Spreadsheet Management System, version 7, and the all-new Dodeca Excel Add-In for Essbase. <br />
<br />
The Dodeca Spreadsheet Management System provides customers the ability to automate spreadsheet functionality, reducing the risk of spreadsheet errors while increasing productivity. It combines unprecedented ease-of-use for business users using spreadsheets for planning, budgeting, forecasting, reporting and analysis tasks. It also provides a robust, programmable development environment enabling companies to create spreadsheet applications tailored to their specific needs.<br />
<br />
The new Dodeca Excel Add-In for Essbase was created as a drop-in replacement for the classic Essbase add-in and is the world’s only Excel add-in focused exclusively on Essbase. The new add-in supports the most common actions used by Essbase traditionalists, supports the corresponding VBA functions, and includes a built-in Excel ribbon. Early adopters have also been impressed by the speed of retrieving data, commenting they found the Dodeca Excel Add-In as fast as, or even faster, than the classic Excel Add-In for Essbase. It is supported for Excel 2010, 2013, and 2016 and for Essbase 9.3.1 and higher.<br />
<br />
<a href="http://4.bp.blogspot.com/-We2zNSAe-qU/V0C1TDMhhHI/AAAAAAAAA4M/ZCjy_3O9V_QOXlo4abc6xnSEwGYSoN5bQCK4B/s1600/Screenshot1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img alt="" border="0" height="307" src="https://4.bp.blogspot.com/-We2zNSAe-qU/V0C1TDMhhHI/AAAAAAAAA4M/ZCjy_3O9V_QOXlo4abc6xnSEwGYSoN5bQCK4B/s400/Screenshot1.jpg" title="" width="400" /></a><br />
<br />
<br />
Dodeca 7 includes new features and functionality for security, selectors, logging, and enhanced workbook scripting.<br />
<br />
The enhanced security features add the ability to more easily manage users, roles, and permissions to access a Dodeca application. The new security features include:<br />
<ul>
<li>User Management – You can now track, monitor, and control user access to a Dodeca application and more easily monitor your Dodeca user base. This feature enables customers to control individual user access to a specific application, enable users for admin access, and manage user mapping to roles while also tracking metrics such as the first, last, and count of user logins. This feature also logs metrics on the users system to enable Dodeca administrators to more easily support their users.<br /><br /><a href="http://1.bp.blogspot.com/-TZc4OLYt3DA/V0C2ZCNyfYI/AAAAAAAAA4Y/RGDLP0OGjR4sWnqaULaxpP7ioBJvraSdwCK4B/s1600/Screenshot2.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em; text-align: center;"><img border="0" height="287" src="https://1.bp.blogspot.com/-TZc4OLYt3DA/V0C2ZCNyfYI/AAAAAAAAA4Y/RGDLP0OGjR4sWnqaULaxpP7ioBJvraSdwCK4B/s400/Screenshot2.jpg" width="400" /></a><br /><br />Here is an example of the metrics stored for each user record.<br /><br /><a href="http://2.bp.blogspot.com/-8oxpKysGUNc/V0C2qhzFtVI/AAAAAAAAA4g/NdmHnAIu6g4CA_RWidJ-DiEahVH2cDWEgCK4B/s1600/Screenshot3.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em; text-align: center;"><img border="0" height="265" src="https://2.bp.blogspot.com/-8oxpKysGUNc/V0C2qhzFtVI/AAAAAAAAA4g/NdmHnAIu6g4CA_RWidJ-DiEahVH2cDWEgCK4B/s400/Screenshot3.jpg" width="400" /></a></li>
</ul>
<ul>
<li>User Roles – In addition to provisioning roles via Essbase, Microsoft Active Directory, or LDAP groups using Dodeca authentication services, you can now create your own groups directly in Dodeca and map them to users. In addition, these new roles can be configured to be additive to the roles provided by other authentication services. </li>
</ul>
<ul>
<li>Application Session Timeout – You can now prevent users from keeping a Dodeca session open indefinitely by specifying an inactivity timeout or by specifying a designated shutdown time.<br /><br /><a href="http://1.bp.blogspot.com/-YYifB_WNj7A/V0Duuby5WfI/AAAAAAAAA40/QrmmsW8W4Xcm7P7my1Cok3enQDjIovqaQCK4B/s1600/Screenshot4.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="122" src="https://1.bp.blogspot.com/-YYifB_WNj7A/V0Duuby5WfI/AAAAAAAAA40/QrmmsW8W4Xcm7P7my1Cok3enQDjIovqaQCK4B/s400/Screenshot4.jpg" width="400" /></a></li>
</ul>
<div>
The new logging features provide the ability for customers to both easily track what their users are running in the system and assist our support team if and when support is needed. The new logging features include:</div>
<ul>
<li>View Usage Logging – View usage is now automatically logged in the server. The logs include not only identifying information for the view and the user, but also include performance information, error information, and tokens used in the view generation.<br /><br /><a href="http://2.bp.blogspot.com/-vVDX1iSQUA0/V0Dvhrb9YjI/AAAAAAAAA5A/ZMWFrlqvyNguPcDo3ahB_H22T3q6sLsfACK4B/s1600/Screenshot5.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="287" src="https://2.bp.blogspot.com/-vVDX1iSQUA0/V0Dvhrb9YjI/AAAAAAAAA5A/ZMWFrlqvyNguPcDo3ahB_H22T3q6sLsfACK4B/s400/Screenshot5.jpg" width="400" /></a></li>
</ul>
<ul>
<li>Client-side Request and Response XML Logging – The XML traffic traveling between the client and the server may now be logged to a directory on the client machine. This logging expands on the Server-side Request and Response XML Logging to make it easier to gather the XML traffic for a single user. In turn, the XML captured can be used by our support team to easily replicate transactions for our developers if and when necessary.</li>
</ul>
<br />
The selector enhancements include improvements to both view selectors and member selectors. The improvements include:<br />
<ul>
<li>View Selector Relational Hierarchy Generation – You may now populate the entire View Hierarchy, or alternatively, populate one or more branches, based on the results of a relational query.<br /><br /><a href="http://2.bp.blogspot.com/-jNxksDioBq8/V0DwL_PcnvI/AAAAAAAAA5M/rPlJVaESS1IJTpwNp-jf_oxW5PKFqbV3ACK4B/s1600/Screenshot6.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="272" src="https://2.bp.blogspot.com/-jNxksDioBq8/V0DwL_PcnvI/AAAAAAAAA5M/rPlJVaESS1IJTpwNp-jf_oxW5PKFqbV3ACK4B/s400/Screenshot6.jpg" width="400" /></a></li>
</ul>
<ul>
<li>View Selector Hierarchy Item Access Filters – Previously, you could control the View Hierarchies available to a given user. This new filter provides the ability to control which view hierarchy items are presented in the view selector based on the current user’s roles.<br /><br /><a href="http://3.bp.blogspot.com/-skdNC86cqnw/V0DySTcvRSI/AAAAAAAAA5Y/rnmLGZk-HCQ_KDUP3fiCP8OsLxKZnziawCK4B/s1600/Screenshot7.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="260" src="https://3.bp.blogspot.com/-skdNC86cqnw/V0DySTcvRSI/AAAAAAAAA5Y/rnmLGZk-HCQ_KDUP3fiCP8OsLxKZnziawCK4B/s400/Screenshot7.jpg" width="400" /></a></li>
</ul>
<ul>
<li>Relational Treeview Point-of-View Selector List– You may now configure a hierarchy of point-of-view items based on the results of a relational query.<br /><br /><a href="http://1.bp.blogspot.com/-oDmfud0Mi_4/V0Dyf1lzEiI/AAAAAAAAA5g/8RkbbUACzwc6tdja4dOFkt_jaHZkN4NtgCK4B/s1600/Screenshot8.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="400" src="https://1.bp.blogspot.com/-oDmfud0Mi_4/V0Dyf1lzEiI/AAAAAAAAA5g/8RkbbUACzwc6tdja4dOFkt_jaHZkN4NtgCK4B/s400/Screenshot8.jpg" width="246" /></a></li>
</ul>
<ul>
<li>Enhanced Essbase Treeview Point-of-View Selector List Expansion and Selection Filtering – You can now filter Essbase member content and selectable status based on one or more specified filters including generation number, level number, member name, alias, or shared status.</li>
</ul>
View editing enhancements make it even easier to create and modify Views in Dodeca:<br />
<ul>
<li>Enhanced SQLPassthroughDataSet Query Editing – You can now define token values to use for testing tokenized SQL queries in the Test Data Set utility.</li>
</ul>
<ul>
<li>Improved Token Editor – You can now view and edit tokens and their values in an improved grid layout.<br /><br /><a href="http://2.bp.blogspot.com/-zw6WISEkYmc/V0Dy2_IslLI/AAAAAAAAA5s/yB9yaQFSnQkhSYxCdJtk6X97rvFCGrqgACK4B/s1600/Screenshot9.jpg" imageanchor="1" style="clear: left; display: inline !important; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="247" src="https://2.bp.blogspot.com/-zw6WISEkYmc/V0Dy2_IslLI/AAAAAAAAA5s/yB9yaQFSnQkhSYxCdJtk6X97rvFCGrqgACK4B/s400/Screenshot9.jpg" width="400" /></a></li>
</ul>
Workbook scripting functionality adds more flexibility to Dodeca via 108 events that provide the opportunity for customers to extend Dodeca, 116 configurable methods (actions that can be taken in response to the events), and 138 functions that provide extended information to the workbook script.<br />
<br />
The new workbook script functionality includes:<br />
<ul>
<li>New Events</li>
<ul>
<li>BeforeBuildExecute - Allows a workbook script to cancel the build before the view is covered.</li>
<li>BeforeRefreshExecute - Allows a workbook script to cancel the refresh before the view is covered.</li>
<li>Shown - Raised when the view is initially shown. The event is raised before the framework applies the view’s AutoBuildOnOpen property, which allows a workbook script to set the property dynamically.</li>
</ul>
<li>New Methods</li>
<ul>
<li>ExportToExcel – Provides the ability to export view and point-of-view information in an exported Excel file. This information is used to regenerate the view upon Excel file import which enables off-line data entry in Excel with subsequent database updates in Dodeca.</li>
<li>SetSelectorConfiguration - Provides the ability to add or remove a point-of-view selector to/from a view dynamically.</li>
</ul>
<li>Enhanced Methods</li>
<ul>
<li>CallWebService – Added a new RESTRequest overload, which allows web service calls to made to RESTful web services.</li>
<li>SendEmail - Added a new ServletSMTP overload, which sends email from the Dodeca server rather than from the client. This is useful in circumstances in which SMTP mail must come from an approved IP address.</li>
<li>SetEntry – Added a new Added FormulaArray overload which allows Excel array formulas to be entered programmatically.</li>
<li>SetFill - Added a new Clear overload, which clears the fill color and pattern from the specified range.</li>
</ul>
<li>New Functions</li>
<ul>
<li>ColumnWidth - Returns the column width based on the active cell or a given cell.</li>
<li>RowHeight - Returns the row height based on the active cell or a given cell.</li>
<li>DataPointHasCellNote - Returns a boolean indicating if the active or specified data cell has Essbase LRO cell notes associated with it.</li>
<li>IsInCharacterRange - Returns a boolean indicating whether the specified string is limited to the specified character range. This function can be used to detect multi-byte characters in a string.</li>
</ul>
<li>Enhanced Functions</li>
<ul>
<li>SheetCount - Added an optional IncludeHiddenSheets argument, which controls whether the returned count includes both visible and hidden sheets or only visible sheets.</li>
</ul>
</ul>
For more information, we recommend you download and read the latest Dodeca release notes from the <a href="http://www.appliedolap.com/resources/downloads/dodeca-technical-documents" target="_blank">registered section</a> of our website. As always, you may also reach out to us via <a href="mailto:support@appliedolap.com" target="_blank">email</a> or call us at<br />
256.885.4371.<br />
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963tag:blogger.com,1999:blog-4019598559914347729.post-22137587888464093812016-01-06T23:21:00.004-06:002016-01-06T23:21:53.318-06:00Next Generation Outline Extractor 2.0.5.1073 released<br /><br />In the last week or so, we placed an updated version of the Next Generation Outline Extractor on our website. This version provides support for some updated Essbase versions, including 11.1.2.4.002, 11.1.2.4.003, and 11.1.2.4.005. More importantly, it addresses a bug where alias names were improperly associated with parent members when using the MaxL extraction source.. This bug was reported to us by a number of users and we are glad we were able to address it. Here is a list of the issues that were addressed:<br /><br /><span style="background-color: #eeeeee;">2015.11.23 - Issue 1401</span> - Resolved an issue where only one alias table is exported when using MaxL as the extract source.<br /><br /><span style="background-color: #eeeeee;">2015.11.23 - Issue 1402</span> - Resolved an issue where extracts using MaxL input and having members specified with Unicode may print incorrect characters in the output.<br /><br /><span style="background-color: #eeeeee;">2015.11.23 - Issue 1403</span> - Resolved an issue where aliases and udas may have been improperly placed on parent members.<br /><div>
<br /></div>
<div>
Please contact our support team if you have any issues.<br /><div>
<br /></div>
</div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com2tag:blogger.com,1999:blog-4019598559914347729.post-27307331115002276712015-10-05T22:00:00.000-05:002015-10-06T08:35:21.378-05:00Fundamentals of SQL Writeback in DodecaOne of the features of Dodeca is read-write functionality to SQL databases. We often get questions as to how to write data back to a relational database, so I thought I would post a quick blog entry for our customers to reference.<br />
<br />
This example will use a simple table structure in SQL Server though the concepts are the same when using Oracle, DB2, and most other relational databases. The example will use a simple Dodeca connection to a JDBC database. Here is the Dodeca SQL Connection object used for the connection.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-_296LwgyAls/VhMn1hG0s9I/AAAAAAAAA2A/LYuddm5Ax4c/s1600/SQLConnection.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="217" src="http://2.bp.blogspot.com/-_296LwgyAls/VhMn1hG0s9I/AAAAAAAAA2A/LYuddm5Ax4c/s400/SQLConnection.jpg" width="400" /></a></div>
The table I will use for this example was created with the following CREATE TABLE statement.<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">CREATE TABLE [dbo].[Test](</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>[TestID] [int] IDENTITY(1,1) NOT NULL,</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>[TestCode] [nvarchar](50) NULL,</span><br />
<span style="font-family: Courier New, Courier, monospace;"><span class="Apple-tab-span" style="white-space: pre;"> </span>[TestName] [nvarchar](50) NULL,</span><br />
<span style="font-family: 'Courier New', Courier, monospace;"> CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED </span><br />
<span style="font-family: Courier New, Courier, monospace;"> (</span><span style="font-family: 'Courier New', Courier, monospace;">[TestID] ASC</span><span style="font-family: 'Courier New', Courier, monospace;">)</span><br />
<span style="font-family: Courier New, Courier, monospace;">)</span><br />
<div>
<br /></div>
<div>
First, I used the <i>Dodeca SQL Excel View Wizard</i> to create a simple view in Dodeca to retrieve the data into a spreadsheet. The view, before setting up writeback capabilities, looks like this.</div>
<div>
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-7Nqm_-4JB9M/VhMpc8ZVQlI/AAAAAAAAA2M/VEqgCJIXPtk/s1600/SQLRetrieve.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="217" src="http://2.bp.blogspot.com/-7Nqm_-4JB9M/VhMpc8ZVQlI/AAAAAAAAA2M/VEqgCJIXPtk/s400/SQLRetrieve.jpg" width="400" /></a></div>
<div>
To make this view writeable, follow these steps.</div>
<div>
<ol>
<li>Add the appropriate SQL insert, update, or delete statements to the Dodeca SQL Passthrough Dataset object. The values to be replaced in the SQL statement must be specified using the notation @ColumnName where ColumnName is the column name, or column alias, of the column containing the data.</li>
<li>Add the column names of the primary key for the table to the <i>PrimaryKey </i>property of the SQL Passthrough DataSet object.</li>
<li>Depending on the database used, define the column names and their respective JDBC datatypes in the <i>Columns </i>property of the SQL Passthrough Dataset. This mapping is optional for SQL Server because Dodeca can obtain the required information from the Microsoft JDBC driver, however, the Oracle and DB2 JDBC drivers do not provide this information and it must be entered by the developer.</li>
</ol>
<div>
For insert, update, and delete operations, Dodeca parses the SQL statement to read the parameters that use the @ indicator and creates a JDBC prepared statement to execute the statements. The prepared statement format is very efficient as it compiles the SQL statement once and then executes it multiple times. Each inserted row is also passed to the server during the transaction. The values from each row are then used in conjunction with the prepared statement to perform the operation.<br />
<br />
Here is the completed Query definition.</div>
</div>
<div>
</div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-DXmmmJTxA3g/VhMrG7dy84I/AAAAAAAAA2c/YotF8pIMAe8/s1600/QueryEditor.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="288" src="http://1.bp.blogspot.com/-DXmmmJTxA3g/VhMrG7dy84I/AAAAAAAAA2c/YotF8pIMAe8/s400/QueryEditor.jpg" width="400" /></a></div>
<div>
<br /></div>
<br />
Next, modify the <i>DataSetRanges </i>property of the Dodeca View object and, to enable insert operations, set the <i>AllowAddRow </i>property to True. Note that if you added update and/or delete SQL to your SQL Passthrough Dataset object, be sure to enable those operations on the worksheet via the <i>AllowDeleteRow </i>and <i>AllowModifyRow </i>properties.<br />
<br />
<div>
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-kpWjkde4e_s/VhMuSLLRxMI/AAAAAAAAA20/6amNKVo-z0k/s1600/RangeEditor.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="300" src="http://2.bp.blogspot.com/-kpWjkde4e_s/VhMuSLLRxMI/AAAAAAAAA20/6amNKVo-z0k/s400/RangeEditor.jpg" width="400" /></a></div>
</div>
Once this step is complete, you can run the Dodeca View, add a row, and press the Save button to save the record to the relational database.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-mggMLZn6UsM/VhM3OFwrSxI/AAAAAAAAA3I/T-cR9CSp5tU/s1600/SQLDataWritten.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 20em;"><img border="0" height="282" src="http://1.bp.blogspot.com/-mggMLZn6UsM/VhM3OFwrSxI/AAAAAAAAA3I/T-cR9CSp5tU/s400/SQLDataWritten.jpg" width="400" /></a></div>
<br />
<br />
The insert, update, and delete functionalities using plain SQL statements is limited to operations on a single table. If you need to do updates on multiple tables, you must use stored procedures to accomplish the functionality. You can call a stored procedure in Dodeca using syntax similar to the following example:<br />
<br />
{call sp_InsertTest(@TestCode, @TestName)}<br />
<br />
Dodeca customers can contact support for further information at <a href="mailto:support@appliedolap.com">support@appliedolap.com</a>.Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-22569472973406264412015-06-14T09:36:00.000-05:002015-06-14T09:36:19.243-05:00Next Generation Outline Extractor 2.0.4.887 ReleasedWe recently released an updated version of the Next Generation Outline Extractor. This new version, 2.0.4.887, addresses three issues:<br />
<br />
<br />
<ul>
<li>Fixed an issue where the username and password passed via the command line were improperly logged</li>
<li>Fixed an issue reading MaxL XML data sources when the alias or UDA contained xml encoded characters such as the ampersand (&) character.</li>
<li>Updated labels on the Input Source tab of the user interface to clarify their purpose.</li>
</ul>
Here is a screenshot showing the updated labeling.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-3_lQCZk56xE/VX2OvPxJslI/AAAAAAAAA1Q/X7CVASscEms/s1600/OutlineDataSource.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" height="484" src="http://2.bp.blogspot.com/-3_lQCZk56xE/VX2OvPxJslI/AAAAAAAAA1Q/X7CVASscEms/s640/OutlineDataSource.png" width="640" /></a></div>
<div>
<br /></div>
<div>
Due to the architecture of the Oracle Essbase APIs, it is generally much faster to use the MaxL Outline XML extracts when processing an Essbase Outline extract. The Next Generation Outline Extractor still uses the Essbase Java API during this extract, but it is able to minimize the number of calls. The second option shown above, <i>Extract and Process MaxL Outline XML</i>, will automatically extract the Outline XML from the cube during the processing. The third option shown, <i>Use Previously Extracted MaxL Outline XML</i>, uses (obviously) an Outline XML file that has already been extracted.</div>
<div>
<br /></div>
<div>
Thank you to everyone who reported issues or made suggestions as you help make this utility better!</div>
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com5tag:blogger.com,1999:blog-4019598559914347729.post-38184532631871351532015-05-08T08:54:00.000-05:002015-05-08T08:56:28.680-05:00New OlapUnderground Utility - The Essbase Outline ViewerHave you ever wanted your users to see an Essbase database outline structure, but had trouble giving them access to Essbase Administrative Services ("EAS") for fear that they may have access to change things they shouldn't change? Maybe you didn't want to give them EAS and have to deal with the version of Java installed on their machine? We have the solution to your problems. After a bit of fits and starts, we have finally released the OlapUnderground Essbase Outline Viewer! <br />
<br />
The OlapUnderground Essbase Outline Viewer is a read-only user interface built specifically to view the contents of an Essbase outline. It is built in Microsoft .NET technology and should run on any Windows-based computer without any special downloads. It also uses the MaxL outline xml format and, as your Hyperion administrators can create and distribute the outline xml file, end users do not need an Essbase login to view the outline.<br />
<br />
Here is a screenshot of the Outline Viewer:<br />
<br />
<table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left; margin-right: 1em; text-align: left;"><tbody>
<tr><td style="text-align: center;"><a href="http://3.bp.blogspot.com/-HjlQJHSmBi4/VUy_lyHl3iI/AAAAAAAAA0o/wvva_AuHqGo/s1600/Outline%2BViewer.png" imageanchor="1" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" height="256" src="http://3.bp.blogspot.com/-HjlQJHSmBi4/VUy_lyHl3iI/AAAAAAAAA0o/wvva_AuHqGo/s400/Outline%2BViewer.png" width="400" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">Click image to see it full-size</td></tr>
</tbody></table>
<p />
You can download the Essbase Outline Viewer from our website at <a href="http://www.appliedolap.com/resources/downloads/essbase-outline-viewer">http://www.appliedolap.com/resources/downloads/essbase-outline-viewer</a>. Let us know what you think!<br />
<br />Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com3tag:blogger.com,1999:blog-4019598559914347729.post-28896626222130585642015-02-16T14:42:00.000-06:002015-02-16T14:47:19.449-06:00Next Generation Outline Extractor - New Version AvailableToday we released a new version of the Next Generation Outline Extractor, version 2.0.3.769. Here are the release notes from this new version:<br />
<br />
Version 2.0.3.769 supports the following Essbase versions:<br />
<br />
9.3.1<br />
9.3.1.1<br />
9.3.1.2<br />
9.3.3<br />
11.1.1<br />
11.1.1.1<br />
11.1.1.2<br />
11.1.1.3<br />
11.1.1.4<br />
11.1.2<br />
11.1.2.1<br />
11.1.2.1.102<br />
11.1.2.1.103<br />
11.1.2.1.104<br />
11.1.2.1.105<br />
11.1.2.1.106<br />
11.1.2.2<br />
11.1.2.2.102<br />
11.1.2.2.103<br />
11.1.2.2.104<br />
11.1.2.3<br />
11.1.2.3.001<br />
11.1.2.3.002<br />
11.1.2.3.003<br />
11.1.2.3.500<br />
11.1.2.3.501<br />
11.1.2.3.502<br />
11.1.2.3.505<br />
11.1.2.4<br />
<br />
Issues resolved in version 2.0.3.769:<br />
<br />
<u><b>2015.02.15 - Issue 1355 - All Writers</b></u> - Add functionality to replace all line feeds, carriage returns, tabs, and extraneous spaces in formulas<br />
<br />
<b><u>2015.02.13 - Issue 1354 - RelationalWriter </u></b>- Changed the default database name from dodeca to extractor<br />
<br />
<b><u>2015.02.13 - Issue 1353 - RelationalWriter</u></b> - Added CONSOLIDATION_TYPE_SYMBOL, SHARE_FLAG_SYMBOL, TIME_BALANCE, TIME_BALANCE_SYMBOL, TIME_BALANCE_SKIP, TIME_BALANCE_SKIP_SYMBOL, EXPENSE_FLAG, EXPENSE_FLAG_SYMBOL, TWO_PASS_FLAG, and TWO_PASS_FLAG_SYMBOL columns to the CACHED_OUTLINE_MEMBERS table<br />
<br />
<u><b>2015.02.13 - Issue 1352 - RelationalWriter</b></u> - Added Server, Application, and Cube columns to the CACHED_OUTLINE_VERSIONS table<br />
<br />
<u><b>2015.02.13 - Issue 1351</b></u> - Fixed issue with LoadFileWriter where UDA column headers were incorrectly written in the form UDAS0,DimName instead of UDA0,DimName<br />
<br />
In addition, a number of fixes, etc, were put into 2.0.2 and earlier releases and those releases went unannounced. Those updates included the following items:<br />
<br />
<ol>
<li>There is no longer a default .properties file for the Extractor. This will force a user to specify a .properties file. (2.0.2.601)</li>
<li>Removed the "/" character as a switch for command line arguments as it causes problems in Linux. (2.0.2.605)</li>
<li>Fixed issue when combining MaxL input with relational output where a "not supported" error message would appear due to certain properties were not being read correctly from the XML file (2.0.2.601)</li>
<li>Command line operations resulted in an error due to an improper attempt to interact with the GUI progress bar. (2.0.2.601)</li>
<li>Shared members attributes where not be properly written resulting in a delimiter/column count mismatch. (2.0.2.625)</li>
<li>Added encoding options where a user can choose between UTF-8 and ANSI encodings. The Extractor will attempt to detect encoding from selected outline and, if the detected outline encoding is different from the user selected outline encoding, a warning message appears.</li>
</ol>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-83527773114726726582015-02-13T09:24:00.003-06:002015-02-13T09:24:43.686-06:00Ephemeral Port Issue with Essbase Has Been Fixed!The issue that has plagued a number of Essbase customers over the years related to running out of available ports has finally been fixed!<br />
<br />
This issue, which often manifested itself with errors in the Essbase error 10420xx range, was caused by how the Essbase Java API communicated with the server. In essence, whenever a piece of information was needed, the Essbase Java API grabbed a port from the pool of available ports, did its business, and then released the port back to the pool. That doesn’t sound bad, but the problem occurs due to how Windows handles this pool of ports. Windows will put the port into a timeout status for a period of time before it makes the port available for reuse and the default timeout in Windows is 4 minutes! Further, the size of the available pool of ports is only about 16,000 ports in the later versions of Windows. That may sound like a lot of ports, but the speed of modern computers makes it possible, and even likely, that certain operations, such as the outline APIs, that call Essbase many, many times to get information would be subject to this issue. Frankly, we see this issue quite often with both VB and the Java Essbase Outline Extractors.<br />
<br />
We brought this issue to the attention of the Java API team and assisted them by testing a prerelease version of the Java API jars. I am happy to report the fix was released with Essbase 11.1.2.3.502. In addition, there is a new essbase.properties setting that allows you to turn the optimization on or off:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;">olap.system.socketoptimization=false</span><br />
<br />
It is our understanding that this optimization is turned on by default. I also checked the default essbase.properties files shipped with both Essbase 11.1.2.3.502 and 11.1.2.4 and did not see that setting in those files. It may be one of those settings that is there in case it messes something else up. The work of our own Jay Zuercher in our labs and searching Oracle Support seems to have confirmed that thought. There is apparently an issue where EIS drill-through reports don't work in Smart View if socket optimization is turned on. It is documented in <a href="https://support.oracle.com/epmos/faces/DocumentDisplay?id=1959533.1&displayIndex=1#FIX" rel="nofollow" target="_blank">Oracle Support Doc ID 1959533.1</a>.<br />
<div>
<br />
There is also another undocumented essbase.properties setting:<br /><br /><span style="font-family: Courier New, Courier, monospace;"> olap.server.socketIdleTime</span><br /><br /> According to Oracle development, this value defaults to 300 ms but there should be little need to ever change it. The only reason it is there is to tune socket optimization in case more than 2 sockets are used per Java API session.<br /><br />Jay also tested the 11.1.2.4 version in our labs with the Next Generation Outline Extractor. With the default settings, one large test outline we have, "BigBad", with about 120,000 members in it, extracted in 1 minute and 50 seconds. With socket optimization turned off, the same outline was only about 25% complete after 2 hours. In summary, this fix will be very useful for a lot of Oracle customers.</div>
<div>
<br /></div>
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com2tag:blogger.com,1999:blog-4019598559914347729.post-42148706032945073572015-02-12T11:06:00.001-06:002015-02-12T11:06:43.802-06:00Essbase VB API is Officially DeadIt is with a sad heart that bring you the news that, as of Essbase 11.1.2.4, the Essbase VB API is officially dead. I cut my teeth in Essbase working with that API way back in the mid-1990's, but the writing had been on the wall for some time. Microsoft stopped supporting VB years ago, so it was only a matter of time before this time would come. That being said, I haven't used the VB API for any new Essbase work since about 2001; the Essbase Java API is alive and growing so my efforts have been there.<br />
<br />
Here is the official notification:<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://1.bp.blogspot.com/-2KBzjtugjMg/VNzciDb2uII/AAAAAAAAAz4/Dxmz6p5zm9o/s1600/VBAPI.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" src="http://1.bp.blogspot.com/-2KBzjtugjMg/VNzciDb2uII/AAAAAAAAAz4/Dxmz6p5zm9o/s1600/VBAPI.jpg" height="193" width="400" /></a></div>
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
You can read the notification yourself in the <a href="http://docs.oracle.com/cd/E57185_01/epm.1112/readme/essbase_11124000_readme.html#essbase_11124000_readme_32" target="_blank">Essbase 11.1.2.4 Readme</a>.Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com2tag:blogger.com,1999:blog-4019598559914347729.post-53636412351094394012014-12-09T20:11:00.002-06:002014-12-09T20:11:43.260-06:00File Encoding in the Next Generation Outline ExtractorWe had a couple of issues reported with the output of the Next Generation Outline Extractor where the exported file did not work properly as a load file. After some investigation, we found that the file encoding was incorrect. We were encoding the files using the Unicode/UTF-8 format. We chose this encoding so that we could write all characters in all languages, but we did not consider that UTF-8 is only valid for loading Unicode databases in Essbase. <br />
<br />
To resolve this issue, we decided to add a configuration to the Next Generation Outline Extractor to allow users to select the file encoding. Here is a screenshot showing the new configuration setting.<br />
<br />
<a href="http://4.bp.blogspot.com/-P37tloU7weI/VIeq47uVKnI/AAAAAAAAAzk/8LnpqJd3CNQ/s1600/NGOE.jpg" style="margin-left: 1em; margin-right: 1em; text-align: center;"><img border="0" height="301" src="https://4.bp.blogspot.com/-P37tloU7weI/VIeq47uVKnI/AAAAAAAAAzk/8LnpqJd3CNQ/s1600/NGOE.jpg" width="400" /></a><br />
<br />
As of yesterday, December 8, 2014, the updated Next Generation Outline Extractor is available on our website. The first version to feature this functionality is version 2.0.2.692. Version 2.0.2.692 is available for all Essbase versions from Essbase 9.3.1 forward. We are also happy to announce that his version of the Next Generation Outline Extractor is the first version to support the recently released Essbase 11.1.2.3.505.<br />
<br />
If you encounter any issues with the Next Generation Outline Extractor, please don't hesitate to contact our support team at support@appliedolap.com.<br />
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<!-- Blogger automated replacement: "https://images-blogger-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2F4.bp.blogspot.com%2F-P37tloU7weI%2FVIeq47uVKnI%2FAAAAAAAAAzk%2F8LnpqJd3CNQ%2Fs1600%2FNGOE.jpg&container=blogger&gadget=a&rewriteMime=image%2F*" with "https://4.bp.blogspot.com/-P37tloU7weI/VIeq47uVKnI/AAAAAAAAAzk/8LnpqJd3CNQ/s1600/NGOE.jpg" -->Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-18485427545379984372014-10-15T23:38:00.000-05:002014-10-16T08:51:05.031-05:00Are you ready for Windows 10? Dodeca Is Ready!Microsoft recently released its first preview version of their next desktop operating system, Windows 10. In our business, we have seen many large companies just migrate to Windows 7 and the general consensus seems to be that Windows 8 is a 'consumer' operating system. In other words, it will be a while before you have to think about Windows 10, but it is <b><i>our</i></b> business to be thinking about this now. We have the Windows 10 preview downloaded and installed in our labs. We made a very smart decision years ago when we decided to write the Dodeca client layer in .NET technology because it works in Windows 10 unchanged!
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-s0b4yJd3zuU/VD9LAqoXtzI/AAAAAAAAAzQ/nmlX-f1ZkRM/s1600/screen2.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 30em;"><img border="0" src="http://2.bp.blogspot.com/-s0b4yJd3zuU/VD9LAqoXtzI/AAAAAAAAAzQ/nmlX-f1ZkRM/s400/screen2.png" /></a></div>
We are ready. Will you be ready?Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-21978743622974615432014-10-11T14:08:00.001-05:002014-10-11T14:08:36.158-05:00Kscope15 Abstract deadline is Wednesday, October 15!Kscope15 abstract submission will close in just a few days and the ODTUG content teams want <i>you</i>!
<br /><br />
I am sure there are many of you who have never done a presentation at a conference and may not feel comfortable speaking in public. Well, I have a secret for you, despite the fact that I won the Best Speaker Award at Kscope14, I share your discomfort with speaking. What works for me, however, is that I only speak about topics that I know very well. Do you have some area of expertise that you know really well? If you do, <b><i>please</i></b> share it! It will be fun and all of your peers who learn something new, from you, will appreciate it!
<br /><br />
With that, take the next step and <a href="http://www.kscope15.com/content">click here</a> to submit session!
Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com0tag:blogger.com,1999:blog-4019598559914347729.post-4184001290857603752014-09-12T17:07:00.000-05:002014-09-12T17:07:52.885-05:00Next Generation Outline Extractor Webcast - Oct 8th!I am doing a repeat of my Kscope15 'Best Speaker' award-winning presentation as part of the ODTUG webcast series. Here is the official announcement from ODTUG:
<div style="margin-bottom: 9.0pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;">
<strong><span style="color: #074666; font-family: "Arial","sans-serif"; font-size: 10.5pt;"><br /></span></strong></div>
<div style="margin-bottom: 9.0pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;">
<strong><span style="color: #074666; font-family: "Arial","sans-serif"; font-size: 10.5pt;">Wednesday,
October 8, 2014 12:00 PM - 1:00 PM EDT</span></strong><b><span style="color: #3c3c3c; font-family: "Arial","sans-serif"; font-size: 9.0pt;"><br />
<br />
</span></b><strong><i><span style="font-family: Arial, sans-serif; font-size: 9pt;">Next Generation Essbase Outline Extractor Tips and Tricks</span></i></strong><span style="color: #3c3c3c; font-family: "Arial","sans-serif"; font-size: 9.0pt;"><br />
</span><strong><span style="font-family: Arial, sans-serif; font-size: 9pt;">Tim Tow,</span></strong><span style="font-family: Arial, sans-serif; font-size: 9pt;"> Applied OLAP</span><span style="color: #3c3c3c; font-family: "Arial","sans-serif"; font-size: 9.0pt;"><o:p></o:p></span></div>
<br />
<div style="margin-bottom: 9.0pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;">
<span style="font-family: Arial, sans-serif; font-size: 9pt;">The Next
Generation Outline Extractor is the follow-up to the classic OlapUnderground
Essbase Outline Extractor used by thousands of Essbase customers. This session,
which was the highest-rated session at Kscope15 in Seattle, explores some of
the new capabilities of the Next Generation Outline Extractor, including
command line operations exported directly to a relational database. Attend this
session to learn how to leverage this free utility in your company.</span><span style="color: #3c3c3c; font-family: "Arial","sans-serif"; font-size: 9.0pt;"><o:p></o:p></span></div>
Make you you sign up to join my on October 8th; you can register <a href="https://www3.gotomeeting.com/register/638361654?utm_source=contactology&utm_medium=email&utm_campaign=ODTUGWebinarsSept">here!</a>.Tim Towhttp://www.blogger.com/profile/01455458983202814616noreply@blogger.com2Huntsville, AL, USA34.7303688 -86.58610369999996734.3126318 -87.231550699999971 35.1481058 -85.940656699999963