#1
This guide shows how to build dashboards in Spring Boot by exposing ClickHouse data as REST APIs for visualization.

1. Create a Table in ClickHouse

CREATE TABLE sales (
    id UInt32,
    product String,
    amount Float64,
    order_date Date
) ENGINE = MergeTree() ORDER BY id;
Insert some data for testing.

2. Query Data with JdbcTemplate

List<Map<String, Object>> sales = jdbcTemplate.queryForList(
    "SELECT toDate(order_date) AS day, sum(amount) AS total " +
    "FROM sales GROUP BY day ORDER BY day"
);

3. Map Results to DTO

public record SalesReport(LocalDate day, Double total) {}
Convert results:
List<SalesReport> reports = sales.stream()
    .map(r -> new SalesReport(
        (LocalDate) r.get("day"),
        (Double) r.get("total")))
    .toList();

4. Expose REST Endpoint

@RestController
@RequestMapping("/dashboard")
public class DashboardController {
    @GetMapping("/sales")
    public List<SalesReport> getSales() {
        return reports;
    }
}

5. Connect with Frontend

Use any JS charting library (Chart.js, D3, or React) to consume /dashboard/sales and display graphs.

image quote pre code