Loading

ERP Analytics

Define measures and dimensions over your datastores and query them safely, without writing SQL.

Measures and Dimensions

Analytics separates what you are measuring from how you want it broken down.

Measures

A measure is a number: revenue, units despatched, hours booked, margin. It names the datastore it comes from, the aggregate to apply, and the column to aggregate. A measure can also carry a filter, so Billable Hours and Total Hours are two measures over the same column distinguished by a condition.

Defining a measure once is the point. If revenue is defined centrally, every report using it agrees. If each report defines its own, they will drift, and reconciling two reports that should match is a bad way to spend a week.

Dimensions

A dimension is how you slice a measure: by customer, by product, by month, by entity, by salesperson. The same measure viewed by different dimensions answers different questions without being redefined.

Formatting

A measure declares its format — currency, quantity, percentage — so it displays consistently everywhere rather than depending on each report's settings.

Queries are always parameterised

Every query the engine generates is parameterised: identifiers come from your configuration and are validated against a strict pattern, and values are always bound. Nothing you type into a filter becomes part of a query as raw text.

This is worth knowing because the platform does contain older field types that interpolate raw SQL, and those are genuine footguns. This subsystem deliberately does not repeat them, so analytics can be configured by administrators without that risk.

Naming

Name measures the way the business speaks. A measure called Net Revenue Excluding Intercompany is long but unambiguous; one called Revenue2 will be misused within a month.

Start small

Define the dozen measures the business actually asks about, and add more when a real question needs one. A large catalogue nobody curated is harder to use than a small one, because the work moves from finding a number to working out which of five similar numbers is the right one.

Building Reports and Dashboards

With measures and dimensions defined, a report is a matter of choosing what to show and how to break it down.

Building a report

Pick the measures, choose the dimensions to group by, set the filters and the period. Because the definitions are central, two people building the same report independently get the same numbers.

Filter by entity deliberately

Where you operate more than one legal company, decide explicitly whether a report is for one entity or the group. A figure that silently spans entities will be quoted as a company figure by somebody who did not build it. Put the entity in the report title.

Period comparisons

A number on its own rarely means much. This month against last, or against the same month last year, is what turns a figure into information. Prefer year-on-year for anything seasonal — comparing December with November tells you mostly about Christmas.

Keeping reports fast

Aggregating a large movement or journal history is real work. If a report is slow:

  • Narrow the period. Most questions are about recent activity.
  • Check the underlying columns are indexed, particularly dates and the entity.
  • Reduce the number of dimensions. Each additional grouping multiplies the result set.
  • Schedule genuinely heavy reports to run overnight and be delivered by email.

Dashboards

A dashboard should answer "is anything wrong today". Keep it to figures somebody will act on: stock below minimum, overdue debt, unbilled time, an unprocessed feed inbox, maintenance due. Analysis belongs in a report someone opens deliberately.

A dashboard of twenty charts is a dashboard nobody reads, and its real cost is that the two figures that mattered were on it and got ignored.

Reconcile before you circulate

When a report is first built, tie it to something known — the trial balance, a stock valuation, last month's figure from the previous system. A report that has never been reconciled is a hypothesis, and the first time it is checked should not be in front of the board.