<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Luke Agbetu</title>
    <description>The latest articles on DEV Community by Luke Agbetu (@luke2907).</description>
    <link>https://dev.to/luke2907</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4043160%2F3a3d8433-1a87-4b6e-8886-5205a997cd25.png</url>
      <title>DEV Community: Luke Agbetu</title>
      <link>https://dev.to/luke2907</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/luke2907"/>
    <language>en</language>
    <item>
      <title>Building and Deploying a Data Observability Dashboard on Databricks Apps</title>
      <dc:creator>Luke Agbetu</dc:creator>
      <pubDate>Thu, 23 Jul 2026 06:36:13 +0000</pubDate>
      <link>https://dev.to/luke2907/building-and-deploying-a-data-observability-dashboard-on-databricks-apps-2ad0</link>
      <guid>https://dev.to/luke2907/building-and-deploying-a-data-observability-dashboard-on-databricks-apps-2ad0</guid>
      <description>&lt;p&gt;If you've ever wanted to try Databricks Apps but weren't sure where to start, this is the walkthrough I wish I'd had. I built a small data-quality dashboard from scratch using simulated data, a Streamlit UI, and deployed it straight from GitHub and open-sourced the whole thing so you can clone it and adapt it for your own use case.&lt;/p&gt;

&lt;p&gt;Repo: [&lt;a href="https://github.com/Lanre2907/data-observability-sample.git" rel="noopener noreferrer"&gt;https://github.com/Lanre2907/data-observability-sample.git&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why this project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Data observability: tracking &lt;strong&gt;completeness&lt;/strong&gt;, &lt;strong&gt;timeliness&lt;/strong&gt;, &lt;strong&gt;uniqueness&lt;/strong&gt;, and &lt;strong&gt;overall health&lt;/strong&gt; of your tables is something most data teams eventually need a dashboard for. Rather than write about it abstractly, I built the smallest possible working version: a Streamlit app reading from a simulated CSV, deployed as a real Databricks App.&lt;/p&gt;

&lt;p&gt;The goal wasn't a production tool. It was a clean, minimal reference for the mechanics of getting a data app running on Databricks. Something you could fork in ten minutes and start editing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What it does&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The dashboard shows:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;KPI tiles for the latest day — &lt;strong&gt;Overall Health, Completeness, Timeliness, Uniqueness&lt;/strong&gt;&lt;br&gt;
A trend chart you can toggle between metrics, broken out by table&lt;br&gt;
A snapshot table of the latest scores across all tracked tables&lt;/p&gt;

&lt;p&gt;The data itself is generated by a small script that random-walks scores around a baseline per table, so the trends look realistic without touching any real system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project structure&lt;/strong&gt;&lt;br&gt;
data-observability-sample/&lt;br&gt;
├── app.py                   # Streamlit dashboard&lt;br&gt;
├── app.yaml                 # Tells Databricks Apps how to run the app&lt;br&gt;
├── requirements.txt         # Python dependencies&lt;br&gt;
├── generate_sample_data.py  # Generates the simulated dataset&lt;br&gt;
└── data/&lt;br&gt;
    └── dq_metrics.csv&lt;/p&gt;

&lt;p&gt;Nothing exotic — just pandas, streamlit, and plotly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploying it&lt;/strong&gt;: the Git route&lt;/p&gt;

&lt;p&gt;Databricks Apps supports deploying straight from a workspace folder, but I wanted the Git-linked flow since it mirrors how you'd actually manage this in a team setting.&lt;/p&gt;

&lt;p&gt;Push the repo to GitHub.&lt;br&gt;
In the Databricks workspace: Compute → Apps → Create app → Create a custom app.&lt;br&gt;
In the Configure Git step, point it at the repo URL and branch (main).&lt;br&gt;
If the repo is private, add a Git credential (a GitHub PAT with repo scope).&lt;br&gt;
Click Create app, then Deploy.&lt;/p&gt;

&lt;p&gt;Databricks pulls the repo, reads app.yaml, installs requirements.txt, and starts the app. The deployment log is genuinely satisfying to watch the first time — source pulled, packages installed, app built, app started, done.&lt;/p&gt;

&lt;p&gt;Once it's running, you get a live URL like:&lt;/p&gt;

&lt;p&gt;[&lt;a href="https://data-observability-app-7474646500738457.aws.databricksapps.com/" rel="noopener noreferrer"&gt;https://data-observability-app-7474646500738457.aws.databricksapps.com/&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I'd extend next&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The obvious next step is swapping the static CSV for a real source pointing app.py at a Databricks SQL warehouse or a Delta table via the Databricks SDK instead of pandas.read_csv. The dashboard code doesn't need to change at all as long as the resulting DataFrame keeps the same columns.&lt;/p&gt;

&lt;p&gt;If you're learning Databricks Apps and want a minimal, no-surprises starting point, feel free to fork this and rip out the parts you don't need. PRs welcome if you extend it in an interesting direction.&lt;/p&gt;

&lt;p&gt;If this was useful, I'd appreciate a star on the repo and let me know what you build with it.&lt;/p&gt;

</description>
      <category>databricks</category>
      <category>kafka</category>
      <category>dataengineering</category>
      <category>python</category>
    </item>
  </channel>
</rss>
