<?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>Forem: Ravi Kiran Pagidi</title>
    <description>The latest articles on Forem by Ravi Kiran Pagidi (@ravikiranpagidi).</description>
    <link>https://forem.com/ravikiranpagidi</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3895157%2F08fd0302-cadd-41fa-b340-fb1aa59baa12.png</url>
      <title>Forem: Ravi Kiran Pagidi</title>
      <link>https://forem.com/ravikiranpagidi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ravikiranpagidi"/>
    <language>en</language>
    <item>
      <title>Can AI Replace Data Engineers? We Tried It.</title>
      <dc:creator>Ravi Kiran Pagidi</dc:creator>
      <pubDate>Mon, 27 Apr 2026 23:16:07 +0000</pubDate>
      <link>https://forem.com/ravikiranpagidi/can-ai-replace-data-engineers-we-tried-it-3i3a</link>
      <guid>https://forem.com/ravikiranpagidi/can-ai-replace-data-engineers-we-tried-it-3i3a</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr91zweqqp2h3wkgvtlj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpr91zweqqp2h3wkgvtlj.png" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We had a slightly reckless idea: what if we let AI do most of our data engineering work?&lt;/p&gt;

&lt;p&gt;Not "help with a query here and there," but actually build real pipelines.&lt;/p&gt;

&lt;p&gt;Azure, Databricks, Delta Lake, the whole thing.&lt;/p&gt;

&lt;p&gt;Real enterprise data, messy schemas, and stakeholders who will definitely shout if numbers look wrong.&lt;/p&gt;

&lt;p&gt;I'm a Senior Data Engineer, I work on this stack every day, and I still wanted to see how far we could push AI into my own job.&lt;/p&gt;

&lt;p&gt;This is what happened when we tried.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Experiment: Letting AI Touch Real Pipelines
&lt;/h2&gt;

&lt;p&gt;The setup will look familiar to a lot of people:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Azure as the platform&lt;/li&gt;
&lt;li&gt;Databricks as the main compute environment&lt;/li&gt;
&lt;li&gt;Delta Lake as the storage layer, with a Bronze, Silver, Gold medallion layout&lt;/li&gt;
&lt;li&gt;Unity Catalog for governance and access control&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the transformation work lives in PySpark, with SQL on top for reporting and BI layers.&lt;/p&gt;

&lt;p&gt;The experiment was simple to describe and painful to watch:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Give an LLM and Copilot style tools the job of:

&lt;ul&gt;
&lt;li&gt;Writing PySpark transformations for a new Silver layer&lt;/li&gt;
&lt;li&gt;Generating SQL for aggregation and reporting tables&lt;/li&gt;
&lt;li&gt;Suggesting schemas and data models for a new feature set&lt;/li&gt;
&lt;li&gt;Proposing fixes for slow or failing jobs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;We fed it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plain language descriptions of the business logic&lt;/li&gt;
&lt;li&gt;Table schemas copied from &lt;code&gt;DESCRIBE&lt;/code&gt; and &lt;code&gt;SHOW COLUMNS&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;A few existing notebooks as "examples of our style"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this happened in a safe Databricks workspace with test data and separate storage. No chance of breaking production, but our question was serious. Could we realistically replace most of the day to day data engineering work on a new pipeline?&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Actually Helped
&lt;/h2&gt;

&lt;p&gt;To be fair, AI did a few things well enough that I now use it on purpose.&lt;/p&gt;

&lt;h3&gt;
  
  
  Boilerplate PySpark
&lt;/h3&gt;

&lt;p&gt;Whenever I needed yet another "read, filter, transform, write" notebook, the model saved a bit of time:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reading from Delta tables&lt;/li&gt;
&lt;li&gt;Simple filters and column selections&lt;/li&gt;
&lt;li&gt;Casting and basic feature engineering&lt;/li&gt;
&lt;li&gt;Writing back to Delta with a reasonable partition strategy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, I asked it something close to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Read from &lt;code&gt;bronze.orders&lt;/code&gt;, filter cancelled orders, cast &lt;code&gt;order_ts&lt;/code&gt; to timestamp, add &lt;code&gt;order_date&lt;/code&gt;, then write to &lt;code&gt;silver.orders_clean&lt;/code&gt; as Delta, partitioned by &lt;code&gt;order_date&lt;/code&gt;."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The generated PySpark looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;pyspark.sql&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;functions&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;

