# Basic Model

{% hint style="warning" %}

#### Workshop - Classic Model

While examining existing schemas helps you understand OLAP concepts, the true mastery of dimensional modeling comes from building your own Mondrian schemas from the ground up. Creating a multidimensional cube requires understanding how to connect relational tables, define hierarchies that mirror business thinking, configure measures with proper aggregation rules, and publish schemas to production environments - skills that transform you from a passive consumer of analytics to an active architect of business intelligence solutions.

In this hands-on workshop, you'll construct a complete Mondrian schema called ClassicModelsOrders using Schema Workbench, experiencing every step of the development lifecycle from initial setup through production deployment. Unlike the SteelWheels overview where you explored a pre-built schema, this workshop guides you through creating each component yourself - establishing database connections, adding fact tables, building dimensions with hierarchies and levels, defining measures, and ultimately publishing your schema to the Pentaho BA Server where it becomes available for Analyzer reports and interactive analysis.

**What You'll Accomplish:**

* Create a new Mondrian schema from scratch and establish proper naming conventions
* Configure JDBC connections in both Schema Workbench and Pentaho Server for consistent data access
* Add the ClassicModelsOrders cube as the central analytical structure
* Configure the ORDERFACT fact table as the source of measurable business events
* Define the Sales measure with sum aggregation and currency formatting
* Build the CUSTOMERS dimension with a two-level hierarchy (Territory → Customer Name)
* Create the PRODUCTS dimension with Product Line and Vendor levels
* Configure foreign keys, primary keys, and level properties for proper query generation
* Understand dimension types, hierarchy settings, and level uniqueness properties
* Validate your schema structure and review the generated XML
* Publish your completed schema to Pentaho BA Server
* Test your schema by creating an Analysis Report in Pentaho Analyzer

By the end of this workshop, you'll have hands-on experience with every essential component of Mondrian schema development. You'll understand how fact tables connect to dimensions through foreign keys, how hierarchies organize data from general to specific, and how measures define what gets calculated and aggregated. Most importantly, you'll complete the full development lifecycle—from initial design through testing and deployment—validating that your schema works correctly by creating actual analysis reports that leverage your multidimensional model. This practical experience prepares you to design and build production-ready OLAP cubes for real-world business intelligence requirements.

**Prerequisites:** Schema Workbench and Pentaho Server installed and configured; Access to SampleData database; Basic understanding of dimensional modeling concepts, fact tables, and dimension tables

**Estimated Time:** 90 minutes
{% endhint %}

{% file src="<https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/jcyNeLZhF9wWbldG45IU/ClassicModels%20-%20original.xml>" %}

***

1. Start Schema Workbench:

{% hint style="info" %}

#### Windows (PowerShell):

```powershell
cd \
cd Pentaho/design-tools/schema-workbench/
./workbench.bat
```

{% endhint %}

{% hint style="info" %}

#### Linux:

```bash
cd
cd Pentaho/design-tools/schema-workbench/
./workbench.sh
```

{% endhint %}

2. Ensure Pentaho Server is running:

{% hint style="danger" %}
**Ensure that the Pentaho Server is up and running (automatically started in Pentaho Lab):**

```bash
cd
cd /opt/pentaho/server/pentaho-server
sudo ./start-pentaho.sh
```

{% endhint %}

Follow the guide below to understand how **Classic Models** **Schema** is defined:

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/46VDf4RecSsUCioIufW2/image.png" alt="" width="425"><figcaption><p>Workflow to define a Schema</p></figcaption></figure>

{% tabs %}
{% tab title="1. JDBC Connection" %}
{% hint style="info" %}

#### JDBC Connection

A JDBC (Java Database Connectivity) connection in Schema Workbench establishes the link between the tool and your source database, enabling you to access physical tables and columns needed to build Mondrian schemas.
{% endhint %}

{% hint style="danger" %}
**If you're using the Pentaho Lab then the driver has already been copied to the /lib directory.**

&#x20;To create a JDBC connection you will need to copy the H JDBC driver for your database into the PSW install directory ...\schema-workbench\lib.&#x20;

Restart the Pentaho Metadata Editor, and you will see your database in the Connection Type list.
{% endhint %}

