> For the complete documentation index, see [llms.txt](https://academy.pentaho.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://academy.pentaho.com/business-analytics-path-sandbox/business-analytics/level-2-associate.md).

# Level 2 — Associate

Level 2 of the Business Analytics path: four BI Developer courses — Schema Workbench, Metadata Editor, Report Designer and CTools. 84 lessons across 31 modules.

{% hint style="warning" %}
**🧪 SANDBOX — draft content**, built from the four rebuilt courses in Pentaho Content Manager — `bi-developer-sw-associate` 0.1.9, `bi-developer-me-associate` 0.1.10, `bi-developer-rd-associate` 0.1.8 and `bi-developer-ct-associate` 0.1.8. Module and lesson names, the reading-or-workshop kinds and the times come straight from each lab's manifest; the prose is drafted from the courses' own module summaries. Items marked REPLACE-ME need an owner's confirmation.
{% endhint %}

Level 1 taught you to use the Business Analytics tools — Interactive Reports, Analyzer and dashboards in the User Console. Level 2 is where you build what those tools run on, and what they can't do: the Mondrian cubes Analyzer slices, the metadata domains Interactive Reports query, print-quality parameterised reports in Report Designer, and fully custom CTools dashboards. Four courses, taken in order — Schema Workbench, Metadata Editor, Report Designer, CTools — each with its own labs and its own embedded exam.

{% columns %}
{% column %}

<p align="center"><i class="fa-file-lines" style="color:green;">:file-lines:</i><br><strong>84 lessons</strong><br><em>across 31 modules in 4 courses</em></p>
{% endcolumn %}

{% column %}

<p align="center"><i class="fa-flask" style="color:orange;">:flask:</i><br><strong>47 workshops</strong><br><em>hands-on labs</em></p>
{% endcolumn %}

{% column %}

<p align="center"><i class="fa-clock" style="color:cyan;">:clock:</i><br><strong>~44h 05m</strong><br><em>self-paced, over several weeks</em></p>
{% endcolumn %}
{% endcolumns %}

{% hint style="success" icon="cloud-arrow-up" %}
Every workshop is hands-on and runs on Pentaho's hosting platform. The Lab Guide is embedded in each lab and loads automatically when you open it — nothing to install.
{% endhint %}

***

<h3 align="center">Before you start</h3>

{% columns %}
{% column %}
{% hint style="success" icon="circle-check" %}
**What you'll need**

Level 1 — Practitioner course accreditation, or equivalent day-to-day use of Interactive Reports, Analyzer and Dashboard Designer. The courses model and report on the SteelWheels SampleData schema, so comfort with relational tables, keys and basic SQL will make the labs quicker — but every step is shown. The CTools course goes furthest from the point-and-click tools: it helps to have seen a little HTML, CSS and JavaScript.
{% endhint %}
{% endcolumn %}

{% column %}
{% hint style="warning" icon="tag" %}
**Built against**

REPLACE-ME — confirm the Pentaho Server, Schema Workbench, Metadata Editor and Report Designer versions the hosted labs run, so screens and menus match the guide step for step.
{% endhint %}
{% endcolumn %}
{% endcolumns %}

***

{% hint style="info" icon="cube" %}

#### What you'll build

Everything sits on the same SteelWheels data. In Schema Workbench: the SteelWheels cube explored, the Classic Models cube built step by step, the Miniature Models cube built independently — then extended with time and geographic dimensions and calculated members, queried in MDX, locked down with four Mondrian roles, translated into French and sped up with aggregate tables. In Metadata Editor: the OrdersME star-schema domain built from scratch, enriched with inherited properties and reusable concepts, secured with row-level constraints, and the Trailhead Outfitters capstone — a MySQL sales database modelled from an empty domain to a published, secured domain and proven with three users in Interactive Reports. In Report Designer: a Regional Sales report capstone — grouped, totalled, conditionally formatted, parameterised, charted with drill-down sub-reports, and published to the repository with hyperlinks. In CTools: a Carrier dashboard built three ways (CDF, CDE, CGG) over CDA data sources, and a Retail Sales analysis dashboard as the closing use case.
{% endhint %}

```mermaid
%%{init: {"theme":"base","themeVariables":{"fontFamily":"Arial, Helvetica, sans-serif","fontSize":"13px","lineColor":"#64748b","clusterBkg":"#fafaf9","clusterBorder":"#d6d3d1","edgeLabelBackground":"#ffffff"},"flowchart":{"curve":"basis","nodeSpacing":28,"rankSpacing":44,"padding":22,"wrappingWidth":600,"htmlLabels":true}}}%%
flowchart TB
  classDef input fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a,text-align:left,rx:6,ry:6
  classDef tool fill:#dbeafe,stroke:#1d4ed8,color:#1e3a8a,text-align:left,rx:6,ry:6
  classDef server fill:#ede9fe,stroke:#6d28d9,color:#3b0764,text-align:left,rx:6,ry:6
  classDef model fill:#ccfbf1,stroke:#0f766e,color:#134e4a,text-align:left,rx:6,ry:6
  classDef browser fill:#fef3c7,stroke:#b45309,color:#78350f,text-align:left,rx:6,ry:6
  DATA[("<b>SteelWheels SampleData</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>relational tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;")]:::input
  SWB["<b>Schema Workbench</b>&nbsp;&nbsp;&nbsp;&nbsp;<br/>a Mondrian schema: cubes,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>dimensions, measures, MDX,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>roles, aggregate tables&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]:::model
  ME["<b>Metadata Editor</b>&nbsp;&nbsp;&nbsp;&nbsp;<br/>a metadata domain: physical layer,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>business model, concepts,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>row-level security&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]:::model
  RD["<b>Report Designer</b>&nbsp;&nbsp;&nbsp;&nbsp;<br/>print-quality reports: groups,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>totals, parameters, charts,&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>sub-reports&nbsp;&nbsp;&nbsp;"]:::tool
  CT["<b>CTools</b>&nbsp;&nbsp;&nbsp;<br/>custom dashboards: CDA data&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>sources, CDF and CDE with&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>CCC charts, CGG&nbsp;&nbsp;&nbsp;&nbsp;"]:::tool
  SRV["<b>Pentaho Server</b>&nbsp;&nbsp;&nbsp;&nbsp;<br/>everything is published&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>to the repository&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]:::server
  AN["<b>Analyzer</b>&nbsp;&nbsp;&nbsp;<br/>queries the cube&nbsp;&nbsp;&nbsp;&nbsp;"]:::browser
  IR["<b>Interactive Reports</b>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>query the domain&nbsp;&nbsp;&nbsp;&nbsp;"]:::browser
  PUC["<b>User Console</b>&nbsp;&nbsp;&nbsp;<br/>runs the reports and dashboards&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"]:::browser
  DATA -->|"model it&nbsp;&nbsp;&nbsp;"| SWB
  DATA -->|"model it&nbsp;&nbsp;&nbsp;"| ME
  SWB -.->|"a data source for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"| RD
  ME -.->|"a data source for&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"| CT
  RD --> SRV
  CT --> SRV
  SWB --> SRV
  ME --> SRV
  SRV -->|"the cube&nbsp;&nbsp;&nbsp;"| AN
  SRV -->|"the domain&nbsp;&nbsp;&nbsp;"| IR
  SRV -->|"reports, dashboards&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"| PUC
```

<p align="center"><em>What each of the four courses builds, where it is published, and which Level 1 tool runs on it.</em></p>

***

<h3 align="center">What you'll learn</h3>

{% columns %}
{% column %}

* Model OLAP data as a Mondrian schema — cubes, dimensions, hierarchies, levels and measures — and choose between star and normalised designs
* Take a basic cube to production grade with shared time dimensions, member properties, degenerate dimensions and calculated members
* Query cubes directly in MDX to validate and troubleshoot a schema, and centralise reusable member collections as Named Sets
* Secure a cube with Mondrian roles, grants and rollup policies; localise it by user locale; speed it up with aggregate tables
* Build a metadata domain in Metadata Editor — physical layer, business model, relationships and business views — then enrich it with inherited properties and reusable concepts
* Lock a published domain down with metadata security and row-level data constraints, so roles see different rows and columns
  {% endcolumn %}

{% column %}

* Design print-quality reports in Report Designer: JDBC data sources and queries, data elements and groups, totals and conditional formatting, headers and footers
* Make reports interactive with parameters, charts, drill-down and multiple sub-reports, then publish them to the repository with hyperlinks
* Build custom dashboards with the Community Tools: CDA data sources, CDF and CDE dashboards with CCC charts, and CGG-generated graphics
* Publish cubes, domains, reports and dashboards to the Pentaho Server and prove them where Level 1 left off — in Analyzer, Interactive Reports and the User Console
  {% endcolumn %}
  {% endcolumns %}

***

<h3 align="center">Course outline</h3>

<p align="center"><i class="fa-file-lines" style="color:green;">:file-lines:</i> reading · <i class="fa-flask" style="color:orange;">:flask:</i> hands-on workshop</p>

{% hint style="info" icon="circle-info" %}
Full lessons unlock once you're enrolled — this is the outline only. One tab per course, in the order you take them; times are the lab guides' own estimates.
{% endhint %}

{% tabs %}
{% tab title="1 · Schema Workbench" %}

<p align="center">Hands-on workshop for the OLAP / Mondrian schema BI Developer. Build, extend, and publish Mondrian schemas with Pentaho Schema Workbench — cubes, dimensions, hierarchies, levels, measures, calculated members, named sets — and query them with MDX.</p>

<p align="center"><strong>17 lessons · 8 modules · ~12h 50m</strong></p>

<table data-search="false"><thead><tr><th width="352">Module</th><th width="115" align="center">Reading</th><th width="132" align="center">Workshops</th><th width="100" align="right">Time</th></tr></thead><tbody><tr><td>Getting Started</td><td align="center">1</td><td align="center">—</td><td align="right">~25m</td></tr><tr><td>Key Concepts &#x26; Terminology</td><td align="center">1</td><td align="center">—</td><td align="right">~20m</td></tr><tr><td>Schemas</td><td align="center">1</td><td align="center">3</td><td align="right">~4h</td></tr><tr><td>Extend Model</td><td align="center">1</td><td align="center">2</td><td align="right">~2h 20m</td></tr><tr><td>MDX Query</td><td align="center">1</td><td align="center">2</td><td align="right">~1h 10m</td></tr><tr><td>Data Security</td><td align="center">1</td><td align="center">1</td><td align="right">~2h 30m</td></tr><tr><td>Localization</td><td align="center">1</td><td align="center">1</td><td align="right">~1h 20m</td></tr><tr><td>Performance</td><td align="center">—</td><td align="center">1</td><td align="right">~45m</td></tr><tr><td><strong>Total</strong></td><td align="center"><strong>7</strong></td><td align="center"><strong>10</strong></td><td align="right"><strong>~12h 50m</strong></td></tr></tbody></table>

{% stepper %}
{% step %}

### <i class="fa-rocket" style="color:blue;">:rocket:</i> Getting Started

`1 reading · ~25m`

How to get the most out of this guide, and how to set your machine up — whether you are on a lab VM or installing Pentaho Server and Schema Workbench on your own laptop.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Before You Start</td><td>~25m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-lightbulb" style="color:blue;">:lightbulb:</i> Key Concepts & Terminology

`1 reading · ~20m`

OLAP vs. OLTP, multidimensional cubes, star vs. normalised schemas, and the ROLAP Mondrian engine — the mental model behind every lab.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Key Concepts &#x26; Terminology</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-cubes" style="color:blue;">:cubes:</i> Schemas

`1 reading · 3 workshops · ~4h`

The building blocks of a Mondrian schema, then three guided builds against the SteelWheels SampleData: explore the prebuilt SteelWheels cube, build the Classic Models schema step by step, then prove your skills by constructing the Miniature Models schema independently.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Schemas</td><td>~30m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>SteelWheels</td><td>~45m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Basic Model</td><td>~1h 30m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Standard Model</td><td>~1h 15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-diagram-project" style="color:blue;">:diagram-project:</i> Extend Model

`1 reading · 2 workshops · ~2h 20m`

Take a basic cube to production grade: shared time dimensions, geographic annotations for maps, member properties, degenerate dimensions, and calculated members (UnitPrice, Top 10 Customers) that embed business logic in the semantic layer.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Extend Model</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Extended Model</td><td>~1h 30m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Calculations</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-code" style="color:blue;">:code:</i> MDX Query

`1 reading · 2 workshops · ~1h 10m`

Query cubes directly with MDX to validate and troubleshoot your schemas — SELECT / FROM / WHERE, axes vs. slicers, member references — then centralise reusable member collections with Named Sets.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of MDX Query</td><td>~15m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>MDX Query</td><td>~25m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Named Sets</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-lock" style="color:blue;">:lock:</i> Data Security

`1 reading · 1 workshop · ~2h 30m`

Lock cubes down with Mondrian's role-based security: roles and role mappers, then the grant hierarchy (Schema, Cube, Hierarchy, Member) and rollup policies, applied hands-on as four progressively restrictive roles on the Miniature Models schema.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Data Security</td><td>~30m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Mondrian Security</td><td>~2h</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-language" style="color:blue;">:language:</i> Localization

`1 reading · 1 workshop · ~1h 20m`

Serve a global audience from a single schema. Tokenize the Classic Models schema, deploy English and French property files, and configure Mondrian's dynamic schema processor so cubes translate automatically by user locale.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Localization</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>FR Localization</td><td>~1h</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-gauge-high" style="color:blue;">:gauge-high:</i> Performance

`1 workshop · ~45m`

Speed up the cube with aggregate tables: build two pre-computed roll-ups from ORDERFACT, switch Mondrian's aggregate matching on, declare them with AggName in the schema, and prove from the generated SQL that queries hit the small tables.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Aggregate Tables</td><td>~45m</td></tr></tbody></table>

</details>
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="2 · Metadata Editor" %}