&lt;span class="n"&gt;df&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;spark&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;read&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;table&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;bronze.orders&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;col&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;status&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;CANCELLED&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;withColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_ts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_timestamp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_ts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;withColumn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;F&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_date&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_ts&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;df&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;write&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;format&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;delta&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;overwrite&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;partitionBy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;order_date&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
   &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;saveAsTable&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;silver.orders_clean&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Could I have written this faster by hand? On a good day, yes.&lt;/p&gt;

&lt;p&gt;But over dozens of similar notebooks, the time saved adds up.&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick SQL starting points
&lt;/h3&gt;

&lt;p&gt;For straightforward reporting queries, Copilot in a SQL editor was handy.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It auto completed &lt;code&gt;SELECT&lt;/code&gt; lists once it saw the schema&lt;/li&gt;
&lt;li&gt;It filled in &lt;code&gt;GROUP BY&lt;/code&gt; and &lt;code&gt;ORDER BY&lt;/code&gt; clauses correctly most of the time&lt;/li&gt;
&lt;li&gt;It often proposed reasonable aggregates to start from&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I still had to adjust conditions and add proper filters, but I was no longer staring at a blank editor. That alone reduces friction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Documentation and "glue text"
&lt;/h3&gt;

&lt;p&gt;The part that surprised me most was how useful AI was for the boring bits:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drafting docstrings and short comments&lt;/li&gt;
&lt;li&gt;Converting bullet points into a light design doc&lt;/li&gt;
&lt;li&gt;Writing a high level description of a pipeline for internal docs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;None of this replaces real architectural decisions, but it lets me stay in "technical thinking" mode while an assistant fills in the prose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where AI Failed, In Ways That Matter
&lt;/h2&gt;

&lt;p&gt;Now for the part that actually matters, especially if you work in a production environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Joins that compile but lie
&lt;/h3&gt;

&lt;p&gt;We tried a customer360 style pipeline that combined:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;bronze.customers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bronze.orders&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bronze.events&lt;/code&gt; for clickstream data&lt;/li&gt;
&lt;li&gt;&lt;code&gt;bronze.subscriptions&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We told the model something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Join these to build a customer centric table with basic attributes, last activity date, and current subscription status."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It produced:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A join from &lt;code&gt;customers&lt;/code&gt; to &lt;code&gt;orders&lt;/code&gt; on &lt;code&gt;customer_id&lt;/code&gt; which was fine&lt;/li&gt;
&lt;li&gt;A join from &lt;code&gt;orders&lt;/code&gt; to &lt;code&gt;subscriptions&lt;/code&gt; on &lt;code&gt;customer_id&lt;/code&gt; which was wrong in our world, the real join key for subscriptions is &lt;code&gt;account_id&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;An aggregation of events using &lt;code&gt;MAX(event_ts)&lt;/code&gt; per &lt;code&gt;customer_id&lt;/code&gt;, ignoring the fact that some event types should not count as "activity"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Subscription states merged incorrectly&lt;/li&gt;
&lt;li&gt;Trial vs paid blurred together&lt;/li&gt;
&lt;li&gt;"Last seen" dates inflated by internal or noise events&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All of this ran without any schema error. Nothing crashed. The table "looked" fine at a glance.&lt;/p&gt;

&lt;p&gt;But the logic was off in exactly the way that breaks trust with downstream users.&lt;/p&gt;

&lt;h3&gt;
  
  
  Columns and tables that never existed
&lt;/h3&gt;

&lt;p&gt;When our prompt was slightly vague, the model started inventing things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;New boolean columns like &lt;code&gt;is_active&lt;/code&gt; that were not in any table&lt;/li&gt;
&lt;li&gt;Table names that looked plausible, for example &lt;code&gt;orders_clean&lt;/code&gt;, which only existed in someone's head, not in our catalog&lt;/li&gt;
&lt;li&gt;Column names that were close to reality, but not exact, such as &lt;code&gt;customer_email&lt;/code&gt; instead of &lt;code&gt;email_address&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is a known issue with LLM generated code in general, often called hallucination.&lt;/p&gt;

&lt;p&gt;In a chat window it looks clever. In a notebook connected to real data, it is just a bug factory.&lt;/p&gt;

&lt;p&gt;You either fix the code and bend it back toward reality, or you start renaming actual tables and columns to match the hallucination. I saw both instincts on the team.&lt;/p&gt;

&lt;h3&gt;
  
  
  Performance "help" that makes things worse
