How to Process Kafka Messages with SQL
Build a real-time dashboard using RisingWave for streaming data and Metabase for visualization. Metabase connects to RisingWave as a PostgreSQL database — no custom integration needed.
Setup
1. Start RisingWave and Metabase
# RisingWave
docker run -d -p 4566:4566 risingwavelabs/risingwave:latest
# Metabase
docker run -d -p 3000:3000 metabase/metabase:latest
2. Connect Metabase to RisingWave
In Metabase Admin → Database → Add Database:
- Type: PostgreSQL
- Host: risingwave-host
- Port: 4566
- Database: dev
- Username: root
3. Create Materialized Views
CREATE MATERIALIZED VIEW sales_dashboard AS
SELECT DATE(order_time) as day, region, COUNT(*) as orders,
SUM(amount) as revenue, AVG(amount) as avg_order
FROM orders GROUP BY DATE(order_time), region;
4. Build Dashboard in Metabase
Create questions using sales_dashboard as the source table. Metabase auto-refreshes from RisingWave's always-current views.
Frequently Asked Questions
Does Metabase auto-refresh from streaming data?
Metabase queries the database at its configured refresh interval. Since RisingWave materialized views are always current, every Metabase refresh shows the latest streaming data.

