A reporting hierarchy is the parent-child structure that rolls up base-level codes into the groupings people report against.
Often, a single set of codes needs to roll-up in more than one hierarchy. E.g. one set of Cost Centers might need to 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 consumers. The chart of accounts has the same problem. One GL account set feeds multiple trees for management accounts versus statutory reporting, and each tree has consumers who depend on it being current.
Unfortunately, these alternate hierarchies probably don't live in the source system. Someone, somewhere has to create and maintain them, and the default solution is usually a business user with a spreadsheet, or hard-coded by a developer.
Most warehouses handle multiple hierarchies with a ragged hierarchy table maintained in a spreadsheet. Someone in finance owns a workbook with parent-child mappings. When a reorg adds a Cost Centre, they update the spreadsheet, export a CSV, and the ETL pipeline picks it up.
This works until it doesn't. The spreadsheet has no validation against the base code list, so typos and orphaned nodes creep in. 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 leave 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 or a stored procedure. More stable than a spreadsheet, but every change requires a developer and a deployment. Every reorg becomes a backlog ticket.
Solving this seemingly simple problem for Data Warehouse and Reporting developers is hard. First and foremost Reference Data management requires a user interface for end user to maintain the data. A Data Warehouse and Reporting Platform is inherently read only. It generally ingests its data from source system, and doesn't provide an interface for direct user input.
You need something else, like a dedicated reference data management (RDM) system to provide that user interface and more. A good RDM platform 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 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.
Can one Cost Centre belong to multiple hierarchies? Yes. A Cost Centre can roll up to a geographic, business-unit, and legal-entity parent simultaneously. Bridge tables handle this.
How do you handle hierarchy changes in a data warehouse? End-date the old parent-child relationship and create a new one with an effective date. Use SCD Type 2 to preserve historical accuracy.
What is a ragged hierarchy? One where not all branches have the same depth. A Cost Centre might roll up to a region then a country, or directly to a country.