&lt;/h3&gt;

&lt;p&gt;We pointed AI at a slow query on a large Delta table and asked for tuning suggestions.&lt;/p&gt;

&lt;p&gt;It happily suggested changes that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removed filters that were actually highly selective&lt;/li&gt;
&lt;li&gt;Rewrote predicates in ways that broke partition pruning&lt;/li&gt;
&lt;li&gt;Introduced joins that would obviously cause huge shuffles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, I spent more time validating each suggestion with &lt;code&gt;EXPLAIN&lt;/code&gt; and the Databricks query profile than it would have taken to reason through the original plan myself.&lt;/p&gt;

&lt;h3&gt;
  
  
  Edge cases and dirty data
&lt;/h3&gt;

&lt;p&gt;We set up some non ideal data on purpose:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Null keys in join columns&lt;/li&gt;
&lt;li&gt;Late arriving events&lt;/li&gt;
&lt;li&gt;Dirty reference data with conflicting keys&lt;/li&gt;
&lt;li&gt;Out of order timestamps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The model did not:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Add defensive joins or explicit null handling&lt;/li&gt;
&lt;li&gt;Propose data quality checks&lt;/li&gt;
&lt;li&gt;Think about slowly changing dimensions or history&lt;/li&gt;
&lt;li&gt;Distinguish between "missing because it never existed" and "missing because it will arrive later"&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The code it generated assumed clean, static, relational textbook data.&lt;/p&gt;

&lt;p&gt;That world does not exist in any real enterprise I have worked in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Fails: Context, Lineage and Ownership
&lt;/h2&gt;

&lt;p&gt;This is not only about wrong code. There is a deeper gap that explains most of the failures we saw.&lt;/p&gt;

&lt;h3&gt;
  
  
  No real sense of lineage
&lt;/h3&gt;

&lt;p&gt;The model only sees what we paste into the prompt or make available through a narrow integration. It does not naturally see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The end to end flow from Bronze through to Gold&lt;/li&gt;
&lt;li&gt;Which downstream reports and ML models depend on a field&lt;/li&gt;
&lt;li&gt;Where a column definition came from originally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lineage is technical and social. It lives partly in tools, partly in tribal knowledge, and partly in old Slack threads. AI only sees a slice of that picture unless you build a very deliberate context layer around it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Business rules live outside the schema
&lt;/h3&gt;

&lt;p&gt;Here is a real kind of rule you will not get from a table definition:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"A customer is active if they had a paid transaction in the last 90 days, except in region X and contract type Y, where the window is 180 days."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pieces of that rule live in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Product requirements&lt;/li&gt;
&lt;li&gt;Email threads&lt;/li&gt;
&lt;li&gt;A teammate's memory&lt;/li&gt;
&lt;li&gt;Old reconciliation docs in some forgotten folder&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you ask AI to "mark active customers," it will give you a clean definition that fits a generic pattern. That pattern is almost guaranteed to differ from your actual rulebook.&lt;/p&gt;

&lt;h3&gt;
  
  
  No accountability
&lt;/h3&gt;

&lt;p&gt;When I ship a pipeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;My name is on the PR&lt;/li&gt;
&lt;li&gt;I get pinged if a CFO dashboard looks wrong&lt;/li&gt;
&lt;li&gt;I have to answer questions from auditors or risk teams&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI has no skin in the game. It can be wrong with confidence and nothing bad happens to it. That changes how much you trust it, and it should change how you design your review and test processes.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Actually Worked: AI As a Copilot
&lt;/h2&gt;

&lt;p&gt;After a few weeks, we stopped trying to make AI "do" data engineering and started treating it like an extra pair of very fast hands.&lt;/p&gt;

&lt;h3&gt;
  
  
  Acceleration for well defined tasks
&lt;/h3&gt;

&lt;p&gt;We now use AI to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turn a clear description into a first draft of PySpark or SQL&lt;/li&gt;
&lt;li&gt;Suggest alternative ways to express the same logic&lt;/li&gt;
&lt;li&gt;Refactor slightly messy code into something cleaner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We still own the logic. We still write tests. The model just gets us to the first draft faster.&lt;/p&gt;

&lt;h3&gt;
  
  
  Debugging assistant, not performance engineer
&lt;/h3&gt;

