Group Sales by Product and Region, Across Entities and Currencies

October 27, 2026 — BrizoConsol Academy
group sales by product and region, across entities and currencies
Share this article
LinkedIn Facebook Twitter

The consolidated P&L tells the board that revenue grew. It doesn’t say which products drove it, or which region slowed. That breakdown usually sits in each subsidiary’s sales system, and every month someone exports it, converts the foreign entity’s figures by hand at whatever rate they have, and pastes both into one spreadsheet next to the group numbers. The rate is rarely the one the consolidation used, and the spreadsheet is out of date the moment a subsidiary sends a correction.

Operational Data in BrizoConsol removes that spreadsheet. Each entity uploads its own sales file in its own currency. The group reads both files as one source, translated at the same exchange rates the consolidation uses. The combined source is then available as a data source for dashboard charts, dashboard tables and custom reports.

This walkthrough uses a two-entity group: Singapore Co, which reports in SGD, and Malaysia Co, which reports in MYR. The group presents in SGD. Both entities sell the same three products — Espresso Machine, Grinder and Service Plan — in different regions.

BrizoConsol

Automate NCI calculations across all your entities.

BrizoConsol handles non-controlling interest automatically — no manual adjustments required.

How the pieces fit

An operational dataset belongs to one entity. It holds a Period (a month), a numeric Value and up to three dimensions, such as Region and Product. Each dataset also has four settings: an account, a scenario, a currency translation mode and how many dimensions it has.

When two entities each create a dataset with the same definition, a consolidated parent sees them as one source. The definition matches when these are the same:

  • the dataset name;
  • the dimension labels, in the same order;
  • the scenario setting;
  • the account setting.

When a product name appears in both entities’ files, the two entities’ values for it add into one row, after each entity’s values are translated.

Step 1 and 2: define and upload for each entity

defining and uploading a dataset

Define the dataset

Working in Singapore Co, go to Settings → Other Data → Operational Data and choose New Dataset. Step 1, New Dataset — Definition, asks for the following:

FieldSetting for this example
Dataset NameProduct Sales
Number of dimensions2 dimensions — Dimension 1 label: Region, Dimension 2 label: Product
AccountOne account for the whole dataset — the entity’s own sales revenue account (optional, see below)
ScenarioOne scenario for the whole dataset — Dataset scenario: Actual
Currency translationAverage rate

Currency translation decides how the dataset’s values are converted when someone views them in a different currency. There are three options:

  • Average rate uses the month’s profit and loss rate, which is right for sales.
  • Closing rate uses the month’s balance sheet rate.
  • No translation leaves values as uploaded. Use it for measures that aren’t money, such as units sold or headcount.

Singapore Co’s own figures are already in SGD, so nothing is converted while the group presents in SGD. Setting Average rate still matters if the same dataset is ever viewed in another currency.

The Account setting is optional, but it’s useful when the file is meant to add up to revenue. With One account for the whole dataset and the entity’s sales revenue account selected, each upload’s monthly Actual totals are compared with that account’s movement in the ledger. Any month that doesn’t tie is listed with Uploaded, System and Difference columns. The upload is never blocked; the list is for review. Malaysia Co picks its own sales account. The two accounts are different records, so the grouping only requires the same account setting, not the same account.

Upload the file

Step 2, Upload Data, offers Download template. The template is built from the dimensions you defined, so its columns are Period, Region, Product and Value. Fill it in and drop the CSV into the upload area. The screen previews the first five rows and asks which column holds each field: Period Column, Value Column, Region and Product.

Singapore Co’s September file, in SGD:

PeriodRegionProductValue
Sep-2026CentralEspresso Machine48,000
Sep-2026CentralGrinder12,000
Sep-2026EastEspresso Machine30,000
Sep-2026EastService Plan6,000

Period takes a month such as Sep-2026 or 2026-09. If you edit the file in Excel, format that column as Text so Excel doesn’t turn it into a date. Rows whose period can’t be read are skipped, and the upload reports them with their first few values.

Existing data defaults to Replace only the months in this file. With that setting, uploading October’s file adds October and leaves September as it was. Re-uploading a corrected September replaces September only. Replace all data clears the whole dataset first.

Repeat for Malaysia Co

Switch to Malaysia Co and create a dataset with the same definition: Product Sales, dimensions Region then Product, one scenario (Actual), one account for the whole dataset, and Average rate. Upload its file in MYR, the currency its books are kept in:

PeriodRegionProductValue (MYR)
Sep-2026Klang ValleyEspresso Machine102,000
Sep-2026Klang ValleyGrinder27,200
Sep-2026PenangEspresso Machine68,000
Sep-2026PenangService Plan13,600

Spell the product names exactly the same way in both files. “Espresso Machine” in one file and “Espresso Machines” in the other are two different products to the group.

From the consolidated parent, the Operational Data list now shows both datasets, each labelled with the entity that owns it. The parent can open, filter, pivot and export a subsidiary’s dataset, but only the owning entity can edit it or upload to it. The dataset screen shows rows as uploaded, in the owner’s currency. Translation happens where the data is used: in dashboards and reports.

Step 3: how the currency is applied