<p align="center">Hands-on workshop for the BI Developer. Build business-friendly semantic models with Pentaho Metadata Editor — physical layer, business models, relationships, business views, properties, reusable concepts, and security — then publish XMI domains for ad-hoc Interactive Reporting.</p>

<p align="center"><strong>13 lessons · 6 modules · ~9h 15m</strong></p>

<table data-search="false"><thead><tr><th width="350">Module</th><th width="115" align="center">Reading</th><th width="132" align="center">Workshops</th><th width="100" align="right">Time</th></tr></thead><tbody><tr><td>Getting Started</td><td align="center">2</td><td align="center">—</td><td align="right">~35m</td></tr><tr><td>Domains &#x26; Models</td><td align="center">1</td><td align="center">3</td><td align="right">~2h 50m</td></tr><tr><td>Properties</td><td align="center">1</td><td align="center">1</td><td align="right">~55m</td></tr><tr><td>Concepts</td><td align="center">1</td><td align="center">1</td><td align="right">~1h 20m</td></tr><tr><td>Security &#x26; Data Access</td><td align="center">1</td><td align="center">1</td><td align="right">~1h 35m</td></tr><tr><td>Capstone Project</td><td align="center">—</td><td align="center">1</td><td align="right">~2h</td></tr><tr><td><strong>Total</strong></td><td align="center"><strong>6</strong></td><td align="center"><strong>7</strong></td><td align="right"><strong>~9h 15m</strong></td></tr></tbody></table>