&lt;p&gt;AI is useful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You paste in a stack trace and ask "what is this error really telling me"&lt;/li&gt;
&lt;li&gt;You show an &lt;code&gt;EXPLAIN&lt;/code&gt; plan and want a plain language description&lt;/li&gt;
&lt;li&gt;You forget the exact syntax for some obscure Spark function&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is not our primary performance tuner, but it makes the feedback loop a bit shorter.&lt;/p&gt;

&lt;h3&gt;
  
  
  Glue work and writing
&lt;/h3&gt;

&lt;p&gt;We let AI start the boring writing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Basic README files&lt;/li&gt;
&lt;li&gt;First drafts of design docs&lt;/li&gt;
&lt;li&gt;Short explanations for internal wikis&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Engineers review and correct the details, but they are not starting from an empty page.&lt;/p&gt;

&lt;h2&gt;
  
  
  Real Enterprise Scenarios
&lt;/h2&gt;

&lt;p&gt;Two concrete scenarios from the kind of environment many of us work in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Marketing attribution pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good: generate window functions, sketch event aggregations, build starter queries&lt;/li&gt;
&lt;li&gt;Bad: handle the messy attribution rules that change per region and per campaign type&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Finance reconciliation layer&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good: boilerplate mapping logic, standard transformations, basic QC checks&lt;/li&gt;
&lt;li&gt;Bad: interpret accounting rules, satisfy audit requirements, reason about exceptions&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;In both cases, AI makes small pieces of the job faster. The responsibility and the judgement stay with the human engineers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Verdict
&lt;/h2&gt;

&lt;p&gt;After trying quite hard to let AI handle a big chunk of my data engineering work on Azure Databricks, my view is pretty clear.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI will not replace solid data engineers any time soon&lt;/li&gt;
&lt;li&gt;AI will change how those engineers work and what they spend time on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The engineers who learn to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use AI for drafts and helpers, not as an oracle&lt;/li&gt;
&lt;li&gt;Wrap AI generated code in tests, monitoring, and review&lt;/li&gt;
&lt;li&gt;Keep ownership of business rules, data quality and performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;will move faster than those who either ignore these tools or trust them blindly.&lt;/p&gt;

&lt;p&gt;AI will not replace data engineers.&lt;br&gt;
Data engineers who use AI well will replace the ones who do not.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>dataengineering</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Using Databricks Genie for Natural Language Querying on Semantic Models</title>
      <dc:creator>Ravi Kiran Pagidi</dc:creator>
      <pubDate>Sun, 26 Apr 2026 01:52:49 +0000</pubDate>
      <link>https://forem.com/ravikiranpagidi/using-databricks-genie-for-natural-language-querying-on-semantic-models-23kd</link>
      <guid>https://forem.com/ravikiranpagidi/using-databricks-genie-for-natural-language-querying-on-semantic-models-23kd</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Databricks Genie is designed to let business users ask questions in plain language and receive answers grounded in governed enterprise data instead of writing SQL themselves. In practical terms, it acts as a conversational layer on top of curated datasets, AI and BI assets, and business context so that end users can explore data using familiar business language.&lt;/p&gt;

&lt;p&gt;For organizations that already invest in semantic modelling, Genie becomes more valuable because the quality of answers depends heavily on how well the underlying data model captures business definitions, relationships, trusted metrics, and approved terminology. This means Genie is not just a chatbot for data access. It is a governed analytics interface whose success depends on semantic clarity and disciplined implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Genie Means for End Users
&lt;/h2&gt;

&lt;p&gt;For end users, the biggest attraction is simplicity. A sales manager can ask a question such as monthly pipeline by region, a finance analyst can ask about margin trends, and an operations lead can ask about delayed orders, all without remembering schema names or joins. This lowers the dependence on technical teams for routine analytical questions and improves access to data across non technical functions.&lt;/p&gt;

&lt;p&gt;Genie spaces are curated environments where data, instructions, examples, and business guidance are organized for a specific domain or use case. When curated properly, these spaces help the system interpret user intent more accurately because the model is given a narrower and more meaningful context instead of being exposed to an unbounded set of tables and terms.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why the Semantic Model Matters
&lt;/h2&gt;

&lt;p&gt;A semantic model gives business meaning to raw data. It defines entities, dimensions, measures, joins, naming conventions, and approved definitions so that end users do not need to understand warehouse level complexity in order to ask useful questions. Without this layer, natural language querying can become inconsistent because the same business term may map to multiple tables, multiple calculation logics, or even conflicting departmental definitions.&lt;/p&gt;

