datahashi is the bridge between your physical databases and everything that queries them — LLMs, BI, embedded apps, internal services.
Map your warehouse once to a governed business model. Consumers send a structured Semantic Query — never SQL — and we resolve the joins, guarantee the numbers, and return them sub-second from pre-aggregated rollups.
SQL sprawls across dashboards, notebooks, and app code. Definitions drift. LLMs invent joins and return confidently-wrong figures, while the warehouse bill climbs and dashboards stay slow. datahashi puts one governed model in the middle — and pushes the hard parts down where they belong.
Name the metrics you want. You never write a join or an aggregation by hand.
Fan-out-safe SQL and governed metrics — the same number everywhere.
Answered from pre-aggregated rollups. p99 ≤ 14ms, never touching the warehouse.
Processing happens in the database. The layer stays thin; the source does the work.
One thesis, carried by every module: compile a structured query to SQL, push execution down, and serve the hot path from pre-aggregated data.
Entities, Dimensions, Measures, and Metrics map your physical tables to business vocabulary — independent of any storage dialect. Define the one true number once.
Semantic ModelName the metrics and dimensions you want. The compiler traverses the Join Graph, resolves the path across entities, and generates fan-out-safe SQL — correct even across one-to-many.
Join GraphEmbedded and BI queries are served from pre-aggregated rollups by DuckDB over Parquet — they never touch the warehouse. Benchmarked p99 ≤ 14ms.
Rollups · p99 ≤ 14msAgents call MCP tools that emit a structured Semantic Query — never raw SQL. No hallucinated joins, no wrong numbers, grounded in your model.
MCPEvery tenant brings its own warehouse connection. Secrets are AES-256-GCM sealed; rollups are physically tenant-partitioned; RLS rides every read and cache key.
Isolation by designSnowflake, BigQuery, Postgres, MySQL, DuckDB — each a renderer behind a single closed Dialect port. We generate SQL, never parse it, and push all processing to the source.
Multi-dialectA Semantic Query is a structured object — metrics × dimensions × filters × grain. Every consumer emits the same shape; the compiler turns it into correct, dialect-specific SQL.
{
"metrics": ["average_order_value"],
"dimensions": ["customer.region"],
"grain": "month",
"filters": [{
"field": "order.status",
"op": "=", "value": "paid"
}],
"order": ["month"],
"limit": 100
}
// no joins. no aggregation.
// no dialect. no rollup names.
-- fan-out-safe · Join Graph resolved
-- served from a covering rollup
SELECT
date_trunc('month', o.order_date) AS month,
c.region,
SUM(o.amount) / NULLIF(COUNT(o.id),0)
AS average_order_value
FROM rollup_orders o
JOIN dim_customer c
ON o.customer_key = c.customer_key
WHERE o.status = 'paid'
GROUP BY 1, 2
ORDER BY 1
LIMIT 100;
average_order_value is a Metric — a ratio of two Measures computed after aggregation, not avg(amount). region lives on Customer; the compiler walks Order → Customer to reach it. You just listed them.
Sign up → connect a warehouse → publish a model → query. No restarts, no YAML deploys — a runtime control plane.
Sign in with an email magic code and register your warehouse. Credentials are sealed with AES-256-GCM behind an SSRF-safe egress policy.
We profile the source — cardinality, nullability, FK candidates — and propose a draft Semantic Model in native YAML for you to bless in the UI.
Promote governed Metrics on top of your Measures, set per-tenant RLS and cost policy, and we pre-build the rollups your registered queries need.
Mint a data-plane API key and query via REST or MCP. Hits are served sub-second from tenant-partitioned rollups; misses fall back to a live run.
datahashi is a control plane that compiles a Semantic Query to SQL and pushes execution down. The hot path never waits on the warehouse.
User-facing queries are answered from pre-aggregated rollups by an embedded DuckDB engine over Parquet — no warehouse token, no round-trip.
Rollups are built and refreshed by durable jobs that do hit the warehouse — poll + push webhook + backstop keep them fresh. No user is waiting.
Connect a warehouse, bless a model, and start serving sub-second, governed numbers to your LLMs, dashboards, and apps.
No credit card · Bring your own warehouse · Self-serve onboarding