Analysis Guide
Analysis Guide
This document supports Pentaho Business Analytics Suite 4.8 GA and Pentaho Data Integration 4.4 GA, documentation revision October 31, 2012. This document is copyright 2012 Pentaho Corporation. No part may be reprinted without written permission from Pentaho Corporation. All trademarks are the property of their respective owners.
Trademarks
Pentaho (TM) and the Pentaho logo are registered trademarks of Pentaho Corporation. All other trademarks are the property of their respective owners. Trademarked names may appear throughout this document. Rather than list the names and entities that own the trademarks or insert a trademark symbol with each mention of the trademarked name, Pentaho states that it is using the names for editorial purposes only and to the benefit of the trademark owner, with no intention of infringing upon that trademark.
Company Information
Pentaho Corporation Citadel International, Suite 340 5950 Hazeltine National Drive Orlando, FL 32822 Phone: +1 407 812-OPEN (6736) Fax: +1 407 517-4575 http://www.pentaho.com E-mail: communityconnection@pentaho.com Sales Inquiries: sales@pentaho.com Documentation Suggestions: documentation@pentaho.com Sign-up for our newsletter: http://community.pentaho.com/newsletter/
| TOC | 3
Contents
Introduction................................................................................................................................ 6 ROLAP Defined......................................................................................................................... 7 Pentaho Analysis Enterprise Edition Features.......................................................................... 8 Workflow Overview.................................................................................................................... 9 Dimensional Modeling............................................................................................................. 11
Virtual ROLAP Cubes................................................................................................................................. 11
Logging.................................................................................................................................... 56
Analysis SQL Output Logging.....................................................................................................................56 Enabling Segment Cache Logging............................................................................................................. 56 Viewing Log Output in Analyzer..................................................................................................................56
Troubleshooting....................................................................................................................... 58
Old Analysis Schemas Still Show Up in Pentaho User Console................................................................ 58 Multi-Byte Characters Don't Appear In PDFs Exported From Analyzer......................................................58
| TOC | 5 Row.............................................................................................................................................................76 Rows...........................................................................................................................................................76 Schema.......................................................................................................................................................77 SchemaGrant..............................................................................................................................................77 SQL.............................................................................................................................................................77 Table...........................................................................................................................................................78 Union.......................................................................................................................................................... 78 UserDefinedFunction.................................................................................................................................. 79 Value...........................................................................................................................................................79 View............................................................................................................................................................ 79 VirtualCube................................................................................................................................................. 79 VirtualCubeDimension................................................................................................................................ 80 VirtualCubeMeasure................................................................................................................................... 80
| Introduction | 6
Introduction
This guide helps BI administrators prepare their data for use with the Pentaho Analyzer, Pentaho Report Designer, and JPivot client tools. The collection of analysis components in Pentaho Business Analytics enables you to visualize data trends and reveal useful information about your business. You can do this by creating static reports from an analysis data source, traversing an analysis cube through an Analyzer report, showing how data points compare by using charts, and monitoring the status of certain trends and thresholds with dashboards. Before you can begin using any client tools, you must consolidate data from disparate sources into one canonical source and optimize it for the metrics you want to analyze; create an analysis schema to describe the data; iteratively improve that schema so that it meets your users' needs; and create aggregation tables for frequently computed views.
| ROLAP Defined | 7
ROLAP Defined
Pentaho Analysis is built on the Mondrian relational online analytical processing (ROLAP) engine. ROLAP relies on a multidimensional data model that, when queried, returns a dataset that resembles a grid. The rows and columns that describe and bring meaning to the data in that grid are dimensions, and the hard numerical values in each cell are the measures or facts. In Pentaho Analyzer, dimensions are shown in yellow and measures are in blue. ROLAP requires a properly prepared data source in the form of a star or snowflake schema that defines a logical multidimensional database and maps it to a physical database model. Once you have your initial data structure in place, you must design a descriptive layer for it in the form of a Mondrian schema, which consists of one or more cubes, hierarchies, and members. Only when you have a tested and optimized Mondrian schema is your data prepared on a basic level for end-user tools like Pentaho Analyzer and JPivot. See Workflow Overview on page 9 for a more comprehensive overview of the Pentaho Analysis data preparation workflow, including which Pentaho tools you will need to execute this process. For concise definitions of ROLAP terms, refer to Mondrian Schema Element Quick Reference on page 59 and the individual element pages it references.
Use of these features requires a Pentaho Analysis Enterprise Edition license installed on the BA Server and workstations that have Schema Workbench and Metadata Editor. A special BA Server package must also be installed; this process is covered in the Pentaho Business Analytics installation documentation. All relevant configuration options for these features are covered in this guide.
| Workflow Overview | 9
Workflow Overview
To prepare data for use with the Pentaho Analysis (and Reporting, to a certain extent) client tools, you should follow this basic workflow: Design a Star or Snowflake Schema The entire process starts with a data warehouse. This guide will not attempt to explain how to build this structure -there are entire books on the subject, and an entire consulting industry dedicated to it already. The end result should be data model in the star or snowflake schema pattern. You don't have to worry too much about getting the model exactly right on your first try. Just cover all of your anticipated business needs; part of the process is coming back to the data warehouse design step and making changes to your initial data model after you've discovered what your operational needs are. Populate the Star/Snowflake Schema Once your data model is designed, the next step is to populate it with actual data, thereby creating your data warehouse. The best tool for this job is Pentaho Data Integration, an enterprise-grade extract, transform, and load (ETL) application. Build a Mondrian Schema Now that your initial data warehouse project is complete, you must build a Mondrian schema to organize and describe it in terms that Pentaho Analysis can understand. This is also accomplished through Pentaho Data Integration by using the Agile BI plugin. Just connect to your data warehouse and auto-populate your schema with the Modeler graphical interface. Alternatively, you can use Pentaho Schema Workbench to create an analysis schema through a manual process. Initial Testing At this point you should have a multi-dimensional data structure with an appropriate metadata layer. You can now start using Pentaho Analyzer and JPivot to drill down into your data and see if your first attempt at data modelling was successful. In all likelihood, it will need some adjustment, so take note of all of the schema limitations that you're unhappy with during this initial testing phase. Do not be concerned with performance issues at this time -- just concentrate on the completeness and comprehensiveness of the data model. Adjust and Repeat Until Satisfied Use the notes you took during the testing phase to redesign your data warehouse and Mondrian schema appropriately. Adjust hierarchies and relational measure aggregation methods. Create virtual cubes for analyzing multiple fact tables by conforming dimensions. Re-test the new implementation and continue to refine the data model until it matches your business needs perfectly. Test for Performance Once you're satisfied with the design and implementation of your data model, you should try to find performance problems and address them by tuning your data warehouse database, and by creating aggregation tables. The testing can only be reasonably done by hand, using Pentaho Analyzer and/or JPivot. Take note of all of the measures that take an unreasonably long time to calculate. Also, enable SQL logging and locate slow-performing queries, and build indexes for optimizing query performance. Create Aggregation Tables Using your notes as a guide, create aggregation tables in Pentaho Aggregation Designer to store frequently computed analysis views. Re-test and create new aggregation tables as necessary. If you are working with a relatively small data warehouse or a limited number of dimensions, you may not have a real need for aggregation tables. However, be aware of the possibility that performance issues may come up in the future. Check in with your users occasionally to see if they have any particular concerns about the speed of their BI content.
| Workflow Overview | 10 Deploy to Production Your data warehouse and Mondrian schema have been created, tested, and refined. You're now ready to put it all into production. You may need to train or purchase Pentaho training for those in your organization who use Pentaho client tools.
| Dimensional Modeling | 11
Dimensional Modeling
Dimensional modeling is the process of transforming data from multiple sources in non-human-friendly formats into a single data source that is organized to support business analytics. Below is a typical workflow for developing a dimensional model: 1. 2. 3. 4. 5. 6. 7. Collect user requirements for business logic and processes Considering the entirety of your data, break it down into subjects Isolate groups of facts into one or more fact tables Design dimensional tables that draw relationships between levels (fact groups) Determine which members of each level are useful for each dimensional table Build and publish a Mondrian (Pentaho Analysis) schema and collect feedback from users Refine your model based on user feedback, continue iterating through this list until users are productive
Or, expressed as a series of questions: 1. What topics or subjects are important to the users who are analyzing the data? What do your users need to learn from the data? 2. What are the important details your users will need to examine in the data? 3. How should each data column relate to other data columns? 4. How should datasets be grouped and organized? 5. What are some useful short descriptions for each dimensional level in a hierarchy (for each element, decide what is useful within that element; for instance, in a dimensional table representing time, your levels might be year, month, and day, and your members for the year level might be 2003, 2004, 2005). 6. How effective is this dimensional model for the intended userbase? How can it improve? The Agile BI tools in Pentaho Data Integration make dimensional modeling much easier than the traditional methods. Through PDI, you can quickly adjust your business logic, the granularity of your fact tables, and the attributes of your dimension tables, then generate a new model and push it out to a test environment for evaluation.
| Dimensional Modeling | 12 instance one on Products, Time and Customer, another on Products, Time and Warehouse), and you need to present the results to users who don't know how the data is structured. Any common dimensions -- shared dimensions which are used by both constituent cubes -- are automatically synchronized. In this example, [Time] and [Products] are common dimensions. So if the context is ([Time].[2005].[Q2], [Products].[Productname].[P-51-D Mustang]), measures from either cube will relate to this context. Dimensions which only belong to one cube are called non-conforming dimensions. The [Gender] dimension is an example of this; it exists in the Sales cube, but not Warehouse. If the context is ([Gender].[F], [Time].[2005].[Q1]), it makes sense to ask the value of the [Unit Sales] measure (which comes from the [Sales] cube) but not the [Units Ordered] measure (from [Warehouse]). In the context of [Gender].[F], [Units Ordered] has value NULL. <VirtualCube name="Warehouse and Sales"> <CubeUsages> <CubeUsage cubeName="Sales" ignoreUnrelatedDimensions="true"/> <CubeUsage cubeName="Warehouse"/> </CubeUsages> <VirtualCubeDimension cubeName="Sales" name="Customers"/> <VirtualCubeDimension cubeName="Sales" name="Education Level"/> <VirtualCubeDimension cubeName="Sales" name="Gender"/> <VirtualCubeDimension cubeName="Sales" name="Marital Status"/> <VirtualCubeDimension name="Product"/> <VirtualCubeDimension cubeName="Sales" name="Promotion Media"/> <VirtualCubeDimension cubeName="Sales" name="Promotions"/> <VirtualCubeDimension name="Store"/> <VirtualCubeDimension name="Time"/> <VirtualCubeDimension cubeName="Sales" name="Yearly Income"/> <VirtualCubeDimension cubeName="Warehouse" name="Warehouse"/> <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Sales Count]"/> <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Cost]"/ > <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Store Sales]"/> <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Unit Sales]"/ > <VirtualCubeMeasure cubeName="Sales" name="[Measures].[Profit Growth]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Store Invoice]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Supply Time]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Ordered]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Units Shipped]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Cost]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Profit]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Warehouse Sales]"/> <VirtualCubeMeasure cubeName="Warehouse" name="[Measures].[Average Warehouse Sale]"/> <CalculatedMember name="Profit Per Unit Shipped" dimension="Measures"> <Formula>[Measures].[Profit] / [Measures].[Units Shipped]</ Formula> </CalculatedMember> </VirtualCube>
| Prototyping With Pentaho Data Integration | 14 1. Start Spoon and connect to your repository, if you are using one. cd ~/pentaho/design-tools/data-integration/ && ./spoon.sh 2. Open the transformation that produces the data source you want to create a ROLAP schema for. 3. Right-click your output step, then select Model from the context menu. 4. Drag items from the Data pane on the left and drop them into either the Measures or Dimensions groups in the Model pane in the center. The Measures and Dimensions groups will expand to include the items you drag into them. 5. Select each new measure and dimension item, and modify its details accordingly in the Properties pane on the right. 6. Save your model through the File menu, or publish it to the BA Server using the Publish icon above the Model pane. You now have a basic ROLAP schema. You should test it yourself before putting it into production. To do this, continue on to Testing With Pentaho Analyzer and Report Wizard on page 14.
Prototypes in Production
Once you're ready to test your ROLAP schema on a wider scale, use the Publish button above the Model pane in the Model perspective, and use it to connect to your test or development BA Server. You can continue to refine your schema if you like, but it must be republished each time you want to redeploy it. Note: Agile BI is for prototyping only. It is extremely useful for developing ROLAP schemas that meet the needs of BI developers, business users, and database administrators. However, it should not be used for production. Rather, once your Agile BI schema has been refined, you will have to either hand-edit it in Schema Workbench to optimize it for performance, or completely re-implement the entire model with Schema Workbench.
| Creating and Modifying Mondrian Schemas | 17 Note: Microsoft SQL Server users frequently use an alternative, non-vendor-supported driver called JTDS. If you are adding an MSSQL data source, ensure that you are installing the correct driver. Backing up old drivers You must also ensure that there are no other versions of the same vendor's JDBC driver installed in these directories. If there are, you may have to back them up and remove them to avoid confusion and potential class loading problems. This is of particular concern when you are installing a driver JAR for a data source that is the same database type as your Pentaho solution repository. If you have any doubts as to how to proceed, contact your Pentaho support representative for guidance. Installing JDBC drivers Copy the driver JAR file to the following directories, depending on which servers and client tools you are using (Dashboard Designer, ad hoc reporting, and Analyzer are all part of the BA Server): Note: For the DI Server: before copying a new JDBC driver, ensure that there is not a different version of the same JAR in the destination directory. If there is, you must remove the old JAR to avoid version conflicts. BA Server: /pentaho/server/biserver-ee/tomcat/lib/ Enterprise Console: /pentaho/server/enterprise-console/jdbc/ Data Integration Server: /pentaho/server/data-integration-server/tomcat/webapps/pentaho-di/ WEB-INF/lib/ Data Integration client: /pentaho/design-tools/data-integration/libext/JDBC/ Report Designer: /pentaho/design-tools/report-designer/lib/jdbc/ Schema Workbench: /pentaho/design-tools/schema-workbench/drivers/ Aggregation Designer: /pentaho/design-tools/agg-designer/drivers/ Metadata Editor: /pentaho/design-tools/metadata-editor/libext/JDBC/ Note: To establish a data source in the Pentaho Enterprise Console, you must install the driver in both the Enterprise Console and the BA Server or Data Integration Server. If you are just adding a data source through the Pentaho User Console, you do not need to install the driver to Enterprise Console. Restarting Once the driver JAR is in place, you must restart the server or client tool that you added it to. Connecting to a Microsoft SQL Server using Integrated or Windows Authentication The JDBC driver supports Type 2 integrated authentication on Windows operating systems through the integratedSecurity connection string property. To use integrated authentication, copy the sqljdbc_auth.dll file to all the directories to which you copied the JDBC files. The sqljdbc_auth.dll files are installed in the following location: <installation directory>\sqljdbc_<version>\<language>\auth\ Note: Use the sqljdbc_auth.dll file, in the x86 folder, if you are running a 32-bit Java Virtual Machine (JVM) even if the operating system is version x64. Use the sqljdbc_auth.dll file in the x64 folder, if you are running a 64-bit JVM on a x64 processor. Use the sqljdbc_auth.dll file in the IA64 folder, you are running a 64-bit JVM on an Itanium processor.
| Creating and Modifying Mondrian Schemas | 18 The Pentaho User Console uses datasources.xml to populate a schema drop-down selection list that appears when users create new analysis views and Analyzer reports. As you phase out old analysis schemas, you will have to manually remove their <DataSource> entries in datasources.xml. Below is the example datasources.xml that ships with a default Pentaho configuration: datasources.xml <?xml version="1.0" encoding="UTF-8"?> <DataSources> <DataSource> <DataSourceName>Provider=Mondrian;DataSource=Pentaho</DataSourceName> <DataSourceDescription>Pentaho BI Platform Datasources</DataSourceDescription> <URL>http://localhost:8080/pentaho/Xmla?userid=joe&password=password</URL> <DataSourceInfo>Provider=mondrian</DataSourceInfo> <ProviderName>PentahoXMLA</ProviderName> <ProviderType>MDP</ProviderType> <AuthenticationMode>Unauthenticated</AuthenticationMode> <Catalogs> <Catalog name="SteelWheels"> <DataSourceInfo>Provider=mondrian;DataSource=SampleData</DataSourceInfo> <Definition>solution:steel-wheels/analysis/ steelwheels.mondrian.xml</Definition> </Catalog> <Catalog name="SampleData"> <DataSourceInfo>Provider=mondrian;DataSource=SampleData</DataSourceInfo> <Definition>solution:steel-wheels/analysis/SampleData.mondrian.xml</ Definition> </Catalog> </Catalogs> </DataSource> </DataSources>
| Creating and Modifying Mondrian Schemas | 19 9. Select a foreign key for this dimension from the foreignKey drop-down box, or just type it into the field. 10.When you add a dimension, a new hierarchy is automatically created for it. To configure the hierarchy, expand the dimension by clicking the lever icon on the left side of the dimension's tree entry, then click on New Hierarchy 0. Choose a primaryKey or primaryKey Table. 11.Add a table to the hierarchy by right-clicking the hierarchy, then selecting Add Table from the context menu. 12.Choose a column for the name attribute. 13.Add a level to the hierarchy by right-clicking the hierarchy, then selecting Add Level from the context menu. 14.Give the level a name and choose a column for it. 15.Add a member property to the level by right-clicking the level, then selecting Add Property from the context menu. 16.Give the property a name and choose a column for it. 17.Add a measure to the cube by right-clicking the cube and selecting Add Measure from the context menu. 18.Choose a column that you want to provide values for, then select an aggregator to determine how the values should be calculated. These instructions have shown you how to use Schema Workbench's interface to add and configure basic Mondrian schema elements. When your schema is finished, you should test it with a basic MDX query such as: select {[Dim1].[All Dim1s]} on rows, {[Measures].[Meas1]} on columns from [CubeName] In order to use your schema as a data source in any Pentaho Business Analytics client tools, you must publish it to the BA Server. To do this, select Publish from the File menu, then enter in your BA Server connection information and credentials when requested.
This attribute can be set on the following schema elements: Level Measure CalculatedMember
To adjust for these limitations and to enable some Analyzer functions to work properly, you must make the changes explained in the subsections below.
| Creating and Modifying Mondrian Schemas | 21 The Day line above also specifies a format to represent the entire date. Without this format, a simple [d] parameter would be difficult to put into context. For more information on date format strings, refer to the SimpleDateFormat page on the ICU Project site: http://icu-project.org/apiref/icu4j/com/ibm/icu/text/SimpleDateFormat.html. To setup relative date filtering, for each level, you need to do the following: In your Mondrian schema file, set the levelType XML attribute to TimeYears, TimeMonths, TimeQuarters, TimeWeeks or TimeDate Define the MDX date member format as an annotation with the name AnalyzerDateFormat.
Here is an example from the Pentaho sample data (Steel Wheels) Time dimension: <Level name="Years" levelType="TimeYears" ... > <Annotations><Annotation name="AnalyzerDateFormat">[yyyy]</Annotation></ Annotations> </Level> <Level name="Quarters" levelType="TimeQuarters" ... > <Annotations><Annotation name="AnalyzerDateFormat">[yyyy].['QTR'q]</Annotation></ Annotations> </Level> <Level name="Months" levelType="TimeMonths" ... > <Annotations><Annotation name="AnalyzerDateFormat">[yyyy].['QTR'q].[MMM]</ Annotation></Annotations> </Level>
Member properties In addition to retrieving coordinates from the Geo Service, the location Geo.Role value defines a level with member properties supplying Latitude and Longitude values. Levels that are tagged with location must also provide two
| Creating and Modifying Mondrian Schemas | 22 member properties with the exact names of latitude and longitude that point to the column in the database which contains these values for the level. <Level name="LatTest" column="CUSTOMERNUMBER" type="Numeric" uniqueMembers="false"> <Annotations> <Annotation name="Data.Role">Geography</Annotation> <Annotation name="Geo.Role">location</Annotation> </Annotations> <Property name="CUSTOMER_LAT" column="CUSTLAT" type="Numeric" /> <Property name="CUSTOMER_LON" column="CUSTLON" type="Numeric"/> </Level>
| Creating and Modifying Mondrian Schemas | 23 foodmart.dimension.store.name.caption=Store Name foodmart.dimension.store.state.caption=Store State foodmart.dimension.store.name.property_manager.caption=Store Manager foodmart.dimension.store.name.property_storesqft.caption=Store Sq. Ft. foodmart.dimension.store.allmember.caption=All Stores foodmart.dimension.store.caption=Store foodmart.cube.sales.caption=Sales foodmart.dimension.store.city.caption=Store City foodmart.cube.sales.measure.unitsales=Unit Sales 8. Start the BA Server. Your analysis schemas will now be localized to whatever language is currently selected in the Pentaho User Console, if a message bundle for that locale was copied to the proper directory as explained above.
You can localize the Pentaho User Console, Pentaho Analyzer, and Dashboard Designer by creating locale- and language-specific message bundles within the Pentaho Web application. Message bundles are dynamically adjusted according to browser locale, so you can create localized message bundles for every language you want to support, and let each individual user's system language settings determine which one is loaded. For brevity's sake, only the default Pentaho User Console files will be explained in detail. The file naming convention is identical among all message bundles in Pentaho Business Analytics. The following files are located in the /mantle/ messages/ directory: mantleMessages.properties: The default message bundle for the Pentaho User Console. In its initial condition, it is a copy of mantleMessages_en.properties. If you want to change the default language and dialect, copy your preferred message bundle file over this one. mantleMessages_en.properties: The English-language version of the standard message bundle. This is an identical copy of mantleMessages.properties. mantleMessages_fr.properties: The French-language version of the standard message bundle. mantleMessages_de.properties: The German-language version of the standard message bundle. mantleMessages_supported_languages.properties: Contains a list of localized message bundles and the native language names they correspond to; this relieves the BA Server of the burden of having to discover them on its own. A supported_languages.properties file should be created for every message bundle that you intend to localize.
Example of mantleMessages_supported_languages.properties en=English de=Deutsch fr=Franais New files are created in the following format: mantleMessages_xx_YY.properties where xx represents a lowercase two-letter language code, and YY represents a two-letter locale code, where applicable. So, for instance, U.S. and British English could have two separate message bundles if you wanted to draw a distinction between the two dialects: mantleMessages_en_US.properties mantleMessages_en_GB.properties
The language and country codes must be in standard ISO format. You can look up both sets of codes on these pages: http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes http://www.iso.org/iso/country_codes/iso_3166_code_lists.htm
You can edit the default message bundle directly if you need to make surgical changes to the content inside of it. If you plan to translate it into another language, it makes more sense to copy the file and change the name appropriately, then translate it line by line. Be sure to update supported_languages.properties with the new country and dialect code and the native language name that it corresponds to. Note: All message bundles must be UTF-8 encoded.
| Configuring Analysis Options | 29 Used in conjunction with the mondrian.native.ExpandNonNative property. This should be set to as large as the underlying DB can support. mondrian.native.ExpandNonNative=true Allows pushdown of even more crossjoins by materializing the crossjoin inputs into IN lists. For example, a crossjoin whose inputs are MDX functions can first have their inputs evaluated to members and then convert the crossjoin into native evaluation. mondrian.olap.elements.NeedDimensionPrefix=true Analyzer always generates dimension qualified members so no need to spend time searching for members on different dimensions. Usability mondrian.result.limit=5000000 In the event that pushdown cannot occur, this is the largest crossjoin size that Mondrian should try to process. Anything that exceeds this will likely send the CPU for a toss and result in long server hangs. If this limit is hit, Analyzer will present the user a nice warning suggesting options to simplify the report. mondrian.olap.case.sensitive=true This is important for "Equals" filters because the UI will preserve the casing of filter values. If the user defines a filter on "John Doe", then the filter should only applies to "John Doe" and not "john doe" mondrian.rolap.ignoreInvalidMembers=true This is important for saved reports because the user may build a report with a filter on 10 sales rep and after the next ETL, one of them is gone. The report should continue to run and return just the 9 remaining sales reps. mondrian.rolap.ignoreInvalidMembersDuringQuery=true See mondrian.rolap.ignoreInvalidMembers mondrian.rolap.iterationLimit=5000000 Similar to mondrian.result.limit except for controlling limits on aggregate evaluation. mondrian.rolap.compareSiblingsByOrderKey=true This is required for sorting members in a dimension A->Z or Z->A. This property fixes a bug in Mondrian but was added for backward compatibility. mondrian.olap.NullDenominatorProducesNull=true The best way to understand this property is via an example. Suppose you want to see quota attainment for your sales reps which is computed as Booked Deals / Quota. Some reps may not have quotas and so quota attainment is either infinity or null. By treating divide by null as infinity, Mondrian will return these sales reps in the report. Otherwise, if divide by null evaluates to null, then Mondrian will filter those reps out (due to the NON EMPTY).
| Configuring Analysis Options | 30 Note: You must restart the BA Server to enact any changes you make to this file.
Refer to the sections below for more information on specific Analyzer property settings.
| Configuring Analysis Options | 31 Option chart.options.backgroundColorEnd chart.options.labelStyle chart.options.legendBackgroundColor chart.options.legendSize chart.options.legendColor chart.options.legendStyle chart.series.colors Definition Chart background end color (only applicable for GRADIENT) in hexadecimal format Chart label font style - NORMAL, ITALIC, BOLD Chart legend background color in hexadecimal format Legend font size in points Legend font color in hexadecimal format Chart legend font style. Possible values are: NORMAL, ITALIC, BOLD Sets the default series color palette. See the section below for details.
Setting the default chart palette You can set the default series color palette in Analyzer through the chart.series.colors element in analyzer.properties. The values are a comma-separated list of hexadecimal color values for the series members in a chart.
# The below setting is the standard Analyzer series color palette chart.series.colors=#5a84ce,#a5bd5a,#8c63ad,#5aadd6,#ce6a5a,#cea45a,#5acea4,#27519b,#ce5a84,#
| Mondrian Cache Control | 33 5. If the data was loaded form SQL, it places a copy in the query cache and it sends it to the external cache to be immediately shared with the other Mondrian nodes. 6. The node can now answer the query. 7. Once the query is answered, Mondrian will release the data from the query cache. 8. If the local cache is enabled, a weak reference to the data is kept there.
Cache Control and Propagation All cache control operations are performed through Mondrian's CacheControl API, which is documented in the Mondrian project documentation at http://mondrian.pentaho.com. The CacheControl API allows you to modify the contents of the cache of a particular node. It controls both the data cache and the OLAP schema member cache. When flushing a segment region on a node, that node will propagate the change to the external cache by using the SegmentCache SPI. If the nodes are not using the local cache space, then the next node to pick up a query requiring that segment data will likely fetch it again through SQL. Once the data is loaded from SQL, it will again be stored in the external segment cache. You should not use the local cache space when you are using the external cache. For this reason, it is disabled by default in Pentaho Analysis Enterprise Edition. Using the local cache space on a node can improve performance with increased data locality, but it also means that all the nodes have to be notified of that change. Mondrian nodes don't propagate the cache control operations among the members of a cluster. If you deploy a cluster of Mondrian nodes and don't propagate the change manually across all of them, then some nodes will answer queries with stale data.
| Mondrian Cache Control | 34 memcached-config.xml Configures the Memcached-based segment cache. It is not used by default. To enable it, modify SEGMENT_CACHE_IMPL in pentaho-analysis-config.xml.
TCP communication
Amazon EC2
Switching to Memcached
In order to complete this procedure, you must have your own pre-configured Memcached instance. You should have also installed the Analysis Enterprise Edition package to your BA Server or standalone Mondrian engine. If you already use the Memcached cache framework in your organization and would like to hook it up to the Pentaho Analysis ROLAP engine, follow the directions below to switch from the default Infinispan cache framework configuration. Caution: Pentaho and Mondrian developers recommend against using Memcached. You are almost certain to have better performance with Infinispan. 1. If the BA Server or standalone Mondrian engine are running, shut them down now. 2. If you performed a default install of the Pentaho Analysis Enterprise Edition package, then you should have all of the required JARs installed to the BA or Mondrian server. If you aren't sure, verify now that the following JARs are present in the /WEB-INF/lib/ directory inside of your deployed pentaho.war or Mondrian engine:
| Mondrian Cache Control | 35 pentaho-analysis-ee commons-lang commons-io commons-codec pentaho-ee-dsc-core memcached 3. Edit the pentaho-analysis-config.xml in the /WEB-INF/classes/ directory inside the deployed pentaho.war or Mondrian engine, and change the value of SEGMENT_CACHE_IMPL to match the class name referenced below: <entry key="SEGMENT_CACHE_IMPL">com.pentaho.analysis.segmentcache.impl.memcached. MemcachedSegmentCache</entry> 4. Edit the memcached-config.xml in the /WEB-INF/classes/ directory inside the deployed pentaho.war or Mondrian engine, and change the values of SALT, SERVERS, and WEIGHT to match your preference: <entry key="SALT">YOUR SECRET SALT VALUE HERE</entry> <entry key="SERVERS">192.168.0.1:1642,192.168.0.2:1642</entry> <entry key="WEIGHTS">1,1</entry> Your Pentaho Analysis Enterprise Edition instance is now configured to use Memcached for ROLAP segment caching. Memcached Configuration Options These properties control Memcached settings, and are set in the memcached-config.xml file in the /WEB-INF/ classes/ directory inside of your deployed pentaho.war or Mondrian engine. Note: This is not a comprehensive list of the potential Memcached settings; the options explained below are the ones most critical to Memcached configuration for Pentaho Analysis. Property SERVERS WEIGHTS Purpose A comma-separated list of servers and port numbers representing the Memcached nodes usable by the plugin. A comma-separated list of numbers representing the relative caching capacity of the servers defined in the SERVERS property. There must be exactly as many values of WEIGHTS as there are values of SERVERS. As an example, if the first server has a capacity of 128 megabytes, and the second has a capacity of 256 megabytes, the correct values for the WEIGHTS property should be "1,2", indicating that the first server has a relative size of half of the second one. A secret key prefix to be used when saving and loading segment data from the Memcached nodes. This property must be the same for all Mondrian nodes that share their caches. If the SALT value is different from one node to the next, the nodes will not be able to share their cache data.
SALT
| Mondrian Cache Control | 36 1. 2. 3. 4. Create a Java class that implements mondrian.spi.SegmentCache Compile your class and make it available in Mondrians classpath Edit mondrian.properties and set mondrian.rolap.SegmentCache to your class name Start the BA Server or Mondrian engine
This is only a high-level overview. If you need more specific advice, contact your Pentaho support representative and inquire about developer assistance.
If you are already familiar with SQL, then much of the MDX syntax will look familiar, and the rest should be relatively easy to learn. There are six MDX data types: 1. 2. 3. 4. 5. 6. Dimension or hierarchy Level Member Tuple Scalar Set
Below is an example of a very simple MDX query: SELECT { [Measures].[Salesfact] } ON COLUMNS, { [Date].[2004], [Date].[2005] } ON ROWS FROM Sales
Further Reading
MDX was initially developed by Microsoft for its SQL Server analysis products, though it has since become an independent standard. It's been around long enough now that there are many MDX tutorials and references, most notably: http://msdn.microsoft.com/en-us/library/ms145506.aspx http://en.wikipedia.org/wiki/Multidimensional_Expressions Note: MDX implementations vary, and many MDX documentation resources are specific to certain niche products or standards. Not all MDX functions and extensions are supported in Pentaho Analysis.
| Visualizing Your Data | 38 JPivot is an open source slicer-dicer with a simple, lightweight interface and native Mondrian support. It is more complex than Analyzer is, but is still useful for generating MDX queries. These sections explain how to use these tools to perform basic tasks.
In this exercise, you will be creating a report that displays the actual versus budgeted expenses by region for each department in the fictitious Steel Wheels company (SampleData). Follow the instructions below to start creating the Analyzer report. Note: If you do not have access to Sample Data, adapt the instructions to your own data source.
1. In the Pentaho User Console menubar, go to File -> New and select Analyzer Report. A Select Data Source dialogue box will appear. 2. Select your Schema and Cube from the list. For the purposes of this exercise, select SampleData:Quadrant Analysis. Note: The list of available schemas and cubes are provided by your administrator. A schema is the structure of the relational database and includes tables, fields, views, and more. A cube is a data structure that allows information in a database to be analyzed quickly and from multiple perspectives.
| Visualizing Your Data | 39 3. In the Available Fields panel on the left, click and drag Department to the Rows panel within the Layout panel.
The Department column appears in the workspace. 4. In the list of fields, click and drag Budget to the Measures area within the Layout panel.
The Budget column appears in the workspace. 5. Right-click the Budget column to display the Edit Column dialog box. Select Column Name and Format.
The Edit Column dialogue box appears. 6. From the Format drop-down box, select Currency ($) so that your values display as dollar amounts. Click OK.
The data auto-updates and displays as currency. 7. In the list of fields, click and drag Actual to the Measures panel within the Layout panel.
The Actual column appears in the workspace. 8. Right-click the Actual column to display the Edit Column dialog box. Select Column Name and Format. The Edit Column dialogue box appears. 9. From the Format drop-down box, select Currency ($) so that your values display as dollar amounts. Click OK.
10.Click and drag the Region column to the Columns panel within the Layout panel.
11.At this point you have a functioning report and you can view your data in chart form. Click Switch to Chart Format to examine your report data in a chart format. The default display is a bar chart but if you click Choose Chart Type you can select a different chart type to display your data.
12.Save your report before continuing the exercise. In the Pentaho User Console, click Save As. When the Save As dialog box appears, save your report as Regional Expense Report under /Steel Wheels/Analysis and click OK. Adding Query Parameters to Analyzer Reports You must be logged into the Pentaho User Console, and have an Analyzer report open for editing in order to continue. Follow the below procedure to parameterize your MDX query in Analyzer. 1. Right-click on the dimension member you want to create a parameter for, and select Filter from the context menu. 2. Select the level you want to set as the default parameter value, then click the right arrow to move it to the list on the right. 3. Click the checkbox at the bottom of the window, then type in a name for the parameter in the Parameter Name field. 4. Click OK. Your parameter is now created as a filter in Pentaho Analyzer. Whenever this Analyzer report is run, users will have a selection of columns to filter by. Note: If you create a dashboard with this Analyzer report, then this filter can be used by Dashboard Designer as a parameter as well. Configuring Drill-Down Links To create reports based on specific number value data, you can implement drill-down links in Pentaho Analyzer. This will turn all non-calculated number fields into links which, when clicked, bring up a configurable data grid that enables you to quickly view more details for that data point without having to reconfigure your report. Follow the directions below to turn on drill-linking. Note: Calculated members are unavailable for drill-down at this time.
Note: Drill-down links will not work in reports that have filters that are not being used. If you have any filters in an Analyzer report, they must be used in the report in order to view drill-down links. 1. Open the Analyzer report that you want to add drill links to. 2. Go to the More menu in the upper right corner of the report, and select Report Options from it. 3. Select the Show drillthrough links on Measure cells checkbox, then click OK. The measure fields in your report will turn into links.
| Visualizing Your Data | 42 4. Click on a drill-down link to see a data grid that shows all of the available details for that value. 5. To add or remove columns from the grid, click on the down arrow on the right side of any column and select the Columns sub-menu. From there you can select which columns you want to appear. You can also sort by ascending or descending values for any column through this menu. You now have drill-down links for numeric, non-calculated members. Filtering by Member Properties If a dimension has a number in parenthesis next to it in the field list, that means that it has member properties associated with it. To constrain a dimension by controlling its member properties, follow the instructions below. 1. Open the field layout by clicking Show Field Layout button above the grid. Depending on how you have them oriented, you will see your selected dimensions in either the Row Labels or Col Headers fields. 2. Right-click on a dimension in the row label or column header fields, then select Show Properties from the context menu. A sub-menu with all available member properties will appear. 3. Check or un-check the member property boxes to add or remove them from the report, then click OK. The analyzer report will refresh and show the filter choices you've selected. Disabling Auto Refresh Mode When you disable the Auto Refresh Report feature in Analyzer you can design your report layout first, including calculations and filtering, without querying the database automatically after each change. You can enable the Auto Refresh Report option at any time. When you enable data retrieval, your report will display the requested data. Follow the instructions below to disable auto refresh and build a report. 1. 2. 3. 4. In the Pentaho User Console menubar, go to File > New and select Analyzer Report. Select the sample database Data Source, SteelWheels: SteelWheelsSales. Because auto refresh is enabled by default, uncheck the Auto Refresh Report box. Click OK. The Analyzer workspace appears. 5. To begin creating your report layout, select a field and drag it to the Layout panel at the left of the workspace. A message appears when you place the first field allowing you to refresh the report. Right-click menus are available for each of the fields you have dragged to the field layout area. They also indicate the position of the fields once they are placed in the report. Notice that the Analyzer workspace is disabled (greyed out) if you are not in live query mode. You can click the enable/disable Auto Refresh button in the toolbar to toggle between the two modes. 6. Continue to build your report and query the database when the layout is complete. You may only build your report in the field layout area when Auto Refresh is disabled. 7. When your report is complete, click Refresh in the pink band of the field layout area. Alternatively, use the toggle button. The Analyzer report updates based on the report definition and displays the results. You can continue to edit the report as needed and click Refresh, or enable the Auto Refresh ability to run the query again. Creating Hyperlinks to Pentaho Solution Repository Content This feature allows you to create hyperlinks in an Analyzer report that will link to content in the Pentaho Solution Repository. The instructions below show you how to create hyperlinks to content inside your Pentaho Solution Repository (reports, action sequences, etc.). You must adjust the instructions to work with your own data. Important: Hyperlinks take precedence over the drill down feature in charts. That means that if a hyperlink has been defined and you click on a bar in a bar chart, for example, the data associated with the hyperlink, (not the drill down chart), displays. See Drilling in Charts for details about drill down feature in charts. 1. Create a simple Analyzer report. 2. Select a row label or column header, right-click, and choose Hyperlink.
Note: In the example above, Department is a row label and Region is a column header. Under these, are the individual members that belong to that field/level (for example, Executive Management, Finance and so on are members of Department). The Link on (Name of Field Level) appears. 3. Click Enable Link to activate the hyperlink feature. You are not creating a hyperlink to the field header itself but rather to the members under the field level. You can disable linking at any time by clearing the Enable Link checkbox. 4. Click the down arrow next to Link to and choose Pentaho Repository File. 5. If you choose Pentaho Repository File, you can link to a report (.prpt), an action sequence, or any other file inside the Pentaho Solution Repository which contains a parameter that can be associated with the content in your Analyzer report. Click Browse to locate your file in the Pentaho Repository. When you have found the file click Open. The Link on Field Name dialog box appears. If a destination parameter that matches the field name in your Analyzer Report is found, field name is associated to that parameter. Click the checkbox next to the destination parameter name to enable it.
If there are more parameters available for linking in the report or other content, they are also listed. You can override the values to the available parameters or leave them as is. You can also define how hyperlink content will display (Open in New Tab, Window, Current Window). Finally, you can enter a Tool Tip that displays when users hover over the hyperlinks. 6. Click OK. Hyperlinks appear in your Analyzer report. Click on the links to make sure the content associated with them appears correctly.
7. Save your Analyzer Report. Creating Hyperlinks to a URL This feature allows you to create hyperlinks in an Analyzer report that will link to a URL for system to system linking, for example. The instructions below show you how to create hyperlinks to a URL. You must adjust the instructions to work with your own data. Important: Hyperlinks take precedence over the drill down feature in charts. That means that if a hyperlink has been defined and you click on a bar in a bar chart, for example, the data associated with the hyperlink, (not the drill down chart), displays. See Drilling in Charts for details about drill down feature in charts. 1. Create a simple Analyzer report. 2. Select a row label (or column), right-click, and choose Hyperlink. In the example below, Line is row label and Years is a column header. Under these, are the individual members that belong to that field/level; for example, Executive Management, Finance, and so on are members of Line.
The Link on (Name of Field ) appears. 3. Click Enable Link to activate the hyperlink feature. You are not creating a hyperlink to the field header itself but rather to the members under the field. You can disable linking at any time by clearing the Enable Link check box. 4. Click the down arrow next to Link to and choose URL. The Link on Field Name appears. 5. Enter the URL path. You must use the {FieldNameInsideCurlyBraces} format to pass a parameter in your URL as shown in the example below where {Years} is the parameter: http://www.bing.com/search?q={Years} You can also define how hyperlink content will display (Open in New Tab, Window, Current Window). Finally, you can enter a tool tip that displays when users hover over the hyperlinks. 6. Click OK to return to your report. Hyperlinks appear in your Analyzer report. Click on the links to make sure the content associated with them appears correctly.
| Visualizing Your Data | 45 Number Formatting Analyzer can format number fields in a few different ways: Default: Uses the cell formatter specified in the Mondrian schema General Number: A number that can be separated by commas and decimal places, but has no sign. Pound symbols represent number places if they exist, and zeroes represent potential holders for places that do not exist. So for a definition of 00#,###.00, the number 11223.4 would be represented in Analyzer as 011,223.40. Percentage: A number that can be separated by commas and decimal places, followed by a percent sign. Pound symbols represent number places if they exist, and zeroes represent potential holders for places that do not exist. So for a definition of 00#,###.00%, the number 11223.4 would be represented in Analyzer as 011,223.40%. Currency: A number that can be separated by commas and decimal places, preceded by a currency sign. Pound symbols represent number places if they exist, and zeroes represent potential holders for places that do not exist. So for a definition of $00#,###.00, the number 11223.4 would be represented in Analyzer as $011,223.40. Expression: A custom format defined by some user-supplied logic. See Advanced Conditional Formatting With MDX Expressions on page 45 for more information.
To change the formatting of a measure, right-click on it in the grid, then select Column Name and Format... from the context menu. Note: Formatting options apply to both the report viewer and exports (PDF, XLS).
Conditional Formatting Conditional formatting in the Analyzer data grid means that cells will be physically affected by the data they contain. The most common form of conditional formatting is stoplight reporting, where cell backgrounds are colored red, green, or yellow depending on user-defined thresholds. Analyzer offers some simple pre-defined methods of conditionally altering visual cues for numeric data in a variety of formats, and the ability to use a custom MDX expression to implement finegrained conditions. Simple Conditional Formatting of Measures Conditional formatting in the Analyzer data grid means that cells will be physically affected by the data they contain. The most common form of conditional formatting is stoplight reporting, where cell backgrounds are colored red, green, or yellow depending on user-defined thresholds. Analyzer offers some simple pre-defined methods of conditionally formatting numeric data. Follow the directions below to implement conditional cell formatting. 1. Right-click a measure in the grid, then select Conditional Formatting from the context menu. A sub-menu with conditional formatting types will appear. 2. Select your preferred number format from the list. The analyzer report will refresh and apply the formatting choice you specified. Conditional Formatting Types Indicator Type Color scale Description The background cell color will be shaded according to the value of the cell relative to the highest and lowest recorded values in that measure. There are several color progressions to choose from. The cell background is partially filled with a solid color proportional to the scale of the cell's value relative to the highest and lowest recorded values in that measure. An upward or downward arrow is displayed to the right of the cell value depending on whether it contains a positive or negative value.
Data bar
Trend arrow
Advanced Conditional Formatting With MDX Expressions If the premade conditional formatting options in Analyzer are not precise enough for your needs, you can apply custom formatting to a measure by using an MDX expression, as explained below. 1. Right-click a measure in the grid, then select Column Name and Format... from the context menu.
| Visualizing Your Data | 46 The Edit Column dialogue will appear. 2. Select Expression from the Format drop-down list. A default MDX expression that prints green or red arrows in cells if their values are greater than or less than zero, respectively, will appear in the MDX Format Expression field: Case When Then When Then Else End [Measures].CurrentMember > 0 '|#,##0|arrow=up' [Measures].CurrentMember < 0 '|#,##0|arrow=down' '|#,##0'
3. Modify the expression to suit your needs. Consult Conditional Formatting Expressions on page 46 for more information on conditional formatting syntax and options. Note: If the MDX expression is invalid, an invalid report definition error will appear at the top of the dialogue. 4. Click OK to commit the change. The analyzer report will refresh and apply the formatting choices you specified. Conditional Formatting Expressions Valid MDX format strings contain properties that apply special rendering for the HTML pivot tables. A format string follows this syntax: | # , # # # | style = red The leading | (pipe) tells Analyzer that this format string contains properties. The #,### is the measure's value format, which in this example is one number separated from three further places or decimal places by a comma (for instance: 3,667). style=red is a key/value pair; all possible keys and values are explained in the table below. The following properties are supported by Analyzer: Indicator Type style arrow Description Changes the cell background color. Shows a trend arrow that points up or down. A value of none will not render the arrow; this is useful in situations in which you only want to show one directional arrow instead of two. Creates an HTML link which will open in a new window when clicked in Analyzer. Renders a custom image that you specify. This image file must be stored in the /pentahosolutions/system/analyzer/ resource/image/report/ directory. Values red, yellow, green up, down, none
link
image
Analyzer Visualizations
Pentaho Analyzer offers many ways to visually display data. These graphics are called visualizations, and include maps, charts, and grids. Geography Map Visualizations In Analyzer Geo maps enable you to visualize data on a geographic map. This visualization type will plot a pin on a map based on the location attribute used. You can then use a measure to color-code the pen and/or use a measure to specify the size of the pin. If your model has geographic annotations then the location information will be retrieved by the geoservice automatically.
Customizing Geography Map Visualizations In Analyzer The Properties panel enables you to customize the appearance of map visualizations.
The Pattern drop-down box allows you to decide the way the color of the pins populate. The appearance does not denote any of the data, it is solely for aesthetics. You have the option of selecting: Gradient 3 Step 5 Step
The Color drop-down box allows you to decide which colors denote large measures and which colors denote smaller measures. The color denotes the size of the data, from small to large. You have the option of selecting: Red Yellow Green Red Yellow Blue Blue Scale Gray Scale
You also have the option of checking the Reverse Colors box, which will allow you to choose the inverse colors so they appear large to small.
| Visualizing Your Data | 48 Scatter Chart Visualizations In Analyzer Scatter charts allow users the ability to visualize data on a graph. This visualization type will plot a bubble on a graph based on the attributes used. You can then use a measure to color-code the bubble and/or use a measure to specify the size of the bubble.
Customizing Scatter Chart Visualizations In Analyzer The Properties panel enables you to customize the appearance of scatter chart visualizations. Click on the Chart Options button within the Propertiesto make the Chart Options dialogue box appear.
The Chart Options drop-down box allows you to customize your chart. Within the four different tabs, you have the ability to choose:
| Visualizing Your Data | 49 Chart fill type. If you choose a fill type other than none, you can customize the color (or colors if you choose a gradient). Font type, size and emphasis for the labels Axis ranges Legend visibility Legend position Legend Background appearance (if it appears and if so, what color) Font type, size, and emphasis for the Legend For multi-charts, the number of charts per row The Domain Limit maximum number of plot values
Heat Grid Visualizations In Analyzer Heat Grids allow you the ability to visualize data so you can identify patterns of performance. This visualization type will color-code your results so you view complex business analysis in an easy-to-understand visualization.
Customizing Heat Grid Visualizations In Analyzer The Properties panel enables you to customize the appearance of map visualizations.
The Pattern drop-down box allows you to decide the way the color of the pins populate. The appearance does not denote any of the data, it is solely for aesthetics. You have the option of selecting: Gradient 3 Step 5 Step
The Color drop-down box allows you to decide which colors denote large measures and which colors denote smaller measures. The color denotes the size of the data, from small to large. You have the option of selecting: Red Yellow Green Red Yellow Blue Blue Scale Gray Scale
You also have the option of checking the Reverse Colors box, which will allow you to choose the inverse colors so they appear large to small. You may also change shape of the measures within the Shape: drop-down box. The measures can be alternated between Square to Circle. The Properties panel enables you to customize the appearance of scatter chart visualizations. Click on the Chart Options button within the Propertiesto make the Chart Options dialogue box appear.
| Visualizing Your Data | 51 The Chart Options drop-down box allows you to customize your chart. Within the four different tabs, you have the ability to choose: Chart fill type. If you choose a fill type other than none, you can customize the color (or colors if you choose a gradient). Font type, size and emphasis for the labels Axis ranges Legend visibility Legend position Legend Background appearance (if it appears and if so, what color) Font type, size, and emphasis for the Legend For multi-charts, the number of charts per row The Domain Limit maximum number of plot values
Setting Chart Options You can modify the aesthetics of a chart within Instaview by clicking Chart Options within the Properties panel in View mode. These options enable you to define how to display a chart; change a chart's colors, add a legend, and more. You can also access the Chart Options dialog box by clicking More actions and options select Chart Options. General Option Background Description Fill type defines the background color of the chart and the specific fill colors used. A Gradient will result in a gradual color transition in the fill color. Choose the color you want from the available color pickers (Fill Color, End Color) You can select not to have a fill color (None), or select a single background color (Solid). Allows you to select a font type, size, formatting, and color of the labels in your chart. Allows you to adjust the axis range. When set to Auto Range, the chart will scale based on the data. If you have a time series chart, you may want to set the range manually so that figures, (not close to the 0 axis), display correctly; (see image below). Select a Scale option to manage instances where numeric values in a chart are so long that they affect the display. on the Analyzer toolbar and
Labels Axis
Legend Option Show Legend Position Background Color Font Description Allows you to enable to disable the legend display Allows you to select the placement (Top, Right, Bottom, Left) of the legend on the chart Allows you to select a background color for the legend Allows you to set the font type, size, format, and color associated with your legend
Other Option Line Charts Description Allows you to set the Bullet Style for points on a line chart and assign Line Width
| Visualizing Your Data | 52 Option Multi-Charts Domain Limit Description Allows you to define the number of charts that display when using the Multi-Charts feature Allows you to limit the number of plot values that display in a chart.
Displaying Multi-Charts in Analyzer The Analyzer multi-chart feature allows you to display multiple charts in a single Analyzer report. For example, use this feature when you want to display the same data over different years. The multi-chart feature prevents you from having to create separate filters and reports. 1. Create or open an Analyzer report. Important: You must have Auto-Refresh Mode disabled to use the Mutli-Chart feature. 2. Click the Switch to Chart Format button to change to chart format. 3. Move the appropriate fields into the Multi-Chartsection. The field auto populates with the different charts dependent upon the level placed in the Multi-Chart field. 4. Save the report. Drilling in Charts The Pentaho Analyzer drill down feature in charts, allows you to click on a single bar in a bar chart, a wedge in a pie chart, or a line in a line chart to drill down for more details. Drill downs display in a separate chart. Consider the example below. Once you click the EMEA - Classic Cars bar, a new bar chart appears that has the for the year (2004), territory (EMEA), and Line (Classic Cars). The drill down path follows the levels in the hierarchy. You can continue drilling down until there are no more levels of data to display. Drill down also works with multi-charts.
To create a new analysis view, follow this process. 1. In the File menu, select the New submenu, then click Analysis View (Legacy). 2. Select the appropriate schema and cube from the drop-down lists. 3. Click OK to continue. A fresh analysis view will open in a new tab. 4. Click the + icons next to each column you want to drill down into. 5. To change the filter, column, and row data, click the Open OLAP Navigator button, on the left end of the toolbar. The OLAP Navigator will appear above your analysis view. 6. To add a dynamic chart, click the Chart button toward the right side of the toolbar. A new chart will appear below your analysis view. It will change dynamically according to the drill-down you select. 7. When you're finished exploring your data through an analysis view, you can selecting Save from the File menu, or by clicking the disk icon in the left side of the toolbar.
| Visualizing Your Data | 54 You now have an analysis view, which enables you to drill down to the minutest of details stored in your database. Using this analysis view, you can create an interactive dashboard, or share your findings with other Pentaho User Console users.
| Visualizing Your Data | 55 2. Click Browse, navigate to the location of your cube definition file, click to select it, then click Open. 3. Type an MDX query into the Query pane on the right. 4. Click OK. Your data source is now properly configured and refined according to the Mondrian definition you specified.
| Logging | 56
Logging
The BA Server and the standalone Mondrian engine both use log4j to record information about generated ROLAPgenerated SQL queries. It may be useful to examine this log output if you are having trouble with configuration or performance-tuning.
| Logging | 57 If your plugin was successfully configured, you should see log information relating to the segment cache. If there was an error in your configuration, all exception messages will be displayed here as well.
| Troubleshooting | 58
Troubleshooting
This section contains known problems and solutions relating to the procedures covered in this guide.
<CubeUsages> <CubeUsage> <VirtualCubeDimension> <VirtualCubeMeasure> <Dimension> <DimensionUsage> <Hierarchy> <Level> <KeyExpression> <NameExpression> <CaptionExpression> <OrdinalExpression> <ParentExpression> <Property>
| Mondrian Schema Element Quick Reference | 60 Element <InlineTable> <Closure> <AggExclude> <AggName> <AggPattern> <AggFactCount> <AggIgnoreColumn> <AggForeignKey> <AggMeasure> <AggLevel> <Role> <SchemaGrant> <CubeGrant> <HierarchyGrant> <MemberGrant> <Union> <RoleUsage> <UserDefinedFunction> <Parameter> <CalculatedMemberProperty> <Formula> <ColumnDefs> <ColumnDef> <Rows> <Row> <Value> <MeasureExpression> <SQL> Definition Defines a table using an inline dataset. Maps a parent-child hierarchy onto a closure table. Exclude a candidate aggregate table by name or pattern matching. Declares an aggregate table to be matched by name. Declares a set of aggregate tables by regular expression pattern. Specifies name of the column in the candidate aggregate table which contains the number of fact table rows. Tells Mondrian to ignore a column in an aggregate table. Maps a foreign key in the fact table to a foreign key column in the candidate aggregate table. Maps a measure to a column in the candidate aggregate table. Maps a level to a column in the candidate aggregate table. An access-control profile. A set of rights to a schema. A set of rights to a cube. A set of rights to both a hierarchy and levels within that hierarchy. A set of rights to a member and its children. Definition of a set of rights as the union of a set of roles. A reference to a role. Imports a user-defined function. Part of the definition of a hierarchy; passed to a MemberReader, if present. Property of a calculated member. Holds the formula text within a <NamedSet> or <CalculatedMember>. Holder for <ColumnDef> elements. Definition of a column in an <InlineTable> dataset. Holder for <Row> elements. Row in an <InlineTable> dataset. Value of a column in an <InlineTable> dataset. SQL expression used to compute a measure, in lieu of Measure.column. The SQL expression for a particular database dialect.
AggExclude
This element excludes a candidate aggregate table via name or pattern matching.
| Mondrian Schema Element Quick Reference | 61 Attributes Attribute pattern name ignorecase String String Boolean Data type Definition A Table pattern not to be matched. The Table name not to be matched. Whether or not the match should ignore case.
AggFactCount
Specifies name of the column in the candidate aggregate table which contains the number of fact table rows. Attributes Attribute N/A N/A Data type N/A Definition
AggForeignKey
Maps foreign key in the fact table to a foreign key column in the candidate aggregate table. Attributes Attribute factColumn aggColumn String String Data type Definition The name of the base fact table foreign key. The name of the aggregate table foreign key.
AggIgnoreColumn
Tells Mondrian to ignore a column in an aggregate table. Attributes Attribute N/A N/A Data type N/A Definition
AggLevel
Maps a level to a column in the candidate aggregate table. Attributes Attribute column name String String Data type Definition The name of the column mapping to the level name. The name of the Dimension Hierarchy level.
AggMeasure
Maps a measure to a column in the candidate aggregate table. Attributes Attribute column name String String Data type Definition The name of the column mapping to the measure name. The name of the Cube measure.
AggName
Declares an aggregate table to be matched by name. Attributes Attribute name String Data type Definition The table name of a specific aggregate table.
AggPattern
Declares a set of aggregate tables by regular expression pattern. Attributes Attribute pattern String Data type Definition A Table pattern used to define a set of aggregate tables.
AggTable
A definition of an aggregate table for a base fact table. This aggregate table must be in the same schema as the base fact table. Attributes Attribute ignorecase Boolean Data type Definition Whether or not the match should ignore case.
| Mondrian Schema Element Quick Reference | 63 Constituent elements Element AggFactCount AggIgnoreColumn AggForeignKey AggMeasure AggLevel Definition Describes what the fact_count column looks like.
CalculatedMember
A member whose value is derived using a formula, defined as part of a cube. Attributes Attribute name formatString String String Data type Definition Name of this calculated member. Format string with which to format cells of this member. For more details, see {@link mondrian.util.Format}. A string being displayed instead of the name. Can be localized from Properties file using #{propertyname}. MDX expression which gives the value of this member. Equivalent to the Formula sub-element. Name of the dimension which this member belongs to. Whether this member is visible in the user-interface. Default true.
caption
String
formula
String
dimension visible
String Boolean
Constituent elements Element Formula CalculatedMemberProperty Definition MDX expression which gives the value of this member.
CalculatedMemberProperty
Property of a calculated member defined against a cube. It must have either an expression or a value. Attributes Attribute name caption String String Data type Definition Name of this member property. A string being displayed instead of the Properties's name. Can be
| Mondrian Schema Element Quick Reference | 64 Attribute Data type Definition localized from Properties file using #{propertyname}. expression String MDX expression which defines the value of this property. If the expression is a constant string, you could enclose it in quotes, or just specify the 'value' attribute instead. Value of this property. If the value is not constant, specify the 'expression' attribute instead.
value
String
CaptionExpression
SQL expression used to compute the caption of a member, in lieu of Level.captionColumn. Attributes Attribute N/A N/A Data type N/A Definition
Closure
Specifies the transitive closure of a parent-child hierarchy. Optional, but recommended for better performance. The closure is provided as a set of (parent/child) pairs: since it is the transitive closure these are actually (ancestor/ descendant) pairs. Attributes Attribute parentColumn childColumn Constituent elements Element Table Definition String String Data type Definition The parent column The child column
ColumnDef
Column definition for an inline table. Attributes Attribute name type String String Data type Definition Name of the column. Type of the column: String, Numeric, Integer, Boolean, Date, Time or Timestamp.
ColumnDefs
Holder for an array of ColumnDef elements. Constituent elements Element ColumnDef Definition The columns to include in the array
Cube
A cube is a collection of dimensions and measures, all centered on a fact table. Attributes Attribute name caption String String Data type Definition Name of this cube. A string being displayed instead of the cube's name. Can be localized from Properties file using #{propertyname}. The name of the measure that would be taken as the default measure of the cube. Should the Fact table data for this Cube be cached by Mondrian or not. The default action is to cache the data. Whether element is enabled - if true, then the Cube is realized otherwise it is ignored.
defaultMeasure
String
cache
Boolean
enabled
Boolean
Constituent elements Element Relation (as <Table>, <View>, or <InlineTable>) Definition The fact table is the source of all measures in this cube. If this is a Table and the schema name is not present, table name is left unqualified.
CubeDimension Measure CalculatedMember NamedSet Calculated members in this cube. Named sets in this cube.
CubeGrant
Grants (or denies) this role access to a cube. access may be "all" or "none".
| Mondrian Schema Element Quick Reference | 66 Attributes Attribute cube Constituent elements Element DimensionGrant HierarchyGrant Definition String Data type Definition The unique name of the cube
CubeUsage
Usage of a base cube by a virtual cube. Attributes Attribute cubeName ignoreUnrelatedDimensions String Boolean Data type Definition Name of the cube which the virtualCube uses. Unrelated dimensions to measures in this cube will be pushed to top level member.
CubeUsages
List of base cubes used by the virtual cube. Constituent elements Element CubeUsage Definition
Dimension
A Dimension is a collection of hierarchies. There are two kinds: a public dimension belongs to a Schema, and be used by several cubes; a private dimension belongs to a Cube. The foreignKey field is only applicable to private dimensions. Attributes Attribute name type String String Data type Definition The name of this dimension. The dimension's type may be one of "Standard" or "Time". A time dimension will allow the use of the MDX time functions (WTD, YTD, QTD, etc.). Use a standard dimension if the dimension is not a time-related dimension. The default value is "Standard".
| Mondrian Schema Element Quick Reference | 67 Attribute caption String Data type Definition A string being displayed instead of the dimensions's name. Can be localized from Properties file using #{propertyname}. If present, then this is prepended to the Dimension column names during the building of collapse dimension aggregates allowing 1) different dimensions to be disambiguated during aggregate table recognition. This should only be set for private dimensions.
usagePrefix
String
Constituent elements Element Hierarchy Definition The hierarchies (pre-defined drill-downs) for this dimension.
DimensionGrant
Grants (or denies) this role access to a dimension. access may be "all" or "none". Note that a role is implicitly given access to a dimension when it is given acess to a cube. See also the "all_dimensions" option of the "SchemaGrant" element. Attributes Attribute dimension String Data type Definition The unique name of the dimension
DimensionUsage
A DimensionUsage is usage of a shared Dimension within the context of a cube. Attributes Attribute source String Data type Definition Name of the source dimension. Must be a dimension in this schema. Casesensitive. Name of the level to join to. If not specified, joins to the lowest level of the dimension. If present, then this is prepended to the Dimension column names during the building of collapse dimension aggregates allowing 1) different dimension usages to be disambiguated during aggregate table recognition and 2) multiple shared dimensions that have common column names to be disambiguated.
level
String
usagePrefix
String
Formula
Holds the formula text within a <NamedSet> or <CalculatedMember>. Attributes Attribute N/A N/A Data type N/A Definition
Hierarchy
Defines a hierarchy, which is a pre-defined drill-down. Note: You must specify at most one <Relation> or memberReaderClass. If you specify none, the hierarchy is assumed to come from the same fact table of the current cube. Attributes Attribute name String Data type Definition Name of the hierarchy. If this is not specified, the hierarchy has the same name as its dimension. Whether this hierarchy has an 'all' member. Name of the 'all' member. If this attribute is not specified, the all member is named 'All hierarchyName', for example, 'All Store'. A string being displayed instead as the all member's name. Can be localized from Properties file using #{propertyname}. Name of the 'all' level. If this attribute is not specified, the all member is named '(All)'. Can be localized from Properties file using #{propertyname}. The name of the column which identifies members, and which is referenced by rows in the fact table. If not specified, the key of the lowest level is used. See also CubeDimension.foreignKey. The name of the table which contains primaryKey. If the hierarchy has only one table, defaults to that; it is required.
hasAll allMemberName
Boolean String
allMemberCaption
String
allLevelName
String
primaryKey
String
primaryKeyTable
String
defaultMember memberReaderClass
String String Name of the custom member reader class. Must implement the
| Mondrian Schema Element Quick Reference | 69 Attribute Data type Definition mondrian.rolap.MemberReader interface. caption String A string to be displayed in the user interface. If not specified, the hierarchy's name is used. Can be localized from Properties file using #{propertyname}.
Constituent elements Element RelationOrJoin (as <Table>, <View>, <Join>, or <InlineTable>) Level Definition The Table, Join, View, or Inline Table that populates this hierarchy.
HierarchyGrant
Grants (or denies) this role access to a hierarchy. access may be "all", "custom" or "none". If access is "custom", you may also specify the attributes topLevel, bottomLevel, and the member grants. Attributes Attribute hierarchy topLevel String String Data type Definition The unique name of the hierarchy Unique name of the highest level of the hierarchy from which this role is allowed to see members. May only be specified if the HierarchyGrant.access is "custom". If not specified, role can see members up to the top level. Unique name of the lowest level of the hierarchy from which this role is allowed to see members. May only be specified if the HierarchyGrant.access is "custom". If not specified, role can see members down to the leaf level. Policy which determines how cell values are calculated if not all of the children of the current cell are visible to the current role. Allowable values are 'full' (the default), 'partial', and 'hidden'.
bottomLevel
String
rollupPolicy
String
InlineTable
Defines a table using an inline dataset.
| Mondrian Schema Element Quick Reference | 70 Attributes Attribute alias String Data type Definition Alias to be used with this table when it is used to form queries. If not specified, defaults to the table name, but in any case, must be unique within the schema. (You can use the same table in different hierarchies, but it must have different aliases.)
Join
Defines a 'table' by joining a set of queries. Attributes Attribute leftAlias leftKey rightAlias rightKey Constituent elements Element RelationOrJoin (as <Table>, <View>, <Join>, or <InlineTable>) Definition There must be two defined; a left, and a right String String String String Defaults to right's alias if right is a table, otherwise required. Data type Definition Defaults to left's alias if left is a table, otherwise required.
KeyExpression
SQL expression used as key of the level, in lieu of a column. Attributes Attribute N/A N/A Data type N/A Definition
Level
Level of a hierarchy.
| Mondrian Schema Element Quick Reference | 71 Attributes Attribute approxRowCount String Data type Definition The estimated number of members in this level. Setting this property improves the performance of MDSCHEMA_LEVELS, MDSCHEMA_HIERARCHIES and MDSCHEMA_DIMENSIONS XMLA requests
name table
String String The name of the table that the column comes from. If this hierarchy is based upon just one table, defaults to the name of that table; otherwise, it is required. Can be localized from Properties file using #{propertyname}. The name of the column which holds the unique identifier of this level. The name of the column which holds the user identifier of this level. The name of the column which holds member ordinals. If this column is not specified, the key column is used for ordering. The name of the column which references the parent member in a parent-child hierarchy. Value which identifies null parents in a parent-child hierarchy. Typical values are 'NULL' and '0'. Indicates the type of this level's key column: String, Numeric, Integer, Boolean, Date, Time or Timestamp. When generating SQL statements, Mondrian encloses values for String columns in quotation marks, but leaves values for Integer and Numeric columns un-quoted. Date, Time, and Timestamp values are quoted according to the SQL dialect. For a SQL-compliant dialect, the values appear prefixed by their typename, for example, "DATE '2006-06-01'". Whether members are unique across all parents. For example, zipcodes are unique across all states. The first level's members are always unique. Whether this is a regular or a timerelated level. The value makes a difference to time-related functions such as YTD (year-to-date). Condition which determines whether a member of this level is hidden. If a
parentColumn
String
nullParentValue
String
type
String
uniqueMembers
Boolean
levelType
String
hideMemberIf
String
| Mondrian Schema Element Quick Reference | 72 Attribute Data type Definition hierarchy has one or more levels with hidden members, then it is possible that not all leaf members are the same distance from the root, and it is termed a ragged hierarchy. formatter String Name of a formatter class for the member labels being displayed. The class must implement the mondrian.olap.MemberFormatter interface. Allowable values are: Never (a member always appears; the default); IfBlankName (a member doesn't appear if its name is null or empty); and IfParentsName (a member appears unless its name matches the parent's. A string being displayed instead of the level's name. Can be localized from Properties file using #{propertyname}. The name of the column which holds the caption for members.
caption
String
captionColumn
String
Constituent elements Element KeyExpression NameExpression OrdinalExpression ParentExpression Closure Property Definition The SQL expression used to populate this level's key. The SQL expression used to populate this level's name. If not specified, the level's key is used. The SQL expression used to populate this level's ordinal. The SQL expression used to join to the parent member in a parent-child hierarchy.
Measure
A measure is an aggregated numeric value. Typically it is a sum of selected numbers in a column, or a count of the number of items in a list. Attributes Attribute name column String String Data type Definition Name of this measure. Column which is source of this measure's values. If not specified, a measure expression must be specified. The datatype of this measure: String, Numeric, Integer, Boolean, Date, Time or Timestamp. The default
datatype
String
| Mondrian Schema Element Quick Reference | 73 Attribute Data type Definition datatype of a measure is 'Integer' if the measure's aggregator is 'Count', otherwise it is 'Numeric'. formatString String Format string with which to format cells of this measure. For more details, see the mondrian.util.Format class. Aggregation function. Allowed values are "sum", "count", "min", "max", "avg", and "distinct-count". ("distinct count" is allowed for backwards compatibility, but is deprecated because XML enumerated attributes in a DTD cannot legally contain spaces.) Name of a formatter class for the appropriate cell being displayed. The class must implement the mondrian.olap.CellFormatter interface. A string being displayed instead of the name. Can be localized from Properties file using #{propertyname}. Whether this member is visible in the user-interface. Default true.
aggregator
String
formatter
String
caption
String
visible
Boolean
Constituent elements Element MeasureExpression CalculatedMemberProperty Definition The SQL expression used to calculate a measure. Must be specified if a source column is not specified.
MeasureExpression
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
MemberGrant
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions.
| Mondrian Schema Element Quick Reference | 74 Attributes Attribute Data type Definition
NamedSet
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
NameExpression
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
OrdinalExpression
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
Parameter
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
ParentExpression
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute Data type Definition
Property
Member property that enables you to create subcategories for levels and hierarchies. Attributes Attribute name column type String String String Data type Definition The display name of this property. The data column that will determine this subcategory's content. Data type of this property: String, Numeric, Integer, Boolean, Date, Time or Timestamp. Name of a formatter class for the appropriate property value being displayed. The class must implement the mondrian.olap.PropertyFormatter interface. A string being displayed instead of the name. Can be localized from Properties file using #{propertyname}.
formatter
String
caption
String
PropertyExpression
SQL expression used to compute the value of a property, in lieu of Property.column. Attributes Attribute N/A N/A Data type N/A Definition
Role
A role defines an access-control profile. It has a series of grants (or denials) for schema elements. Attributes Attribute name Constituent elements Element SchemaGrant Union Definition String Data type Definition The name of this role
RoleUsage
Usage of a Role in a union Role. Attributes Attribute roleName String Data type Definition The name of the role
Row
Row definition for an inline table. Must have one Column for each ColumnDef in the InlineTable. Constituent elements Element Value Definition
Rows
Holder for an array of Row elements
| Mondrian Schema Element Quick Reference | 77 Constituent elements Element Row Definition
Schema
A schema is a collection of cubes and virtual cubes. It can also contain shared dimensions (for use by those cubes), named sets, roles, and declarations of user-defined functions. Attributes Attribute name measuresCaption String String Data type Definition Name of this schema Label for the measures dimension. Can be localized from Properties file using #{propertyname}. The name of the default role for connections to this schema
defaultRole
String
Constituent elements Element Parameter Dimension Cube VirtualCube NamedSet Role UserDefinedFunction Definition This schema's parameter definitions. Shared dimensions in this schema. Cubes in this schema. Virtual cubes in this schema. Named sets in this schema. Roles in this schema. Declarations of user-defined functions in this schema.
SchemaGrant
Grants (or denies) this role access to this schema. access may be "all", "all_dimensions", or "none". If access is "all_dimensions", the role has access to all dimensions but still needs explicit access to cubes. Constituent elements Element CubeGrant Definition
SQL
The SQL expression for a particular database dialect.
| Mondrian Schema Element Quick Reference | 78 Attributes Attribute dialect String Data type Definition Dialect of SQL the view is intended for. Valid values include, but are not limited to: generic access db2 derby firebird hsqldb mssql mysql oracle postgres sybase teradata ingres infobright luciddb
Table
A fact or dimension table. Attributes Attribute name schema alias String String String Data type Definition The name of the table Optional qualifier for table. Alias to be used with this table when it is used to form queries. If not specified, defaults to the table name, but in any case, must be unique within the schema. (You can use the same table in different hierarchies, but it must have different aliases.)
Constituent elements Element SQL AggExclude AggTable Definition The SQL WHERE clause expression to be appended to any select statement
Union
Body of a Role definition which defines a Role to be the union of several Roles. The RoleUsage elements must refer to Roles that have been declared earlier in this schema file.
| Mondrian Schema Element Quick Reference | 79 Constituent elements Element RoleUsage Definition
UserDefinedFunction
A UserDefinedFunction is a function which extends the MDX language. It must be implemented by a Java class which implements the interface mondrian.spi.UserDefinedFunction. Attributes Attribute name String Data type Definition Name with which the user-defined function will be referenced in MDX expressions. Name of the class which implemenets this user-defined function. Must implement the mondrian.spi.UserDefinedFunction interface.
className
String
Value
Column value for an inline table. The CDATA holds the value of the column. Attributes Attribute column String Data type Definition Name of the column.
View
Defines a 'table' using a SQL query, which can have different variants for different underlying databases. Attributes Attribute alias Constituent elements Element SQL Definition String Data type Definition
VirtualCube
A cube defined by combining the dimensions and measures of one or more cubes. A measure originating from another cube can be a <CalculatedMember>.
| Mondrian Schema Element Quick Reference | 80 Attributes Attribute enabled Boolean Data type Definition Whether this element is enabled - if true, then the Virtual Cube is realized otherwise it is ignored.
name defaultMeasure
String String The name of the measure that would be taken as the default measure of the cube. A string being displayed instead of the cube's name. Can be localized from Properties file using #{propertyname}.
caption
String
Constituent elements Element CubeUsages VirtualCubeDimension VirtualCubeMeasure CalculatedMember Calculated members that belong to this virtual cube. (Calculated members inherited from other cubes should not be in this list.) Named sets in this cube. Definition
NamedSet
VirtualCubeDimension
A VirtualCubeDimension is a usage of a Dimension in a VirtualCube. Attributes Attribute cubeName String Data type Definition Name of the cube which the dimension belongs to, or unspecified if the dimension is shared. Name of the dimension.
name
String
VirtualCubeMeasure
A VirtualCubeMeasure is a usage of a Measure in a VirtualCube. Attributes Attribute cubeName name String String Data type Definition Name of the cube which the measure belongs to. Unique name of the measure within its cube.
| Mondrian Schema Element Quick Reference | 81 Attribute visible Boolean Data type Definition Whether this member is visible in the user-interface. Default true.