A reporting hierarchy is the set of parent-child relationships that roll up base-level codes into the financial groupings and levels used for reporting. The catch is that a single set of codes rarely rolls up just one way.
Take a set of Cost Centers. The regional CFO wants to see them rolled up by geography, the COO wants them by business unit, and group consolidation needs them by legal entity. It's the same underlying codes every time, but each audience needs its own reporting tree. The chart of accounts is no different: one GL account set has to feed a management-accounts view and a statutory-reporting view, and each of those trees has people downstream who depend on it being accurate and up to date. In practice, most finance teams are maintaining several of these hierarchies side by side.
These alternate hierarchies are usually needed purely for reporting and analysis, not for running the business day to day, so they almost never live in the source system and aren't handed to you ready-made. Someone, somewhere, has to build them and keep them current as the business reorganises. More often than not, that "someone" is a business user nursing a spreadsheet, or a developer who has hard-coded the rollups into the data pipeline. Neither is really a home for data this important, and that is the heart of the problem.
Most Finance departments handle multiple hierarchies with multiple tabs maintained in a spreadsheet. When a reorg adds a Cost Centre, they update the spreadsheet, export a CSV, and the Data Warehouse ETL pipeline picks it up.
Unfortunately this works initially, but over time issues creep-in. The spreadsheet has no validation against the base code list, so typos and orphaned nodes appear. There's no versioning, so when someone asks what the hierarchy looked like in Q3, nobody can answer. When the COO's numbers don't match the CFO's, nobody can explain why. And when the spreadsheet owner goes on leave (or leaves all-together), no one can find the spreadsheet to fix the issue with the Board report!
Hard-coded SQL is the other common approach. The hierarchy lives in CASE statements in a python notebook in your data warehouse. More stable than a spreadsheet, but every change requires a developer change code and deploy through environments. It friction you just don't need. Every reorg becomes a backlog ticket.
A better way to manage these hierarchies exists, but it's worth understanding why analytics and reporting developers so rarely reach for it, and why they fall back to spreadsheets and hard-coding instead. A data warehouse or reporting platform is the wrong tool for the job. It's built to be read-only. It ingests data from source systems and serves it up for analysis. It isn't designed to let a business user sit down and edit values directly. So when finance needs somewhere to maintain a hierarchy, there's simply no natural home for it inside the platform the developer controls.
Faced with that gap, the developer takes the path of least resistance. A spreadsheet is something the business user already knows and can own, and hard-coded SQL is something the developer can stand up in an afternoon. Neither requires building and maintaining a whole editing application, which is really what the problem calls for. That's the crux of it: properly solving this means giving business users a dedicated, flexible UI with validation built in, and wiring that back into the data platform, and that's a long way outside what a reporting developer is set up to deliver.
This is exactly the gap a dedicated Reference Data Management (RDM) application fills. A good RDM application will provide:
Using this governed approach you provide the "self-service" convenience of spreadsheets without all the pitfalls of validity, integrity, versioning and access. And the end user never has to raise a ticket just to map a new Cost Center to a hierarchy group.
The following diagram depicts how TitanRDM (a dedicated reference data management system) enables the maintenance of multiple reporting hierarchies. Note this is just one use-case for TitanRDM, its flexible and configurable for all your mapping, categorizing, augmenting hierarchizing etc. needs.

| Approach | Versioning | Business-user ownership | Validation | API consumption |
|---|---|---|---|---|
| Spreadsheet | None | Yes, fragile | Manual | CSV export |
| Hard-coded SQL | Git history | No | None | None |
| MDM platform | Full | Yes | Yes | Heavy |
| TitanRDM | Full | Yes | Yes | Yes |
Spreadsheets and SQL don't scale past the first reorg. MDM platforms solve the problem but need significant implementation effort and licensing costs. For teams that need governed, versioned hierarchies with business-user ownership and API/SDK consumption, a purpose-built tool like TitanRDM sits between spreadsheet chaos and full MDM. Business users maintain rollups with audit trails, and pipelines consume them programmatically.
Ready to get your reporting hierarchies out of spreadsheets? Sign up for the TitanRDM free edition and start mapping your first hierarchy in minutes — no credit card, no implementation project.
A reporting hierarchy is the set of parent-child relationships that roll up base-level codes, like Cost Centres or GL accounts, into the groupings and levels used for reporting.
Different consumers roll the same codes up differently. One set of Cost Centres might roll up by geography for the regional CFO, by business unit for the COO, and by legal entity for group consolidation. Same codes, different trees, different audiences.
A ragged hierarchy is a parent-child hierarchy where branches don't all go to the same depth, e.g. some Cost Centres roll up through three levels before reaching a group total, while others roll up through five. Most warehouses manage these in a spreadsheet with one parent-child mapping per row.
Spreadsheets have no validation against the base code list, so typos and orphaned nodes creep in. There's no versioning, so nobody can say what a hierarchy looked like at a past date, and when the spreadsheet owner leaves, no one can find or maintain it.
Hard-coded SQL (e.g. CASE statements in a stored procedure) is more stable than a spreadsheet, but every change needs a developer to update code and deploy it through environments. Every reorg becomes a backlog ticket instead of a self-service update.
TitanRDM syncs Cost Centres from your data platform into a "Cost Centre Map" table, while the Finance team maintains one "Cost Centre Hierarchy" table per alternate hierarchy and maps codes to each in the Cost Centre Map. Changes sync back to the data platform, giving you a Cost Centre dimension with multiple validated, versioned hierarchies.