Confluence Databases and plain tables are fine for lists, but finance, procurement and operations reports usually need more: values calculated per row, totals underneath, risky rows highlighted, data that comes from an export of another system. CelesteCS Reporting for Confluence builds such a table on a page from JSON data and recalculates it on every page view.

Works on Confluence Cloud and Data Center.

Reporting table of contracts by region and business unit with calculated contract value, forecast variance, SLA breach percent and risk; high risk row highlighted, totals in the footer

1. The data

Insert a Reporting Table View with a Reporting Json Data Provider inside. The provider reads a JSON array either from a .json attachment (Json data attachment file name, optionally on another page) or pasted directly into the macro. Nested fields are fine: they are addressed with dots, for example CurrentItem.contract.unitPrice, and Json data root points at the array inside an API response such as {"results": [...]}.

Example rows:

[
  {"region": "EMEA", "businessUnit": "Operations", "vendor": "Globex",
   "unitPrice": 80, "quantity": 200, "forecast": 15000, "actual": 16000, "breachPct": 0.07},
  ...
]

2. Calculated columns, totals and highlighting

HeaderBody contentOptions
Region / Business unit / VendorCurrentItem.region(one column each)
Contract valueCurrentItem.unitPrice * CurrentItem.quantityFormat type: Currency, Format currency symbol: $, Format decimals: 0, Footer aggregate: Sum
Forecast varianceCurrentItem.forecast - CurrentItem.actualFormat type: Number, Format decimals: 0, Footer aggregate: Sum
SLA breachCurrentItem.breachPctFormat type: Percent, Format decimals: 1, Footer aggregate: Average
SLA riskIF(CurrentItem.breachPct > 0.05; "High"; IF(CurrentItem.breachPct > 0.02; "Medium"; "Low"))Highlight when: CurrentItem.breachPct > 0.05

Set Sort on the Table View to region,businessUnit,vendor to keep regions and business units together.

Result

RegionBusiness unitVendorContract valueForecast varianceSLA breachSLA risk
AMERFinanceInitech$3,00003.0%Medium
AMERProcurementUmbrella$18,000-1,0000.0%Low
EMEAFinanceAcme$6,0005001.0%Low
EMEAOperationsGlobex$16,000-1,0007.0%High
$43,000-1,5002.8%

Good to know

  • The report reads JSON (or a text file with JSON). Excel data has to be saved as JSON first; for a table that already lives on the page as a normal Confluence table, CelesteCS Math adds calculated cells and totals to it directly.
  • Totals are for the whole table (Sum, Average, Count, Min or Max per column). Nested grouping with a subtotal per group is not built in; one Table View per group, each with its own Filter such as CurrentItem.region = "EMEA", gives the same result.
  • To color cells by value (green / amber / red) instead of highlighting rows, wrap the table in CelesteCS Conditions rules.

Two report tables, one per region, each with its own contract value total

Example: one Table View per region with its own Filter and footer total.

Try it in your own Confluence: CelesteCS Reporting for Confluence on the Atlassian Marketplace – free trial for Cloud and Data Center.

Math, Conditions or Reporting saves you time? A review on the Marketplace – Math, Conditions, Reporting – helps other teams find them.