Contact Discuss an opportunity
Shared data branching into two analytical engines that return different answers

Your SQL Ran. Your KPI Is Still Wrong.

Why cross-engine analytics needs a result-consistency check—not another SQL validator.

Imagine asking one business question:

What was net revenue last month?

One analytics assistant generates Trino SQL. Another generates ClickHouse SQL. Both query the same Iceberg-backed data. Both queries execute successfully. Both dashboards look plausible.

One says 42.7 million. The other says 41.9 million.

Which answer reaches the decision-maker?

Usually, the one with the better chart.

The numbers above are only an illustration, but the failure mode is real in structure: syntactically valid SQL is not the same as semantically equivalent SQL.

Same Table Does Not Guarantee the Same Answer

Open table formats solve an important problem: multiple engines can read shared data and metadata. But storage consistency sits one layer below analytical result consistency.

Diagram showing one business question and the same Iceberg tables branching into Trino and ClickHouse paths, producing two plausible but different answers.

Figure 1 — Same stored data does not guarantee the same analytical result.

Two engines can read the same snapshot and still disagree because of:

  • different NULL handling
  • timezone and date-function defaults
  • JOIN semantics and implicit casts
  • window-frame defaults
  • decimal and timestamp representation
  • unstable ordering or top-K ties
  • engine-specific functions such as argMax and MAX_BY

AI-generated SQL makes this boundary more visible. An assistant optimizes for producing executable code in a target dialect. “The query ran” is a useful signal, but it does not prove that another valid implementation of the same logical question would return an equivalent result.

That is why this problem cannot be reduced to SQL linting.

What a Useful Consistency Check Should Do

A cross-engine validator should not blindly translate a query, run it twice, and compare two CSV files. That creates false confidence.

It needs a controlled evidence path.

Five-step multi-engine consistency check: canonicalize the logical query, pin execution context, shadow execute with budgets, normalize typed results, then return equivalent, different, or inconclusive with evidence.

Figure 2 — A controlled evidence path for cross-engine comparison.

1. Canonicalize the Logical Question

Start with a supported query subset and a canonical representation of the intended aggregation, filters, dimensions, grain, and metric definition. Do not assume one dialect is the universal source of truth.

2. Pin the Execution Context

The snapshot, principal, timezone, parameters, catalog state, and contract version must be identical. Otherwise, the comparison mixes semantic drift with environmental drift.

3. Use Bounded Shadow Execution

Alternate-engine execution should be read-only, policy-controlled, and constrained by time, rows, bytes, and cost. Expensive checks belong on high-stakes workflows or asynchronous audits—not every exploratory query.

4. Normalize Typed Results Before Comparison

Schema, ordering, NULL values, decimals, timestamps, and ties need canonical treatment. Comparison should happen on typed results or local digests, not formatted strings.

5. Return Evidence, Not a Magic Score

The honest verdict set is small:

  • equivalent — within the supported comparison scope
  • different — with issue-level evidence
  • inconclusive — because a safe comparison was not possible

Coverage matters as much as the verdict.

“Inconclusive” Is a Feature

Validation products are tempted to turn uncertainty into a green checkmark. That is exactly the wrong incentive for high-stakes analytics.

If snapshots cannot be aligned, dialect semantics fall outside the supported subset, or a tie cannot be compared safely, the system should abstain. Unknown must remain unknown.

The goal is not to block every answer. The goal is to make the evidence boundary visible before a plausible result becomes a business fact.

Editorial illustration of several conflicting analytics outputs flowing through a transparent evidence-validation layer and resolving into one reviewable result grounded in approved context.

Illustration — From plausible disagreement to a reviewable evidence trail.

The Narrow Product Idea We Are Testing

This is one specific part of OVL: a planned multi-engine consistency check for AI-assisted analytics. The first benchmark scope is intentionally narrow—Trino and ClickHouse over a pinned Iceberg snapshot, with a supported logical-query subset and deterministic typed-result comparison.

OVL is pre-product, so this is a testable architecture hypothesis, not a shipped-product claim. The next proof is a reproducible benchmark: seeded divergences, measured precision and recall, explicit abstention, coverage, latency, and re-execution cost.

The question I want to validate with data teams is simple:

When two engines return different answers to the same business question, how do you discover it today—and how expensive is the reconciliation?

If your stack combines Iceberg with Trino, ClickHouse, Spark, or multiple AI/BI surfaces, I would like to compare failure modes.


This article was first published on LinkedIn.