{% stepper %}
{% step %}

### <i class="fa-rocket" style="color:blue;">:rocket:</i> Getting Started

`2 readings · ~35m`

Meet Pentaho Metadata Editor (PME) and the metadata domain — the physical layer and business model layer that turn raw database tables into a business-friendly semantic layer for ad-hoc reporting.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Before You Start</td><td>~25m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Components</td><td>~10m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-sitemap" style="color:blue;">:sitemap:</i> Domains & Models

`1 reading · 3 workshops · ~2h 50m`

The anatomy of a metadata domain, then three guided builds against the SteelWheels SampleData: explore the prebuilt SteelWheels domain, build the OrdersME star-schema domain from scratch, and assemble queries with the Query Builder.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Domains &#x26; Models</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>SteelWheels</td><td>~45m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>OrdersME</td><td>~1h 30m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Query Builder</td><td>~15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-sliders" style="color:blue;">:sliders:</i> Properties

`1 reading · 1 workshop · ~55m`

Enrich the business model: business tables, columns, and relationships, plus the metadata properties (friendly names, formats, aggregation) that inherit from physical → business → view. Built on the OrderStarCustomer domain.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Properties</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>OrderStarCustomer</td><td>~45m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-tags" style="color:blue;">:tags:</i> Concepts

`1 reading · 1 workshop · ~1h 20m`

