<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Applied dimensionality &#187; bi</title>
	<atom:link href="http://ykud.com/blog/category/cognos/bi/feed" rel="self" type="application/rss+xml" />
	<link>http://ykud.com/blog</link>
	<description></description>
	<lastBuildDate>Mon, 19 Jul 2010 07:48:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>BI system metadata impact analysis and what BI system APIs are for</title>
		<link>http://ykud.com/blog/bicpm/oracle/bi-system-metadata-impact-analysis-and-what-bi-system-apis-are-for</link>
		<comments>http://ykud.com/blog/bicpm/oracle/bi-system-metadata-impact-analysis-and-what-bi-system-apis-are-for#comments</comments>
		<pubDate>Wed, 19 May 2010 10:52:23 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=356</guid>
		<description><![CDATA["Okay, this column in our BI metadata was supposed to be named Sales, not Sals. But when we change it, what will happen to the reports that were created, using this name? And how many reports use this column anyway? Maybe we shouldn't touch anything to keep things working..." Ever been in such situation? This [...]]]></description>
			<content:encoded><![CDATA[<div>"Okay, this column in our BI metadata was supposed to be named Sales, not Sals.</div>
<div>But when we change it, what will happen to the reports that were created, using this name? And how many reports use this column anyway? Maybe we shouldn't touch anything to keep things working..."</div>
<div>Ever been in such situation?</div>
<div>This question can be answered by opening each report and then looking at it's contents ) A horrible task indeed.</div>
<div>Actually, this is exactly what BI system API are made for. Using them you should be able to automagically look into each report and find whether this column is used in it.</div>
<div>And as usual in this 'BI system Needs and Means' series, let's look how it's done in IBM Cognos BI and Oracle BI.</div>
<h3>Cognos BI</h3>
<div>Cognos BI has had an SDK (Software Development Kit) since ReportNet (for more than 5 years already) and this 'long-time in market' allowed to develop a whole ecosystem of tools to breed on top of it.</div>
<div>Concerning the question at the start of the post -- there's:</div>
<div>Cognos Dynamic Report Updater -- a tool to replace change column in every report.</div>
<div><a href="http://www-01.ibm.com/support/docview.wss?uid=swg24021248">http://www-01.ibm.com/support/docview.wss?uid=swg24021248 </a></div>
<div>Moreover, look at whole bunch of tools, based on SDK:</div>
<div><a href="http://www-01.ibm.com/software/data/support/cognos_diagnostictools.html">http://www-01.ibm.com/software/data/support/cognos_diagnostictools.html</a></div>
<div>and tools, developed by third-party vendors:</div>
<div><a href="http://www.brightstarpartners.com/bspsoftware.php">http://www.brightstarpartners.com/bspsoftware.php</a></div>
<h3>Oracle BI</h3>
<div>In Oracle BI, finding such changes is somehow easier, since all reports are stored as xml files in presentation catalog folder. You just write a simple script that iterates on files, finds a string in file and reports back it's findings (or replaces this string with a new one). Sounds easy, but after spending a couple days at it, I'm not so sure anymore )</div>
<div>There are a few major point against this way</div>
<div>1) It's unsupported, there are no declared report modification API's, AFAIK, so you're scripting at your own sake. That would not be a big problem, if not:</div>
<div>2) Oracle BI presentation service adds a hash tag to report (and folder) names if they exceed 55 characters in length (see more on this topic here: <a href="http://obiee101.blogspot.com/2010/02/obiee-report-name-length.html">http://obiee101.blogspot.com/2010/02/obiee-report-name-length.html</a>).</div>
<div>2.1) If report's names are not in ASCII, they are converted to UTF-8 (but starting x symbol is replaced by #), so each non-ASCII symbol takes 5. So if you find file, containing desired string, you can only decode back first 9 letters of it's name -- report names are usually much longer than that. Therefore your searching capabilities are seriously limited.</div>
<div>2.2) Folder name hashing poses another problem if you're using Windows. It impossible to iterate through catalogcontaining hashes an # in it's name -- OS listing methods stop working. Hope that situation is better on Linux. An easy but entirely manual workaround is to rename catalog folders to numbers (1,2,3,4) before starting the script ant to rename it back after.</div>
<div>I totally wish that this situation will change in nearest future and there will be a simple Presentation Server API call that will bring report name from file name and vica versa.</div>
<div>As usual, if anyone is interested in scripts  I wrote for the task (python, as usual + vbs) -- ping me.</div>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/bicpm/oracle/bi-system-metadata-impact-analysis-and-what-bi-system-apis-are-for/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Connecting BI system to Active Directory. Oracle BI vs IBM Cognos BI. Scripts to extract Active Directory information.</title>
		<link>http://ykud.com/blog/cognos/connecting-bi-system-to-active-directory-oracle-bi-vs-ibm-cognos-bi-scripts-to-extract-active-directory-information</link>
		<comments>http://ykud.com/blog/cognos/connecting-bi-system-to-active-directory-oracle-bi-vs-ibm-cognos-bi-scripts-to-extract-active-directory-information#comments</comments>
		<pubDate>Tue, 13 Apr 2010 06:00:31 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=295</guid>
		<description><![CDATA[I consider Single Sign-On setup through Active Directory(AD) a key point in every system's life. Up to this point -- it's just a PoC, a prototype or a department (10-20 users) level application. AD integration step is usually prosponed, because it's documented somewhere and there are much more important things to do, like showing that [...]]]></description>
			<content:encoded><![CDATA[<div id="_mcePaste">I consider Single Sign-On setup through Active Directory(AD) a key point in every system's life.</div>
<div>Up to this point -- it's just a PoC, a prototype or a department (10-20 users) level application.</div>
<div id="_mcePaste">AD integration step is usually prosponed, because it's documented somewhere and there are much more important things to do, like showing that this system is of any value at all.</div>
<div id="_mcePaste">But adding an AD connection mean that system is rooted (even if lightly) in company's IT ecosystem.</div>
<div id="_mcePaste">There's always a dilemma on groups and rights storage:</div>
<div id="_mcePaste">1) You can use AD groups for BI level user rights. AD admins are usually against this, it means more work for them.</div>
<div id="_mcePaste">2) Just use AD as a user catalog and add all groups and rights information in BI system. This means introducing more work to BI administrators and adding potential security problems. Imagine if BI admin won't be notified of a person transfer from department to department or from sales to marketing. And why should BI administrator even care about that )</div>
<div id="_mcePaste">Pro's and cons of each way are easy to deduct and choice is always organization-dependent, so I won't stop on that and go right to complains section.</div>
<h2>Using Active Directory in Cognos and Oracle BI</h2>
<h3>Cognos</h3>
<div>About a year ago we had a PoC on Cognos, where the requirement was to not just common "users and groups", but also we had to use custom created AD properties for data filtering.</div>
<div id="_mcePaste">It's easy to do in Cognos 8 BI: you just add Framework Manager macro that returns this property. Piece of cake really. And it turned out to be hard for our competitors.</div>
<div id="_mcePaste"><a href="http://www-01.ibm.com/support/docview.wss?uid=swg21341035">Description on IBM portal</a>, historical number --  1027162</div>
<h3>Oracle</h3>
<div id="_mcePaste">Recently I've had to do the same with Oracle BI and it turned out that Oracle BI's current integration with Active Directory is pretty basic. The only way to communicate with AD is authentificate users through it, there's no way to access User groups or custom properties (there is a way, but it requieres changing ActiveDirectory, which isn't good at all). See Metalink note on this subject: 544828.1</div>
<div id="_mcePaste">So there's no built-in way in OraBI to get all those delicious groups and other properties. But there's always a way out called scripting )</div>
<h2>Extracting Active Directory information to csv</h2>
<div id="_mcePaste">You can write a script that will extract needed information from Active Directory to a csv file and then schedule it for nightly extracts, load it into a table and use this table in Oracle BI security variables. This is a reliable solution, but it introduces a time lag between AD modifications and your extracts, which can be important from security point of view. Same example --user is transfered and can still access BI data he's no longer authorized to see until Active Directory information is extracted again. Setting small extract lags can bring unwanted load on Active Directory, so it's once again a balanced choice to make.</div>
<p>Links for extracting Active Directory information to csv:</p>
<p><a href="http://social.technet.microsoft.com/wiki/contents/articles/step-by-step-guide-to-bulk-import-and-export-to-active-directory.aspx">Step by Step Active Directory Export Guide </a><br />
<a href="http://www.rlmueller.net/ADOSearchTips.htm">http://www.rlmueller.net/ADOSearchTips.htm</a><br />
<a href="http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm">http://www.computerperformance.co.uk/Logon/LDAP_attributes_active_directory.htm</a><br />
<a href="http://sourceforge.net/projects/jxplorer/">JXplorer -- a graphical tool to browse any LDAP server</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/connecting-bi-system-to-active-directory-oracle-bi-vs-ibm-cognos-bi-scripts-to-extract-active-directory-information/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Macro functions and prompts in Cognos BI reports</title>
		<link>http://ykud.com/blog/cognos/macro-functions-and-prompts-in-cognos-bi-reports</link>
		<comments>http://ykud.com/blog/cognos/macro-functions-and-prompts-in-cognos-bi-reports#comments</comments>
		<pubDate>Wed, 17 Feb 2010 18:43:49 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=229</guid>
		<description><![CDATA[This post spent a year in drafts -( But Macro functions are an interesting feature of Cognos BI and sometimes their usage is unavoidable. You can use macro functions in Report Studio to do some manipulations with prompt values before they are used for actual processing in filters, report functions, etc. As a general (and [...]]]></description>
			<content:encoded><![CDATA[<p>This post spent a year in drafts -(  But Macro functions are an interesting feature of Cognos BI and sometimes their usage is unavoidable.</p>
<p>You can use macro functions in Report Studio to do some manipulations with prompt values before they are used for actual processing in filters, report functions, etc.<br />
As a general (and very common) example, you can use macro functions to do datetime format transformations, to allow one various filters to be based on a single prompt (selecting 'Version X, year 2009' in prompt, which you can split up to two filters, for year and version) and do some other string conversion stuff.<br />
Usually such need arises, when you have drill-through reports with different source-target dimension member formats, such as OLAP (Transformer, TM1, Ms AS, Essbase)  -&gt; Relational or vice versa. For example (a very simple and not close to real-life), if you have a detailed transaction-level report based on relational database and a MOLAP-aggregated data on top of it.</p>
<h3>Fictional Example</h3>
<p>If, for example, your date MUNs in OLAP are like '2010-02-10' and relational database expects something like '2010.02.10', you can change string value of prompt by changing filter in detail report from</p>
<pre class="javascript">date = ?date_prompt?</pre>
<p>to</p>
<pre class="javascript">date = #subtitute<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'-'</span>,<span style="color: #3366CC;">'.'</span>,<span style="color: #000066;">prompt</span><span style="color: #66cc66;">&#40;</span>date_prompt,<span style="color: #3366CC;">'string'</span>,<span style="color: #3366CC;">'1'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>#</pre>
<p>prompt macro function returns prompt value and substitute subtitutes strings )</p>
<h3>Real-life example</h3>
<p>One of real-life examples, where I had to use macro functions extensivly was OLAP(Essbase) to Relational drillthrough setup.<br />
When using Essbase it's better to have unique member names for dimension elements since this speeds query time a bit. So usually some unique identifiers are added to common conformed dimensions. On this project we've constructed a cube with financial transactions, with a number of participants for each operation. The same company can be a client in some operation and a supplier in another. So unique postfixes were added to each of dimensions in Essbase cube. Relational model for Oracle, however, had a single "Party" dimension table, which contained all possible participants.<br />
This problem is easily solved with tecnique given above, I've just removed unique identifier.<br />
The other problem in the same case is that Essbase dimensions usually have hierarchies ) Since operation participants can be aggregated by industry or region I can receive industry (or region) label in dimension prompt (building special prompts for each level is just impossible).<br />
So I had to detect the level of member I've received (which was easier by having those unique level identifiers) and then to filter accoding column in relational table. So I can receive values like 'Pharmaceuticals SUPPLIER INDUSTRY' or '10241235 SUPPLIER ID' from Essbase. Creating such a filter turns into filter like:</p>
<pre class="javascript">when <span style="color: #66cc66;">&#40;</span>#sq<span style="color: #66cc66;">&#40;</span>sb<span style="color: #66cc66;">&#40;</span>csv <span style="color: #66cc66;">&#40;</span>grep<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">': SUPPLIER_INDUSTRY'</span>;array<span style="color: #66cc66;">&#40;</span><span style="color: #000066;">prompt</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'SUPPLIER_ID'</span>;<span style="color: #3366CC;">'string'</span>;<span style="color: #3366CC;">'1'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>#,<span style="color: #3366CC;">'[]'</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>Relational Souce<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">&#91;</span>Supplier<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">&#91;</span>SUPPLIER_INDUSTRY<span style="color: #66cc66;">&#93;</span> = #substitute<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">': SUPPLIER SUPPLIER_INDUSTRY'</span>;<span style="color: #3366CC;">''</span>;prompt<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'SUPPLIER_ID'</span>;<span style="color: #3366CC;">'string'</span>;<span style="color: #3366CC;">'1'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>#<span style="color: #66cc66;">&#41;</span>
when <span style="color: #66cc66;">&#40;</span>#sq<span style="color: #66cc66;">&#40;</span>sb<span style="color: #66cc66;">&#40;</span>csv <span style="color: #66cc66;">&#40;</span>grep<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">': SUPPLIER ID'</span>;array<span style="color: #66cc66;">&#40;</span><span style="color: #000066;">prompt</span><span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'SUPPLIER_ID'</span>;<span style="color: #3366CC;">'string'</span>;<span style="color: #3366CC;">'1'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span># ,<span style="color: #3366CC;">'[]'</span><span style="color: #66cc66;">&#41;</span> THEN
<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#91;</span>Relational Souce<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">&#91;</span>Supplier<span style="color: #66cc66;">&#93;</span>.<span style="color: #66cc66;">&#91;</span>ID<span style="color: #66cc66;">&#93;</span>= #substitute<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">': SUPPLIER ID'</span>;<span style="color: #3366CC;">''</span>;prompt<span style="color: #66cc66;">&#40;</span><span style="color: #3366CC;">'SUPPLIER_ID'</span>;<span style="color: #3366CC;">'string'</span>;<span style="color: #3366CC;">'1'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>#<span style="color: #66cc66;">&#41;</span>
<span style="color: #000066; font-weight: bold;">else</span> <span style="color: #66cc66;">&#40;</span><span style="color: #CC0000;">1</span>=<span style="color: #CC0000;">1</span><span style="color: #66cc66;">&#41;</span></pre>
<p>This really looks awfull, but it's the only way I could find out to do 'search': that is to form an array from prompt values and do a 'grep' over it and compare it with empty string. But it does the trick nicely.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/macro-functions-and-prompts-in-cognos-bi-reports/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Oracle BI Enterprise Edition vs Cognos BI</title>
		<link>http://ykud.com/blog/cognos/oracle-bi-enterprise-edition-vs-cognos-bi</link>
		<comments>http://ykud.com/blog/cognos/oracle-bi-enterprise-edition-vs-cognos-bi#comments</comments>
		<pubDate>Mon, 01 Feb 2010 13:12:43 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[essbase]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[oracle]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=255</guid>
		<description><![CDATA[Since I've spent some time working with Oracle Business Intelligence last year, I think I'd write a simple comparison list of strengths\weaknesess of OraBI EE vs Cognos (see post on the same topic by Venkatakrishnan). All of this is imho, of course. Oracle BI EE Pro's: 1) Aggregate navigation -- ability to set up aggregate [...]]]></description>
			<content:encoded><![CDATA[<p>Since I've spent some time working with Oracle Business Intelligence last year, I think I'd write a simple comparison list of strengths\weaknesess of OraBI EE vs Cognos (see post on the same topic by  <a href="http://www.rittmanmead.com/2009/12/07/introduction-to-ibm-cognos-8-business-intelligence/">Venkatakrishnan</a>). All of this is imho, of course.</p>
<h2>Oracle BI EE Pro's:</h2>
<h3>1) Aggregate navigation</h3>
<p>-- ability to set up aggregate tables in BI EE itself, which gives it 'aggregate awareness' while generating SQL. So if you have monthly sales aggregate you just set up BI metadata accordingly and all reports will target this table for monthly data.<br />
There's no such feature in Cognos metadata setting.<br />
But using this feature arises some questions:<br />
a) whether aggregate definition should be BI-tool specific. A lot of practioners, including Kimball, insist that aggregate navigator should reside at database level so that every tool querying datawarehouse will benefit from aggregate avalaibility. This seems rather reasonable, since every datawarehouse is usually queried by more than one analytical application (BI, datamining, more BI) so you either direct all applications to BI EE, or agree to performance degradation.<br />
b) aggregate tables desynch. When you just update the base fact table, aggregate tables become "out of synch", providing <strong>incorrect query results</strong> untill they're recalculated. This means that you either can guarantee that nobody will access reports in this period, or you can have incorrect data. Since more&amp;more datawarehouses squezee load windows to reach real-time this problem gains priority.<br />
c) choosing which agregate to use for answering questions. That's what statistics is all about in dbms, knowing number of rows and value distribution (lol). Oracle BI EE has the "table row count" feature (although I haven't seen it affect SQL generation yet, need more examples). But there's no value distribution analysis in there, so it's just one side of the coin (not talking about I\O device speed and other characteristics).</p>
<p>In general, it's recommended to use database-specific aggregate table functionality (Oracle Materialized Views or DB2 MQT) since it solves all the 3 questions given above and usually simplifies ETL process (and sometimes even speeds it up, since databases use their own transaction logs to detect what data has changed and what aggregates should be rebuilt). Too bad indexed views in Ms SQL do not work with aggregate dimensions (there's no way to define dimension hierachies there).</p>
<h3>2) Cache management</h3>
<p>-- OraBI has really profound cache management facility. You can "cache" any database query to OraBI specific storage structure (cache file), wich will allow subsequent queries to the same table\query to run without actual database request being made. This can greatly speed things up. I especially like the Event Polling Table feature: you add a table, which records when dwh table was last updated. OraBI then reads at given intervals and automatically invalidates old cache entries, based on this table records.<br />
Moreover, if you have OraBI cluster this cache can be shared among servers.</p>
<p>There isn't anything even close in Cognos.</p>
<p>Although I greatly like this feature, I just want to warn about overusing it. It's easy to imagine BI developers boosting performance by adding more&amp;more cache untill OraBI becomes a fully blown aggregate system. And sometimes it's just about 1 aggregate table at the dwh level ) Or about introducing OLAP server in the enviroment )))</p>
<h3>3) SQL generation.</h3>
<p>It's tricky subject, but for now I like OraBI generated SQL more. But it's "apples to oranges" for sure, since I usually use DMR's in Cognos which encumbers SQL greatly and there's nothing identical in OraBI EE.</p>
<h2>Oracle BI EE Con's:</h2>
<h3>1) Multidimensionality</h3>
<p>Cognos has Analysis studio and the ability to navigate hierarchies in both directions (you won't believe it, but in OraBI there's no 'Drill-Up', only'Drill-Down'). And DMR's and analytical functions (but their usage is a bit annoying, as it seems now, hope to write about it later). Anyway, Cognos is way much more 'multidimensionally-ready' than OraBI.</p>
<p>OraBI + Essbase is a work in progress and has a huge number of caveats (some fixed by patches, some not, some introduced). And the only way to use all Essbase functionality is to write direct MDX via Evaluate functions. That's a big problem, since it's hard for us to suggest OraBI on top of Essbase for now (till 11g once again). The only alternative is Visual Explorer, which is a very good tool, but it for top-analysts only (thick client, costly).</p>
<h3>2) Metadata model development</h3>
<p>Instead of OraBI's 'only-star schema', '3 layers of model' Cognos FM Manager doesn't impose any design principles, which allows more mistakes, but it makes some things way more simple. One of the first things I wanted to do in OraBI was a report using just a single table.  Well that's a really funny exercise (see <a href="http://www.rittmanmead.com/2009/11/10/oracle-bi-ee-10-1-3-4-1-single-table-repository-design-part-1/">posts</a> over here) if a star schema is a must.</p>
<p>But the main problem is the lack of API for metadata changing and browsing. There's <a href="http://dylanwan.wordpress.com/2007/10/22/udml-in-oracle-bi-server/">udml</a>, but it's not supported officially. Therefore all current integration scripts (like adding users, merging repositories and working with hierarchy depth changes) are out of the law. Which doesn't stop anyone, but is pretty annoying.</p>
<h3>3) Pixel-perfect reports</h3>
<p>Oracle BI Publisher is a specific tool, aimed at generating a huge number of formatted reports, based on XML format definition files. It wasn't a part of Siebel BI, so 'integration stitches' still stand out. It's a nice tool, but it certainly lacks web-interface ) Therefore in Oracle BI there's a deep distinction between a simple formatted report (with lots of possible logic in it) and making this report 'printer-friendly' since for the latter you basically have to start from scratch by opening Ms Word )  This will change in 11g as they say )</p>
<p>Having said all that, I really wait for Oracle BI 11g edition to start using it with Essbase and I kinda like the product as it is for "relational-only" reporting.</p>
<p>I surely wanted to write a simple bullet point list at first )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/oracle-bi-enterprise-edition-vs-cognos-bi/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Memory leaking in Cognos 8.3 BI</title>
		<link>http://ykud.com/blog/cognos/memory-leaking-in-cognos-8-3-bi</link>
		<comments>http://ykud.com/blog/cognos/memory-leaking-in-cognos-8-3-bi#comments</comments>
		<pubDate>Tue, 20 Oct 2009 08:19:50 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[ibm]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=252</guid>
		<description><![CDATA[You know why i've started this blog in the first place? To get advice, of course. And today DesiCresnet shared a wonderfull piece of information concerning memory troubles in BI 8.3. Those who aren't struck by occasional CAM-AAA-0071 “An internal error occurred” which stops the whole server can skip this post. This error was discussed [...]]]></description>
			<content:encoded><![CDATA[<p>You know why i've started this blog in the first place? To get advice, of course. And today DesiCresnet shared a <a href="http://ykud.com/blog/cognos/memory-leaking-in-contributor/comment-page-1#comment-20448">wonderfull piece of information</a> concerning memory troubles in BI 8.3.</p>
<p>Those who aren't struck by occasional CAM-AAA-0071 “An internal error occurred” which stops the whole server can skip this post.<br />
This error was discussed at:</p>
<p>http://www.ibm.com/developerworks/forums/thread.jspa?threadID=244357</p>
<p>http://www.cognoise.com/community/index.php?topic=4971.0</p>
<p>The story goes like this:<br />
- java.exe (that powers BI), grows up to the point where it cannot obtain contigious memory from server and crashes<br />
- Cognos BI doesn't recognize this error, so it throws out a general CAM-AAA-0071<br />
- Cognos BI is unaccessible until restart</p>
<p>This error occurs more often in heavy-usage enviroments. In one of our projects, with lots of Event triggered admin-links and reports, it took only a coulple of hours before it striked.</p>
<p>Solution is not complete, but as I see it now:<br />
1) Put the latest SP on BI (or a special hotfix, if one is avalaible)<br />
2) Lower the avalaible memory for Cognos BI service (to 768 mbs)<br />
3) Modify the <a href="http://support.microsoft.com/kb/315407">HeapDecommitFreeBlockThreshold</a> registry property</p>
<p>It's interesting if 8.4 is prone to such error.</p>
<p>PS: I'm a certified <a href="http://ykud.com/blog/about_me">Cognos Technical Specialist</a> now, as well. Need to get first-line support partnership, you know )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/memory-leaking-in-cognos-8-3-bi/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Cognos 8 BI Tuning Hard Drive Usage</title>
		<link>http://ykud.com/blog/cognos/cognos-8-bi-tuning-hard-drive-usage</link>
		<comments>http://ykud.com/blog/cognos/cognos-8-bi-tuning-hard-drive-usage#comments</comments>
		<pubDate>Wed, 05 Aug 2009 10:03:17 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=230</guid>
		<description><![CDATA[Just a quick hint and a reminder: there is a configuration option forcing Cognos to store temporary report results in memory rather than dropping them on disk. It's especially usefull for DMR's they are frequently cached on disk. Quote from Architecture and Deployment Guide. Depending on the size of reports and the amount of available [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick hint and a reminder: there is a configuration option forcing Cognos to store temporary report results in memory rather than dropping them on disk. It's especially usefull for DMR's they are frequently cached on disk.</p>
<p>Quote from Architecture and Deployment Guide.</p>
<p><q>Depending on the size of reports and the amount of available memory, IBM Cognos 8 may access a physical disk when processing reports. To improve performance, you can ensure that report processing uses available memory rather than disk space. Using memory instead of disk space is particularly beneficial in cases where temporary files are<br />
created on IBM Cognos 8 servers, causing information transfer from memory to disk. You can monitor the occurrence of temporary files using the c8_location\temp directory.Monitor this folder during report processing periods to determine whether temporary files are created as cclvpage*.tmp. To ensure that IBM Cognos 8 uses memory instead of disk space, in the rsvpproperties.xml file, edit the VirtualMemoryDiagnostics property to use unlimited memory (value = 2) rather than limited  memory (value = 0):<br />
&lt;property&gt;VirtualMemoryDiagnostics&lt;/property&gt;<br />
&lt;value type="long"&gt;2&lt;/value&gt;<br />
Note: Remove the comment to enable the VirtualMemoryDiagnostics property.<br />
For information about using the rsvpproperties.xml file, see "Advanced Report Processing Configuration Settings" (p. 96).</q></p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/cognos-8-bi-tuning-hard-drive-usage/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cognos 8 BI Dashboard Studio</title>
		<link>http://ykud.com/blog/cognos/cognos-8-bi-dashboard-studio</link>
		<comments>http://ykud.com/blog/cognos/cognos-8-bi-dashboard-studio#comments</comments>
		<pubDate>Tue, 31 Mar 2009 18:30:43 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[dashboards]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=189</guid>
		<description><![CDATA[Finally got my hands to installing and trying it. Well, it looks nice, allows flash-based chart formating and turns Cognos portal pages into more dynamic "dashboards". But it's strangely slow (tried on a couple of computers) and all in all looks kinda "alpha" and plugged in at last moment. Installation is not that easy too, [...]]]></description>
			<content:encoded><![CDATA[<p>Finally got my hands to installing and trying it.<br />
Well, it looks nice, allows flash-based chart formating and turns Cognos portal pages into more dynamic "dashboards".</p>
<p>But it's strangely slow (tried on a couple of computers) and all in all looks kinda "alpha" and plugged in at last moment. Installation is not that easy too, it requires war building and deployement, procedures that not every BI consultant is aware off.</p>
<p>So I think we should wait for another couple of service packs and there'll be a new standard tool for portal page development. <a href="http://www.sap.com/solutions/sapbusinessobjects/sme/xcelsius/index.epx">XCelcious </a>should be afraid )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/cognos-8-bi-dashboard-studio/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cognos and MS SQL &#8212; happy together</title>
		<link>http://ykud.com/blog/cognos/cognos-and-ms-sql-happy-together</link>
		<comments>http://ykud.com/blog/cognos/cognos-and-ms-sql-happy-together#comments</comments>
		<pubDate>Thu, 19 Mar 2009 10:46:13 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=186</guid>
		<description><![CDATA[ Correcting myself. I was ranting about MS SQL and Cognos interaction. I was totally wrong. The problem, described shortly is: you have 2 databases in MS SQL residing on the same physical server you create a join “table A from db1 with table B from db2” Cognos creates two select queries (select * from db1.A) [...]]]></description>
			<content:encoded><![CDATA[<p> Correcting myself. I <a href="http://ykud.com/blog/cognos/cognos-bi-and-ms-sql-not-meant-for-each-other">was ranting about MS SQL and Cognos interaction</a>. I was totally wrong.</p>
<p style="margin-bottom: 0cm;" lang="en-US">The problem, described shortly is:</p>
<ol>
<li>
<p style="margin-bottom: 0cm;" lang="en-US">you have 2 databases in MS SQL residing on the same physical server</p>
</li>
<li>
<p style="margin-bottom: 0cm;"><span lang="en-US">you create a join “table A from db1 with table B from db2”</span></p>
</li>
<li>
<p style="margin-bottom: 0cm;" lang="en-US">Cognos creates two select queries (select * from db1.A) and (select * from db2.B) and then does join locally on server. That’s terribly slow. Cognos should be generating one select query, performing the join on the db server and that’d be really fast.</p>
</li>
</ol>
<p style="margin-bottom: 0cm;"><span lang="en-US">The answer is simple: there’s no way Cognos can find out that these two databases are on the same physical server. But we can help old fella a bit, setting a datasource property (Content Manager Datasource) the same for both datasources. Therefore, the same datasource prefix will be generated for both tables and they’ll be regarded as residing on the same server. Query speed will increase dramatically. </span></p>
<p style="margin-bottom: 0cm;" lang="en-US"><strong>Morale</strong>:  always set the datasource property for MS SQL databases located on the same server. </p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/cognos-and-ms-sql-happy-together/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Default Framework Manager package publish folder</title>
		<link>http://ykud.com/blog/cognos/default-framework-manager-package-publish-folder</link>
		<comments>http://ykud.com/blog/cognos/default-framework-manager-package-publish-folder#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:11:39 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[bi]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[package]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=169</guid>
		<description><![CDATA[Just a quick tip -- this setting is stored in "lastPublishCM" property of fm.ini file Gave me some trouble recently, when language changes led to unappropriate publish folder name. Moreover, we were not able to publish anything at all ) Changing this file helped. Found via FileMonitor from sysinternals, as usual.]]></description>
			<content:encoded><![CDATA[<p>Just a quick tip -- this setting is stored in "lastPublishCM" property of fm.ini file</p>
<p>Gave me some trouble recently, when language changes led to unappropriate publish folder name. Moreover, we were not able to publish anything at all )</p>
<p>Changing this file helped. Found via FileMonitor from sysinternals, as usual.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/default-framework-manager-package-publish-folder/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Back from winter-sleep</title>
		<link>http://ykud.com/blog/bicpm/back-from-winter-sleep</link>
		<comments>http://ykud.com/blog/bicpm/back-from-winter-sleep#comments</comments>
		<pubDate>Sun, 01 Mar 2009 09:04:38 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[BI&CPM]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[ep]]></category>
		<category><![CDATA[hyperion]]></category>
		<category><![CDATA[ibm]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[certification]]></category>
		<category><![CDATA[cognos certification]]></category>
		<category><![CDATA[essbase]]></category>
		<category><![CDATA[tm1]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=176</guid>
		<description><![CDATA[Okay, it has been almost half-a-year (oh, dears) since the last decent post on this blog. Russian one has suffered as well, I must note. Reasons vary, but mostly it's that I've been, you know, busy-busy. As I now start to reflect on it, it's always a point of view thing and a question of [...]]]></description>
			<content:encoded><![CDATA[<p>Okay, it has been almost half-a-year (oh, dears) since the last decent post on this blog. Russian one has suffered as well, I must note.</p>
<p>Reasons vary, but mostly it's that I've been, you know, busy-busy. As I now start to reflect on it, it's always a point of view thing and a question of self-control and ability to say no )</p>
<p>But enough philosphy, brief recap on what happend while I was out "there" in real world. I'll divide this into two parts (by vendors ))</p>
<p><span id="more-176"></span></p>
<h2>Big Blue</h2>
<p>Made some POCs in autumn, nothing that special (some neat integration, but not cognos-related). Carried on a couple of projects with  EP+BI typicalities. All in all, nothing that new.</p>
<p>BUT I've finally completed the other certification path there is at Cognos\IBM, notably, the "BI Professional" road. It's a deal longer, as of now, you have to pass 3 "<a href="http://support.cognos.com/en/training/certification/role-based.html">role-based</a>" exams, 2 mandatory (Report Author and Metadata Model Developer) and one of you choice to get a chance of passing BI Pro exam. It's used to coast 10k, which could be cut down to reasonable 200$ if you attended a Cognos Workshop (which costed 2,5k), but thanks to IBM that's gone and now it's 200$ from the start. Just opened certifications link and I'm, frankly, quite surprised with new IBM names for old Cognos certifications. According to this I'm:</p>
<ul>
<li>IBM Certified Designer -- Cognos 8 BI Reports</li>
<li>IBM Certified Developer -- Cognos 8 BI Metadata Models</li>
<li>IBM Certified Developer -- Cognos 8 BI OLAP Models</li>
<li>IBM Certified Solution Expert -- Cognos 8 BI</li>
</ul>
<p>and it turns out I was an</p>
<ul>
<li>IBM Certified Solution Expert -- Cognos 8 Enterprise Planning</li>
</ul>
<p>instead of Cognos EP Professional.</p>
<p>Wording is something you cannot easily take from IBM ) Will put that list in about page, just to get more mail asking for exam questions.</p>
<p>Hint: In comparison with the old Modeler exam, current one is easier.</p>
<p>And in the first 2 months of this year we did a "nightmare-style" POC with EP + TM1 + BI, where I could finally get an idea of what TM1 really is and fully realize some ideas like incremental administration links and, therefore, "real-time" EP -&gt; TM1  data propagation. I'm planning to write about this in separate posts, though. And, boy, it was hard, and we flanked the final presentation due to me being ill and bla-bla, and I'm still recovering breath from this.</p>
<p>But enough about IBM, let's turn to</p>
<h2>Oracle</h2>
<p>We've made a really nice billion-facts cube with our colleagues from "SportMaster" and talked about it in exceeding detail on <a href="http://www.oracleclub.ru/techforum/">Russian Oracle Technical Forum 2008 </a>and Oracle BI Forum 2009. Essbase turned out to be a good engine for this kind of task and the moment when it finally kicked-in on 100gb dataset will retain as one of best in 2008. The fact that one of dimensions was a million rows parent-child didn't raise that much of a problem.</p>
<p>Moreover on another site we duly built dimension outline with around 30 mln members. Although duly is not the right word, "kicking and screaming" would be a better wording ) And the whole area of trying to tune something in underlying Berkeley DB is still open. But I must admit, an 8 gb outline file is really impressive.</p>
<p>So I've spent pretty much time toying around with essbase (except when I wasn't with TM1)). And I'm also a Hyperion Essbase 9.3 Developer Certified Expert (I won't enter Prometric for a while, I hope).</p>
<p>So it was a rather crowded time and I hope that nothing will stop me from blogging some details and future encounters. At least, I'd try my best to. Cheers to your patience, folks )</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/bicpm/back-from-winter-sleep/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
