How parameters work#
A parameter is a value the job pushes into a cell in the workbook before it calculates. Change the cell, the formulas recalculate, and you get a different report from the same template. Everything else about parameters is elaboration on that.
Timberline uses every value source and both replication modes, so it doubles as a reference.
Where a parameter's values come from#
| Source | Example in Timberline | Reach for it when |
|---|---|---|
| Text list | Board Packet with Division Slides' Market: Total Company, North America, EMEA, APAC |
the list is short, stable, and hand-picked |
| Model subset | Year: the CY subset of THC_Time, behind the Current Year global parameter |
the model already maintains the list |
| Model elements | Budget campaign's Market: three named elements of THC_Market |
you want a hand-picked slice of a dimension |
| MDX | Sales Rep Scorecard's Manager; Divisional Packet's Region |
the list is a query, filtered, drilled, or dependent |
| Global parameter | Year on three jobs and one campaign |
many things share one value |
The lesson in that table is the second column: prefer a source the model already owns. A text list is something you now have to maintain; a subset or an MDX query is not.
What replication does#
Every parameter has a replication mode, and it decides the shape of the output:
- One report per item: a separate output file, and a separate delivery, per value.
- One page per item: the worksheet repeats inside one output.
Board Packet with Division Slides stays at total-company level and sets Market to one page per item
over four values, so it produces one deck whose sales revenue slide repeats once per division.
Divisional Packet points the same idea the other way and sets Region to one report per item, so it
produces a deck per region.
A job can use both at once - which is exactly what Divisional Packet does: each region gets its own file, containing a page per market underneath it.
Those last two are worth opening together, because they are the same idea pointed in different directions: the division-slides deck repeats divisions inside one output, and the divisional packet repeats the output itself per division, then repeats markets inside each one.
The pattern worth learning: a parameter inside a parameter#
This is Timberline's best trick. In Divisional Packet:
Region : {DrillDownMember({[THC_Market].[Total Company]}, {[THC_Market].[Total Company]})}
Market : {DrillDownMember({[THC_Market].[%param:Region%]}, {[THC_Market].[%param:Region%]})}
Region drills one level down from Total Company, giving North America, EMEA and APAC: one output
each. Then Market drills down from %param:Region%, the value of the output currently being
built. So the market list is re-evaluated for every region, and each divisional pack contains exactly
its own markets.
Nothing is hard-coded. Add a region to the model and a pack appears for it.
Sales Rep Scorecard does the same over people:
Manager : FILTER( leaves of [THC_Employee], [THC_Employee].[Role] = "Manager" )
Rep : FILTER( leaves of [THC_Employee], [THC_Employee].[Manager ID] = "%param:Manager%" )
One report per manager, one page per direct report, and the org chart stays true because it is the org chart.
A third variant reads a single value out of a control cube rather than expanding a list:
Year : {StrToMember("[THC_Time].[THC_Time].[" & [THC_Control].([Controls].[Current Year],[Control_m].[Value]) & "]")}
Roll the year in the model, and every report that reads it follows.
Size before you schedule. Cascading multiplies. Three regions with four markets each is twelve pages; the same pattern over a large dimension fans out fast.
Getting the value into the workbook#
A parameter is only a value until a worksheet maps it to a place in the sheet. On the Reports step, each worksheet lists its parameters, and the value field on a row is where you set that place. Click it and a picker opens, listing everything on that sheet a parameter can point at:
| Column | What it offers |
|---|---|
| Sheet ranges (preferred) | named ranges defined on this worksheet |
| Workbook ranges | workbook-level named ranges that land on this worksheet |
| Pivot fields | a pivot table's page/row/column fields, shown as PivotTable.Field |
Empty columns are hidden, so a sheet with no pivot simply shows its ranges. You can also just type a
cell like F2, a range, or leave it blank if the value doesn't need to appear in the sheet.
Timberline shows the range styles:
| Mapping style | Example |
|---|---|
| to a named range | Market → Market, Rep → RepID |
| to a raw address | Region → F2, Product → B3 |
| the same parameter into two sheets | Employee → Employee and Employee → Employee2 |
| the same parameter to different cells per sheet | Market → Market on three tabs, Market → B3 on another |
There is also a lesser-known option the picker now surfaces: map a parameter to a pivot field
(PivotTable.Field) instead of a cell. The value is applied as a pivot filter: a page field jumps to
that item; a row or column field filters to it, so a single pivot report re-slices per value without a
helper cell.
Two rules follow:
- One target per worksheet. A parameter maps to a single place on each sheet. Needing the same
scope on two sheets means two named ranges, which is exactly why the compensation form has
EmployeeandEmployee2. - Prefer named ranges to addresses. A named range survives someone inserting a row;
F2does not, which is why the picker marks sheet ranges preferred.
Reorder a worksheet's parameter rows by dragging the grip on the left of a row; remove one with the trash icon on the right.
Parameters do more than fill cells#
The same values drive the output around the report:
| Where | Example |
|---|---|
| File names | {Year}-{Market} Financial Statements |
| Worksheet names | %param:Market% Revenue Review, %param:Employee%-Comp |
| PDF table-of-contents titles | %param:Region%-Board Deck |
| Destination folder paths | …/Timberline/{Market}/{Year}, the folder tree is created from the values |
| Email subject and body | {Region}-Board Packet |
| Combine keys | Divisional Packet groups emails by {Region} |
The destination-path one is the underrated feature. One job, and the output arrives filed by market and by year without anyone creating a folder.
Value-level security#
Timberline also carries two secured lists, which map values to groups so what a user may select depends on who they are:
- MarketControl: refreshed from the model by MDX. Leadership sees everything; each region group sees its own region.
- SalesTerritory: hand-maintained. Four territories, each mapped to its territory group, its region group and Leadership.
The pair is deliberate: one refreshes itself, one is maintained by hand, and that is the same choice a customer has to make.
Note: at the time of writing neither list is bound to a parameter on a running job, so they are demonstrable on the administration screen but you cannot yet show one filtering a report.
Related#
- What bursting looks like · Use a global parameter
- Customer guide: Advanced parameters
Feedback on this page
Comments, questions, requests, or something missing or unclear? Email us - the page you are on is filled in for you.
Email feedback on this pageOr write to support@reportworq.com directly.