Enterprise feature

BI Export for Power BI, Tableau, and Excel

One OData v4 endpoint. Six entity sets. Audit-proof response headers that tie every number back to a row in the CarbonTrace audit log. Connect your favourite BI tool in under ten minutes.

Endpoint

https://carbontrace.cloud/api/v1/odata

Authenticate with a CarbonTrace API key (starts with ct_live_) that has BI export enabled. Use HTTP Basic auth: API key as username, empty password. Or Authorization: Bearer ct_live_….

Four persona dashboards

Build these dashboards in Power BI or Tableau using the same data model we ship with our in-app widgets (N70).

CIO

Total IT footprint, YoY trend, top emitting categories, spend-to-carbon ratio.

  • Total footprint (kg CO₂e)
  • YoY growth %
  • Cost per kg CO₂e

ESG Officer

SBTi progress vs. trajectory, CSRD ESRS E1 disclosures, scope breakdown.

  • SBTi pace gap
  • Scope 3 Cat. 1 + 2 + 11
  • CSRD-ready tables

Procurement

Supplier comparison, reuse vs. buy new, avoided emissions from refurb.

  • Avg. kg CO₂e per device
  • Reuse savings %
  • Top suppliers

Audit

Methodology trail, confidence distribution, data-source coverage.

  • % rows with high confidence
  • Methodology card coverage
  • Source mix (Blancco / PCF / parametric)

Quickstart

Power BI Desktop

  1. Open Power BI Desktop → Get DataOData feed
  2. URL: https://carbontrace.cloud/api/v1/odata
  3. Auth: Basic. Username = your API key. Leave password empty.
  4. Select the entity sets you want and click Load.
  5. Build visuals. Click Refresh to pull latest data.
Example DAX measure:
Total Footprint (kg) = SUM( Assets[total_kg_co2e] )
YoY Growth % =
  VAR curr = CALCULATE( [Total Footprint (kg)], YEAR(Assets[purchase_date]) = YEAR(TODAY()) )
  VAR prev = CALCULATE( [Total Footprint (kg)], YEAR(Assets[purchase_date]) = YEAR(TODAY())-1 )
  RETURN DIVIDE( curr - prev, prev )

Tableau Desktop

  1. ConnectWeb Data Connector
  2. URL: https://carbontrace.cloud/connectors/tableau/
  3. Paste the OData endpoint and your API key, click Connect to Tableau
  4. All six entity sets appear as tables — drag to the canvas.

Excel

  1. DataGet DataFrom Other SourcesFrom OData Feed
  2. URL: https://carbontrace.cloud/api/v1/odata
  3. Auth: Basic. Username = API key, password blank.
  4. Select tables, Load to worksheet. Power Query refreshes on demand.

Entity sets

Assets

Denormalized asset fact — every device in your inventory with full carbon breakdown.

asset_idbrand, mpn, categorytotal_kg_co2e + phase breakdownpurchase_date, retirement_datecountry, department, cost_center

Certificates

Issued CO₂ certificates — public claims + compliance audit trail.

certificate_numberbrand, mpnfootprint_total_kgissued_atis_public

Products

Your org's product library.

brand, mpn, categoryweight_kglast_calculated_at

EmissionFactors

Emission factors visible to your org (platform + org-specific).

factor_typevalue, unitsourcedata_year

SbtiTargets

Science-Based Targets — baselines, targets, and trajectories.

baseline_year, target_yearbaseline_emissions_kgtarget_reduction_pctscope

MonthlyEmissions

Pre-rolled monthly emissions by category and country — ready for time series charts.

monthcategorycountrytotal_kg_co2e

Supported filter syntax

A safe subset of OData v4. Unsupported operators return 501 Not Implemented with the list of what is supported in the response body — no silent failures.

SupportedExample
eqcategory eq 'laptop'
nestatus ne 'retired'
gt / ge / lt / letotal_kg_co2e gt 200
and / orcountry eq 'BE' and category eq 'laptop'
startswith()startswith(department, 'Finance')
contains()contains(product_name, 'Pro')
endswith()endswith(serial_number, 'X1')
UnsupportedReason
$expandEntities are pre-denormalized. Use MonthlyEmissions for rollups.
$applyServer-side aggregation not available in v1 — aggregate client-side.
$batchBI export is strictly read-only. Use a single request per entity.
any() / all() / has()Collection predicates are not supported in v1.
$compute / $searchNot in v1. Use $select + client-side compute.

Forensic proof headers

Every OData response carries three headers that link the returned rows to the CarbonTrace audit log. Use them in compliance workflows to prove that a given dashboard value came from a specific, tamper-evident query.

X-CarbonTrace-ProofID of the audit_log row recording this query. Hash-chained per N128.
X-CarbonTrace-Proof-HashSHA256 of the returned rows (deterministic: rows already ordered).
X-CarbonTrace-Data-FreshnessISO timestamp of the latest underlying asset/calculation update.

Sandbox mode

Test your dashboards before pushing real data. Use a sandbox key (ct_test_…) against the same OData endpoint — you get 50 fictitious assets, 20 certificates, 15 products, and 24 months of rolled-up emissions for an org called SandboxCorp. All responses are deterministic, so dashboards render identically for every customer demo.

Rate limits

BI tools burn many small calls per refresh. BI export uses a dedicated bucket of 500,000 requests/day and 2,000/minute per API key, separate from the normal Enterprise API quota (100k/day). Sandbox keys share a smaller 20k/day bucket.

FAQ

Why no Looker support?
LookML doesn't speak OData. A native Looker block is planned as N86b — subscribe via Settings → Notifications when you want to be alerted.
Can I write data back?
No. BI export is read-only. POST/PUT/PATCH/DELETE return 405. Use the regular REST API for mutations.
How do I schedule a refresh?
On the BI-tool side. Power BI Service, Tableau Server, and Excel via Power Query can all run OData refreshes on a schedule.
Is the data cached?
No. Every OData response reads directly from live Postgres views with row-level security. No materialised view staleness.
What about GDPR / data residency?
All data stays in eu-west-1. No third-party cloud export. Your API key is bound to your org — cross-org queries are blocked at the row-level security layer.
Can I connect from my own ETL tool?
Yes. OData v4 is a W3C-standard protocol. Any HTTP client that can speak OData (or just JSON) works. See the OpenAPI spec for the full contract.

Ready to connect your BI tool?

Enable BI export on an API key in Settings and you're ready to go.