&lt;p&gt;This is where Genie and the semantic layer work together. Genie provides the conversational interface, while the semantic model provides the business truth that guides interpretation. If the semantic model is mature, Genie can produce more trustworthy results. If the semantic model is weak, Genie may still respond fluently, but the underlying answer quality may not meet business expectations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Typical Architecture
&lt;/h2&gt;

&lt;p&gt;A common implementation starts with data in the Lakehouse, followed by curated datasets or governed tables, then semantic definitions, and finally a Genie space configured for a specific business audience. The Genie space usually includes selected datasets, example questions, instructions, metadata, and governance controls that help align user questions with business intent.&lt;/p&gt;

&lt;p&gt;In a mature enterprise setup, this architecture also includes access control, certified metrics, monitoring, and periodic review by data owners. The goal is not only to answer questions but to ensure that answers are secure, repeatable, and aligned with organizational definitions of revenue, cost, customer, product, or risk.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Approach
&lt;/h2&gt;

&lt;p&gt;A successful Genie rollout generally works best when treated as a product, not as a one time feature deployment. The strongest implementations start with one domain such as sales, finance, supply chain, or customer support, where business terms are already reasonably well defined and usage demand is high.&lt;/p&gt;

&lt;p&gt;A practical implementation sequence is as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Identify a focused business domain and nominate data owners, semantic owners, and end user champions.&lt;/li&gt;
&lt;li&gt;Curate trusted tables or datasets and remove ambiguous or redundant data sources from the user facing scope.&lt;/li&gt;
&lt;li&gt;Define the semantic model carefully, including approved metrics, dimensions, hierarchies, synonyms, and join logic.&lt;/li&gt;
&lt;li&gt;Configure the Genie space with instructions, sample prompts, and domain specific vocabulary so the system learns how users naturally phrase questions.&lt;/li&gt;
&lt;li&gt;Test with real business questions, especially edge cases, vague wording, and competing definitions such as booked revenue versus recognized revenue.&lt;/li&gt;
&lt;li&gt;Roll out in phases, observe usage patterns, collect failed questions, and continuously refine the semantic layer and Genie guidance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This phased model reduces risk because it acknowledges that adoption problems are rarely just technical. Most failures come from weak metric definitions, missing governance, poor testing, or unrealistic assumptions that natural language alone can fix broken data foundations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits and Strengths
&lt;/h2&gt;

&lt;p&gt;The first major benefit is accessibility. Genie makes analytics more approachable for users who understand the business but do not know SQL, dashboards, or table structures. This expands data usage beyond specialist analysts and helps teams ask more follow up questions in the moment when decisions are being made.&lt;/p&gt;

&lt;p&gt;The second benefit is speed. Instead of waiting for a dashboard update or requesting a custom query, users can phrase a question directly and receive a response quickly within a governed environment. For recurring business reviews, this can reduce friction and support a more self service analytics culture.&lt;/p&gt;

&lt;p&gt;The third benefit is alignment with governed analytics. Because Genie is intended to work with curated assets and structured business context, it can support more reliable answers than a generic large language model pointed at raw data with no semantic grounding. This is especially important in enterprises where consistent KPI definitions matter more than conversational novelty.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations
&lt;/h2&gt;

&lt;p&gt;Genie is powerful, but it is not a substitute for strong data management. If source data is messy, inconsistent, or poorly documented, the user experience will appear intelligent on the surface while still producing answers that can be incomplete, confusing, or misaligned with business logic. Natural language interfaces reduce technical friction, but they do not remove the need for disciplined modelling and governance.&lt;/p&gt;

&lt;p&gt;Another limitation is ambiguity in human language. End users often ask incomplete questions such as top customers last quarter or compare performance across teams, without defining which metric, geography, calendar, or business rule should be used. Even with a strong semantic model, these questions may still require clarification, curated examples, or tighter domain boundaries to avoid incorrect interpretation.&lt;/p&gt;

&lt;p&gt;There are also scope limitations. Genie works best in curated domains where the data landscape is intentionally narrowed and business concepts are stable. It is less effective when users expect it to reason across every table in the enterprise, resolve all semantic conflicts automatically, or replace expert analysts for complex, cross functional, or highly customized investigation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trade Offs
&lt;/h2&gt;

&lt;p&gt;The core trade off is between flexibility and control. If a Genie space exposes too much data and too many definitions, users may gain freedom but answer quality can fall because ambiguity rises. If the space is tightly curated, accuracy usually improves, but some users may feel constrained because they cannot explore every possible angle.&lt;/p&gt;

