Insights: build a dashboard from a Data Asset (or an HTML dashboard)¶
Vibe-coded a one-off dashboard as a standalone HTML file — a chart or a map (or several) on the page — to prove a point fast? Build the real thing here. DataHub reads the file for the visuals you intended and re-draws each one as a native Insights card, powered by a governed Data Asset you already own. The data always comes from your asset — never copied out of the HTML — so what you get is live and governed, not a frozen picture.
The HTML file is treated as a transport format for the visual only. It is parsed, never opened or run — no script in it ever executes, and its embedded data is stripped and thrown away. Your dashboard's data comes from the Data Asset you pick, which keeps its own governance.
What this is for
This is the front door for the "I vibe-coded a dashboard to show the business it works" moment — once the data behind it is already a governed asset. You keep the speed of hacking something together, and DataHub turns your intended visual into a real card on live, governed data in one step.
Two ways to start¶
-
Start from a Data Asset
Pick a governed asset. DataHub looks at its columns and auto-suggests a native visualization — a map if it has coordinates, a chart if it has a category and a number, otherwise a table. Confirm or change it, then create the dashboard.
-
Start from an HTML dashboard
Upload the
.htmlfile you vibe-coded. DataHub reads only which visual it is and which columns it used, then maps that onto the asset you select — so your original chart is rebuilt natively on the governed data.
How an import works¶
Two inputs, and they do different jobs. The HTML file only ever says which visual you meant; every row you end up looking at comes from the governed asset.
flowchart LR
HTML["HTML file (optional)"]
ASSET["Governed Data Asset"]
CFG{"Configure step — you confirm each card"}
CARD(["Native Insights card"])
DROP["Discarded"]
HTML -->|visual kind and column roles| CFG
ASSET -->|schema| CFG
CFG --> CARD
ASSET ==>|live rows, always current| CARD
HTML -.->|embedded data stripped| DROP
classDef accent fill:#ff8400,stroke:#e67700,color:#ffffff,font-weight:600;
class CARD accent
Figure 1 — the HTML contributes visual intent only. The dashed path is its embedded data, which is thrown away; the heavy path is where every value you see actually comes from.
How to build one¶
- Go to Insights → New dashboard and choose the Import from HTML dashboard tile.
- Pick your source: Use an existing Data Asset, or Upload an HTML dashboard.
- Select the Data Asset that holds the data. (Only assets with a defined schema are shown — this is where the dashboard's data comes from.) If you're uploading HTML, add the file too — it's read for the visual only.
- Configure the proposed card(s). Each card shows its visual kind and the columns it maps to. Change the visual kind or the column mapping, remove cards you don't want, and edit the dashboard name.
- Create dashboard. DataHub opens your new dashboard with each card rendering live from the asset. No asset is created and no data is copied.
No matching asset yet?
The data has to be a governed asset first. If you vibe-coded a dashboard from data that isn't in DataHub yet, import it in the Data Catalog (CSV/Excel → a governed Data Asset), then come back here and build the dashboard on it.
The four visual kinds¶
| DataHub proposes | From | And maps your columns to |
|---|---|---|
| Map | two coordinate columns on the asset; or a Leaflet/Folium/GeoJSON/map-trace signal in the HTML | latitude, longitude, an optional label (WGS84 or Dutch Rijksdriehoek auto-detected) |
| Chart | a category + a number on the asset; or a Plotly/Chart.js/ECharts/Vega/Recharts signal in the HTML | an x-axis + one numeric series (bar, line or pie) |
| KPI | a single big number in a .kpi / .stat block in the HTML |
one headline value (pick it in the editor) |
| Table | anything that isn't one of the above | all columns |
When an uploaded chart library tells us the exact kind (a Chart.js line, a Plotly bar), we keep it and map it onto your asset's columns. Otherwise DataHub proposes from the shape of the asset's columns — and you can change every card's kind and mapping in the configure step before anything is created. The server builds the final card configuration, so a mapping can never be malformed.
Worked example — a store map
You imported a stores asset (with lat, lon, name) into the Data Catalog, then vibe-coded a Folium map from it. Here, upload that HTML and pick the stores asset: DataHub sees the map intent, matches lat/lon/name to the asset's columns, and creates a native map card reading live from the governed asset — every point, always current. Prefer to skip the file? Just pick the asset and DataHub suggests the same map from its coordinates.
After you build it¶
- Your dashboard is a set of native Insights cards, each reading live from the Data Asset you chose — no longer a static picture.
- Nothing new was created or copied. The asset is untouched; it keeps its own review, versioning, and archive rules. Edit or govern it in the Data Catalog exactly as before.
Who can do this¶
Building the dashboard needs Manage Insights and Read Data Catalog permissions — you author the dashboard and it reads the asset you bind it to. No permission to create catalog assets is needed, because none are created.
Good to know¶
- The HTML never contributes data. Its embedded rows are stripped and discarded; the data is always your selected asset. The file is read for the chart type and column roles only, and is never rendered, executed, or stored.
- Everything is a proposal. You confirm, re-map, or remove each card before anything is created.
- Size limit is 5 MB for the HTML file. Larger files are rejected before anything is parsed.
- The asset picker says what is empty. If the list is empty, import a schema-bearing asset in the Data Catalog first. A search that matches nothing says so — it does not mean the catalog is empty. If the list fails to load, retry or check you can read the Data Catalog.
- Unrecognised HTML. If we cannot recognise a visualisation in the file, you will see that message — pick a different file, or start from the asset instead.