Define reusable metadata Concepts (Number, Currency, ID, Hidden, Date) once in the Concept Editor and apply them across columns so formatting and behaviour stay consistent — then validate in an Interactive Report.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Concepts</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Concept Editor</td><td>~1h</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-shield-halved" style="color:blue;">:shield-halved:</i> Security & Data Access

`1 reading · 1 workshop · ~1h 35m`

Lock the model down with metadata security and row-level data constraints, so different roles see different rows and columns from the same published domain.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Security &#x26; Data Access</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Row-Level Security</td><td>~1h 15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-trophy" style="color:blue;">:trophy:</i> Capstone Project

`1 workshop · ~2h`

Put it together end-to-end: model Trailhead Outfitters' MySQL sales database from an empty domain to a published, secured data source, and prove it with three users in Interactive Reports.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Capstone: Trailhead Outfitters</td><td>~2h</td></tr></tbody></table>

</details>
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="3 · Report Designer" %}

<p align="center">Hands-on workshop for Pentaho Report Designer: data sources, report elements and groups, calculations, formatting, parameters, charts, sub-reports, and publishing to the BA repository.</p>

<p align="center"><strong>38 lessons · 11 modules · ~14h 05m</strong></p>

<table data-search="false"><thead><tr><th width="348">Module</th><th width="115" align="center">Reading</th><th width="132" align="center">Workshops</th><th width="100" align="right">Time</th></tr></thead><tbody><tr><td>Before You Start</td><td align="center">—</td><td align="center">1</td><td align="right">~20m</td></tr><tr><td>Navigating Report Designer</td><td align="center">1</td><td align="center">1</td><td align="right">~1h 10m</td></tr><tr><td>Data Sources &#x26; Queries</td><td align="center">1</td><td align="center">1</td><td align="right">~35m</td></tr><tr><td>Report Elements &#x26; Groups</td><td align="center">1</td><td align="center">2</td><td align="right">~55m</td></tr><tr><td>Calculations</td><td align="center">1</td><td align="center">3</td><td align="right">~1h</td></tr><tr><td>Formatting the Report</td><td align="center">1</td><td align="center">3</td><td align="right">~50m</td></tr><tr><td>Report Parameters</td><td align="center">1</td><td align="center">2</td><td align="right">~45m</td></tr><tr><td>Charts &#x26; Sub Reports</td><td align="center">1</td><td align="center">4</td><td align="right">~1h 30m</td></tr><tr><td>Publishing Reports</td><td align="center">1</td><td align="center">3</td><td align="right">~1h</td></tr><tr><td>Capstone Project</td><td align="center">—</td><td align="center">1</td><td align="right">~30m</td></tr><tr><td>Reference</td><td align="center">9</td><td align="center">—</td><td align="right">~5h 30m</td></tr><tr><td><strong>Total</strong></td><td align="center"><strong>17</strong></td><td align="center"><strong>21</strong></td><td align="right"><strong>~14h 05m</strong></td></tr></tbody></table>

