Introducing hypequery Datasets: A Semantic Layer for ClickHouse in TypeScript
Define dimensions, measures, and metrics once in TypeScript, then reuse them across application code, HTTP APIs, dashboards, jobs, and AI agents.
Insights
Deep dives, architecture notes, and product guidance from the hypequery team.
Define dimensions, measures, and metrics once in TypeScript, then reuse them across application code, HTTP APIs, dashboards, jobs, and AI agents.
dbt and TypeScript solve overlapping but different problems on top of ClickHouse. Here's how to think about which one belongs in your stack — and when you need both.
A practical guide to building multi-tenant embedded analytics on ClickHouse with typed TypeScript query layers, row-policy isolation, projections, quotas, and operational patterns that scale.
ARRAY JOIN flattens array columns into individual rows. Here's how it works, when to use it, and how to write it in TypeScript with hypequery.
ClickHouse uses HTTP, not TCP — so connection pooling works differently than with Postgres or MySQL. Here's the right approach for Node.js.
Practical guide to ClickHouse date bucketing functions in TypeScript — toStartOfDay, toStartOfWeek, toStartOfMonth, toStartOfQuarter, and toStartOfInterval.
Looking for executeTakeFirst in ClickHouse? If you're coming from Kysely, here's how hypequery handles single-row queries and what the equivalent patterns look like.
How to express ClickHouse filters in TypeScript with query_params in @clickhouse/client and typed where-chains in hypequery.
How ClickHouse handles RIGHT JOIN, LEFT JOIN, INNER JOIN, and ARRAY JOIN — with performance notes and TypeScript examples using hypequery.
ClickHouse materialized views trigger on INSERT and pre-aggregate into a target table. This guide explains the mechanics, the backfill gotcha, and how to query them with hypequery.