Skip to content

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.

Data comes fromAn existing Data Asset you select
You getA dashboard of native Insights cards
Visual kindsMap · Chart · KPI · Table
HTML is used forVisual intent only — never its data

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 .html file 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

  1. Go to Insights → New dashboard and choose the Import from HTML dashboard tile.
  2. Pick your source: Use an existing Data Asset, or Upload an HTML dashboard.
  3. 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.
  4. 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.
  5. 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.