{% stepper %}
{% step %}

### <i class="fa-rocket" style="color:blue;">:rocket:</i> Before You Start

`1 workshop · ~20m`

How to get the best from this lab guide — read this five-minute orientation before you begin the course.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Before You Start</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-compass" style="color:blue;">:compass:</i> Navigating Report Designer

`1 reading · 1 workshop · ~1h 10m`

Tour the Report Designer workspace: welcome screen, toolbars, tabs, palettes, and previewing sample reports.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Report Designer</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Navigating Report Designer</td><td>~1h</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-database" style="color:blue;">:database:</i> Data Sources & Queries

`1 reading · 1 workshop · ~35m`

Connect Report Designer to your data: JDBC connections, queries, and the data sets that drive every report.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Data Sources &#x26; Queries</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Connect to a JDBC Data Source</td><td>~15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-table" style="color:blue;">:table:</i> Report Elements & Groups

`1 reading · 2 workshops · ~55m`

Lay out data elements on the canvas and group rows into report sections with headers and footers.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Report Elements &#x26; Groups</td><td>~15m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Adding Data Elements and Report Groups</td><td>~20m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Data Elements and Report Groups</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-calculator" style="color:blue;">:calculator:</i> Calculations

`1 reading · 3 workshops · ~1h`

Add formulas and functions to reports: conditional formatting driven by data, and group / report totals.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Calculations</td><td>~15m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Conditional Formatting</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Totals</td><td>~10m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Calculations</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-paintbrush" style="color:blue;">:paintbrush:</i> Formatting the Report

