// Platform · Analytics

Ask the plant anything. It keeps receipts.

The edge devices contextualize the data and the private cloud keeps it alive. This layer is the reason both exist: the transactional database, the columnstore, the lake, and the ERP are connected under one analytics layer with one definition of every metric. Shift reports come out of MSSQL row-exact, three-year questions sweep billions of ClickHouse rows in seconds, and dashboards blend the live stream with all of history. Your plant has been writing everything down for years. Now it answers.

STREAM STORE JOIN ASK ACT
// Connected databases01

Four engines, one place to ask.

Manufacturing data refuses to live in one database, and it shouldn't: transactions, telemetry, batch files, and business context each want a different engine. So each gets the right one, and an analytics layer on top joins them, holds the metric definitions, and serves every dashboard, report, and model from the same catalog. OEE means one thing here, in every plant, in every meeting.

// every engine keeps its job: the layer joins them, so nobody exports CSVs to marry data by hand DASHBOARDS OEE · SPC · live lines REPORTS shift · batch · audit-ready ML MODELS predict · detect · optimize SQL · REST · Grafana · Power BI published behind SSO + zero-trust policy ANALYTICS LAYER METRIC MODELS one definition of OEE · versioned FEDERATED QUERY joins across engines · pushdown GOVERNANCE roles · lineage · cache MSSQL orders · quality · e-sign transactional · row-exact CLICKHOUSE telemetry · 41.8B rows columnstore · replicated S3 LAKE batch records · files object · versioned · cold ERP MIRROR items · BOMs · standards read-only context independent consumers · each can replay KAFKA · THE LIVE STREAM every plant · contextualized payloads · replayable from history PRIVATE CLOUD · 3-NODE OPENSHIFT edge sites → tunnel → kafka ← the previous two pages
// stream → engines → analytics layer → dashboards, reports & models · each question routed to the engine built for it
tap a component for the technical detail
engines SQL · columnstore · object · ERP freshness seconds from the floor history years · every plant truth one metric catalog access SSO · role-based
// Row questions, column questions02

The report and the sweep run on different physics.

"Which operator signed off order 550123?" wants one exact row, transactionally guaranteed. "What was the p95 cycle time on every filler across three years?" wants to scan billions of rows and come back before the meeting moves on. One engine cannot be best at both, so the platform runs one of each and routes every question to the engine built for it.

-- the same plant data, two engines, two jobs -- MSSQL: this morning's production, row by row, transactionally exact SELECT order_no, asset, good_count, reject_count, signed_by FROM production_confirmation WHERE shift_date = '2026-07-22'; -- 1,214 rows · 4 ms · read-committed, mid-shift -- ClickHouse: three years, every plant, one columnstore sweep SELECT asset, quantile(0.95)(cycle_time_s) AS p95_cycle FROM telemetry -- 41.8 billion rows WHERE ts > now() - INTERVAL 3 YEAR GROUP BY asset; -- 2.1 s · 38 GB scanned compressed · nobody else's query slowed down

Transactional reports

Shift summaries, order confirmations, genealogy, and e-signature audit trails come out of MSSQL exactly as they were written: row-exact, constraint-checked, and queryable mid-shift without blocking production writes. When an auditor asks, the answer is a query away.

row-exact · audit-ready

Big-data sweeps

ClickHouse holds every telemetry point from every plant in a compressed, replicated columnstore. Year-over-year OEE, seasonal drift, golden-batch comparisons across sites: aggregate queries over billions of rows return in seconds, while ingest continues at full rate.

billions of rows · seconds

Joins across engines

The interesting questions span both: reject counts from SQL joined to the temperature trace from the columnstore, for the same order, on one chart. The analytics layer does the stitching, pushing each part of the query down to the engine that is fastest at it.

orders ⋈ telemetry

Live and history, one chart

Dashboards read the Kafka tail for the last few seconds and the columnstore for everything before that, seamlessly. A line chart scrolls from three years ago to four seconds ago, and the operator watching it never learns where one engine ends and the other begins.

stream + history · seamless
// The analytics themselves03

What manufacturing actually asks for.

The stack exists to answer a short list of questions every plant manager already has. These are the ones we build first, from the same connected engines, with numbers that agree with each other because they share a catalog.

OEE & downtime

Availability, performance, and quality from real event data with downtime reasons attached at the edge. The Pareto chart names the worst actor by line and shift, and the trend shows whether last month's fix actually moved the number.

A × P × Q · by line · by shift

SPC & quality

Control charts on critical parameters, straight from the contextualized stream: X̄-R, Cpk, run rules, with violations alarmed while the batch is still in the tank. Quality history joins genealogy, so an excursion traces to its lot in minutes.

Cpk · run rules · live

Reports that write themselves

Shift handoffs, batch summaries, and compliance packets are generated on schedule from the transactional record, signed data included. The report a supervisor used to assemble from three systems and a clipboard arrives by email before the shift meeting.

scheduled · signed · delivered

Models that look ahead

With years of labeled history in the columnstore, prediction gets practical: anomaly detection on vibration and cycle-time signatures, remaining-useful-life on pumps and drives, soft sensors between lab samples. Trained on the cluster, scored at the edge when latency matters.

train central · score at edge
// what the customer gets

The dashboards are the visible part. What you're actually buying is agreement:

  • One number per question. OEE, yield, and downtime are defined once in the metric catalog, so the Monday meeting argues about causes rather than calculations.
  • Answers at the speed of the question. Row lookups in milliseconds, three-year sweeps in seconds, live lines with sub-minute freshness, each from the engine built for it.
  • Cross-plant comparability for free. Because the edge modeled every site the same way, a dashboard built for plant 1 works on plant 12 the day its data starts flowing.
  • Self-serve for the people who ask. Engineers query with SQL, analysts with Power BI, operators with Grafana, all against the same governed catalog, behind SSO and role-based access.
  • A path from hindsight to foresight. The same history that powers the reports trains the models, so predictive maintenance is a next step on infrastructure you already have.
// Contact04

Which question would you ask first?

Tell us the number you can't get today: the OEE you don't trust, the report that takes a day to build, the failure you'd love to see coming. We'll show you the path from your data to that answer.

Start a conversation