Lesson 3 of 6
Modeling for performance and usability
10 min
Listen to this lesson
An SAC model defines what users can ask. Good models make stories fast and obvious; poor models make every story a workaround. This lesson covers the building blocks: dimensions, measures, accounts, hierarchies, currency and data access, using Contoso's margin model as the example.
Building blocks
| Element | What it is | Contoso margin model |
|---|---|---|
| Measures | Numeric values with aggregation (sum, average, exception aggregation) | Quantity, net revenue, COGS |
| Calculated measures | Formulas on measures | Margin = net revenue - COGS; margin % |
| Account dimension (optional) | A structured list of accounts with types and hierarchy | Used in the planning model (revenue, COGS, gross margin lines) |
| Dimensions | Who, what, where, when | Customer, product, company code, plant, profit center, date |
| Hierarchies | Parent-child or level-based roll-ups | Customer groups (fleet, aftermarket); product families |
| Version and date | Planning models always have them | Actual, Plan 2027, Forecast; months |
| Currency | Conversion settings and rate tables | USD for 1710 and 1810; MXN for 1910 when it joins |
| Data access control | Row-level read and write rights per dimension member | Company code and profit center restrictions |
The parts of an SAC model, with Contoso's choices.
SAC's newer model type, available since 2021, is measure-based: it has a dedicated measure dimension, and the account dimension becomes optional. You choose at creation whether to use an account dimension and which one drives structure (aggregation, scale, decimals). SAP's learning material explains that the account dimension is mandatory in an account-based model and optional in a measure-based one. Contoso uses a measure-based model for margin analysis and an account-based structure for the planning P&L, where finance thinks in account lines.
Design rules that save trouble
- Model the question, not the table. Keep only the dimensions and measures the stories need; every extra column slows imports and confuses users.
- Use business names. "Net revenue (USD)" beats NETWR; add descriptions for every measure with its definition and source.
- Calculate once. Put margin and margin % in the model, not in each story, so every story uses the same formula.
- Mind aggregation. Margin % must be calculated from summed revenue and COGS, never summed across rows.
- Decide currency early. Agree source currency, rate type and translation date with finance before building.
- Secure by design. Define data access control on company code and profit center from day one.
Building the model, step by step
Dimension and hierarchy maintenance is a recurring task, not a one-off. When a new fleet customer such as Northern Plains Coach Lines is created in SAP S/4HANA, it must appear in the customer dimension and in the right customer group before its first invoice, or its revenue lands under “unassigned”. For imported models, that means the master data import runs before the transaction import; for live models, the hierarchy comes from the source. Currency needs the same care: Contoso’s USD company codes need no translation, but when company code 1910 (MXN) joins, the model must translate with the rate type and date finance uses for management reporting, and the rate table must be loaded before the plan or actual data that uses it.
What would you do?
In testing, margin % for the Fleet customer group shows 74%, although Dan expects about 37%. Revenue and COGS totals for the group are correct. What is the most likely cause?
Data access control deserves its own test design because it is easy to get half right. Contoso restricts read access by company code and profit center, and write access in planning models by plant and channel. The test matrix has four users: a finance analyst for 1710 only, an aftermarket analyst limited to CMC-AFTMKT, a planner for plant 1720 only, and Dan with full access. Each user opens the same story and the same Excel workbook, and Priya checks totals against what that user is allowed to see. A user who should see only CMC-AFTMKT must see Chicago sales (plant 1720 derives that profit center) and nothing from CMC-FLEET.
- Models define what users can ask: measures, dimensions, hierarchies, versions, currency and security.
- SAC's measure-based model type makes the account dimension optional; planning P&Ls often still use accounts.
- Calculate ratios from aggregated components; calculate once in the model.
- Large, detailed data belongs in Datasphere with a live SAC connection.
Check your understanding · not graded
Lesson check
1. In SAC's measure-based model type, what is true of the account dimension?
2. How should margin % be aggregated?
3. Why put calculated measures such as margin in the model rather than in each story?
4. A product sits under two parents in a hierarchy. What test result would you expect?