`1 reading · 3 workshops · ~50m`

Polish the report: headers, footers, fonts, spacing, and the visual details that make reports read well.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Report Formatting</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Formatting Report Headers &#x26; Footers</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Formatting the Report</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Formatting</td><td>~10m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-sliders" style="color:blue;">:sliders:</i> Report Parameters

`1 reading · 2 workshops · ~45m`

Let report users filter at run time with parameters — prompts, defaults, and parameter-driven queries.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Report Parameters</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Report Parameters</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Parameters</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-chart-column" style="color:blue;">:chart-column:</i> Charts & Sub Reports

`1 reading · 4 workshops · ~1h 30m`

Visualise data with charts, embed sub-reports, and build drill-down interactions between them.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Charts &#x26; Sub Reports</td><td>~15m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Charts &#x26; Sub Reports</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Drilldown Charts</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Multiple Sub Reports</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Charts &#x26; Sub Reports</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-cloud-arrow-up" style="color:blue;">:cloud-arrow-up:</i> Publishing Reports

`1 reading · 3 workshops · ~1h`

Publish finished reports to the BA repository and link reports together with hyperlinks.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Publishing</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Publishing Reports</td><td>~20m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Hyperlinks</td><td>~15m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Practice: Publishing</td><td>~15m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-trophy" style="color:blue;">:trophy:</i> Capstone Project

`1 workshop · ~30m`

Build, chart, parameterise, and publish a management-ready regional sales report — every module in one project.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Regional Sales Report</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-book" style="color:blue;">:book:</i> Reference

`9 readings · ~5h 30m`

Appendices from the course manual: data sources, chart types, environment variables, and report templates.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Data Sources Reference</td><td>~1h</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Charts Reference</td><td>~1h</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Environment Variables Reference</td><td>~50m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Report Templates Reference</td><td>~25m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Report Functions Reference</td><td>~30m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Common Formulas Reference</td><td>~25m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Style Properties Reference</td><td>~35m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Output Parameterization Reference</td><td>~25m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Course Files</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}
{% endstepper %}
{% endtab %}

{% tab title="4 · CTools" %}

<p align="center">Hands-on workshop for the dashboard BI Developer. Build interactive Pentaho Community Tools (CTools) dashboards in the Pentaho User Console — Community Data Access (CDA), the Community Dashboard Framework (CDF), the Community Dashboard Editor (CDE) with CCC charts, and the Community Graphics Generator (CGG).</p>

<p align="center"><strong>16 lessons · 6 modules · ~7h 55m</strong></p>

<table data-search="false"><thead><tr><th width="354">Module</th><th width="115" align="center">Reading</th><th width="132" align="center">Workshops</th><th width="100" align="right">Time</th></tr></thead><tbody><tr><td>Getting Started</td><td align="center">2</td><td align="center">2</td><td align="right">~1h 50m</td></tr><tr><td>Community Data Access</td><td align="center">1</td><td align="center">2</td><td align="right">~1h 25m</td></tr><tr><td>Community Dashboard Framework</td><td align="center">1</td><td align="center">2</td><td align="right">~1h 20m</td></tr><tr><td>Community Dashboard Editor</td><td align="center">2</td><td align="center">1</td><td align="right">~2h 05m</td></tr><tr><td>Community Graphics Generator</td><td align="center">1</td><td align="center">1</td><td align="right">~30m</td></tr><tr><td>Use Cases</td><td align="center">—</td><td align="center">1</td><td align="right">~45m</td></tr><tr><td><strong>Total</strong></td><td align="center"><strong>7</strong></td><td align="center"><strong>9</strong></td><td align="right"><strong>~7h 55m</strong></td></tr></tbody></table>

{% stepper %}
{% step %}

### <i class="fa-rocket" style="color:blue;">:rocket:</i> Getting Started

`2 readings · 2 workshops · ~1h 50m`