{% embed url="<https://www.loom.com/share/5d8aeb46632048b491c3a26eeaeb936f?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}
JDBC Connection - mysql:sampledata
{% endembed %}

***

1. To connect to the sampledata database, from the menu select Options > Connection.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/uECDe9aEKgMl76x3Bl3r/image.png" alt=""><figcaption><p>JDBC Connection</p></figcaption></figure>

2. In the Database Connection dialog, type or choose the following:

<table><thead><tr><th width="228">Field</th><th>Value</th></tr></thead><tbody><tr><td>Connection name</td><td>hsqldb_sampledata</td></tr><tr><td>Connection type</td><td>Hypersonic</td></tr><tr><td>Host Name</td><td>localhost</td></tr><tr><td>Database Name</td><td>sampledata</td></tr><tr><td>Port Number</td><td>9001</td></tr><tr><td>Username</td><td>pentaho_admin</td></tr><tr><td>Password</td><td>password</td></tr></tbody></table>

4. Click Test.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/K5gViLMX3BWICexGX6Cb/image.png" alt=""><figcaption><p>JDBC Connection - hsqldb_sampledata</p></figcaption></figure>

4. Click OK to dismiss the Message Box dialog and click OK to close the Database Connection dialog.

***

{% hint style="info" %}

#### Pentaho Server JDBC

The workflow above creates and defines a JDBC clientside, i.e. it enables the SAchema Workbench to connect to the Hypersonic Data Source. When you Publish the Schema to the Pentaho Repository, you need to ensure that the same connection is also defined - Manage Data Sources.
{% endhint %}

1. Log into the Pentaho Server Console (as Admin) > Manage Data Sources.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/MRrWprOAGiV8gDXKny1E/image.png" alt=""><figcaption><p>Manage Data Sources</p></figcaption></figure>

2. From the drop-down co wheel, select: New Connection.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/3NAEDFLi1b7riv2pXISA/image.png" alt=""><figcaption><p>New Connection</p></figcaption></figure>

3. In the Database Connection dialog, type or choose the following:

   <table><thead><tr><th width="228">Field</th><th>Value</th></tr></thead><tbody><tr><td>Connection name</td><td>hsqldb_sampledata</td></tr><tr><td>Connection type</td><td>Hypersonic</td></tr><tr><td>Host Name</td><td>localhost</td></tr><tr><td>Database Name</td><td>sampledata</td></tr><tr><td>Port Number</td><td>9001</td></tr><tr><td>Username</td><td>pentaho_admin</td></tr><tr><td>Password</td><td>password</td></tr></tbody></table>

4. Test the connection.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/VN0iTJECUVQAaLnBnTzc/image.png" alt=""><figcaption><p>Connection - hsqldb_sampledata</p></figcaption></figure>

5. Click OK.

{% hint style="warning" %}
The connection must have the same name as the XMLA connection - Publish.
{% endhint %}
{% endtab %}

{% tab title="2. Schema / Cube" %}
{% hint style="info" %}

#### Classic Models Schema

The **ClassicModelsOrders** cube is a foundational multidimensional structure built in Schema Workbench that demonstrates core OLAP design principles using sales order data from the SampleData database.&#x20;

At its center is the **ORDERFACT** fact table, which contains transactional sales data and serves as the source for quantitative measures such as **Sales** (aggregated as a sum of TOTALPRICE with currency formatting).&#x20;

The cube includes two primary dimensions: the **CUSTOMERS** dimension, which provides a hierarchical view from Territory down to individual Customer Names using the CUSTOMER\_W\_TER table, and the **PRODUCTS** dimension, which organizes product data from Product Line through Vendor using the PRODUCTS table.&#x20;
{% endhint %}

{% embed url="<https://www.loom.com/share/edcdc7025caa49038a22df66e9e186e3?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}
Creating a Schema
{% endembed %}

***

1. To create a new schema, from the menu choose File > New > Schema. Alternatively, from the   \
   toolbar, click the New button, and click Schema.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/X2xH6xDBZXUGKcsKkw8J/image.png" alt=""><figcaption></figcaption></figure>

2. To name the schema, in the left pane, click: Schema.
3. In the name field, replace the existing value by typing: Classic Models, and then press Enter.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/mIgRtqzhmS1nNRRg3tF9/image.png" alt=""><figcaption><p>Schema - ClassicModels</p></figcaption></figure>

***

{% hint style="info" %}

#### Cube

The **ClassicModelsOrders** cube is the primary organizational unit and multidimensional analytical space within the Classic Models schema, serving as a container that brings together all the essential components needed for business intelligence analysis.&#x20;

In Mondrian terminology, a cube represents a specific business process or subject area—in this case, order transactions—and acts as the central structure that connects the **ORDERFACT** fact table with its associated dimensions (CUSTOMERS and PRODUCTS) and measures (Sales). The cube defines the analytical boundaries and possibilities for users, determining which questions can be answered and which combinations of data can be explored.&#x20;

When published to the Pentaho BA Server, the ClassicModelsOrders cube becomes available as a data source in Analyzer, allowing business users to interactively slice, dice, drill down, and pivot the sales data across customer territories and product lines to gain insights and make data-driven decisions. Essentially, the cube transforms a flat relational database structure into a multidimensional model optimized for fast, intuitive analytical queries and exploration.
{% endhint %}

{% embed url="<https://www.loom.com/share/aa2efbf60ee8490fbeef871e6192370f?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}

1. To add a cube, on the toolbar, click Add cube.
2. In the name field, replace the existing value by typing: ClassicModelsOrders.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/3A0Tikefc7FnfZy6fLsJ/image.png" alt=""><figcaption></figcaption></figure>

3. To save the schema, from the menu select File > Save As.
   {% endtab %}

{% tab title="3. FACT" %}
{% hint style="info" %}

#### FACT Table

The fact table holds the columns from which measures are calculated and contains references to the\
dimension tables.

At its centre is the **ORDERFACT** fact table, which contains transactional sales data and serves as the source for quantitative measures such as **Sales** (aggregated as a sum of TOTALPRICE with currency formatting).&#x20;

The cube includes two primary dimensions: the **CUSTOMERS** dimension, which provides a hierarchical view from Territory down to individual Customer Names using the CUSTOMER\_W\_TER table, and the **PRODUCTS** dimension, which organizes product data from Product Line through Vendor using the PRODUCTS table.&#x20;
{% endhint %}

{% embed url="<https://www.loom.com/share/7d8012bd48594ff9aceec25256c9ef24?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}
Fact Table
{% endembed %}

***

1. To add the ORDERFACT table, in the left pane, right-click Basic Orders, and click Add Table.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/sdPkKwDEWfwGx48FPdu0/image.png" alt=""><figcaption><p>Add table</p></figcaption></figure>

2. Click in the Value for name, select PUBLIC > ORDERFACT.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/Swm9PRjq4QZFz26sXxxt/image.png" alt=""><figcaption><p>Set ORDERFACT table</p></figcaption></figure>

3. Save the Model.
   {% endtab %}

{% tab title="4. Dimensions & Hierarchies" %}
{% hint style="info" %}

#### Dimensions & Hierarchies

The **ClassicModelsOrders** cube contains two standard dimensions that enable multidimensional analysis of sales data. The **CUSTOMERS** dimension, linked to the fact table via the CUSTOMERNUMBER foreign key, provides a customer-focused analytical perspective through the "Customers" hierarchy, which includes two levels:&#x20;

**Territory** (the top level, representing geographic sales regions with unique members) and&#x20;

**Customer Name** (the detail level, displaying individual customer names).&#x20;

The **PRODUCTS** dimension, connected through the PRODUCTCODE foreign key, organizes product information through the "Products" hierarchy with two levels:&#x20;

**Product Line** (the top level, categorizing products into distinct product families with unique members such as Classic Cars, Motorcycles, and Planes) and&#x20;

**Vendor** (the detail level, identifying the specific manufacturer or supplier of each product). Both dimensions follow a hierarchical structure from general to specific, allowing users to drill down from high-level categories (Territory or Product Line) to granular details (Customer Name or Vendor), with each level defined by specific database columns, data types (String), and uniqueness properties that determine aggregation behavior and query performance.
{% endhint %}

{% embed url="<https://www.loom.com/share/3752f22898e6433e89cfc8c2872f5962?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}
Dimensions
{% endembed %}

***

1. To add a dimension, in the left pane, right-click ClassicModelsOrders Cube, and click Add   \
   Dimension.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/PoPydBenRiAqbE4SBgwu/image.png" alt=""><figcaption><p>Add Dimension</p></figcaption></figure>

2. To create the CUSTOMERS dimension, type or choose:

<table><thead><tr><th width="311">Attribute</th><th>Value</th></tr></thead><tbody><tr><td>name</td><td>CUSTOMERS</td></tr><tr><td>foreign key</td><td>CUSTOMERNUMBER</td></tr><tr><td>type</td><td>StandardDimension</td></tr></tbody></table>

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/954mJloDcrcmXTE5xKyY/image.png" alt=""><figcaption><p>CUSTOMER Dimension</p></figcaption></figure>

3. To view the Hierarchy, in the left pane, expand CUSTOMERS, and then Click: New Hierarchy 0.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/PqWi5nznbnES58gprRnb/image.png" alt=""><figcaption><p>Add table</p></figcaption></figure>

4. To add the CUSTOMER\_W\_TER table, right-click New Hierarchy 0, and Click: Add Table.
5. Click in the Value for name, select PUBLIC > CUSTOMER\_W\_TER, and press Tab.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/1BlnbT2VXbeWs4nNTFFr/image.png" alt=""><figcaption><p>Select Dimension table</p></figcaption></figure>

6. To name the hierarchy and set the primary key, click New Hierarchy 0.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/8MAAcpoKqqmfdvI5iw7X/image.png" alt=""><figcaption><p>CUSTOMER Hiearachy</p></figcaption></figure>

7. To create the Customer hierarchy, type or choose:

| Attribute     | Value          |
| ------------- | -------------- |
| name          | Customers      |
| hasAll        | enable         |
| allMemberName | All Customers  |
| primaryKey    | CUSTOMERNUMBER |
| visible       | enable         |
| {% endtab %}  |                |

{% tab title="5. Levels" %}
{% hint style="info" %}

#### Levels

Levels in the ClassicModelsOrders schema serve as the building blocks of hierarchical navigation, enabling users to analyze sales data at different levels of granularity and detail. They organize information from broad categories to specific details, allowing business users to start with high-level summaries (such as total sales by Territory or Product Line) and progressively drill down into finer details (individual Customer Names or specific Vendors) to investigate patterns, identify trends, and answer detailed business questions.&#x20;

Levels also define the aggregation behavior for measures, determining how sales figures are summarized and rolled up across the hierarchy—for instance, customer-level sales automatically aggregate to the Territory level, providing meaningful subtotals at each tier.&#x20;

This hierarchical structure mirrors natural business thinking, where executives might analyze performance by region while sales managers focus on individual customer performance, making OLAP cubes intuitive and aligned with real-world decision-making processes.
{% endhint %}

{% embed url="<https://www.loom.com/share/ce0e6919c4544c24adbb6cc2cc8f8f2e?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}

***

1. To add a level, in the left pane, right-click the Customer Hierarchy, and select Add Level.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/eqguwcOtpnLMZZ6faffa/image.png" alt=""><figcaption><p>Level - Territory</p></figcaption></figure>

2. To create the Territory level, type or choose:

| Attribute     | Value     |
| ------------- | --------- |
| name          | Territory |
| column        | TERRITORY |
| type          | String    |
| uniqueMembers | enable    |
| levelType     | Regular   |
| hideMemberIf  | Never     |

3. To add another level, in the left pane, right-click the Customer Hierarchy, and select Add Level.
4. To create the Customer Name level, type or choose:

| Attribute     | Value                                                      |
| ------------- | ---------------------------------------------------------- |
| name          | Customer Name                                              |
| column        | CUSTOMERNAME                                               |
| type          | string                                                     |
| uniqueMembers | dont enable, unless you know each Customer Name is unique. |
| levelType     | Regular                                                    |
| hideMemberIf  | Never                                                      |

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/fZrpy2Hvwogbp21ANr9s/image.png" alt=""><figcaption><p>Level - Customer Name</p></figcaption></figure>

5. To save the schema, on the toolbar, click Save.
6. To add another dimension, in the left pane, right-click ClassicModelsOrders Cube, and click Add Dimension.
7. To create the PRODUCTS dimension, type or choose:

| Attribute  | Value       |
| ---------- | ----------- |
| name       | PRODUCTS    |
| foreignKey | PRODUCTCODE |

8. To view the hierarchy, in the left pane, expand PRODUCTS, and then click New Hierarchy 0.
9. To add the PRODUCTS table, right-click New Hierarchy 0, and click Add Table.
10. Click in the Value for name, select PUBLIC > PRODUCTS, and press Tab.
11. To name the hierarchy and set the primary key, click New Hierarchy 0.
12. To create the Product hierarchy, type or choose:

| Attribute     | Value        |
| ------------- | ------------ |
| name          | Products     |
| allMemberName | All Products |
| primaryKey    | PRODUCTCODE  |

13. To add a level, in the left pane, right-click the Product Hierarchy, and select Add Level.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/nW44EltE5ZL5jQMkKt8v/image.png" alt=""><figcaption><p>Level - Products</p></figcaption></figure>

14. To create the Product Line level, type or choose:

| Attribute     | Value        |
| ------------- | ------------ |
| name          | Product Line |
| column        | PRODUCTLINE  |
| type          | String       |
| uniqueMembers | enable       |
| levelType     | Regular      |
| hideMemberIf  | Never        |

15. To add another level, in the left pane, right-click the Product Hierarchy, and select Add Level.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/3VOl2uk73sA5gtvQf25i/image.png" alt=""><figcaption><p>Level - Vendor</p></figcaption></figure>

16. To create the Vendor level, type or choose:

| Attribute    | Value         |
| ------------ | ------------- |
| name         | Vendor        |
| column       | PRODUCTVENDOR |
| type         | String        |
| levelType    | Reguslar      |
| hideMemberIf | Never         |

17. To save the schema, on the toolbar, click Save.
    {% endtab %}

{% tab title="6. Measures" %}
{% hint style="info" %}

#### Measures

Measures in the ClassicModelsOrders cube are the quantitative, numeric facts that business users analyze and aggregate across different dimensional perspectives. The primary measure in this schema is **Sales**, which represents the total revenue from order transactions and is defined by mapping to the **TOTALPRICE** column in the ORDERFACT fact table. This measure uses the **sum** aggregator, meaning that sales values are added together when aggregated across any dimension—whether viewing total sales by Territory, Product Line, or any combination of dimensions.&#x20;

The measure is configured with a **formatString** of `$#,###.00`, ensuring that sales figures display as properly formatted currency with dollar signs, thousand separators, and two decimal places for cents, making reports immediately readable and professional for business users.&#x20;

The **Numeric** datatype ensures mathematical operations and aggregations are performed correctly. Measures are essential because they provide the "what we're measuring" in analytics—while dimensions answer "how we're grouping the data" (by customer, by product), measures answer "what values are we calculating and comparing" (sales revenue, quantities, counts), enabling users to track performance, identify trends, and make informed business decisions based on concrete numbers rather than subjective assessments.
{% endhint %}

{% embed url="<https://www.loom.com/share/9a3b097c1ccc4819b8474147a67d7189?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}
Measures
{% endembed %}

***

1. To add a measure, in the left pane, right-click Orders, and click Add Measure.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/5HEudtOl009Jyr8sQ72D/image.png" alt=""><figcaption><p>Measures - Sales</p></figcaption></figure>

2. To create the Sales measure, type or choose:

| Attribute    | Value      |
| ------------ | ---------- |
| name         | Sales      |
| aggregator   | sum        |
| column       | TOTALPRICE |
| formatString | $#,###.00  |
| dataType     | Numeric    |

3. To save the schema, on the toolbar, click Save.

{% hint style="danger" %}
There should be no red crosses against any of the objects in the Schema.

The minimum requirements for  Schema to be published:

Cube - FACT Table

Dimension - Dimension Table

Hierarchy

Level

Measure
{% endhint %}

4. View the Schema XML.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/moElsAk4jXN5GzXRPcfz/image.png" alt=""><figcaption><p>View - Schema XML</p></figcaption></figure>

{% hint style="info" %}
Its Best Practice to copy the XML - Backup / Versioning
{% endhint %}

{% file src="<https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/vEoY9hpsZ7lTAgXUB7zU/ClassicModels.xml>" %}
{% endtab %}

{% tab title="7. Publish" %}
{% hint style="info" %}

#### Publish

The **Publish** workflow in the ClassicModelsOrders schema is the critical final step that deploys your completed Mondrian schema from Schema Workbench to the Pentaho BA Server, making it available as a data source for business users creating Analyzer reports and dashboards.&#x20;
{% endhint %}

{% embed url="<https://www.loom.com/share/78f922d6f37d45dc81b56046eae090b0?hideEmbedTopBar=true&hide_owner=true&hide_share=true&hide_title=true>" %}

***

1. To publish the schema, from the menu, select File > Publish.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/zQOUGfrBjTkGHePSY8YH/image.png" alt=""><figcaption><p>Publish Schema</p></figcaption></figure>

2. To publish the schema, type or choose::

<table><thead><tr><th width="284"></th><th></th></tr></thead><tbody><tr><td>Server URL</td><td>http://localhost:8080/pentaho/</td></tr><tr><td>User</td><td>admin</td></tr><tr><td>Password</td><td>password</td></tr><tr><td>Pentaho or JNDI Data Source</td><td>hsqldb_sampledata</td></tr><tr><td>Register XMLA Data Source</td><td>enable</td></tr><tr><td>Remember these Settings</td><td>enable</td></tr></tbody></table>

{% hint style="info" %}
An XMLA (XML for Analysis) data source is a protocol for accessing multidimensional data, used primarily by SQL Server Analysis Services and Power BI semantic models through [XMLA endpoints](https://www.google.com/search?q=XMLA+endpoints\&rlz=1C1CHBF_enGB1149GB1149\&oq=XMLA+data+source\&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIJCAEQABgNGIAEMggIAhAAGBYYHjIICAMQABgWGB4yCAgEEAAYFhgeMgoIBRAAGAUYDRgeMgoIBhAAGAUYDRgeMgoIBxAAGAUYDRgeMgoICBAAGAUYDRgeMgoICRAAGAUYDRge0gEJODEzMWowajE1qAIIsAIB8QXs5r-FJ12y0w\&sourceid=chrome\&ie=UTF-8\&mstk=AUtExfB1JiGsRa0jPFsOhXEzu1n-x4Yv3nzzsWrBBQdd3r5ISiUhgIydSl8kIHGd4ljXKMHbgGFPZ0ZBJcVJC_gmrtbLCpVXKyqZAUKTevgkgAaJXAiSCziVSzy4GtF1k3qheZ4\&csui=3\&ved=2ahUKEwjgqIWun8SQAxUCVEEAHdcFEDgQgK4QegQIARAC). This enables the use of various external tools for data modeling, management, monitoring, and reporting by treating these models as if they were on an Analysis Services instance.&#x20;
{% endhint %}

3. Click: Publish.

***

{% hint style="info" %}

#### Test Schema

Finally, we will use the new schema as a data source to create a report using Analyzer.
{% endhint %}

1. Log into Pentaho User Console - Admin.
2. Refresh the Mondrian Schema Cache & Reporting Data Cache.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/afAplcrCfDVtzST4U4HZ/image.png" alt=""><figcaption><p>Refresh the Caches</p></figcaption></figure>

4. From the User Console Home Perspective, click Create New > Analysis Report.
5. In the Select Data Source dialog, click Classic Models: ClassicModelsOrders.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/r3kTvIyHqRFtI4eusP3O/image.png" alt=""><figcaption><p>Select Classic Models schema</p></figcaption></figure>

4. Drag Sales to the Measure drop zone.
5. Drag Territory and Product Line to the Rows drop zone.

<figure><img src="https://content.gitbook.com/content/VLCJbSi5xQoetAvNtGiu/blobs/tbqu3uQvLv87wV9N9xWI/image.png" alt=""><figcaption><p>Analyzer report</p></figcaption></figure>

6. Once tested, Close the report.

{% hint style="info" %}
From the View drop-down option select: Schema to display the Schema as designed.
{% endhint %}
{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://academy.pentaho.com/schema-workbench/schema-workbench/schemas/basic-model.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