Translation uses the group’s exchange rates: the rates on the Exchange Rates screen, quoted against the top entity’s currency, for the same month and the same scenario as the data. A value moves from the owning entity’s currency into the currency being viewed. That’s the dashboard’s display currency, or the currency selected on a report.

Each entity’s values are converted month by month before anything is added up. A year-to-date figure is therefore the sum of correctly converted months, not one year-to-date total converted at a single rate.

With an illustrative September average rate of 3.40 MYR to 1 SGD, Malaysia Co’s file converts as follows:

Klang Valley · Espresso Machine 102,000 MYR ÷ 3.4030,000
Klang Valley · Grinder 27,200 MYR ÷ 3.408,000
Penang · Espresso Machine 68,000 MYR ÷ 3.4020,000
Penang · Service Plan 13,600 MYR ÷ 3.404,000
Malaysia Co September sales in SGD (210,800 MYR)62,000

Added to Singapore Co’s 96,000 SGD, the group’s September product sales are 158,000 SGD. By product, the shared names combine across both entities:

Espresso Machine 48,000 + 30,000 (SG) + 30,000 + 20,000 (MY)128,000
Grinder 12,000 (SG) + 8,000 (MY)20,000
Service Plan 6,000 (SG) + 4,000 (MY)10,000
Group product sales, Sep-2026 (SGD)158,000

Load the rates first. If the group has no rate for a currency in a given month, that month’s values are shown as uploaded — MYR sitting among SGD — and the only record of the gap is a warning in the log. Before uploading a month’s operational data, check that the month’s average rate (or closing rate) for every entity currency is on the Exchange Rates screen.

Currency translation and the Forecast and Budget scenarios aren’t included in the Standard edition. On that edition, the translation setting is visible but disabled.

See operational data on your own group

We’ll load a sales file for two of your entities and show it beside your consolidated P&L, in one currency. See It In Action

Step 4: use it in a dashboard

Every dataset becomes a data source automatically. In the dashboard editor, choose Add a card.

A chart

Set the card type to Chart and the chart type to Bar. Open Data Source; below the System sources is a group called Operational Data. From the consolidated parent, it lists each entity’s dataset by each of its dimensions, for example Product Sales (Malaysia Co) by Region. It also lists the combined source: Product Sales (Singapore Co + Malaysia Co) by Product, and the same source by Region. Pick the combined source by Product.

By default the chart shows the five largest products. Top N (Leave Blank for all) changes that number. In SGD, the September bars read 128,000, 20,000 and 10,000.

A table

Set the card type to Table and open the table type picker. The same sources appear under its Operational Data heading. Pick the combined source by Region. The default columns are Region, Value and Share %; Records and Avg Value can be ticked on. The period can be Current Month, YTD or vs Last Year. vs Budget appears only when the dataset holds Budget rows. Clicking a figure opens the uploaded rows behind it.

For September, the table lists Central 60,000, Klang Valley 38,000, East 36,000 and Penang 24,000, each with its share of 158,000.

Step 5: use it in a report

group dashboard and report

In Custom Reports, create a Row/column report or open an existing one, such as a management P&L. Add a row and set its row type to Operational Data (“Additional configured rows such as revenue by product or customer”). Choose the combined source Product Sales (Singapore Co + Malaysia Co) by Region. Under Include Region, tick the regions to show or use Select All. The row’s label defaults to the source name; here it was shortened to Product Sales by Region.

The row expands when the report runs. It shows a heading, one row per region and a Total row, across whatever columns the report already has — the month, prior months or year to date:

Product Sales by RegionSep-2026
Central60,000
East36,000
Klang Valley38,000
Penang24,000
Total Product Sales by Region158,000

The figures follow the report’s own currency selection. Run the report in SGD and Malaysia Co’s regions are converted into SGD month by month before the columns and totals are added. Pick another currency the group has rates for, and the same rows come out in that currency.

For a free-form layout, a cell-based report can read the same data cell by cell. Set a cell’s type to Operational data and choose the dataset; each entity’s dataset is listed with its owner, for example Product Sales (Malaysia Co). Narrow the cell by Region or Product. The cell reads that entity’s figure in the group’s currency, so a formula can add the two entities or compare them.

Checklist: your first multi-entity operational dataset

  1. On the Exchange Rates screen, confirm the group has an average rate for each month you’ll upload, for every entity currency.
  2. In the first entity, go to Settings → Other Data → Operational Data → New Dataset. Set a name, dimension labels in order, scenario, account setting and Average rate.
  3. Download the template, fill it in with the Period column formatted as text, and upload it with Replace only the months in this file.
  4. If you chose an account, review any months listed as not tying to the ledger.
  5. In the second entity, create a dataset with the same name, the same dimension labels in the same order, and the same scenario and account settings. Upload its file in its own currency.
  6. From the consolidated parent, confirm both datasets appear in the Operational Data list, each labelled with its owner.
  7. Add a dashboard chart or table on the combined source, Product Sales (Singapore Co + Malaysia Co) by …, and check that the total equals the two entities’ totals after translation.
  8. Add an Operational Data row to a row/column report, run it in the group currency, and tie its total to the dashboard figure for the same month.

Bring your sales breakdown into the consolidation

Start a free trial and upload your first operational dataset today. Start Free Trial