<?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>instantOLAP &#187; HowTos</title>
	<atom:link href="http://www.instantolap.com/category/howtos/feed" rel="self" type="application/rss+xml" />
	<link>http://www.instantolap.com</link>
	<description>Business intelligence for the Java Platform</description>
	<lastBuildDate>Mon, 12 Dec 2011 10:12:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Turn OLAP data into Geo Charts</title>
		<link>http://www.instantolap.com/howtos/turn-olap-data-into-geo-charts#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/turn-olap-data-into-geo-charts#comments</comments>
		<pubDate>Wed, 11 Aug 2010 15:36:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[Geo Chart]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Shapefile]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=864</guid>
		<description><![CDATA[This article describes how to present your data from an OLAP cube as a geogrphical map, including color coding, custom texts and other features.]]></description>
			<content:encoded><![CDATA[<p>instantOLAP contains a flexible GEO chart engine which allows to present your OLAP data as colorful maps with custom texts, color codings, icons and  other visualizations in multiple layers.</p>
<p><object type="application/x-shockwave-flash" data="http://www.youtube.com/v/uw-4UDKpTyA&#038;fs=1" width="600" height="400"><param name="movie" value="http://www.youtube.com/v/uw-4UDKpTyA&#038;fs=1" /><param name="FlashVars" value="playerMode=embedded"/><param name="wmode" value="transparent"/></object></p>
<p>This (video) tutorial shows how to create GEO charts, starting with a simple background layer. Watch the video or continue reading to learn more about maps in instantOLAP.</p>
<p><span id="more-864"></span><br />
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#instantOLAP_3">instantOLAP 3</a>
	</li>
	<li>
		<a href="#Shapefiles">Shapefiles</a>
	</li>
	<li>
		<a href="#Create_a_geo_chart_block">Create a geo chart block</a>
	</li>
	<li>
		<a href="#Layers">Layers</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Adding_background_layers">Adding background layers</a>
				<ol class='toc-odd level-3'>
					<li>
						<a href="#Adding_a_first_polygon_background_layer">Adding a first polygon background  layer</a>
					</li>
					<li>
						<a href="#Adding_a_text_layer">Adding a text layer</a>
					</li>
				</ol>
			<li>
				<a href="#Adding_data_layers">Adding data layers</a>
				<ol class='toc-odd level-3'>
					<li>
						<a href="#Adding_a_first_data_layer">Adding  a first data layer</a>
					</li>
					<li>
						<a href="#Color_coding">Color coding</a>
					</li>
</ol>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div></p>
<span id="instantOLAP_3"><h2>instantOLAP 3</h2></span>
<p>This tutorial uses the beta version of instantOLAP 3. Creating Geo Charts with instantOLAP 2.6 works exactly the same way, you&#8217;ll only need to design your report with the instantOLAP Workbench, because the web query editor is a new feature of version 3.</p>
<span id="Shapefiles"><h2>Shapefiles</h2></span>
<p>The OLAP System uses standard ESRI Shapefiles for the maps. Because the ESRI Shapefile format is very common, nearly every kind of map is available. Various shapefiles can be found for free in the internet or purchased. The instantOLAP default installation contains the free &#8220;world_countries_shp&#8221; shapefile with the world countries borders, which will be used for this example.</p>
<span id="Create_a_geo_chart_block"><h2>Create a geo chart block</h2></span>
<p>First of all, you will have to create a new block inside your report and change its format into the &#8220;Geo Chart&#8221; format. After you did this, a number of new properties will appear for this block.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/geochart_format.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-999" title="Geo Chart Format" src="http://www.instantolap.com/wp-content/uploads/2010/07/geochart_format.png" alt="Turn OLAP data into Geo Charts" width="424" height="409" /></a></p>
<span id="Layers"><h2>Layers</h2></span>
<p>Maps in instantOLAP are organized in background and foreground layers. Each kind of layer can be displayed as polygons, texts or symbols.</p>
<span id="Adding_background_layers"><h3>Adding background layers</h3></span>
<p>The background layers will always be rendered, independend of the table data or anything else. You can use the background layers to display the fixed background information you need for your report, e.g. country borders and country names.</p>
<span id="Adding_a_first_polygon_background_layer"><h4>Adding a first polygon background  layer</h4></span>
<p>First of all, we will a add a simple background layer to the chart. Simply tell the system where to find the shapefile on the hard disk by filling the property &#8220;BG 0 Sourcefile&#8221;. Fill in the absolute path here, because shapefiles don&#8217;t need to be located inside the instantOLAP repository. Also, if your background and frontend server are located on different machines, this path should be visible for the frontend server.</p>
<p>For this example, the path would be &#8220;&lt;instantOLAP&gt;/repository/geodata/World_countries_shp.shp&#8221; &#8211; whereby &lt;instantOLAP&gt; is the installation path of your instantOLAP server.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/shapefile.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="size-full wp-image-1195 alignnone" title="Shapefile property" src="http://www.instantolap.com/wp-content/uploads/2010/07/shapefile.png" alt="Turn OLAP data into Geo Charts" width="599" height="465" /></a></p>
<p>After you located the shapefile, it&#8217;s time for a test. Execute the report and you should see your first map inside instantOLAP. It displays the world country borders as black borders with empty polygons.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/firstgeochart.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-1197" title="First Geo Chart" src="http://www.instantolap.com/wp-content/uploads/2010/07/firstgeochart.png" alt="Turn OLAP data into Geo Charts" width="600" height="352" /></a></p>
<p>Now you can change some properties of the background layer to change its presentation, e.g. by assigning colors to the properties &#8220;BG 0 Background&#8221; and &#8220;BG 0 Color&#8221; (which is the border color).</p>
<span id="Adding_a_text_layer"><h4>Adding a text layer</h4></span>
<p>Now we&#8217;ll display the country names in a second background layer. Shapefiles can contain additional informations for each polygon which are stored in a simple DBase database (located in the same folder as the Shapefile itself). There are a number of tools you may use to open and view/edit this database files, including Microsoft Excel.</p>
<p>You max have noticed that additional properties were added to the chart property list after you edited the &#8220;BG 0 Sourcefile&#8221; property. The editor automatically adds properties for an additional layer whenever you assign a value to a layer sourcefile and this is the location where to add the second layer.</p>
<p>Use the same shapefile for the property &#8220;BG 1 Sourcefile&#8221; and set the &#8220;BG 1 Type&#8221; property to &#8220;Text&#8221; &#8211; this will turn the layer  into a text layer. Now you must tell the system which database information you want to display as the text. In our example Shapefile, the country names are stored in the column &#8220;NAME&#8221; &#8211; simply enter this attribute name into the property &#8220;BG 1 Text Attribute&#8221;.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/geochartwithtext.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-1198" title="Geo Chart with text" src="http://www.instantolap.com/wp-content/uploads/2010/07/geochartwithtext.png" alt="Turn OLAP data into Geo Charts" width="600" height="357" /></a></p>
<span id="Adding_data_layers"><h3>Adding data layers</h3></span>
<p>Data layers are similar to background layers but they only display the fragments of the Shapefiles related to the table data. E.g. a data layer could highlight single countries in certain colors, dependend on a cube value like the turnaround for that country.</p>
<p>Each row of your OLAP query will be related to a single map fragment. Therefore, a data layer needs additional information to link the fragments to the rows of your query. This is realized by matching the header text of the Y-axis with a text attribute of the Shapefile database. E.g. if your query contains ISO country codes in the Y-headers, there must be a database field in the Shapefile with exactly mathing ISO codes.</p>
<span id="Adding_a_first_data_layer"><h4>Adding  a first data layer</h4></span>
<p>Adding a data layer works the same as adding a background layer: Enter the absolute path of the shapefile in the property &#8220;Data 0 Sourcefile&#8221; to create a new layer.</p>
<p>Now you&#8217;ll have to match the table with the Shapefile segments: For our example, add a fact (e.g. turnaround) to the X-axis of the  table and the level &#8220;COUNTRY&#8221; of the agency dimension to the Y-axis.  Because the COUNTRY level contains the ISO contry codes as keys and the  World_countries_shp Shapefile contains these codes as attribute, we can  tell the system how to match the headers to the Shapefile. The Shapefile attribute is named &#8220;ISO_2&#8243;, therefore you&#8217;ll have to enter this name in the attribute &#8220;Data 0 Text Attribute&#8221;.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/geochartdataproperty.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-1200" title="Adding a data layer" src="http://www.instantolap.com/wp-content/uploads/2010/07/geochartdataproperty.png" alt="Turn OLAP data into Geo Charts" width="599" height="561" /></a></p>
<p>If you execute the report now you&#8217;ll see some new numbers in some countries. This is the table content, mapped to the regions identified by the Y-axis headers which are mapped to the Shapefile regions.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/geochartdata.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-1199" title="Showing data in a Geo Chart" src="http://www.instantolap.com/wp-content/uploads/2010/07/geochartdata.png" alt="Turn OLAP data into Geo Charts" width="600" height="358" /></a></p>
<span id="Color_coding"><h4>Color coding</h4></span>
<p>A number of table properties are straight forward displayed in the map, including the background and foreground color of your table cells. Therefore, color coding for maps works the same as for tables &#8211; simply change the background color of the Y-axis headers and the polygons in the map will have the same colors as the table would.</p>
<p>In our example, you can add a simple color coding by entering the following expression into the background expression of the Y-Axis header: &#8220;IIF( Amount() &lt; 30000000, &#8216;red&#8217;, &#8216;green&#8217; )&#8221;. This will turn the background color to &#8220;red&#8221; if the turnaround for a country is less than 30 million or to &#8220;green&#8221; if not.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/geochartcolorcoding.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-1201" title="Geo Chart with color coding" src="http://www.instantolap.com/wp-content/uploads/2010/07/geochartcolorcoding.png" alt="Turn OLAP data into Geo Charts" width="600" height="357" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/turn-olap-data-into-geo-charts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores</title>
		<link>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores#comments</comments>
		<pubDate>Thu, 08 Jul 2010 20:20:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[HOLAP]]></category>
		<category><![CDATA[MOLAP]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[OLAP Cube]]></category>
		<category><![CDATA[ROLAP]]></category>
		<category><![CDATA[Stores]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=916</guid>
		<description><![CDATA[In instantOLAP, Stores can be used to aggregate ROLAP Cubes into their MOLAP form or into hybrid mixtures of ROLAP and MOLAP (HOLAP). This article describes how to create and manage Stores in instantOLAP.]]></description>
			<content:encoded><![CDATA[<p>The built in Offline Stores in instantOLAP allow to aggregate the classical cubes fully or partwise into light speed local data stores. With Offline Stores, you can realize all modern forms of OLAP storage: <strong>ROLAP </strong>(direct access to relational databases when querying data), <strong>MOLAP </strong>(fully aggregated cubes with high performance) or <strong>HOLAP </strong>(a hybrid mixture of both).</p>
<p><span id="more-916"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Classical_ROLAP_Cubes">Classical ROLAP Cubes</a>
	</li>
	<li>
		<a href="#Building_MOLAP_Cubes">Building MOLAP Cubes</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Creating_a_new_Store">Creating a new Store</a>
			</li>
			<li>
				<a href="#Filling_the_Store_with_the_Model_Manager">Filling the Store with the Model Manager</a>
			</li>
			<li>
				<a href="#How_to_change_the_aggregation_scheme_for_dimensions_and_facts">How to change the aggregation scheme for dimensions and facts</a>
			</li>
			<li>
				<a href="#Resolving_errors_in_Stores">Resolving errors in Stores</a>
			</li>
			<li>
				<a href="#Combining_multiple_Stores">Combining multiple Stores</a>
			</li>
		</ol>
	<li>
		<a href="#Building_HOLAP_Cubes">Building HOLAP Cubes</a>
	</li>
	<li>
		<a href="#Refreshing_Offline_Stores">Refreshing Offline Stores</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Automatic_refresh">Automatic refresh</a>
			</li>
			<li>
				<a href="#Crontab_refresh">Crontab refresh</a>
			</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="Classical_ROLAP_Cubes"><h2>Classical ROLAP Cubes</h2></span>
<p>In instantOLAP, every Cube is by default a ROLAP cube. This is because we believe creating a new cube is very productive with adhoc cubes: You can add new dimensions to cubes or modify mappings and then instantly test the new results without any aggregation process (which may take time).</p>
<p>After you finished the first production quality version of your cube it is time to test its performance and to improve it if neccesary. This is when Offline Stores come into sight.</p>
<span id="Building_MOLAP_Cubes"><h2>Building MOLAP Cubes</h2></span>
<span id="Creating_a_new_Store"><h3>Creating a new Store</h3></span>
<p>Since version 2.6 building offline stores is very easy and comfortable: Use the context menu of the cube to add a new Offline Store to it. Then you must decide, which dimensions you want to add to the cube and how you want them to be loaded.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/addstore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-931" title="addstore" src="http://www.instantolap.com/wp-content/uploads/2010/07/addstore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="518" /></a></p>
<p>After you added the store, a new column will appear right to the mappings. In this new column you can define, which dimensions and facts you want to be added to the new Store.</p>
<p>Now it&#8217;s time to create the most simple form of a store: Add every dimension and fact to the store by clicking into the related cells of the column. A checkmark will show that the dimension or fact is now part of the Store.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/firststore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-932" title="firststore" src="http://www.instantolap.com/wp-content/uploads/2010/07/firststore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="519" /></a></p>
<span id="Filling_the_Store_with_the_Model_Manager"><h3>Filling the Store with the Model Manager</h3></span>
<p>Now you should open the Model Manager and fill the Store with data. Locate the Model in the Manager, open the Model Information dialog for &#8220;demo/demo&#8221; by double clicking the model and switch to the Cubes tab in the dialog.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/modelinfo.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-933" title="modelinfo" src="http://www.instantolap.com/wp-content/uploads/2010/07/modelinfo.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>Here you can see the new Store which replaced its source cube in the Cubes tab. The most important information for Stores is the &#8220;State&#8221; columns which shows if the Store is currently available (online), not available (offline) or building (online + building or offline + building).</p>
<p>Because our cube is not loaded yet, its state is &#8220;offline&#8221;. To load the Store, select it and use the &#8220;Rebuild&#8221; button from the toolbar at the right side. Then wait a few seconds and use the &#8220;Refresh&#8221; button from the toolbar to view the current state.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/loadedstore.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-934" title="loadedstore" src="http://www.instantolap.com/wp-content/uploads/2010/07/loadedstore.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>Now the store is loaded and the execution time of the demo reports will shrink from seconds to milliseconds. There are a couple of new informations in the table: The build time, the error message for the case the build process stopped with an error, the number of raised warning while loading the data and the Store size.</p>
<p>The Store size, the last reload timestamp and the build time are simple informations from the loading process. The build time show how long it took to load and aggregate the source data and the size shows the effective (compressed) size of the Store. This is not the number of cells the Store can deliver but the number of informations instantOLAP wrote to the local disk. In this oexample, the Store needs 73,863 records to deliver data for 151,632,000 cells, a compression of 2000:1!</p>
<p>The error message and the warnings are very important informations for the case your cube delivers no or wrong data or didn&#8217;t load at all.</p>
<span id="How_to_change_the_aggregation_scheme_for_dimensions_and_facts"><h3>How to change the aggregation scheme for dimensions and facts</h3></span>
<p>There are two different ways how to aggregate the values for higher levels of a dimension: By doing a rollup or by querying each single level.</p>
<p>Rolling up means that the system will only query the lowest level and single mapped keys from the database and calculate every upper level manually. Querying the levels means the system will perform one SQL query per level.</p>
<p>Be careful with the query scheme, because usually your Store contains more than one dimension. E.g. if you have three dimensions with three levels, this will perform 27 queries to the database. Ten dimensions with three levels means 118.000 queries, one for each possible combination of each dimension level!</p>
<p>But why should you use the query scheme? There are some reasons you might need this:</p>
<ul>
<li>One of your facts uses a COUNT DISTINCT aggregation, and this cannot be calculate by performing a rollup in some cases</li>
<li>Your hierarchy cannot be calculated by rolling up data because a key value is not the SUM, AVG or else of its children</li>
<li>Sometimes it can be faster to perform many small queries than a single, large one</li>
</ul>
<p>Also for facts you can change the aggregation scheme, but here you can change the aggregation formula the system uses. The default value is &#8220;default&#8221; &#8211; then the Store automatically determines the aggregation type from the SQL expression you mapped the fact with. But can also change it manually to one of the aggregations &#8220;SUM&#8221;, &#8220;AVG&#8221;, &#8220;MIN&#8221;, &#8220;MAX&#8221; etc. This is needed whenever the system is unable to automatically determine the aggregation from the SQL expression or simply want something different.</p>
<span id="Resolving_errors_in_Stores"><h3>Resolving errors in Stores</h3></span>
<p>There are some pitfalls when loading the data of a Cube into a Store. The Store might raise an error or collect warning while its building process. Whenever an error is raised you should, of course, fixed it and reload the Store again. But even warning should always be fixed, because they can be a reason for wrong data. But why can a Store raise errors or warnings when original cube works correct?</p>
<p>There two main reasons and they are not always easy to understand:</p>
<ul>
<li>In ROLAP cubes, the cube will of course only load data for the requested dimensions and facts. Which also means it will only use the tables containing information for this dimension and facts. But if you combined, for example, two different fact tables in one cube, the Store will perform <strong>one </strong>SQL query to gather both facts &#8211; and combining two fact tables means a full permutaion of both tables, the numbers get exponentially higher. Maybe with the ROLAP version of your cube you didn&#8217;t see the error, because you always used only one of the facts, but the Store combines everything.</li>
<li>Your cube may deliver data for more keys than a dimension contains. E.g. if you build a product dimension and filter the dimension to load only yellow products, you must apply the same filter to the cube. Otherwise, the cube will load facts for keys which are not part of the dimension, warn you (in fact, this is 99.99% of all warning a cube will raise are &#8220;missing keys&#8221;) and drop the row. Dropping the data itself is not the problem, because you don&#8217;t want the cube to load data for unknown keys, but your original ROLAP does it!  E.g. if the ROLAP cube is queried for the Amount of 2010 for all products, the ROLAP Cube will simply generate no WHERE statement for products, because you want all of them. But the store will calculate this value by rolling up all product data and the value will be less than the ROLAP value. This is not an error in the Store, it is originally located in the ROLAP Cube!</li>
</ul>
<p>As you can see, the source for all problems with Stores is the ROLAP Cube itself. Therefore, you should always look for error messages and warnings and try to eliminate the problems in you cube.</p>
<p>Also important for warnings: You need to know how to find them, because the model information only shows the number of raised warnings but not the warnings itself. The warnings are sent to the log while building the Store, therefore you should open the log console before starting your first Cube aggregations. It is also important to switch of the session filter before building the Store, because this is a system process not related to any (or your) user session.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/storewarnings.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-941" title="storewarnings" src="http://www.instantolap.com/wp-content/uploads/2010/07/storewarnings.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="600" height="275" /></a></p>
<span id="Combining_multiple_Stores"><h3>Combining multiple Stores</h3></span>
<p>Our simple approach to load all dimensions into a single Store is good for small Cubes, but with a raising number of dimensions the Store size will grow exponentially (this is, because the number of cells in a Cube is the product of all dimension sizes).</p>
<p>Adding more and more dimensions to a MOLAP Cube will bring every OLAP system to its limit -  including instantOLAP. We have a good experience with cubes up to one billion compressed datasets (Stores of this size can hold up to 5000 billion cells), but even if this number sounds very high it can easily be reached by combining 20 or more large dimensions. And aggregating this number of cells can take many hours.</p>
<p>Therefore, we have a different approach for this problem: Combining of multiple Stores. In practice, there are several combinations of dimensions which are used often and other combination which are used never or very seldom. This means, you can aggregate a ROLAP Cube into more than one Store, and each Store holds a smaller number of dimensions the original Cube contains.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-944" title="multiplestores" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="594" height="513" /></a></p>
<p>In this example we combined two Stores, one holding the Campaing dimension, the other the Manufacturer dimension. The system will now automatically choose the correct Store whenever a user queries the cube.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores2.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-945" title="multiplestores2" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores2.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<span id="Building_HOLAP_Cubes"><h2>Building HOLAP Cubes</h2></span>
<p>Now you might say &#8220;Okay, but what happens if the user queries all dimensions together or an unknown combination?&#8221;. This is where HOLAP comes into play: The &#8220;H&#8221; in HOLAP stands for hybrid &#8211; a mixture between offline MOLAP Stores and adhoc ROLAP Stores. You can create subset Stores and tell the system to use the orignial ROLAP Cube whenever an unknown combination of dimensions is queried. This means, you can deliver performant Stores but also a fallback solution for unmapped combinations.</p>
<p>How to turn an MOLAP Cube into an HOLAP Cube? There is a property for Cubes, &#8220;Keep Adhoc Cube With Stores&#8221;. Simply set the property to &#8220;true&#8221; and redisplay the Cubes in the Model Information dialog. Now you will see the original ROLAP Cube <strong>behind </strong>your Stores. And, because the order of Cubes and Stores is important in instantOLAP, the system will use the ROLAP cube only, if none of the Stores can deliver the wanted data.</p>
<p><a href="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores3.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignnone size-full wp-image-946" title="multiplestores3" src="http://www.instantolap.com/wp-content/uploads/2010/07/multiplestores3.png" alt="OLAP Cube, ROLAP, MOLAP, HOLAP: How to use Stores" width="598" height="261" /></a></p>
<p>You can see this in the Model Information also: When switching the property &#8220;Keep Adhoc Cube With Stores&#8221; to &#8220;true&#8221;, the original Cube appears behind the Stores. Simple but effective.</p>
<span id="Refreshing_Offline_Stores"><h2>Refreshing Offline Stores</h2></span>
<p>This is the last question: When will the system build or refresh my Stores? Of course, you don&#8217;t want to create the Stores manually after creating them. Therefore, there are two different ways to keep Stores up to date: Dimension triggered (automatic refresh) or time triggered (crontab refresh).</p>
<span id="Automatic_refresh"><h3>Automatic refresh</h3></span>
<p>The automatic refresh will always start the build of a Store whenever it is offline or one of its source dimensions changed (in this case, the Store must be rebuild otherwise it would contain corrupted data). To turn the automatic refresh on, set the switch &#8220;Build Offline Store Immedialtey&#8221; of the configuration / model to true.</p>
<span id="Crontab_refresh"><h3>Crontab refresh</h3></span>
<p>The alternative to automatic refresh is to refresh a Store triggered by a cron pattern. This cron pattern, which is a property of the Stores, you can manually control when the Store should be rebuild. Whenever a source dimension of the Store changes, the Store will fall back into the ROLAP mode and the data will be queried from the underlying database.</p>
<p>Usually, it is more comfortable to use automatic refresh, but there are sometimes reasons to manually controll the cron pattern. E.g. if you don&#8217;t want to stress your source database with the large SQL queries at daytime or if a source database is not available at certain times.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/olap-rolap-molap-holap-how-to-use-stores/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Overlay charts</title>
		<link>http://www.instantolap.com/howtos/overlay-charts#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/overlay-charts#comments</comments>
		<pubDate>Wed, 20 Jan 2010 21:36:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[Multiple Range]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Overlay Chart]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=462</guid>
		<description><![CDATA[Overlay charts with multiple ranges can visualize you OLAP data better. Learn, with examples and screenshots, how to realize them in instantOLAP.]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve been asked how to realize an overlay chart and how to place multiple ranges inside a single chart, so this article will show, using a simple example, how to do this.</p>
<p><img class="alignnone size-full wp-image-757" title="overlay1" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay1.png" alt="Overlay charts" width="604" height="422" /></p>
<p><span id="more-462"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Providing_the_chart_data">Providing the chart data</a>
	</li>
	<li>
		<a href="#Setting_the_chart_format">Setting the chart format</a>
	</li>
	<li>
		<a href="#Creating_a_second_range">Creating a second range</a>
	</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<p>Basically, each chart in instantOLAP is bound to a single pivot table. Overlay charts work generally in the same way, but because an overlay chart is composed from two or more charts, we will also need more than one pivot table to feed the chart with data &#8211; each table feeds a single chart. So the first step is to create a block which contains multiple tables.</p>
<span id="Providing_the_chart_data"><h3>Providing the chart data</h3></span>
<p>To create the first table, just use the &#8220;New pivot table&#8221; button from the right toolbar of the query editor. A new block, containing a single and empty table, will appear. Now drag a fact and a data series to the table, in out example this will be the &#8220;Amount&#8221; Fact and PRODUCT level from the Product dimension of the instantOLAP demo model.</p>
<p><img class="alignnone size-full wp-image-770" title="overlay2" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay21.png" alt="Overlay charts" width="206" height="68" /></p>
<p>Now you can add a second pivot table to the existing block by opening the context menu of the block (use the right mouse button on the title bar of the block). Use the menu item &#8220;Add pivot table&#8221; of the menu to add a second and emtpy table.</p>
<p><img class="alignnone size-full wp-image-772" title="overlay4" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay4.png" alt="Overlay charts" width="246" height="164" /></p>
<p>Because we want the new table to show data for the same samples, you should use the same iteration for the x-axis of the new new table as you did in the previous table. Only the fact in the y-axis will be a different one, in our example we will use the &#8220;Quantity&#8221; fact from the demo model.</p>
<p><img class="alignnone size-full wp-image-771" title="overlay3" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay31.png" alt="Overlay charts" width="206" height="110" /></p>
<p>This was the basic step for each chart generation: creating the source table(s) for your chart.</p>
<span id="Setting_the_chart_format"><h3>Setting the chart format</h3></span>
<p>It&#8217;s time to turn the table into chart: Use the context menu of the block and choose one of the overlay chart types. In out example we&#8217;ll use the &#8220;Bar / Line&#8221; chart which turns the first table into a bar chart and the second into a line chart.</p>
<p>If you execute the query now, you may recognize that there are really two charts, but the second one (the line chart) only displays a flat line at the bottom of the image. This is because till now both charts share the same range and the values for the fact &#8220;Amount&#8221; much bigger than for the fact &#8220;Quantity&#8221; (or its line). Therefire it&#8217;s down to the bottom. and we&#8217;ll have to add a second range to the chart and to scale the line to this new range.</p>
<span id="Creating_a_second_range"><h3>Creating a second range</h3></span>
<p>First of all you&#8217;ll have to activate the second range. There is a property named &#8220;Range 2 On&#8221; which has to be set to &#8220;true&#8221;. If you execute the query now you will see a second range, but the rest of the chart will look like before, including the  flat line chart.</p>
<p><img class="alignnone size-full wp-image-774" title="overlay6" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay6.png" alt="Overlay charts" width="602" height="420" /></p>
<p>This is because you must assign each of the chart to the ranges. By default, both charts are assigned to the range number 1, which is the default range at the left side of the chart. To re-assign the second (the line) chart to the new range at the right side, use the property &#8220;(Overlay) Series Range&#8221; property and set it to &#8220;2&#8243; (use &#8220;1&#8243; for the first range and &#8220;2&#8243; for the second). If you execute the query now you&#8217;ll recognize the line beeing scaled over the full image.</p>
<p><img class="alignnone size-full wp-image-757" title="overlay1" src="http://www.instantolap.com/wp-content/uploads/2010/01/overlay1.png" alt="Overlay charts" width="604" height="422" /></p>
<p>Now, you have created an overlay chart with two source tables and two ranges.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/overlay-charts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JDBC drivers</title>
		<link>http://www.instantolap.com/howtos/jdbc-drivers#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/jdbc-drivers#comments</comments>
		<pubDate>Mon, 18 Jan 2010 13:12:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[JDBC]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=508</guid>
		<description><![CDATA[JDBC drivers are needed to connect instantOLAP to its source databases. But where to find them and how to install drivers in Tomcat?]]></description>
			<content:encoded><![CDATA[<p>Before you can connect a database server with instantOLAP or any other Java application, you need a to install a matching database driver. For Java systems, you will need a driver which implements the Java JDBC standard and almost all database vendors provide a JDBC driver for their product.</p>
<p>Because of copyright reasons, only a few drivers are included in the instantOLAP standard distribution (an open source driver for Sybase and Microsoft SQL-Server and a second driver for HSQLDB databases). For all other database servers, you can find the driver in the internet. This is a list of the common database servers and some internet addresses where to find the driver.</p>
<p><span id="more-508"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#How_to_install_a_new_driver_under_Tomcat">How to install a new driver under Tomcat</a>
	</li>
	<li>
		<a href="#How_to_use_drivers_in_instantOLAP">How to use drivers in instantOLAP</a>
	</li>
	<li>
		<a href="#JDBC_drivers_for_database_servers">JDBC drivers for database servers</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Microsoft_SQL-Server">Microsoft SQL-Server</a>
				<ol class='toc-odd level-3'>
					<li>
						<a href="#Microsoft_SQL-Server_original_driver">Microsoft SQL-Server (original driver)</a>
					</li>
					<li>
						<a href="#Microsoft_SQL-Server_jDTS_open_source_driver">Microsoft SQL-Server (jDTS open source driver)</a>
					</li>
				</ol>
			<li>
				<a href="#MySQL">MySQL</a>
			</li>
			<li>
				<a href="#Oracle">Oracle</a>
			</li>
			<li>
				<a href="#Sybase">Sybase</a>
				<ol class='toc-odd level-3'>
					<li>
						<a href="#Sybase_original_Sybase_driver_jConnect">Sybase (original Sybase driver jConnect)</a>
					</li>
					<li>
						<a href="#Sybase_jDTS_open_source_driver">Sybase (jDTS open source driver)</a>
					</li>
				</ol>
			<li>
				<a href="#IBM_DB2">IBM DB/2</a>
			</li>
			<li>
				<a href="#Informix">Informix</a>
			</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<span id="How_to_install_a_new_driver_under_Tomcat"><h2>How to install a new driver under Tomcat</h2></span>
<p>If you use Apache Tomcat as your Application Server (which is the default Application Server installed together with instantOLAP), installing a new driver is very simple:</p>
<ol>
<li>Download the driver from the vendors driver page</li>
<li>If neccesary, extract the driver or execute the driver installer to extract the driver files onto your hard disk.</li>
<li>Locate the driver files (they always end with .jar) and copy them into the library folder of your Tomcat server. Depending on the Tomcat version, the library folder is &lt;tomcat&gt;/common/lib (for Tomcat 5.5) or &lt;tomcat&gt;/lib (for Tomcat 6)</li>
<li>Restart Tomcat</li>
</ol>
<span id="How_to_use_drivers_in_instantOLAP"><h2>How to use drivers in instantOLAP</h2></span>
<p>After you installed the driver in your Application Server you can use from instantOLAP. Generally there are two different ways to access a driver or database: You can connect the server directly out of instantOLAP or you can use a predefined datasource, which has to be prepared inside the Application Server. For testing, developing or small installations, we recommend the first alternative.</p>
<p>To connect a database directly out of instantOLAP, simply use the &#8220;Add datasource&#8221; button when you are inside the &#8220;Datasources&#8221; section of a configuration. This will open a datasource wizard, which asks you for the name, driver, connection URL and credentials of the target database. Refer our <a href="http://www.instantolap.com/docs/reference_2_6_1_en/4_3_1.html#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">online documentation</a> for more details.</p>
<span id="JDBC_drivers_for_database_servers"><h2>JDBC drivers for database servers</h2></span>
<span id="Microsoft_SQL-Server"><h3>Microsoft SQL-Server</h3></span>
<p>There are at least two good drivers for the Microsofts SQL-Server: The <strong>original Microsoft JDBC driver</strong> and the open source driver <strong>jDTS </strong>for Microsoft SQL and Sybase databases, which is included in the instantOLAP standard distribution.</p>
<span id="Microsoft_SQL-Server_original_driver"><h4>Microsoft SQL-Server (original driver)</h4></span>
<p>The original Microsoft JDBC driver can be found and downloaded from the Microsoft page.</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=99B21B65-E98F-4A61-B811-19912601FDC9&amp;displaylang=en" rel="nofollow" >Microsoft SQL Server JDBC Driver 2.0</a></li>
<li>Driver file(s): sqljdbc.jar</li>
<li>Driver class: com.microsoft.sqlserver.jdbc.SQLServerDriver</li>
<li>Connection-URL: jdbc:sqlserver://&lt;server&gt;[:&lt;port&gt;];databasename=&lt;database&gt;</li>
</ul>
<p>Escpecially in older versions of the originial driver, it is important to know how to form the connection URL. You must include the database name in your URL, otherwise you will be able to see the tables but not to access their content.</p>
<span id="Microsoft_SQL-Server_jDTS_open_source_driver"><h4>Microsoft SQL-Server (jDTS open source driver)</h4></span>
<p>jDTS is an open source alternative for Microsoft SQL and Sybase databases and already included in the instantOLAP standard distribution.</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://jtds.sourceforge.net/" rel="nofollow" >http://jtds.sourceforge.net</a></li>
<li>Driver files(s):  jdts-&lt;version&gt;.jar</li>
<li>Driver class: net.sourceforge.jtds.jdbc.Driver</li>
<li>Connection-URL: jdbc:jtds:sqlserver://&lt;server&gt;[:&lt;port&gt;][/&lt;database&gt;]</li>
</ul>
<span id="MySQL"><h3>MySQL</h3></span>
<p>When using MySQL databases, make sure to use the most current available driver version, because older drivers may cause problems with newer versions of the database.</p>
<ul>
<li>Download page: <a rel="nofollow" target="_blank" href="http://dev.mysql.com/downloads/#connector-j" rel="nofollow" >http://dev.mysql.com/downloads/#connector-j</a></li>
<li>Driver file(s): mysql-connector-java-&lt;version&gt;-bin.jar</li>
<li>Driver class: com.mysql.jdbc.Driver</li>
<li>Connection-URL: jdbc:mysql://&lt;server&gt;/&lt;database&gt;</li>
</ul>
<span id="Oracle"><h3>Oracle</h3></span>
<p>For Oracle databases it is imporant to use the correct version of the driver which matches the version of your database server. The drivers for all version can be downloaded from the Oracle page, but you will need to create an account before (if you don&#8217;t have already).</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html" rel="nofollow" >Oracle JDBC/UCP Download Page</a></li>
<li>Driver file(s): ojdbc15.jar or ojdbc16.jar</li>
<li>Driver class: oracle.jdbc.driver.OracleDriver</li>
<li>Connection-URL: jdbc:oracle:thin:@&lt;server&gt;:1521:&lt;database&gt;</li>
</ul>
<span id="Sybase"><h3>Sybase</h3></span>
<p>Like in the case of Microsoft SQL Server, you can use the original Sybase driver or the open source driver jDTS to connect a Sybase driver.</p>
<span id="Sybase_original_Sybase_driver_jConnect"><h4>Sybase (original Sybase driver jConnect)</h4></span>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://www.sybase.com/products/allproductsa-z/softwaredeveloperkit/jconnect" rel="nofollow" >jConnect &#8211; Software Developer Kit</a></li>
<li>Driver file(s): jconn3.jar</li>
<li>Driver class: com.sybase.jdbc2.jdbc.SybDriver</li>
<li>Connection-URL: jdbc:sybase:Tds:&lt;server&gt;[:&lt;port&gt;]/&lt;database&gt;</li>
</ul>
<span id="Sybase_jDTS_open_source_driver"><h4>Sybase (jDTS open source driver)</h4></span>
<p>jDTS is an open source alternative for Microsoft SQL and Sybase databases and already included in the instantOLAP standard distribution.</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://jtds.sourceforge.net/" rel="nofollow" >http://jtds.sourceforge.net</a></li>
<li>Driver file(s): jtds-&lt;version&gt;.jar</li>
<li>Driver class: net.sourceforge.jtds.jdbc.Driver</li>
<li>Connection-URL: jdbc:jtds:sybase://&lt;server&gt;[:&lt;port&gt;][/&lt;database&gt;]</li>
</ul>
<span id="IBM_DB2"><h3>IBM DB/2</h3></span>
<p>For all current versions of DB/2 you can use the Universal Database Driver (UDB) from DB/2. However, when you wan&#8217;t to connect a DB/2 database running on a mainframe system, you&#8217;ll have to purchase an additional license from IBM.</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://www-01.ibm.com/software/data/db2/ad/java.html" rel="nofollow" >IBM &#8211; Application Development with DB/2</a> (Follow the links and download the DB/2 client)</li>
<li>Driver file(s): db2jcc.jar</li>
<li>Driver class: com.ibm.db2.jcc.DB2Driver</li>
<li>Connection-URL: jdbc:db2://&lt;server&gt;[:&lt;port&gt;]/&lt;database&gt;</li>
</ul>
<span id="Informix"><h3>Informix</h3></span>
<p>Since IBM bought the Informix database, you can find the Informix drivers on the IBM homepage now, too:</p>
<ul>
<li>Download: <a rel="nofollow" target="_blank" href="http://www14.software.ibm.com/webapp/download/search.jsp?go=y&amp;rs=ifxjdbc" rel="nofollow" >IBM Software Downloads</a></li>
<li>Driver file(s): ifxjdbc.jar</li>
<li>Driver class: com.informix.jdbc.IfxDriver</li>
<li>Connection-URL: jdbc:informix-sqli://&lt;host&gt;:&lt;port&gt;/&lt;database&gt;:informixserver=&lt;dbservername&gt;</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/jdbc-drivers/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote control your OLAP server</title>
		<link>http://www.instantolap.com/howtos/remote-control-olap-server#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/remote-control-olap-server#comments</comments>
		<pubDate>Mon, 24 Aug 2009 17:11:59 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[Console]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[Remote control]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=209</guid>
		<description><![CDATA[The instantOLAP console allows to remote control you OLAP server, e.g. to rebuild a dimension or model after the source database changed. Learn about how to use the console and its commands.]]></description>
			<content:encoded><![CDATA[<p>There is an almost unknown tool within every instantOLAP installation, the <strong>instantOLAP Console</strong>, which allows to remote-control your instantOLAP server and to start, stop or rebuild models, to rebuild single dimensions or cubes or to perform a number of other operations.</p>
<p>The tool is very useful whenever instantOLAP loads its data from a data-warehouse and you want to rebuild certain models, dimensions or cubes after the ETL tool rebuild the warehouse or added new data to it.</p>
<p>This article describes, how to use the tool from batch-files or other Java applications (most ETL tools can call native Java commands) and which operations are available.</p>
<p><span id="more-209"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Starting_the_console_interactive_mode">Starting the console (interactive mode)</a>
	</li>
	<li>
		<a href="#Commands">Commands</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#BUILDDIMENSION_ltmodelgt_ltdimensiongt">BUILDDIMENSION &lt;model&gt; &lt;dimension&gt;</a>
			</li>
			<li>
				<a href="#BUILDDIMENSIONS_ltmodelgt">BUILDDIMENSIONS &lt;model&gt;</a>
			</li>
			<li>
				<a href="#BUILDSTORE_ltmodelgt_ltstoregt">BUILDSTORE &lt;model&gt; &lt;store&gt;</a>
			</li>
			<li>
				<a href="#BUILDSTORES_ltmodelgt">BUILDSTORES &lt;model&gt;</a>
			</li>
			<li>
				<a href="#CLEARCACHE_ltcachegt">CLEARCACHE &lt;cache&gt;</a>
			</li>
			<li>
				<a href="#CLEARCACHES">CLEARCACHES</a>
			</li>
			<li>
				<a href="#CLEARSTORE_ltmodelgt_ltstoregt">CLEARSTORE &lt;model&gt; &lt;store&gt;</a>
			</li>
			<li>
				<a href="#CLEARSTORES_ltmodelgt">CLEARSTORES &lt;model&gt;</a>
			</li>
			<li>
				<a href="#LISTDIMENSIONS_ltmodelgt">LISTDIMENSIONS &lt;model&gt;</a>
			</li>
			<li>
				<a href="#LISTMODELS">LISTMODELS</a>
			</li>
			<li>
				<a href="#MODELSTATE_ltmodelgt">MODELSTATE &lt;model&gt;</a>
			</li>
			<li>
				<a href="#QUIT">QUIT</a>
			</li>
			<li>
				<a href="#STARTSYNC_ltmodelgt_lttimeoutgt">STARTSYNC &lt;model&gt; &lt;timeout&gt;</a>
			</li>
			<li>
				<a href="#START_ltmodelgt">START &lt;model&gt;</a>
			</li>
			<li>
				<a href="#STOP_ltmodelgt">STOP &lt;model&gt;</a>
			</li>
			<li>
				<a href="#WAIT_ltsecondsgt">WAIT &lt;seconds&gt;</a>
			</li>
		</ol>
	<li>
		<a href="#Using_the_console_in_batch_mode">Using the console in batch mode</a>
	</li>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<p>The console is delivered as a simple Java archive (jar file) and is located in the folder &lt;instantOLAP&gt;/tools/console. You can use the archive from this location or copy it to another computer &#8211; no other resource (except a local Java installation) is needed to execute the application.</p>
<span id="Starting_the_console_interactive_mode"><h2>Starting the console (interactive mode)</h2></span>
<p>To start the console in the interactive mode, use the command:</p>
<pre>java -jar iolapConsole.jar &lt;server-url&gt; &lt;user&gt; &lt;password&gt;</pre>
<p>where &lt;server-url&gt; is the complete url to the backend-service of your instantOLAP-server and &lt;user&gt; and &lt;password&gt; are the credentials for your administrator account. E.g. the command for a local installation on port 8080 and with the administrator account would be:</p>
<pre>java -jar iolapConsole.jar http://localhost:8080/iolapWS admin admin</pre>
<p>If the jar file is not located in the current folder, you can also type its whole path (relative or absolute). After you logged successfully into the server, you will see the following welcome message:</p>
<pre>instantOLAP console
(c) 2006-2009 Thomas Behrends Softwareentwicklung e.K.
Connecting server http://localhost:8080/iolapWS...
ok
&gt;</pre>
<p>Now you can use one of following commands to control the server:</p>
<span id="Commands"><h2>Commands</h2></span>
<span id="BUILDDIMENSION_ltmodelgt_ltdimensiongt"><h3>BUILDDIMENSION &lt;model&gt; &lt;dimension&gt;</h3></span>
<p>This command rebuilds a single dimension of a model (and all dimensions being dependend on this). The command expects the model name and dimension name as argument.</p>
<p>Example:</p>
<pre>&gt; BUILDDIMENSION demo/demo Product
Building dimension Product of model demo/demo...</pre>
<span id="BUILDDIMENSIONS_ltmodelgt"><h3>BUILDDIMENSIONS &lt;model&gt;</h3></span>
<p>This command rebuilds all dimensions of the specified model. The only argument the command expects is the name of the model.</p>
<p>Example:</p>
<pre>&gt; BUILDDIMENSIONS demo/demo
Building dimensions of model demo/demo...</pre>
<span id="BUILDSTORE_ltmodelgt_ltstoregt"><h3>BUILDSTORE &lt;model&gt; &lt;store&gt;</h3></span>
<p>The command BUILDSTORE rebuilds a single store of the specified model, the store name has to be passed as second argument.</p>
<p>Example:</p>
<pre>&gt; BUILDSTORE demo/demo store1
Building store store1 of model demo/demo...</pre>
<span id="BUILDSTORES_ltmodelgt"><h3>BUILDSTORES &lt;model&gt;</h3></span>
<p>Rebuilds all stores of the specified model.</p>
<p>Example:</p>
<pre>&gt; BUILDSTORES demo/demo
Building stores of model demo/demo...</pre>
<span id="CLEARCACHE_ltcachegt"><h3>CLEARCACHE &lt;cache&gt;</h3></span>
<p>Use the command CLEARCACHE to empty a single cache of the model. After the execution, the cache still exists but contains no entries.</p>
<p>Example:</p>
<pre>&gt; CLEARCACHE demo/demo cache1
Clearing cache cache1 of model demo/demo...</pre>
<span id="CLEARCACHES"><h3>CLEARCACHES</h3></span>
<p>This command clear all caches of the specified model.</p>
<p>Example:</p>
<pre>&gt; CLEARCACHES demo/demo
Clearing caches of model demo/demo...</pre>
<span id="CLEARSTORE_ltmodelgt_ltstoregt"><h3>CLEARSTORE &lt;model&gt; &lt;store&gt;</h3></span>
<p>Clears a single store of the model and brings it into the &#8220;offline&#8221; state. Dependend on the configuration settings, the model will continue using the original adhoc version of the store, otherwise the system will immediatley start to rebuild the store again.</p>
<p>Example:</p>
<pre>&gt; CLEARSTORE demo/demo store1
Clearing store store1 of model demo/demo...</pre>
<span id="CLEARSTORES_ltmodelgt"><h3>CLEARSTORES &lt;model&gt;</h3></span>
<p>This command clears all stores of the model. Like in the CLEARSTORE command, the system will immediatley rebuild all stores dependend on the configuration settings.</p>
<p>Example:</p>
<pre>&gt; CLEARSTORES demo/demo
Clearing stores of model demo/demo...</pre>
<span id="LISTDIMENSIONS_ltmodelgt"><h3>LISTDIMENSIONS &lt;model&gt;</h3></span>
<p>This command returns a list of all dimensions of the specified model.</p>
<p>Example:</p>
<pre>&gt; LISTDIMENSIONS demo/demo
Agency
Anim
Campaigns
Manufacturer
Product
Time</pre>
<span id="LISTMODELS"><h3>LISTMODELS</h3></span>
<p>Returns a list of all models on your server, including the active and inactive ones. For each model, the current state is append as text. The following states are possible:</p>
<ul>
<li>ONLINE: The model is started and ready</li>
<li>BUILD: The model is currently starting</li>
<li>CLOSED: The model is currently not started</li>
<li>CLOSING: The model is currently shutting down</li>
<li>SYNC: The model is started and currently synchronizing its dimensions and / or cubes</li>
<li>ERROR: The model is not started because an error ocurred while starting it</li>
</ul>
<p>Example:</p>
<pre>&gt; LISTMODELS
demo/demo (ONLINE)
eventlog/eventlog (ONLINE)</pre>
<span id="MODELSTATE_ltmodelgt"><h3>MODELSTATE &lt;model&gt;</h3></span>
<p>This function returns the state of a specific model. The state is returned as number in this functions, the following states are possible:</p>
<ul>
<li>0 = CLOSED</li>
<li>1 = BUILD</li>
<li>2 = ONLINE</li>
<li>3 = SYNC</li>
<li>4 = ERROR</li>
<li>5 = CLOSING</li>
</ul>
<p>Example:</p>
<pre>&gt; MODELSTATE demo/demo
Request model-state for demo/demo...
State = 2</pre>
<span id="QUIT"><h3>QUIT</h3></span>
<p>This command stops the console.</p>
<span id="STARTSYNC_ltmodelgt_lttimeoutgt"><h3>STARTSYNC &lt;model&gt; &lt;timeout&gt;</h3></span>
<p>This function starts the synchronize process for a model, in which it is checking its cubes and dimensions if they are outaged. You must pass the timeout for the synchronize process in ms as second argument. This function is only useful if you want to synchronize the model immediatly, because the system synchronizes all its online models each minute.</p>
<p>Example:</p>
<pre>&gt; STARTSYNC demo/demo 1000
Starting model demo/demo synchronize...</pre>
<span id="START_ltmodelgt"><h3>START &lt;model&gt;</h3></span>
<p>This command starts the specified model.</p>
<p>Example:</p>
<pre>&gt;START demo/demo
Starting model demo/demo asynchron...</pre>
<span id="STOP_ltmodelgt"><h3>STOP &lt;model&gt;</h3></span>
<p>This command shuts down the specified model.<br />
Example:</p>
<pre>&gt; STOP demo/demo
Stopping model demo/demo...
ok</pre>
<span id="WAIT_ltsecondsgt"><h3>WAIT &lt;seconds&gt;</h3></span>
<p>This command simply waits the given number of seconds.</p>
<span id="Using_the_console_in_batch_mode"><h2>Using the console in batch mode</h2></span>
<p>The batch mode can be used to call the console from external batch files and to execute commands without user interaction. To execute a command, just add it and its arguments behind the standard arguments of the console, the syntax for the batch mode is:</p>
<pre>java -jar iolapConsole.jar &lt;server&gt; &lt;user&gt; &lt;pwd&gt; &lt;command&gt; [&lt;arg1&gt; [&lt;arg2&gt; [...] ] ]</pre>
<p>If you call the console in batch mode, it will immediatley execute the passed command and then exit. E.g. the following line</p>
<pre>java -jar iolapConsole.jar http://localost:8080/iolapWS admin admin START demo/demo</pre>
<p>would start the model &#8220;demo/demo&#8221; on a local server running on port 8080 and then return.</p>
<p>Note that all commands except STARTSYNC, also in the interactive mode, only fork the requested operation on the server and then return without waiting for the operation to be finished. However, if you send a number of commands for the same model to server, they will be queued and executed in sequential order.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/remote-control-olap-server/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to update instantOLAP in Apache Tomcat</title>
		<link>http://www.instantolap.com/howtos/how-update-instantolap-apache-tomcat#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/how-update-instantolap-apache-tomcat#comments</comments>
		<pubDate>Wed, 12 Aug 2009 17:02:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[Update]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=469</guid>
		<description><![CDATA[Whenever a new version of instantOLAP is released, you can either re-install the whole application or learn how to update the files in your existing installation. Read this article to learn about apache tomcat and instantOLAP updates.]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" style="margin-left: 20px; margin-top: -70px; margin-bottom: 0px;" title="tomcat" src="http://www.instantolap.com/wp-content/uploads/2009/08/tomcat.gif" alt="How to update instantOLAP in Apache Tomcat" width="130" height="92" />Of course, you could just download the new installer of instantOLAP and install the application in the same path again. But this has a number of disadvantages: 1. The download of the complete installation is much larger, 2. all of your personal settings in the server or for the instantOLAP would get lost and 3. the demo reports and the access rights and some other repository elements will be re- or overwritten with its original state again.</p>
<p>Therefore, this article describes, how to update instantOLAP when using the Apache Tomcat application server with some easy steps. The Tomcat server is included in the standard distribution of instantOLAP.</p>
<p><span id="more-469"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Updating_instantOLAP_step_by_step">Updating instantOLAP step by step</a>
		<ol class='toc-even level-2'>
			<li>
				<a href="#Download_the_updated_files">1. Download the updated files</a>
			</li>
			<li>
				<a href="#Stop_the_Tomcat_server">2. Stop the Tomcat server!</a>
			</li>
			<li>
				<a href="#Remove_the_webapp_folders">3. Remove the webapp folders</a>
			</li>
			<li>
				<a href="#Replace_the_war_files">5. Replace the war files</a>
			</li>
			<li>
				<a href="#Start_the_server_again">6. Start the server again</a>
			</li>
		</ol>
	<li>
		<a href="#Using_Tomcat_without_the_webapps_folders">Using Tomcat without the webapps folders</a>
	</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<p>Basically, updating instantOLAP is simple, there are only 6 simple steps you have to perform. But you have to be careful and must execute these steps in the right order, otherwise you may harm your Tomcat installation:</p>
<span id="Updating_instantOLAP_step_by_step"><h3>Updating instantOLAP step by step</h3></span>
<span id="Download_the_updated_files"><h4>1. Download the updated files</h4></span>
<p>Of course, before you start the update, you should download the new files of instantOLAP and put them somewhere (not in in the instantOLAP folder yet). On our download page, we always offer the files for manual installations at the bottom of the page, below the complete installation files.</p>
<p>These files end with the extension &#8220;.war&#8221; and are just zipped folders which are known and unpacked by the Tomcat server. Usually, you will need three files for a complete update of instantOLAP:</p>
<ul>
<li><strong>iolap.war</strong>: This is the Web-Portal of instantOLAP</li>
<li><strong>iolapWS.war</strong>: This is the backend (OLAP-Engine) of instantOLAP</li>
<li><strong>iolapWorkbench</strong>.war: This is the Webstart version of the instantOLAP Workbench. If all of your users use the Windows installation of the Workbench, you won&#8217;t need this file.</li>
</ul>
<span id="Stop_the_Tomcat_server"><h4>2. Stop the Tomcat server!</h4></span>
<p>This is the most important step at all, because removing the webapp folders as described in the next step will destroy parts of your tomcat configuration and it will no longer work.</p>
<span id="Remove_the_webapp_folders"><h4>3. Remove the webapp folders</h4></span>
<p>By default, Tomcat unpacks all war files into its subfolder &#8220;webapps&#8221;. Each war file becomes one folder and the server will not use the updated war files as long as their unpacked versions exist here. Therefore you&#8217;ll have to remove the folders &#8220;iolap&#8221;, &#8220;iolapWS&#8221; and &#8220;iolapWorbench&#8221; from here.</p>
<span id="Replace_the_war_files"><h4>5. Replace the war files</h4></span>
<p>Now you can move or copy the war files into the instantOLAP folder. The location where you must copy the files is &lt;instantOLAP&gt;/tomcat/iolap_webapps.</p>
<p>We always suggest to make a backup of the previous files in this folder before you replace them with the newer version.</p>
<span id="Start_the_server_again"><h4>6. Start the server again</h4></span>
<p>Now you can start the server again. After a couple of seconds, the Tomcat will start to unpack the war files into the webapps folder and instantOLAP will be available again.</p>
<p>Thats it.</p>
<span id="Using_Tomcat_without_the_webapps_folders"><h3>Using Tomcat without the webapps folders</h3></span>
<p>Beginning with version 2.6, the standard installation of instantOLAP will have a different Tomcat configuration and the server will no longer unpack the war files in the webapps folder.</p>
<p>Then you will no longer need to delete this folders when updating the system and cannot harm the server if you forget to shut down the server before removing this folders. Even better: Tomcat automatically recognizes the new war files in the iolap_webapps folder and updates itself without the need to stop/start itself.</p>
<p>If you want to, you can change this setting in your Tomcat installation, too. Stop the server, then open the file &lt;instantOLAP&gt;/tomcat/conf/server.xml and search for the entry unpackWARs=&#8221;true&#8221;. Simply change it from &#8220;true&#8221; to &#8220;false&#8221;. Now you should remove the instantOLAP folders from the &lt;instantOLAP&gt;/tomcat/webapps folder and can restart the Tomcat server.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/how-update-instantolap-apache-tomcat/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing data-based user access rules</title>
		<link>http://www.instantolap.com/howtos/implementing-data-based-user-access-rules#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/implementing-data-based-user-access-rules#comments</comments>
		<pubDate>Mon, 15 Dec 2008 13:59:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[OLAP]]></category>
		<category><![CDATA[User management]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=125</guid>
		<description><![CDATA[Some of our customers asked how to implement access rules (for dimensions and keys) based on data stored in their database. This is useful e.g. for sales information systems where sales representives only may see customers of the region they are responsible for and if this representive/region relationship is stored in the database. This article [...]]]></description>
			<content:encoded><![CDATA[<p>Some of our customers asked how to implement access rules (for dimensions and keys) based on data stored in their database. This is useful e.g. for sales information systems where sales representives only may see customers of the region they are responsible for and if this representive/region relationship is stored in the database.</p>
<p><span id="more-125"></span></p>
<div class='toc wptoc'>
<h2>Contents</h2>
<ol class='toc-odd level-1'>
	<li>
		<a href="#Step_1:_Add_a_user_dimension_to_your_model">Step 1: Add a user dimension to your model</a>
	</li>
	<li>
		<a href="#Step_2:_Add_access_rules_to_your_other_dimensions">Step 2: Add access rules to your other dimensions</a>
	</li>
</ol>
</ol>
</ol>
</div>
<div class='wptoc-end'>&nbsp;</div>
<p>This article describes how to implement such access rules in two steps for the customer / region example.</p>
<span id="Step_1:_Add_a_user_dimension_to_your_model"><h3>Step 1: Add a user dimension to your model</h3></span>
<p>Before you can use the user information in access rules, you must make them available inside the model. The only ways to do this is to load the information into a dimension. Use normal SQL-KeyLoader to access the user-database and to load the user information. There are two basic rules when creating a user dimension:</p>
<ul>
<li>The dimension must at least contain the <span style="text-decoration: underline;">exact</span> user-IDs at keys. The user keys can be loaded to the top-level or they can be grouped (e.g. to users groups), but they must be inside the dimension and contain the login-IDs.</li>
<li>All IDs for keys from other dimension to which the user should have access to must be stored as attributes in the user-keys. E.g. the list of all region IDs could be loaded as attribute &#8220;regions&#8221;. Later, you can use this attribute to match its values with the region-keys.</li>
</ul>
<span id="Step_2:_Add_access_rules_to_your_other_dimensions"><h3>Step 2: Add access rules to your other dimensions</h3></span>
<p>Now you can add access rules to your other dimension by referencing the current user-key and its attributes. Switch to the access rule editor by selecting the &#8220;Access&#8221; tabulator and start adding the rules to the dimension, e.g. to this &#8220;Customer&#8221; dimension.</p>
<p>The first part of your access rule has to find the current user key in the &#8220;User&#8221; dimension, because the user key is not automatically selected when the user executes a query. You could select the user in the query itself (in its &#8220;Filter&#8221; property) or you can use the FIND function in the access rules. The last solution is the better one because in this case you does not need to change every query (and you cannot forget this in future queries). The expression to find the current user is:</p>
<pre>FIND( User, USER() )</pre>
<p>where &#8220;User&#8221; is the name of your user dimension (you need to change it if your user-dimension has a different name). The function USER returns the name of the current user (his login). Because we search with the users login-name, it must exactly match the ID of the key in your dimension.</p>
<p>After you located the user key, you can use its attributes. E.g. if the user key has an attribute &#8220;regions&#8221;, which contains alle region id the user should have access to, the expression</p>
<pre>FIND( User, USER() ).regions</pre>
<p>will return the region codes. The result can contain no, one or multiple values (of course, a sales representive could be more responsible for more than one region).</p>
<p>Now the last thing is to match this region codes with the customer dimension. It is important to use relative expressions here and to match the REGION level (!) with the attribute, not the keys of the Customer dimension. E.g. the expression</p>
<pre>{REGION} IN FIND( User, USER() ).regions</pre>
<p>would convert the region name of the current customer, region (or whatever currently is selected) into a string and test its occurence in the region list of the user. Because REGION is a relative expression, this works for all levels of dimension: A customer is only visible if it belongs to a listed region, the regions itself is only visible if listed, and the root key of the Customer dimesion is only visible if one of the regions is listed.</p>
<p>Of course, you could also match the lowest level or match more than one level, but in most cases this is the typical expression we use for access restrictions. Sometimes it is neccesary to use dimension links &#8211; e.g. if the customer and region are stored in different dimensions, you would have to change the expression into something like:</p>
<pre>{CUSTOMER.region} IN FIND( User, USER() ).regions</pre>
<p>This only works, if the customer and region dimension are linked.</p>
<p>The last step is to add access rules for administrators or CEOs, which usually are allowed to see all keys of all dimensions. This can be done by a role-check in an additional access rule. The simple expression</p>
<pre>HASROLE( 'iolapAdmin' )</pre>
<p>would grant access to all keys for a user owning the role &#8220;iolapAdmin&#8221;. The expression always returns &#8220;true&#8221; if the user own this role, independend on the keys.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/implementing-data-based-user-access-rules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Query too complex&#8221;?</title>
		<link>http://www.instantolap.com/howtos/query-too-complex#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.instantolap.com/howtos/query-too-complex#comments</comments>
		<pubDate>Fri, 05 Dec 2008 13:37:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[HowTos]]></category>
		<category><![CDATA[OLAP]]></category>

		<guid isPermaLink="false">http://www.instantolap.com/?p=106</guid>
		<description><![CDATA[Ever experienced a "Query too complex" message when running a report in instantOLAP? Read here to solve the problem.]]></description>
			<content:encoded><![CDATA[<p>Because instantOLAP is usable as &#8220;adhoc&#8221; ROLAP tool, there is a maximum complexity for reports and a maximum number of loadable cube cells. When using adhoc-cubes, the system has to determine where to load which data from and which data is needed to populate the result or to calculate formulas.</p>
<p><span id="more-106"></span></p>
<p>This must be done <em>before </em>sending any SQL statement to the databases and in instantOLAP this is realized with the internal &#8220;ToDo List&#8221;, which lists all needed cells and tries to resolve the source for each cell (when running a reports, you can see the generation of the ToDo-List in the Log). There is a maximum size for ToDo-Lists, and if the lists exceed this limit, the system raises the &#8220;Query too complex&#8221; error. The default maximum size for this ToDo-List is 250.000 cells, but it can be changed easily in the configuration. However, increasing the maximum will result in longer running and more memory-using reports.</p>
<p>There are several possible strategies to avoid large ToDo-List, and some of them are only available in our new version 2.5 or later:</p>
<ol>
<li><strong>Try to calculate as much as possible inside the database:</strong> E.g. if you only have a &#8220;Quantity&#8221; and &#8220;Product price&#8221; stored in the database, the &#8220;Turnaround&#8221; (calculated by Quantity * Price) could be realized with a formula. But this formula would add 2 additional entries to the ToDo-List (for each &#8220;Turnaround&#8221; cell, an additional &#8220;Quantity&#8221; and &#8220;Price&#8221; would be necessary) and the list would become three times bigger than needed. If you use the database to calculate this fact and use a SQL expression like &#8220;SUM( table1.quantity * table.price)&#8221;, the SQL cube could deliver the fact on itself and the ToDo-List would remain small.</li>
<li><strong>Use LOOKUPs:</strong> When creating large and sparse reports, where only a small percentage of the cells will be filled with data, instantOLAP will also generate ToDo-Entries for this empty cells. If you use the LOOKUP function to eliminate empty rows or columns in ahead, you can reduce the size of the ToDo-List dramatically.</li>
<li><strong>CLUSTER your selections:</strong> One of the main reasons for large ToDo-Lists are multiple- and range-selectors. E.g. if you have a small pivot table but a range-selector for months and a display aggregated fact (like SUM(Amount()) in your cells, the system will need to load the amount for each cell in combination with each selected month. So, the ToDo-list for 15 selected months would be 15 times larger than for a single month. But you can use the CLUSTER function in your query filter and reduce the number of selected keys for the time dimension. The CLUSTER function replaces selection by their parent, if all of its children are selected. E.g. if you select a whole year, the function will replace the months by their parent year key.</li>
<li><strong>Use offline cubes</strong>: Since version 2.5, there is no need for any ToDo-List if every cube in the model is in the offline mode. Then, instantOLAP has to generate no SQL statements (and no ToDo-Lists) and every data will be loaded directly out of the offline stores.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.instantolap.com/howtos/query-too-complex/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using disk (enhanced) (user agent is rejected)

Served from: www.instantolap.com @ 2012-02-04 09:16:19 -->
