Real-Time Analytics on Your Lakehouse

Sub-second data freshness without a real-time database. Stream, aggregate, and query your data in Apache Iceberg using familiar tools.

<1s Freshness
Event to queryable
No Druid/Pinot
Query Iceberg directly
80% Cost Savings
vs real-time DBs

Eliminate Your Real-Time Database

Get real-time analytics without the operational burden

Traditional Real-Time Stack

Event Sources

Kafka / Kinesis

Flink / Spark

Batch ETL

Druid / Pinot

Real-time

Data Warehouse

Historical

Multiple systems, high cost

Different queries for real-time vs historical

With Laminar

Event Sources

Laminar

Sub-second ingestion
Streaming aggregations
Continuous materialized views
Automatic compaction

Iceberg Tables

Real-time + Historical

One system, one query

Same query for seconds to years of data

Streaming Materialized Views

Define continuously-updated views for instant dashboard queries

-- Real-time revenue by product category (1-minute granularity)
CREATE PIPELINE revenue_by_category AS
SELECT
  product_category,
  window_start as minute,
  SUM(order_total) as revenue,
  COUNT(DISTINCT user_id) as unique_customers,
  COUNT(*) as order_count,
  AVG(order_total) as avg_order_value
FROM TABLE(
  TUMBLE(
    TABLE orders,
    DESCRIPTOR(order_time),
    INTERVAL '1' MINUTE
  )
)
GROUP BY product_category, window_start, window_end
INTO iceberg.analytics.revenue_by_category_1min;

-- Active users in the last 5 minutes (continuously updated)
CREATE PIPELINE active_users AS
SELECT
  window_end as calculated_at,
  COUNT(DISTINCT user_id) as active_users,
  COUNT(*) as total_events
FROM TABLE(
  HOP(
    TABLE page_views,
    DESCRIPTOR(event_time),
    INTERVAL '1' MINUTE,
    INTERVAL '5' MINUTE
  )
)
GROUP BY window_start, window_end
INTO iceberg.analytics.active_users_5min;

Query from your BI tool:

-- Instant response from pre-aggregated data
SELECT
  product_category,
  SUM(revenue) as total_revenue,
  SUM(order_count) as total_orders
FROM iceberg.analytics.revenue_by_category_1min
WHERE minute >= NOW() - INTERVAL '1' HOUR
GROUP BY product_category
ORDER BY total_revenue DESC;

Why Teams Choose Laminar for Analytics

Real-time freshness without real-time infrastructure complexity

Sub-Second Freshness

Data is queryable within 1 second of generation. Build dashboards that show what is happening now, not minutes ago.

Pre-Aggregated Metrics

Compute rollups, percentiles, and aggregations as data arrives. Instant dashboard queries without costly scans.

No Real-Time Database

Eliminate Druid, Pinot, or ClickHouse. Query Iceberg tables directly with your existing tools.

Historical + Real-Time

Seamlessly combine live data with historical analysis. One query across seconds to years of data.

Continuous Materialized Views

Define views in SQL that stay continuously updated. Incremental computation, not full refreshes.

Open Table Format

Query with Spark, Trino, DuckDB, or any Iceberg-compatible engine. No vendor lock-in.

Real-Time Analytics Use Cases

Executive Dashboards

Real-time KPIs and business metrics for leadership. Revenue, orders, and engagement updated continuously.

  • Live revenue tracking
  • Order volume monitoring
  • Conversion funnel analysis

Operational Monitoring

Track system health, SLAs, and operational metrics in real-time for immediate action.

  • Service latency tracking
  • Error rate monitoring
  • Capacity planning

Customer Analytics

Understand customer behavior as it happens. Power personalization and recommendation systems.

  • Real-time segmentation
  • Session analysis
  • Behavior tracking

Product Analytics

Measure feature adoption, engagement, and conversion in real-time to guide product decisions.

  • Feature usage tracking
  • A/B test monitoring
  • Funnel analysis

Works with Your BI Tools

Query real-time data with any Iceberg-compatible engine

Apache Spark

Trino / Presto

DuckDB

Snowflake

Tableau

Looker

Metabase

Superset

Ready for Real-Time Analytics?

Get started with Laminar in under 5 minutes