# Pipe Kafka & Iceberg to dashboards

In order to follow this page, it's advised that you [run the demo](/get-started/run-the-demo.md) first.

Previously, we saw a unified view of Kafka and Iceberg data. We were able to query this data using SQL, and now we're going to see how easy it is to view our data in a data visualisation dashboard — in this case Superset.&#x20;

Charts have already been created, aggregating and displaying the number of fraudulent transactions historically (in Iceberg) and recently (in Kafka).&#x20;

### Superset

If you head to port 8088 at [this address](http://localhost:8088/superset/dashboard/2/?native_filters_key=LwNjb75vsH-EtyVPtcuby8k16F-Pncef3Pfk0enF7diJYY-cnWCHARhK_jFlXysZ) you'll see a constantly refreshing Superset chart updated with the most recent Kafka data.&#x20;

<figure><img src="/files/IdVxZeUC9t45BrTJ1y0g" alt=""><figcaption></figcaption></figure>

How complicated is the set up? Assuming that you have the [Superset](https://superset.apache.org/) docker image downloaded, it's as simple as these three steps:

1. Head to 'Database Connections' within the settings (in the top-right-hand corner):

<figure><img src="/files/XkDoUJKwrcJwvOfy9thG" alt="" width="132"><figcaption></figcaption></figure>

2. Edit the 'Streambased-merged' database:

<figure><img src="/files/brxyfwgOrmqQRDIOV7qF" alt=""><figcaption></figcaption></figure>

3. Enter <hive://hive@spark-iceberg:10000/merged> into the `SQLALCHEMY URI` field. In this demo you'll find it's prepopulated.

<figure><img src="/files/IXTw84EUaM8kcQxXYhrE" alt=""><figcaption></figcaption></figure>

### What am I looking at?

If you head to [the other dashboard](http://localhost:8088/superset/dashboard/1/?native_filters_key=bQf_YAwzwBw7tbp2TYbpULbfV83NIfEXr6gDDh0ufleBbEnNbfYtEZfSM7VGZI0a) you will see two charts side-by-side. Both dashboards compare fraudulent to non-fraudulent transactions. The transactions topic represented in these charts combines both Kafka and Iceberg data.

In doing so they represent the `CustomerFlaggedFraud` value of the messages for a given period.

```
+--------------------+--------------------+--------------------+--
|       TransactionID| .................. |CustomerFlaggedFraud|
+--------------------+--------------------+--------------------+
|c4ba5a1b-0828-277   | .................. |                true|

```

The chart on the right shows historic data — specifically fraud data within one week in 2024 (see the filters on the left-hand side).&#x20;

<figure><img src="/files/qgP0eyLBbgpzQH3OJLBV" alt=""><figcaption></figcaption></figure>

Meanwhile, "recent" data here means all messages generated since the 23rd of October 2025 at 12:34, which is the pre-configured "present" time at which the project was run.

As stated above, the data represented in both charts actually sits in different data systems. The recent fraud data is taken from the hotset (Kafka) and the historic data is taken from the coldset (Iceberg). Without Streambased, representing the data from each source would require two different set ups unique to each system.

Not only is it possible to query Kafka and Iceberg data with Streambased, but you can also easily represent your data on dashboards such as Superset, and without copying data.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.streambased.io/get-started/pipe-kafka-and-iceberg-to-dashboards.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
