<?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; tips</title>
	<atom:link href="http://ykud.com/blog/category/cognos/tips/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>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>Enterprise PLanning Objects Naming Convention.</title>
		<link>http://ykud.com/blog/analyst/enterprise-planning-objects-naming-convention</link>
		<comments>http://ykud.com/blog/analyst/enterprise-planning-objects-naming-convention#comments</comments>
		<pubDate>Fri, 16 May 2008 10:54:50 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[analyst]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[contributor]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=219</guid>
		<description><![CDATA[As I've promised, here are naming conventions I tend to follow in EP projects. Setting up naming rules doesn't seem so crucial at project start, but generally hits on you on the head on final phase, when development turns to support. And trying to support your colleagues model will leave you thinking about naming objects [...]]]></description>
			<content:encoded><![CDATA[<p>As <a href="http://ykud.com/blog/?p=215">I've promised</a>, here are naming conventions I tend to follow in EP projects.<br />
Setting up naming rules doesn't seem so crucial at project start, but generally hits on you on the head on final phase, when development turns to support. And trying to support your colleagues model will leave you thinking about naming objects the same way more than once <img src='http://ykud.com/blog/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  So naming conventions are one of main project documents for me now.</p>
<p>I really expect and encourage comments on this naming proposal. Maybe together we will create something like <a href="http://java.sun.com/docs/codeconv/html/CodeConventions.doc8.html">Sun Java Code Conventions</a> )<br />
<span id="more-138"></span></p>
<table border=1 width="100%">
<tr>
<th align="left" bgcolor="#C0C0C0" bordercolor="#FFFFFF">Object</th>
<th align="left" bgcolor="#C0C0C0" bordercolor="#FFFFFF">Naming rule</th>
<th align="left" bgcolor="#C0C0C0" bordercolor="#FFFFFF">Example</th>
</tr>
<tr>
<td bgcolor="#DAA0A0" bordercolor="#FFFFFF"><b>Analyst</b>:</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Library</td>
<td>Library names are not that important, though if you use Analyst with Contributor, consider creating stub libraries for importing data to\from Contributor, as <a href="http://ykud.com/blog/?p=92">I've described here</a>. No data in skeleton library is a motto that will help you more than once, I guarantee. <br /> Library codes are important if you want to keep a single store of projects (in consulting company, or competency center) and you'd better create some seeding rules for creating unique 9 numbers for projects. <br /> A simple scheme of xxxxyylll, where xs are project code, ys -- library type and ls -- library order number will be sufficient in most of cases.</td>
<td>Sales_Planning_skl with code 777701001</td>
</tr>
<tr>
<td>Dlist</td>
<td>The main difference with Cognos initial coding standard. <br />
Dlists are numbered not up by their functions, but by type calculations happening in this dlist. I've got initial table from [Erik Thomsen's OLAP book][1] and modified it to suit EP better. So it goes like this:<br />
<br />1 - IF-ELSE formulas<br />2 - *,^, / <br />3 -  Common Sums <br /> 4 - Timescale Sums <br /> 5 - No calculations <br />
Second difference: these numbers are used as suffixes of dlists names, not as prefixes. This allows quick search by first letter of dlist name when you're browsing the library and all product dlists will be kept together, regardless of type.<br />
Third rule: only latin names with spaces substituted by _ (underscore). This guarantees that published tables will be named meaningfully and their names won't mutate after time (a real problem with cyrillic dlist\dcube names).
</td>
<td>Balance_Sheet_1<br />Products_3<br />Months_4</td>
</tr>
<tr>
<td>Dlist item names</td>
<td>One really useful hint: mark all calculation temporary elements (not to be seen user) with leading # symbol. This allows creating simple saved selection with filter that will easily hide all unnecessary elements from users in Contributor</td>
<td>#temporary_allocation_element</td>
</tr>
<tr>
<td>DCubes</td>
<td>Once again, only latin names with underscores to keep publish tables names sane. Contributor translations allow you to rename these cubes for end users with whatever names they'd like. No i\o\c, we're out of kindergarten</td>
<td>Product_Sales_Global</td>
<tr>
<tr>
<td>Dlinks</td>
<td>"<" instead of ":" in separating source from target. And some hints like + when you've got an add link, - for subtract, to allow better understanding of link logic while viewing it in update list table.</td>
<td>BalanceSheet"<"Cashflow(+)</td>
</tr>
<tr>
<td>Macros</td>
<td>Latin verbs or sentences describing what you're doing with macro. Latin due to necessity for batch running.</td>
<td>Update_Products_Export_Elists</td>
</tr>
<tr>
<td>Allocation Tables</td>
<td>Similar to links, just the allocated dimensions with some commentaries</td>
<td>ProductGroups"<"Products</td>
<tr>
<tr>
<td>File Maps</td>
<td>Whatever you like, I prefer filename</td>
<td>pl_export.csv</td>
</tr>
<tr>
<td bgcolor="#DAA0A0" bordercolor="#FFFFFF"><b>Contributor</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Applications</td>
<td>Rather strict rules are implied by Contributor itself, so i'd just advise to name aplications meaningfully, given that these names will always appear in browser connection string. No doubt that seeing "sales_plan_v8_will_it_ever_work" will ensure users. No grammar mistakes or typos, please.</td>
<td>sales_plan_by_brands</td>
</tr>
<tr>
<td>Access Tables</td>
<td>Access Tables should <u>always</u> be named. It's best to write a short sentence, describing access table meaning</td>
<td>Closing product list based on managers responsibility</td>
</tr>
<tr>
<td>Saved selections</td>
<td>Plain common sense: explain what this selection selects )</td>
<td>Accounts_special_calc_items</td>
</tr>
<tr>
<td>Administration links</td>
<td>Need suggestions here. <br />Since Administration link is a pack of links, I use macro notation -- verbs describing the process, but I put target application first</td>
<td>sales_plan_by_brands update from regions</td>
</tr>
<tr>
<td>Macros</td>
<td>Need suggestions here too. <br />Again some action descriptions, but I don't have a common approach of separating macros by applications they're working with or smth like that. Moreover macros aren't grouped anyhow, so I sometimes tend to prefix macros with some block group with following description</td>
<td>Sales_submission sales by brands to sales by regions</td>
</tr>
<tr>
<td>System Links</td>
<td>These are for users, so names should be descriptive actions</td>
<td>Load new currency rates</td>
</tr>
</table>
<p><s>Whoa, it's a really huge document, maybe I'll it finish someday...</s></p>
<p>  [1]: http://www.amazon.com/OLAP-Solutions-Building-Multidimensional-Information/dp/0471400300</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/analyst/enterprise-planning-objects-naming-convention/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Incremental Publish in EP</title>
		<link>http://ykud.com/blog/cognos/incremental-publish-in-ep</link>
		<comments>http://ykud.com/blog/cognos/incremental-publish-in-ep#comments</comments>
		<pubDate>Sat, 15 Dec 2007 19:24:10 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[contributor-only]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[ep]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=196</guid>
		<description><![CDATA[Just found an excellent option "Table-only Publish Post-GTP" that detects changes that make incremental publish incompatible and republishes application. It should be set to "Yes" by default, imho. See how incremental publish can streamline your reporting in these posts: 1, 2.]]></description>
			<content:encoded><![CDATA[<p>Just found an excellent option "Table-only Publish Post-GTP" that detects changes that make incremental publish incompatible and republishes application. It should be set to "Yes" by default, imho.</p>
<p>See how incremental publish can streamline your reporting in these posts: <a href="http://ykud.com/blog/?p=178">1</a>, <a href="http://ykud.com/blog/?p=186">2</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/incremental-publish-in-ep/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>EP TimeScale Dimension</title>
		<link>http://ykud.com/blog/cognos/ep-timescale-dimension</link>
		<comments>http://ykud.com/blog/cognos/ep-timescale-dimension#comments</comments>
		<pubDate>Mon, 15 Oct 2007 15:25:15 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[analyst]]></category>
		<category><![CDATA[dlists]]></category>
		<category><![CDATA[ep]]></category>
		<category><![CDATA[time]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=185</guid>
		<description><![CDATA[Just a rule to follow. Create time dimension so that detail item iids are consistent\meaningful and then add all summary items. So then in common Months dlist you'd get 1-12 for months, 13 for "1 Quater", 14 for "2nd Quater" and so on. That will allow you to use simple time arithmetics in dlist formated [...]]]></description>
			<content:encoded><![CDATA[<p>Just a rule to follow.</p>
<p>Create time dimension so that detail item iids are consistent\meaningful and then add all summary items. So then in common Months dlist you'd get 1-12 for months, 13 for "1 Quater", 14 for "2nd Quater" and so on.</p>
<p>That will allow you to use simple time arithmetics in dlist formated items such as calculating previous month by - 1, not by (IF "it was the one after summ" then month_id-2 else month_id - 1)  .</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/ep-timescale-dimension/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cognos Enterprise Planning Design principles</title>
		<link>http://ykud.com/blog/cognos/cognos-enterprise-planning-design-principles</link>
		<comments>http://ykud.com/blog/cognos/cognos-enterprise-planning-design-principles#comments</comments>
		<pubDate>Fri, 28 Sep 2007 10:19:34 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[contributor-only]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[analyst]]></category>
		<category><![CDATA[dlists]]></category>
		<category><![CDATA[ep]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=181</guid>
		<description><![CDATA[Usually these are the signs of coming disaster in an EP system: 1) too many dlists of the same "dimension", some elements thrown out for cutting volumes, calculating or not calculating smth, and you have all seen them laying around just because they seemed to consistent at the time of creation. 2) manually maintained access [...]]]></description>
			<content:encoded><![CDATA[<p>Usually these are the signs of coming disaster in an EP system:<br />
1) too many dlists of the same "dimension", some elements thrown out for cutting volumes, calculating or not calculating smth, and you have all seen them laying around just because they seemed to consistent at the time of creation.<br />
2) manually maintained access tables and elist's<br />
3) manual allocation in dlinks</p>
<p>Such systems are consistent at the moment of project inception, but as time flows, people change, one or more dlists don't get updated (well, they kinda lay in another lib, are named differently or smth), one or more AT doesn't get there in time and etc.<br />
And in some period of time (rather short) you end up holding a trembling scycraper by rapidly inserting straws. Terrible, ain't it?<br />
This is a common situation in my practice. It's just because it's so easy to build simple things in Analyst that you miss the point where those simple things have formed one of <a href="http://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot's set's.</a><br />
Nowadays, with "we do all in Contributor small interlinked applications" motto it's more than serious. It's hard to find an outdated dlist in Analyst, while digging through macro, but 10 times as hard to debug a sequence of admin links with respect to access tables used.</p>
<p>There are really some ways to avoid these things. There's no 100%-proof recipes, just some common sense.</p>
<p>Let's go step by step, starting from dlist's.</p>
<p>Handling Dlist's</p>
<p>The main Idea: All dlist, forming one dimension should be maintained through one d-cube.<br />
This is very good with hierarchical dimensions, such as products, so we'll use them as example.</p>
<table border="1">
<tr>
<td>&nbsp;</td>
<td>Brand</td>
<td>IsUsedInCalc1</td>
<td>IsUsedInApplicationX</td>
<td>...</td>
</tr>
<tr>
<td>Product1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>...</td>
</tr>
<tr>
<td>Product2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>...</td>
</tr>
<tr>
<td>....</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>...</td>
</tr>
<tr>
<td>ProductN</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>...</td>
</tr>
</table>
<p>Add as much attributes as you need. So if you're gonna do a dlist with not all products for application Z, you just add a column, mark required elements and make it an import link for a dlist.</p>
<p>The sub Idea: All dlist updates and sequencing application updates should be run by a single macro.</p>
<p>So after you create such a dlist for app Z, you add it's @DListUpdate in the UPDATE_ALL_DLISTS_MACRO and add an app Z sync & gtp in there. Therefore -- 1 place to change, 1 button to trigger all changes.</p>
<p>Problems</p>
<p>1) No way to import calc options. Seriously, I don't why it is that hard to do, but you just can't do it (if anybody knows -- drop me a line). So Accounts dimension is hard to handle.<br />
2) No simple way to write formulas. You can write them in text and import Formulae attribute, but adding "{" is annoying.</p>
<p>Some tricks</p>
<p>1) You can use all those DlistItemImport (from cubes, list, odbc's, fm packages) macros instead of  import links<br />
2) If you need some sorting, some non-trivial (for Analyst) text operations like spliting\joining strings, adding codes and that stuff -- you can export the cube to a txt file, put an odbc source on it and have a full-blown SQL-92 with CONCAT,SPLIT,LIKE, ORDER and all that nice stuff.<br />
3) You can have a more custom table like</p>
<table border="1">
<tr>
<td>&nbsp;</td>
<td>Name</td>
</tr>
<tr>
<td>1</td>
<td>Product1</td>
</tr>
<tr>
<td>2</td>
<td>Product2</td>
</tr>
<tr>
<td>...</td>
<td>...</td>
</tr>
</table>
<p>and do all the input in cube, w\o changing the list</p>
<p>2 AT and elists</p>
<p>Main Idea: Have a single source (mentioned above) and do everything automatically.</p>
<p>AT and elists can be (and should be) loaded from csv files.<br />
If you add a column "responsible" in the cube above, and calculate a column with "access level" on base of "responsible" (Yes = Write, No = No Data) -- there you go, start loading the thing up.<br />
3,4 dimensions are okay in a separate AT cube, but it should be a cube, not adding rules in applications. It's just that since you'll have some technical applications, you'll have to repeat those AT's more than once -- and that's a dead-end.<br />
Elist are the same, you can export a dlist as elist since 8.1 and enjoy the result, but I'd rather create all those columns myself.</p>
<p>Tricks<br />
1 Maintaining the same Elist Id allows you to change Display names w\o loosing data, so you can work around that.<br />
2 Play around calculating access level. There was a <a href="http://www.cognoise.com/community/index.php?PHPSESSID=nc38uea0pg0jek0j4rm889vl61&topic=2841.0">nice topic</a> on cognoise about automaticaly closing past months. So easy to do with @Time BiF.</p>
<p>3 Manual allocations.</p>
<p>Never. No way to find problem afterwards.</p>
<p>Do a CashFlow Account to P&L Account columns in item descriptions and use them as allocation cubes, use allocation tables when desperate.</p>
<p>I'll add more as I remember, comments welcome.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/cognos-enterprise-planning-design-principles/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cognos &#8220;Real-time&#8221; Reporting on Contributor Data</title>
		<link>http://ykud.com/blog/cognos/cognos-real-time-reporting-on-contributor-data</link>
		<comments>http://ykud.com/blog/cognos/cognos-real-time-reporting-on-contributor-data#comments</comments>
		<pubDate>Tue, 21 Aug 2007 08:19:13 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[contributor-only]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[bi]]></category>
		<category><![CDATA[dlists]]></category>
		<category><![CDATA[ep]]></category>
		<category><![CDATA[ep 8.2]]></category>
		<category><![CDATA[event manager]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=178</guid>
		<description><![CDATA[8.2 makes many things nice&#38;simple. To get a full budget report we need to do the following:&#160;&#160;&#160; 1) Publish the whole application&#160;&#160;&#160; 2) Run the report on published data Publishing a typical application of 100+ elist takes around 20 minutes, so no real-time here. But 8.2 introduces trickle publish, allowing to incrementally publish only changed [...]]]></description>
			<content:encoded><![CDATA[<p>8.2 makes many things nice&amp;simple. </p>
<p>To get a full budget report we need to do the following:<br />&nbsp;&nbsp;&nbsp; 1) Publish the whole application<br />&nbsp;&nbsp;&nbsp; 2) Run the report on published data</p>
<p>Publishing a typical application of 100+ elist takes around 20 minutes, so no real-time here. <br />But 8.2 introduces trickle publish, allowing to incrementally publish only changed data.&nbsp; This greatly shortens time spent on publishing. </p>
<p>The question now is how to find out that it's time to run incremental publish. &nbsp;  </p>
<p>By pointing Event Manager on nodestate table we can detect any event (save, submit) happening in application. And using Event Manager ability to detect change in specific column (changetimeid for example) we can fire an event each time somebody saves data. This event triggers incremental publish and there you go.<br />&nbsp;&nbsp;&nbsp; 1) Somebody saves data in contrbutor<br />&nbsp;&nbsp;&nbsp; 2) Event Manager raises an event, since nodestate table changed<br />&nbsp;&nbsp;&nbsp; 3) Event triggers a Contributor Macro running incremental publish<br />&nbsp;&nbsp;&nbsp; 4) Refreshing a report brings out new data <br />Since only 1 elist is published at a time, speed is astonishing (around 15s in our case). <br />Maximum lag between entering data and seeing it in report depends on Event Manager request period (minimum 1 min), so in 2 minutes&nbsp; max people see entered data in reports.</p>
<p>PS. Event manager requires some condition to start an event and doesn't accept simple "true", "forall" or&nbsp; something, so we write "1=1" conditions )<br />PSPS. Disallow cache for appropriate reports to avoid reading old data. Set datasource processing to database only and turn off report cache in query attributes.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/cognos-real-time-reporting-on-contributor-data/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>@Transform</title>
		<link>http://ykud.com/blog/cognos/transform</link>
		<comments>http://ykud.com/blog/cognos/transform#comments</comments>
		<pubDate>Thu, 01 Mar 2007 15:40:32 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[analyst]]></category>
		<category><![CDATA[BiF]]></category>
		<category><![CDATA[ep]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/?p=157</guid>
		<description><![CDATA[I'm just pointing it out again -- @Transform is a wonderful BiF, allowing to calculate trigonometric functions, exponentials and logs. If only we'd use them often.]]></description>
			<content:encoded><![CDATA[<p>I'm just pointing it out again -- @Transform is a wonderful BiF, allowing to calculate trigonometric functions, exponentials and logs.<br />
If only we'd use them often.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/transform/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Analyst Break-Back Rules</title>
		<link>http://ykud.com/blog/cognos/analyst-break-back-rules</link>
		<comments>http://ykud.com/blog/cognos/analyst-break-back-rules#comments</comments>
		<pubDate>Fri, 29 Dec 2006 10:25:53 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[cognos]]></category>
		<category><![CDATA[ep cookbook]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/2006/12/29/analyst-break-back-rules/</guid>
		<description><![CDATA[After examining Palo source code to see how their "Splashing" works, I got interested in the rules of break-back in Cognos EP. Not satisfied with vague description in Analyst User Guide and performing some test and calculations, I've received following results. Break-Back calculates only on Sum\Substract\Multiply\Division, not on IF-ELSE, or BIFs. Here are formulas for [...]]]></description>
			<content:encoded><![CDATA[<p>After examining <a href="http://www.palo.net/">Palo</a> source code to see how their "Splashing" works, I got interested in the rules of break-back in Cognos EP.<br />
Not satisfied with vague description in Analyst User Guide and performing some test and calculations, I've received following results.</p>
<p>Break-Back calculates only on Sum\Substract\Multiply\Division, not on IF-ELSE, or BIFs.<br />
Here are formulas for all 4 operations (4all4 <img src='http://ykud.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ).<br />
The initial values are marked with index 1 and break-backed by 2. No online latex-&gt;png converter I could find, so formulas will be rather ugly.</p>
<p><strong>Addition</strong><br />
x1 + y1 = z1<br />
We need z2<br />
x2 = z2\z1 * x1<br />
y2 = z2\z1 * y1<br />
Therefore:<br />
z2\z1 * x1 + z2\z1 * y1 = z2</p>
<p><strong>Subtraction</strong><br />
x1 - y1 = z1<br />
x2 = x1 + (x1*delta\z1)<br />
y2 = y1 + (y1*delta\z1)<br />
delta = (z2 - z1)*z1\(x1+y1)<br />
Therefore:<br />
x1 + (x1*delta\z1) - y1 + (y1*delta\z1) = z2</p>
<p>So here, the minimum gap is calculated due to initial weights of x1 and y1.</p>
<p><strong>Multiplication</strong><br />
x1*y1 = z1<br />
x2 = sqrt(z2\z1) * x1<br />
y2 = sqrt(z2\z1) * y1<br />
Therefore:<br />
sqrt(z2\z1) * x1 * sqrt(z2\z1) * y1 = z2</p>
<p>If there are 3 arguments x1*y1*a1, then cube root is calculated. So the initial arguments are multiplied by (z2\z1) with 1\n power, where n is number of arguments.</p>
<p><strong>Division</strong><br />
x1\y1=z1<br />
x2 = sqrt(z2\z1)*x1<br />
y2 = sqrt(z1\z2)*y1<br />
Therefore<br />
sqrt(z2\z1)*x1/(sqrt(z1\z2)*y1)=z2</p>
<p>If there is more than one numerator or denominator ( x1\(y1*a1) for example), then after calculating the required value of product, multiplication rules are applied.</p>
<p>Just to remind -- the calculation is defined by <u>order of dimensions</u>, as I've already shown <a href="http://ykud.com/blog/2006/06/20/ep-dimension-order-small-example/">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/cognos/analyst-break-back-rules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Batch for log gathering + timestamping</title>
		<link>http://ykud.com/blog/coding/bat-file-log-gathering-timestamping</link>
		<comments>http://ykud.com/blog/coding/bat-file-log-gathering-timestamping#comments</comments>
		<pubDate>Tue, 05 Dec 2006 12:57:55 +0000</pubDate>
		<dc:creator>ykud</dc:creator>
				<category><![CDATA[coding]]></category>
		<category><![CDATA[cognos]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[scripts]]></category>

		<guid isPermaLink="false">http://ykud.com/blog/2006/12/05/bat-file-log-gathering-timestamping/</guid>
		<description><![CDATA[When gathering logs, or performing backups, it's useful to append date suffix to the result file. But that's all not so trivial calculating such suffix in pure bat-files. We'll use system variables %date% and %time%. Try executing "echo %date%" and "echo %time%" from command line and watch the output. We'll append date suffix, and will [...]]]></description>
			<content:encoded><![CDATA[<p>When gathering logs, or performing backups, it's useful to append date suffix to the result file.<br />
But that's all not so trivial calculating such suffix in pure bat-files.<br />
We'll use system variables %date% and %time%.<br />
Try executing "echo %date%" and "echo %time%" from command line and watch the output.<br />
We'll append date suffix, and will show final result for time+date.</p>
<p>Suppose we need to rename the file test.txt to test_currdate.txt.</p>
<p>On my laptop "echo %date%" gives "05.12.2006".<br />
Be careful, output depends on regional settings (I've got Russian), so you'll need to modify this script.<br />
"test_05.12.2006.txt" doesn't look that good, I'd prefer "test_05122006.txt", so we'll need to calculate 05122006 from 05.12.2006.<br />
This can be done via :~ operator, allowing to cut substrings. Syntax is str:~start_position,length.</p>
<p>So the following line will calculate the variable currdate, holding "05122006".</p>
<pre class="winbatch">&nbsp;
set curdate=%date<span style="color: #FF1010; font-weight: bold;">:~6,4%%date:~3,2%%date:~0,2%</span>
&nbsp;</pre>
<p>rename command allows to change name of file, therefore you just run</p>
<pre class="winbatch">&nbsp;
set curdate=%date<span style="color: #FF1010; font-weight: bold;">:~6,4%%date:~3,2%%date:~0,2%</span>
rename test.txt test_%currdate%.txt
&nbsp;</pre>
<p>Script for grabbing specified files from servers below.<br />
<span id="more-63"></span><br />
This bat file accepts servernames as arguments and iterates through them to rename&gather all PlanningErrorLog.csv logs in one place (namely, C:\Logs).</p>
<pre class="winbatch">&nbsp;
@echo <span style="color: #0080FF; font-weight: bold;">off</span>
rem Gathering the Logs from command line arguments=servernames
rem directory <span style="color: #800080;">to</span> write
set destination=<span style="color: #ff0000;">&quot;C:Logs\&quot;</span>
set user=Admin
set pwd=~~~~~~~~
set log_directory=<span style="color: #ff0000;">&quot;WindowsTemp\&quot;</span>
set log_name=PlanningErrorLog
echo Monitoring %date% %time%&amp;gt<span style="color: #008000; font-style: italic;">;&amp;gt;c:logsmonitor_log.txt</span>
<span style="color: #FF1010; font-weight: bold;">:LOOP</span>
<span style="color: #800080;">IF</span> <span style="color: #ff0000;">&quot;%1&quot;</span> == <span style="color: #ff0000;">&quot;&quot;</span> <span style="color: #800080;">GOTO</span> <span style="color: #800080;">END</span>
net use \\%<span style="color: #cc66cc;">1</span>\c$ %pwd% /USER<span style="color: #FF1010; font-weight: bold;">:%1\%user%set curtime=%date:~6,4%%date:~3,2%%date:~0,2%_%time:~0,2%%time:~3,2%%time:~6,2%</span>
<span style="color: #800080;">if</span> EXIST \\%<span style="color: #cc66cc;">1</span>\c$%log_directory%%log_name%.csv rename \\%<span style="color: #cc66cc;">1</span>\c$\%log_directory%%log_name%.csv %1_%log_name%%curtime%.csv
&amp; xcopy \\%<span style="color: #cc66cc;">1</span>\c$\%log_directory%%1_%log_name%%curtime%.csv  %destination% /DY
net use /delete \\%<span style="color: #cc66cc;">1</span>\c$ /Y
<span style="color: #0080FF; font-weight: bold;">SHIFT</span>
<span style="color: #800080;">GOTO</span> LOOP
<span style="color: #FF1010; font-weight: bold;">:END</span>
&nbsp;</pre>
]]></content:encoded>
			<wfw:commentRss>http://ykud.com/blog/coding/bat-file-log-gathering-timestamping/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