Meet the CTools stack — CDA, CDF, CDE, CCC, and CGG — installed on top of the Pentaho Server. Enable the CDE/CDA plugins, then build your first dashboard to see how the pieces fit together.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Before You Start</td><td>~25m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Getting Started</td><td>~25m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>First Steps</td><td>~30m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>My First Dashboard</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-database" style="color:blue;">:database:</i> Community Data Access

`1 reading · 2 workshops · ~1h 25m`

CDA is the data layer for CTools dashboards: a single abstraction over many sources with parameter-driven queries, joins/unions, preview, and exports. Create CDA data sources and feed them to dashboard components.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Community Data Access</td><td>~15m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Creating a CDA</td><td>~45m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>CDA Data Sources</td><td>~25m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-cubes" style="color:blue;">:cubes:</i> Community Dashboard Framework

`1 reading · 2 workshops · ~1h 20m`

CDF is the code-first dashboard framework — HTML/CSS/JavaScript with managed component and dashboard lifecycles. Understand the framework that CDE is built on by assembling CDF dashboards directly.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Community Dashboard Framework</td><td>~20m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>CDF Dashboard</td><td>~30m</td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>CDF Dashboards</td><td>~30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-pen-ruler" style="color:blue;">:pen-ruler:</i> Community Dashboard Editor

`2 readings · 1 workshop · ~2h 05m`

CDE is the graphical dashboard editor: a Layout / Components / Data Sources workflow over the CDF framework. Build the Carrier Dashboard with responsive Bootstrap layouts, CCC charts, parameters, and selectors — no hand-coding required.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Community Dashboard Editor</td><td>~10m</td></tr><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>UI Overview</td><td>~25m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Carrier Dashboard</td><td>~1h 30m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-chart-pie" style="color:blue;">:chart-pie:</i> Community Graphics Generator

`1 reading · 1 workshop · ~30m`

CGG renders CCC charts server-side as images — for reports, for browsers with limited SVG support, and via URL. Generate the Carrier Dashboard's charts with CGG.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-file-lines" style="color:green;">:file-lines:</i></td><td>Overview of Community Graphics Generator</td><td>~10m</td></tr><tr><td></td><td></td><td></td></tr><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Carrier Dashboard Charts</td><td>~20m</td></tr></tbody></table>

</details>
{% endstep %}

{% step %}

### <i class="fa-database" style="color:blue;">:database:</i> Use Cases

`1 workshop · ~45m`

Put it together end-to-end: build a complete Retail Sales analysis dashboard that combines CDA data sources, CDE layout and components, and CCC charts.

<details>

<summary>See the full breakdown</summary>

<table data-search="false"><thead><tr><th width="79"></th><th>Lesson</th><th width="90">Time</th></tr></thead><tbody><tr><td><i class="fa-flask" style="color:orange;">:flask:</i></td><td>Sales Analysis Dashboard</td><td>~45m</td></tr></tbody></table>

</details>
{% endstep %}
{% endstepper %}
{% endtab %}
{% endtabs %}

***

{% columns %}
{% column %}
{% hint style="warning" icon="file-certificate" %}
**Course accreditation**

Course accreditation applies to Levels 1 and 2. Each of the four courses has its own exam embedded in its guide (an 80% pass mark — REPLACE-ME: confirm how many attempts a learner gets). Finish the lessons and workshops and pass it, and you'll automatically be able to download your course accreditation. It states your name, the course, and the Pentaho version you studied against. Unlike certification, this exam is self-paced and not proctored.
{% endhint %}
{% endcolumn %}

{% column %}
{% hint style="warning" icon="award" %}
**Certification**

Certification is only available at Level 3 — Certified — not this level. It's a separate, proctored credential that organisations look for when engaging Pentaho consultants: the more advanced courses feed into it, the capstone project is peer reviewed by the Pentaho team, and the exam itself is proctored — unlike the embedded exam for course accreditation.
{% endhint %}
{% endcolumn %}
{% endcolumns %}

***

<p align="center"><a href="/business-analytics-path-sandbox/business-analytics.md" class="button secondary" data-icon="arrow-left">Back to the Business Analytics path</a></p>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://academy.pentaho.com/business-analytics-path-sandbox/business-analytics/level-2-associate.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