&lt;p&gt;There is also a trade off between speed of deployment and semantic quality. A fast rollout can create enthusiasm, but if measures, joins, and synonyms are not properly governed, trust can erode quickly once users find inconsistent answers. A slower rollout with rigorous curation usually produces better adoption over time because it protects credibility from the start.&lt;/p&gt;

&lt;p&gt;A further trade off appears between self service and expert oversight. Genie can reduce dependency on analysts for routine questions, but organizations still need analysts and data stewards for model design, exception handling, validation, and advanced analytical work. In other words, Genie shifts the role of analytics teams rather than eliminating it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pros and Challenges
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Positive Side&lt;/th&gt;
&lt;th&gt;Challenge Side&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User Experience&lt;/td&gt;
&lt;td&gt;Users can ask questions in business language and get faster access to insights&lt;/td&gt;
&lt;td&gt;Vague or overloaded wording can still lead to misinterpretation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Governance&lt;/td&gt;
&lt;td&gt;Curated spaces and governed assets improve trust and consistency&lt;/td&gt;
&lt;td&gt;Governance requires continuous ownership and effort&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Adoption&lt;/td&gt;
&lt;td&gt;Non technical users can engage with data more confidently&lt;/td&gt;
&lt;td&gt;Adoption drops if answers are inconsistent even a few times&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scale&lt;/td&gt;
&lt;td&gt;Reusable semantic structures can support wider business usage&lt;/td&gt;
&lt;td&gt;Broad enterprise scope increases ambiguity and maintenance burden&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Productivity&lt;/td&gt;
&lt;td&gt;Analysts spend less time on repetitive questions&lt;/td&gt;
&lt;td&gt;Analysts still need to maintain definitions, test outputs, and handle exceptions&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Where It Fits Well
&lt;/h2&gt;

&lt;p&gt;Genie fits especially well in domains with recurring business questions, stable metrics, and a clear owner for data quality and definitions. Typical examples include sales pipeline reviews, finance variance analysis, service performance monitoring, retail demand tracking, and executive KPI exploration where business users repeatedly ask similar questions in slightly different forms.&lt;/p&gt;

&lt;p&gt;It is also useful in organizations trying to increase data literacy without forcing every user to learn dashboard design or SQL. When paired with a clean semantic foundation, Genie can become a practical bridge between enterprise data systems and business decision makers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Caution Is Needed
&lt;/h2&gt;

&lt;p&gt;Caution is necessary in environments where core business definitions are still contested, data quality is weak, or source systems change frequently without governance. In such cases, a natural language layer can expose confusion faster rather than solve it, because users will discover conflicting answers through conversation.&lt;/p&gt;

&lt;p&gt;It is also risky to position Genie as a universal replacement for dashboards, SQL, or analysts. For exploratory work that requires complex statistical reasoning, unusual joins, specialized logic, or detailed forensic analysis, traditional analytics methods still remain important.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Recommendations
&lt;/h2&gt;

&lt;p&gt;Organizations should begin with a narrow, high value use case and define success in business terms such as reduced analyst tickets, faster access to recurring metrics, improved executive self service, or higher adoption among non technical teams. A carefully scoped launch creates a better signal of real value than a wide launch that mixes mature and immature domains.&lt;/p&gt;

&lt;p&gt;It is equally important to invest in semantic quality before promoting the conversational interface. Good synonyms, approved definitions, example questions, and ongoing feedback loops usually matter more than flashy demonstrations. The best results come when business teams, data teams, and platform teams jointly treat Genie as a governed analytical product rather than an AI experiment.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final View
&lt;/h2&gt;

&lt;p&gt;Databricks Genie can be a strong interface for natural language querying by end users when it is built on a reliable semantic model, curated business context, and disciplined governance. Its real value lies in making governed analytics more accessible, not in bypassing the need for modelling, data stewardship, or analytical thinking.&lt;/p&gt;

&lt;p&gt;For most enterprises, the question is not whether Genie can answer questions in natural language. The more important question is whether the organization has built enough semantic clarity and operational ownership to make those answers trustworthy at scale.&lt;/p&gt;

</description>
      <category>databricks</category>
      <category>machinelearning</category>
      <category>dataengineering</category>
      <category>analytics</category>
    </item>
  </channel>
</rss>
