<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Genie Hub topics</title>
    <link>https://community.databricks.com/t5/genie-hub/bd-p/Genie_Content_Center</link>
    <description>Genie Hub topics</description>
    <pubDate>Sat, 15 Aug 2026 02:25:09 GMT</pubDate>
    <dc:creator>Genie_Content_Center</dc:creator>
    <dc:date>2026-08-15T02:25:09Z</dc:date>
    <item>
      <title>Solution: Simplify Genie Agent Instruction Updates Across Multiple Spaces</title>
      <link>https://community.databricks.com/t5/genie-hub/solution-simplify-genie-agent-instruction-updates-across/m-p/165309#M28</link>
      <description>&lt;P&gt;Dear All,&lt;/P&gt;&lt;P&gt;As the number of Genie Agents grows, maintaining consistent instructions across multiple Genie Spaces becomes increasingly cumbersome. Updating the same instructions manually in each space requires significant effort and is both time-consuming and error-prone.&lt;/P&gt;&lt;P&gt;To simplify this process, we have created a notebook-based solution that automatically updates Genie instructions across multiple spaces. To use it, simply replace the following values in the notebook:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Genie Space IDs&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Databricks Workspace URL&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Personal Access Token (PAT)&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Desired Instructions&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Once configured, the notebook will automatically apply the same instructions to all specified Genie Spaces, eliminating the need for repetitive manual updates.&lt;/P&gt;&lt;P&gt;This should significantly reduce maintenance effort and ensure consistency across your Genie Agents.&lt;/P&gt;&lt;P&gt;Attached notebook code:&lt;/P&gt;&lt;P&gt;================================start here====================================&lt;/P&gt;&lt;P&gt;import requests&lt;BR /&gt;import json&lt;/P&gt;&lt;P&gt;workspace_url = "&amp;lt;your databricks workspace url"&lt;BR /&gt;token = "&amp;lt;your PAT token"&lt;/P&gt;&lt;P&gt;headers = {&lt;BR /&gt;"Authorization": f"Bearer {token}",&lt;BR /&gt;"Content-Type": "application/json"&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;space_ids = [&lt;BR /&gt;"&amp;lt;genie space id 1&amp;gt;",&lt;BR /&gt;"&amp;lt;genie space id 2&amp;gt;",&lt;BR /&gt;"&amp;lt;genie space id n&amp;gt;&lt;BR /&gt;]&lt;/P&gt;&lt;P&gt;NEW_INSTRUCTION = """&lt;BR /&gt;Your Role: Databricks SQL Analyst.&lt;BR /&gt;Rule 1: Use only tables, columns, joins, and logic defined in this Genie space. Never invent any.&lt;BR /&gt;Rule 2: Before generating a query, validate all rules.&lt;BR /&gt;&amp;lt;Your extended prompt Rules&amp;gt;&lt;BR /&gt;"""&lt;/P&gt;&lt;P&gt;for space_id in space_ids:&lt;BR /&gt;try:&lt;BR /&gt;# Get existing space&lt;BR /&gt;url = f"{workspace_url}/api/2.0/genie/spaces/{space_id}"&lt;BR /&gt;response = requests.get(&lt;BR /&gt;f"{url}?include_serialized_space=true",&lt;BR /&gt;headers=headers&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;response.raise_for_status()&lt;/P&gt;&lt;P&gt;space = response.json()&lt;/P&gt;&lt;P&gt;serialized = json.loads(space["serialized_space"])&lt;/P&gt;&lt;P&gt;# Replace instructions&lt;BR /&gt;serialized["instructions"]["text_instructions"] = [{&lt;BR /&gt;"content": [NEW_INSTRUCTION]&lt;BR /&gt;}]&lt;/P&gt;&lt;P&gt;payload = {&lt;BR /&gt;"serialized_space": json.dumps(serialized)&lt;BR /&gt;}&lt;/P&gt;&lt;P&gt;update_resp = requests.patch(&lt;BR /&gt;url,&lt;BR /&gt;headers=headers,&lt;BR /&gt;json=payload&lt;BR /&gt;)&lt;/P&gt;&lt;P&gt;print(&lt;BR /&gt;f"{space_id}: {update_resp.status_code}"&lt;BR /&gt;)&lt;BR /&gt;except requests.exceptions.RequestException as e:&lt;BR /&gt;print(f"{space_id}: Request failed - {e}")&lt;BR /&gt;except Exception as e:&lt;BR /&gt;print(f"{space_id}: Unexpected error - {e}")&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;=========================================end here================================&lt;/P&gt;</description>
      <pubDate>Tue, 11 Aug 2026 05:54:18 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/solution-simplify-genie-agent-instruction-updates-across/m-p/165309#M28</guid>
      <dc:creator>harisrinivasay</dc:creator>
      <dc:date>2026-08-11T05:54:18Z</dc:date>
    </item>
    <item>
      <title>Learn Databricks Genie: 5 courses to go from curious to certified</title>
      <link>https://community.databricks.com/t5/genie-hub/learn-databricks-genie-5-courses-to-go-from-curious-to-certified/m-p/165537#M26</link>
      <description>&lt;DIV style="width: 100%; margin: 0 auto; font-family: Arial,Helvetica,sans-serif; color: #0b2026;"&gt;
&lt;DIV style="background-color: #0b2026; padding: 30px 34px 28px 34px; border-radius: 14px 14px 0 0; overflow: hidden;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-left" image-alt="DAT_Stacked_Lock_up_Full_Color_White@2x.png" style="width: 104px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/29975iB27742B0C457B7AC/image-size/medium?v=v2&amp;amp;px=400" width="104" role="button" title="DAT_Stacked_Lock_up_Full_Color_White@2x.png" alt="DAT_Stacked_Lock_up_Full_Color_White@2x.png" /&gt;&lt;/span&gt;
&lt;DIV style="color: #fcba33; font-size: 13px; font-weight: bold; letter-spacing: 2px; text-transform: uppercase;"&gt;Databricks Training &amp;amp; Certifications&lt;/DIV&gt;
&lt;DIV style="color: #ffffff; font-size: 26px; font-weight: 800; line-height: 1.25; margin-top: 4px;"&gt;Learn Databricks Genie &lt;span class="lia-inline-image-display-wrapper lia-image-align-absmiddle" image-alt="genie-icon-full-color-container-895x735-c96edd3.png" style="width: 30px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/29976iC8E72B6D6956F176/image-size/medium?v=v2&amp;amp;px=400" width="30" role="button" title="genie-icon-full-color-container-895x735-c96edd3.png" alt="genie-icon-full-color-container-895x735-c96edd3.png" /&gt;&lt;/span&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="background-color: #f9f7f4; padding: 30px 34px 26px 34px;"&gt;
&lt;DIV style="font-size: 17px; line-height: 1.6; color: #0b2026;"&gt;Want to turn plain-language questions into governed, secure answers from your data? &lt;STRONG&gt;Databricks AI/BI Genie&lt;/STRONG&gt; is the conversational analytics layer that lets business users ask questions and get trustworthy, SQL-backed results - no code required.&lt;/DIV&gt;
&lt;DIV style="font-size: 17px; line-height: 1.6; color: #0b2026; margin-top: 14px;"&gt;The Databricks catalog currently lists &lt;STRONG&gt;5 Genie courses&lt;/STRONG&gt; - a mix of free and paid, from a 2-hour onboarding to instructor-led Associate labs. Pick the one that fits your level and start learning. &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_down:"&gt;👇&lt;/span&gt;&lt;/DIV&gt;
&lt;DIV style="font-size: 20px; font-weight: 800; color: #0b2026; border-left: 4px solid #ff3621; padding-left: 12px; margin-top: 26px; margin-bottom: 14px;"&gt;Start here&lt;/DIV&gt;
&lt;DIV style="background-color: #ffffff; border-radius: 12px; padding: 20px 22px; margin-bottom: 14px; overflow: hidden;"&gt;&lt;SPAN&gt;FREE&lt;/SPAN&gt;
&lt;DIV style="font-size: 18px; font-weight: 800; color: #0b2026; line-height: 1.3;"&gt;Answering Business Questions with Databricks Genie&lt;/DIV&gt;
&lt;DIV style="font-size: 14px; line-height: 1.55; color: #33413f; margin-top: 8px;"&gt;Learn what a Genie Space is, how it keeps your data secure, and best practices for great results. Closes with a hands-on game where you compete to investigate a business mystery.&lt;/DIV&gt;
&lt;DIV style="margin-top: 12px;"&gt;&lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;Self-paced&lt;/A&gt; &lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;2 hours&lt;/A&gt; &lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;Onboarding&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-top: 14px;"&gt;&lt;A style="display: inline-block; background-color: #ff3621; color: #ffffff; font-size: 14px; font-weight: 800; text-decoration: none; padding: 11px 22px; border-radius: 8px;" href="https://www.databricks.com/training/catalog/answering-business-questions-with-databricks-genie-5777" target="_blank"&gt;Enroll free →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="background-color: #ffffff; border-radius: 12px; padding: 20px 22px; margin-bottom: 6px; overflow: hidden;"&gt;&lt;SPAN&gt;FREE&lt;/SPAN&gt;
&lt;DIV style="font-size: 18px; font-weight: 800; color: #0b2026; line-height: 1.3;"&gt;Business Impact Accelerator: Answering Business Questions with Genie&lt;/DIV&gt;
&lt;DIV style="font-size: 14px; line-height: 1.55; color: #33413f; margin-top: 8px;"&gt;A guided, instructor-led take on Genie for business users - ask plain-language questions, understand governance and security, and learn best practices in a live lab setting.&lt;/DIV&gt;
&lt;DIV style="margin-top: 12px;"&gt;&lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;Instructor-led + Lab&lt;/A&gt; &lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;3 hours&lt;/A&gt; &lt;A style="display: inline-block; background-color: #f0ede8; color: #0b2026; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 6px 0;" target="_blank"&gt;Onboarding&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-top: 14px;"&gt;&lt;A style="display: inline-block; background-color: #ff3621; color: #ffffff; font-size: 14px; font-weight: 800; text-decoration: none; padding: 11px 22px; border-radius: 8px;" href="https://www.databricks.com/training/catalog/business-impact-accelerator-answering-business-questions-with-genie-5361" target="_blank"&gt;Enroll free →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="font-size: 20px; font-weight: 800; color: #0b2026; border-left: 4px solid #ff3621; padding-left: 12px; margin-top: 28px; margin-bottom: 12px;"&gt;Go deeper: build production Genie Agents&lt;/DIV&gt;
&lt;DIV style="font-size: 15px; line-height: 1.6; color: #33413f; margin-bottom: 14px;"&gt;&lt;STRONG&gt;Building Reliable Conversational Agents with Genie&lt;/STRONG&gt; teaches the full end-to-end workflow - defining benchmarks, curating the Knowledge Store (metadata, synonyms, SQL logic, example queries), sharing via Genie One, and enforcing Unity Catalog governance. Available in three formats:&lt;/DIV&gt;
&lt;DIV style="background-color: #0b2026; border-radius: 12px; padding: 18px 20px; margin-bottom: 12px;"&gt;
&lt;DIV style="font-size: 16px; font-weight: 800; color: #ffffff;"&gt;Self-paced · Onboarding&lt;/DIV&gt;
&lt;DIV style="margin-top: 8px;"&gt;&lt;A style="display: inline-block; background-color: #fcba33; color: #0b2026; font-size: 12px; font-weight: 800; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 0 0;" target="_blank"&gt;FREE&lt;/A&gt; &lt;A style="display: inline-block; background-color: #1b333a; color: #d1d9db; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none;" target="_blank"&gt;2 hours&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-top: 12px;"&gt;&lt;A style="display: inline-block; background-color: #ff3621; color: #ffffff; font-size: 13px; font-weight: 800; text-decoration: none; padding: 9px 18px; border-radius: 8px;" href="https://www.databricks.com/training/catalog/building-reliable-conversational-agents-with-genie-5222" target="_blank"&gt;Start free →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="background-color: #0b2026; border-radius: 12px; padding: 18px 20px; margin-bottom: 12px;"&gt;
&lt;DIV style="font-size: 16px; font-weight: 800; color: #ffffff;"&gt;Self-paced + Lab · Associate&lt;/DIV&gt;
&lt;DIV style="margin-top: 8px;"&gt;&lt;A style="display: inline-block; background-color: #fcba33; color: #0b2026; font-size: 12px; font-weight: 800; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 0 0;" target="_blank"&gt;PAID / SUBSCRIPTION&lt;/A&gt; &lt;A style="display: inline-block; background-color: #1b333a; color: #d1d9db; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none;" target="_blank"&gt;3 hours&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-top: 12px;"&gt;&lt;A style="display: inline-block; background-color: #ff3621; color: #ffffff; font-size: 13px; font-weight: 800; text-decoration: none; padding: 9px 18px; border-radius: 8px;" href="https://www.databricks.com/training/catalog/building-reliable-conversational-agents-with-genie-5220" target="_blank"&gt;View course →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="background-color: #0b2026; border-radius: 12px; padding: 18px 20px; margin-bottom: 6px;"&gt;
&lt;DIV style="font-size: 16px; font-weight: 800; color: #ffffff;"&gt;Instructor-led + Lab · Associate&lt;/DIV&gt;
&lt;DIV style="margin-top: 8px;"&gt;&lt;A style="display: inline-block; background-color: #fcba33; color: #0b2026; font-size: 12px; font-weight: 800; padding: 4px 12px; border-radius: 20px; text-decoration: none; margin: 0 4px 0 0;" target="_blank"&gt;PAID&lt;/A&gt; &lt;A style="display: inline-block; background-color: #1b333a; color: #d1d9db; font-size: 12px; font-weight: bold; padding: 4px 12px; border-radius: 20px; text-decoration: none;" target="_blank"&gt;4 hours&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="margin-top: 12px;"&gt;&lt;A style="display: inline-block; background-color: #ff3621; color: #ffffff; font-size: 13px; font-weight: 800; text-decoration: none; padding: 9px 18px; border-radius: 8px;" href="https://www.databricks.com/training/catalog/building-reliable-conversational-agents-with-genie-5217" target="_blank"&gt;View course →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="text-align: center; margin-top: 22px;"&gt;&lt;A style="display: inline-block; background-color: #0b2026; color: #ffffff; font-size: 15px; font-weight: 800; text-decoration: none; padding: 14px 30px; border-radius: 8px;" href="https://www.databricks.com/training/catalog?search=genie" target="_blank"&gt;Browse all Genie courses in the catalog →&lt;/A&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV style="background-color: #0b2026; padding: 22px 34px; border-radius: 0 0 14px 14px; text-align: center;"&gt;
&lt;DIV style="color: #d1d9db; font-size: 13px; line-height: 1.6;"&gt;Governed. Secure. Conversational. Learn Genie the right way with official Databricks training.&lt;/DIV&gt;
&lt;DIV style="color: #fcba33; font-size: 13px; font-weight: bold; margin-top: 6px;"&gt;#Databricks #Genie #AIBI&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Wed, 12 Aug 2026 17:33:56 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/learn-databricks-genie-5-courses-to-go-from-curious-to-certified/m-p/165537#M26</guid>
      <dc:creator>Tushar_Parekar</dc:creator>
      <dc:date>2026-08-12T17:33:56Z</dc:date>
    </item>
    <item>
      <title>Integrate genie workspaces automatically based on connection.</title>
      <link>https://community.databricks.com/t5/genie-hub/integrate-genie-workspaces-automatically-based-on-connection/m-p/165499#M25</link>
      <description>&lt;P&gt;Hi Genie Hub team,&lt;/P&gt;&lt;P&gt;I’ve been building an enterprise application around Genie and ran into an interesting integration problem that I’d love to get the community’s perspective on.&lt;/P&gt;&lt;P&gt;In our setup, the application can connect to different Databricks environments, but integrating Genie currently means explicitly managing the Genie Space/workspace configuration for each environment, while also dealing with Unity Catalog permissions, access control and governance.&lt;/P&gt;&lt;P&gt;That becomes increasingly difficult when the same application needs to support multiple customers or multiple Databricks workspaces.&lt;/P&gt;&lt;P&gt;This led me to a broader idea:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Could Genie integration become connection-driven rather than configuration-driven?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Databricks connection → discover eligible Genie Spaces → validate UC/access requirements → automatically select/register the appropriate Genie Space → enforce the required governance model.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The interesting part for me is that the application shouldn't need to know &lt;EM&gt;“use Genie Space ID X for workspace Y.”&lt;/EM&gt; The Databricks connection itself should be enough to discover and establish the correct Genie integration.&lt;/P&gt;&lt;P&gt;I’m currently experimenting with this architecture and would particularly like to hear from people working on Genie at scale:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;How are you handling Genie Space discovery across multiple workspaces?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;How are you managing UC permissions and governance for application-driven Genie access?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is there a recommended Databricks-native pattern for making this connection/configuration dynamic?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Would an automated connection → Genie integration layer be useful for enterprise deployments?&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I’d be very interested in connecting with anyone from the Genie/AI-BI or Databricks partner ecosystem who is working on this problem. I’d also be happy to share what we’ve built and the problems we encountered in a real implementation.&lt;/P&gt;</description>
      <pubDate>Wed, 12 Aug 2026 13:48:12 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/integrate-genie-workspaces-automatically-based-on-connection/m-p/165499#M25</guid>
      <dc:creator>Aadarsh_K</dc:creator>
      <dc:date>2026-08-12T13:48:12Z</dc:date>
    </item>
    <item>
      <title>Copilot for Data Platform Operations -  Genie ZeroOps (24 * 7)</title>
      <link>https://community.databricks.com/t5/genie-hub/copilot-for-data-platform-operations-genie-zeroops-24-7/m-p/164735#M23</link>
      <description>&lt;DIV&gt;&lt;STRONG&gt;Databricks Genie ZeroOps&lt;/STRONG&gt; is one of the most interesting announcements from &lt;STRONG&gt;Data + AI Summit 2026&lt;/STRONG&gt;. It is essentially an &lt;STRONG&gt;AI-powered autonomous DataOps agent&lt;/STRONG&gt; built directly into the Databricks platform that continuously monitors your data and AI workloads, diagnoses issues, and proposes fixes automatically.&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;P&gt;Genie ZeroOps is designed to work in the background 24x7, significantly reducing the operational burden on data engineering teams. Rather than simply alerting teams when issues occur, it proactively:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Monitors&lt;/STRONG&gt; data and AI workloads continuously&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Detects&lt;/STRONG&gt; failures and anomalies&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Diagnoses&lt;/STRONG&gt; the root cause using lineage and observability data&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Generates remediation recommendations&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Validates fixes in a secure sandbox environment&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Routes changes for human approval before production deployment&lt;/STRONG&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;High level approach from&amp;nbsp;Reactive Operations to Autonomous Operations.&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Detect&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ↓&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Auto RCA&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ↓&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Auto Fix Generation&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ↓&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Sandbox Testing&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ↓&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Human Approval&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Exciting to get Genie in GA.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Mon, 03 Aug 2026 12:06:17 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/copilot-for-data-platform-operations-genie-zeroops-24-7/m-p/164735#M23</guid>
      <dc:creator>rkhand14_ltm</dc:creator>
      <dc:date>2026-08-03T12:06:17Z</dc:date>
    </item>
    <item>
      <title>Dashboard for Genie Cost and Usage tracking</title>
      <link>https://community.databricks.com/t5/genie-hub/dashboard-for-genie-cost-and-usage-tracking/m-p/164372#M19</link>
      <description>&lt;P&gt;Sharing my new dashboard for tracking Genie usage and costs, suggestions for improvements and features are welcome.&lt;/P&gt;&lt;P&gt;The current version displays and aggregates Genie LLM costs, free &amp;amp; billable DBU consumptions, and code interactions per user on a daily, monthly, and workspace leve. More functionality will be added soon, it can be found at &lt;A href="https://github.com/WowdyCloudy/wowdycloudy/tree/main/dashboards" target="_blank"&gt;https://github.com/WowdyCloudy/wowdycloudy/tree/main/dashboards&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="S.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/29553i8E339263CE2D38EF/image-size/medium?v=v2&amp;amp;px=400" role="button" title="S.png" alt="S.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2026 07:33:41 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/dashboard-for-genie-cost-and-usage-tracking/m-p/164372#M19</guid>
      <dc:creator>DataCloudy</dc:creator>
      <dc:date>2026-07-29T07:33:41Z</dc:date>
    </item>
    <item>
      <title>How to get started with Genie Ontlogy?</title>
      <link>https://community.databricks.com/t5/genie-hub/how-to-get-started-with-genie-ontlogy/m-p/164367#M18</link>
      <description>&lt;P&gt;Hello Databricks Community,&lt;/P&gt;&lt;P&gt;I recently started exploring Genie Ontology and would like to implement it as part of a POC. However, I'm not sure how to get started.&lt;/P&gt;&lt;P&gt;I have a few questions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;What are the prerequisites for using Genie Ontology?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;How do I build and configure an ontology from scratch?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Are there any official guides, best practices, or sample implementations that you would recommend?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Is Genie Ontology currently in Public Preview, Private Preview, or General Availability?&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Where should I be able to access it in the Databricks workspace? I don't see the Genie Ontology option or icon in my workspace, so I'm wondering if there are any workspace requirements, feature flags, or permissions that need to be enabled.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;If anyone has already worked with Genie Ontology, I'd really appreciate any guidance, documentation, or tips on getting started.&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Jul 2026 07:04:40 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/how-to-get-started-with-genie-ontlogy/m-p/164367#M18</guid>
      <dc:creator>Niyojit</dc:creator>
      <dc:date>2026-07-29T07:04:40Z</dc:date>
    </item>
    <item>
      <title>UC Permission Automation Strategy</title>
      <link>https://community.databricks.com/t5/genie-hub/uc-permission-automation-strategy/m-p/163949#M15</link>
      <description>&lt;DIV&gt;&lt;P&gt;Hello Community,&lt;/P&gt;&lt;P&gt;I’m starting this discussion to gather perspectives and best practices for managing &lt;STRONG&gt;Unity Catalog (UC) permissions across all securables&lt;/STRONG&gt;, particularly from a &lt;STRONG&gt;platform governance, automation, and operational scalability&lt;/STRONG&gt; standpoint.&lt;/P&gt;&lt;P&gt;I have encountered differing opinions on the most effective approach for governing UC permissions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Terraform&lt;/STRONG&gt; – Provides infrastructure-as-code consistency, but can introduce significant complexity when managing nested permissions, inheritance models, and isolation boundaries at scale.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;REST APIs with a metadata-driven approach&lt;/STRONG&gt; – Managing permissions through YAML, JSON, or a Lakehouse-backed configuration model, enabling centralized governance and stateful automation.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Manual administration through the UI&lt;/STRONG&gt; – Simpler for smaller environments, but potentially challenging to scale, audit, and maintain consistency across platforms.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I would be interested in learning:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;How is your organization governing Unity Catalog permissions today?&lt;/LI&gt;&lt;LI&gt;What automation patterns have proven successful?&lt;/LI&gt;&lt;LI&gt;How are you balancing governance, operational overhead, and flexibility?&lt;/LI&gt;&lt;LI&gt;What lessons learned or pitfalls would you recommend avoiding?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I appreciate any insights, experiences, or recommendations the community can share.&lt;/P&gt;&lt;P&gt;Thank you for your contributions.&lt;/P&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 24 Jul 2026 00:01:08 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/uc-permission-automation-strategy/m-p/163949#M15</guid>
      <dc:creator>samson01</dc:creator>
      <dc:date>2026-07-24T00:01:08Z</dc:date>
    </item>
    <item>
      <title>Metric Views in AI/BI Dashboards &amp; Genie (Part 2 of 3)</title>
      <link>https://community.databricks.com/t5/genie-hub/metric-views-in-ai-bi-dashboards-amp-genie-part-2-of-3/m-p/158795#M14</link>
      <description>&lt;P class=""&gt;&lt;STRONG&gt;&lt;EM&gt;This is part 2 of 3 in a series where I take you through working with Metric Views.&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Part 1: Introduction to Metric Views&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Part 2: Metric Views in AI/BI Dashboards &amp;amp; Genie&lt;/STRONG&gt;&lt;/LI&gt;&lt;LI&gt;Part 3: Metric Views with Power BI and Tabular Editor&lt;/LI&gt;&lt;/UL&gt;&lt;H3 id="ember654"&gt;Introduction&lt;/H3&gt;&lt;P class=""&gt;In Part 1, we defined what metric views are, how you build and maintain them. Now we shift focus to how these views become &lt;EM&gt;consumable&lt;/EM&gt; by business-users, via dashboards and conversational analytics. To do this, we will start by setting up a simple semantic model based on the TPCH sample data, and then get to work understanding how Metric Views work across the Databricks platform. Specifically we will cover:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Defining a Semantic Model and Metric Views using the new yaml version 1.1, which includes metadata, formatting and lots of other neat new features&lt;/LI&gt;&lt;LI&gt;How metric views can be used AI/BI dashboards&lt;/LI&gt;&lt;LI&gt;How metric views feed into Genie for natural-language analytics&lt;/LI&gt;&lt;LI&gt;Best practices, sharing, and governance aspects&lt;/LI&gt;&lt;/UL&gt;&lt;H3 id="ember657"&gt;Setup&lt;/H3&gt;&lt;P class=""&gt;To make things tangible, I have built a small Star Schema based model in Databricks based on the &lt;STRONG&gt;TPCH sample &lt;/STRONG&gt;dataset. Apart from a bit of renaming, the main thing that has been set up, is definition of business keys, surrogate keys and primary/foreign key relations. The goal is to demonstrate how Metric Views work, and for that we need a model, but nothing too fancy. The model represents a simplified sales domain built around a single Fact table and its related Dimensions.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Fact table:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;fact_lineitem; transactional data including quantity, price, discount, and order references.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;Dimension tables:&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;dim_customer; customer attributes such as name, market segment, and nation.&lt;/LI&gt;&lt;LI&gt;dim_orders; order-level attributes including order date, status, and total price.&lt;/LI&gt;&lt;LI&gt;dim_part; product-level attributes (part key, name, type, and brand).&lt;/LI&gt;&lt;LI&gt;dim_supplier; supplier-level attributes (supplier key, name, nation).&lt;/LI&gt;&lt;LI&gt;dim_date; calendar table that is used as a role-playing dimension across 3 different dates on the fact.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;Metric View&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;The metric view is designed using the new yaml version 1.1. This opens up a lot of new opportunities for metadata including comments, synonyms and data type configurations, which are useful not only for your Business Users, for context and documentation, but also for Genie which relies on metadata to better understand your logic. For more context around the semantic metadata the full &lt;A href="https://docs.databricks.com/aws/en/business-semantics/agent-metadata" target="_self"&gt;documentation&lt;/A&gt; is available at Databricks&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Source Code&lt;/STRONG&gt;&lt;/P&gt;&lt;P class=""&gt;The solution is created using a notebook, and a sql script, which allows you to set up the solution in your own workspace and follow along. The code is shared here on &lt;A href="https://github.com/Krijztianj/semantic_model_demo" target="_self"&gt;GitHub&lt;/A&gt;.&lt;/P&gt;&lt;HR /&gt;&lt;H2 id="ember667"&gt;Consuming Metric Views&lt;/H2&gt;&lt;P class=""&gt;Both AI/BI Dashboards and Genie Spaces can be built directly on top of tables across your Unity Catalog. The advantage of Metric Views is, that it allows you to combine Facts and Dimensions, and define measures, relationships and metadata definitions that can be re-used across your entire domain.&lt;/P&gt;&lt;H3 id="ember669"&gt;AI/BI Dashboards&lt;/H3&gt;&lt;P class=""&gt;AI/BI Dashboards is Databricks' product which offers a native end-to-end BI experience. It is built on top of Unity Catalog, supports self-service creation of analytical datasets, visualizations, and integration with conversational analytics. When you have a Metric view defined, the dashboard layer can simply consume this, instead of consuming tables directly.&lt;/P&gt;&lt;P class=""&gt;To create an AI/BI Dashboard on top of a Metric View:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;In Databricks SQL workspace, navigate to Dashboards.&lt;/LI&gt;&lt;LI&gt;Create a new dashboard and go to the Data tab and select Add Data Source and select your Metric View.&lt;/LI&gt;&lt;LI&gt;Now you are ready to start the visualization part of the work; Create graphs, filters, text boxes and enjoy the existing dimensions and measures, or create new dashboard specific measures based on existing logic.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3 id="ember676"&gt;Genie&lt;/H3&gt;&lt;P class=""&gt;Genie is the natural-language interface inside Databricks aimed at business users: you ask “What was our revenue last quarter in EMEA?”. Genie translates your SQL, runs it, returns tabular and/or visual output. Because metric views encapsulate business logic and semantics, Genie can leverage that metadata and mappings to deliver accurate, governed answers.&lt;/P&gt;&lt;P class=""&gt;The initial setup of using a Metric View in Genie is very similar to what we just saw above for AI/BI Dashboards:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;In Databricks SQL workspace, navigate to Genie.&lt;/LI&gt;&lt;LI&gt;Create a new Genie Space and select your Metric View as tour data source&lt;/LI&gt;&lt;LI&gt;Now you are ready to start configuring the Genie. Provide sample questions and/or queries, teach it additional synonyms or instructions or attach additional data for cross-collaborations&lt;/LI&gt;&lt;/OL&gt;&lt;H3 id="ember681"&gt;SQL querying&lt;/H3&gt;&lt;P class=""&gt;I just want to include this here as an honorable mention. While business users may prefer interacting with Genie and Dashboards, business analysts might prefer being able to query data directly themselves, or you might want to use a Metric View to expose data to a subsequent solution outside&lt;/P&gt;&lt;P class=""&gt;Metric Views are queryable directly, allowing re-use of existing Metric View definitions in subsequent data models or even building Metric Views on top of other Metric Views (... that one might get a little messy down the road). To query a metric view, the main distinction from regular SQL is the use of the MEASURE command as shown below:&lt;/P&gt;&lt;PRE&gt;SELECT 
  `Customer Region`,
  `Ship Year`,
  MEASURE(`Total Net Amount`) AS revenue,
  MEASURE(`Total Orders`) AS orders,
  MEASURE(`Average Order Value`) AS aov
FROM main.demo_tpch.order_metrics_mv
WHERE `Ship Year` = 1997
GROUP BY `Customer Region`, `Ship Year`
ORDER BY revenue DESC;&lt;/PRE&gt;&lt;H2 id="ember684"&gt;So for all that work, what do we actually get?&lt;/H2&gt;&lt;P class=""&gt;Building a semantic layer, is all about enabling your business users to get closer to that self-service analytics dream. By keeping the entire solution inside of Databricks, we enable the re-use of all the key governance, lineage and security features that already exist across the Data Platform. Being able to define relations, computing measures and adding additional semantics are options that we do not normally see as part of a Lakehouse. This options extends the reach of the Lakehouse platform all the way to the end-users.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="KrisJohannesen_2-1781178574338.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/27719iDCD9F35B02A21C0C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="KrisJohannesen_2-1781178574338.png" alt="KrisJohannesen_2-1781178574338.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;EM&gt;Genie and Dashboards working side-by-side and in unison. Sorry for the lack of attention to the dashboard. They can actually get really pretty now with themes, colors and text, if you know what you are doing.&lt;/EM&gt;&lt;/DIV&gt;&lt;P class=""&gt;The key benefits of using Metric Views as the source for your solution, can be summarized to;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Consistency&lt;/STRONG&gt;: all visuals and conversational queries rely on the same metric definitions.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Governance&lt;/STRONG&gt;: because the metric view is under Unity Catalog governance, access controls and lineage apply.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Scalability&lt;/STRONG&gt;: business users get self-service via dashboards, Genie and also SQL analytics directly on the Metric view.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Extendibility&lt;/STRONG&gt;: when a new measure or dimension is added in the metric view, dashboards and Genie automatically pick it up (once surfaced in UI) without redefining logic everywhere.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;The ability for end-users to query, talk to and analyze data using consistent definitions and extend these are where we get to the actual value creation of the Data Platform.&lt;/P&gt;&lt;HR /&gt;&lt;H3 id="ember690"&gt;Summary and next steps&lt;/H3&gt;&lt;P class=""&gt;In this article we moved from definition to consumption, using the built-in Databricks tools.&lt;/P&gt;&lt;P class=""&gt;In the next and final part of the series we’ll explore &lt;STRONG&gt;Part 3: Metric Views and Power BI + Tabular Editor&lt;/STRONG&gt;, demonstrating how those same semantic definitions can be surfaced in external BI tools.&lt;/P&gt;</description>
      <pubDate>Thu, 11 Jun 2026 11:50:26 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/metric-views-in-ai-bi-dashboards-amp-genie-part-2-of-3/m-p/158795#M14</guid>
      <dc:creator>KrisJohannesen</dc:creator>
      <dc:date>2026-06-11T11:50:26Z</dc:date>
    </item>
    <item>
      <title>How good is the new /ImportBI Genie Skill?</title>
      <link>https://community.databricks.com/t5/genie-hub/how-good-is-the-new-importbi-genie-skill/m-p/162083#M13</link>
      <description>&lt;P class=""&gt;&lt;EM&gt;After some initial testing on small models which were quite impressive, I decided to put the new Genie skill to the full test with a more advanced model in Power BI. &lt;/EM&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P class=""&gt;&lt;EM&gt;Be aware that the /ImportBI feature is in Beta. This means that there are ongoing changes happening, and that the final product might be different to what you are experiencing today!&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV class=""&gt;&lt;HR /&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Below, you can catch the full 45 minute experience of me playing around with in on YouTube. You get all of my honest takes, my confusions when something does not work out the way I think, as well as a lot of me rambling about on some of the things I find along the way.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FsirFD05U_vo%3Fstart%3D23%26feature%3Doembed%26start%3D23&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DsirFD05U_vo&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FsirFD05U_vo%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Databricks Deep Dive: ImportBI - advanced PowerBI model" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV class=""&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;EM&gt;However, if you want the slightly shorter recap, this article might suit you better!&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;HR /&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Setting up the model&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;First, I created a semantic model and report myself using the &lt;A class="" href="https://www.linkedin.com/article/edit/7475476050072969216/#" target="_blank" rel="noopener noreferrer nofollow"&gt;Tabular Editor&lt;/A&gt; SpaceParts dataset, that you can find on the Databricks Marketplace. Huge shoutout to TE team for putting a real-scale demo dataset out there, that has a great coverage of data, as well as some intentional design "mistakes" that you might find in the real world!&lt;/P&gt;&lt;P class=""&gt;Then, after showing it to my colleague &lt;A class="" href="https://www.linkedin.com/article/edit/7475476050072969216/#" target="_blank" rel="noopener noreferrer nofollow"&gt;David Kofod Hanna&lt;/A&gt;, he was not too impressed with my out-of-data Power BI skills. Lucky for me (and you!) he was kind enough to help me develop a better model and report to run the tests on. Massive shoutout to David for that!&lt;/P&gt;&lt;P class=""&gt;A quick overview of the report pages can be seen in the below animation. The model itself contains &lt;STRONG&gt;4 facts&lt;/STRONG&gt; and &lt;STRONG&gt;11 dimensions&lt;/STRONG&gt;, as well as some more advanced things that are highlighted below. For visualizations we use the following:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;KPI Cards (with categories, and reference values/labels)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Slicers (Regular and Input)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Matrix Table (using Field Parameters - more on those below)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Bar Chart (Clustered)&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Area Chart&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;... and then some buttons/text boxes if you count those as well.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Import BI - Power BI Report Pages.gif" style="width: 426px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/28693i68BDF87AA6502983/image-size/large?v=v2&amp;amp;px=999" role="button" title="Import BI - Power BI Report Pages.gif" alt="Import BI - Power BI Report Pages.gif" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H3&gt;Some advanced areas to test&lt;/H3&gt;&lt;P class=""&gt;So, in order to devise a proper test, the Power BI model contains a couple of elements that are essential to the way we develop and work with Power BI on a larger scale, I would consider them best practices at least in our ways of working at twoday. Some of these are more visual-based, while others are more focused on the model itself. The ones I want to highlight in this test case are:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Calculation Groups;&lt;/STRONG&gt; In this case there are two. One for Time Intelligence, and one for Unit Conversion that are used across different visuals&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Field Parameters&lt;/STRONG&gt;; these are used for running the Pivot Table Analyze page, in which users can switch between measures and dimensions themselves in the Pivot Table&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Model Documentation&lt;/STRONG&gt;; the model has a built-in documentation page using the INFO.VIEW DAX functions. This tells the end-user how things are calculated as a sort of business glossary.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Information measures&lt;/STRONG&gt;; here I am referring to the concept of adding measures to show e.g. Last Refresh, Filters Applied and other nice-to-know information&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;DIV class=""&gt;&lt;HR /&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;Understanding how /ImportBI works&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;The primary use case for ImportBI is teams already running Power BI or Tableau with Databricks as their primary data source. If your M queries simply point to Databricks catalog tables with no transformation logic, you're in the best position to benefit.&lt;/P&gt;&lt;P class=""&gt;ImportBI is triggered via the Skill /importBI inside of Genie Code. It works mostly autonomously and assists in analyzing the model and planning what needs to be done. After approval it then translates measures, and builds dashboards in parallel before presenting you with the final output in both code and a small report.&lt;/P&gt;&lt;P class=""&gt;If you have not seen the long-form video, and want a quicker rundown of how ImportBI works, this &lt;A class="" href="https://www.youtube.com/@5MinuteFeatures" target="_blank" rel="noopener noreferrer"&gt;5 Minute Features&lt;/A&gt; version might be more your style. In the video, I break down what ImportBI does and how, using a very simple Power BI model.&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;div class="video-embed-center video-embed"&gt;&lt;iframe class="embedly-embed" src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FVumtYVQhbIM%3Fstart%3D29%26feature%3Doembed%26start%3D29&amp;amp;display_name=YouTube&amp;amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DVumtYVQhbIM&amp;amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FVumtYVQhbIM%2Fhqdefault.jpg&amp;amp;type=text%2Fhtml&amp;amp;schema=youtube" width="600" height="337" scrolling="no" title="Databricks 5 Minute Features: Genie Skill - ImportBI" frameborder="0" allow="autoplay; fullscreen; encrypted-media; picture-in-picture" allowfullscreen="true"&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;The workloads carried out by ImportBI can be split into 3 phases, as described below:&lt;/P&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Setup &lt;/STRONG&gt;is the first phase, in which we instruct Genie in what type of BI solution we have (PowerBI or Tableau) as well as direct it to a volume where it can find the file. In case of PowerBI it relies on the PBIT format. We also supply a catalog and schema for both the source (where the data lives) and the target (where it will create the Metric Views).&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Analyzing and Planning &lt;/STRONG&gt;is the phase where Genie unpacks and understands the existing model. It breaks down both the model itself, but also the visual side, and writes up a short report breaking down what it plans to do with each part - including anything that it will omit from the migration - either because it is unused, or because it is not directly migratable.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;&lt;STRONG&gt;Metric Views and Dashboards &lt;/STRONG&gt;is the actual migration phase. After approval of the plan in the previous step, Genie gets to work. It starts by developing the Metric Views, and then subsequently it does the Dashboard work.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;&lt;EM&gt;As with any Genie Code session, you can intervene, redirect or change the plan and work carried out along the way. The above is just the general path that the skills takes with no redirection or additional instructions.&lt;/EM&gt;&lt;/P&gt;&lt;DIV class=""&gt;&lt;HR /&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;The results are in&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;So, as you know by now, I have run two different tests. One on a simple model, and one on a complex model. This will mainly discuss the results of the complex one, as that is by far the most interesting.&lt;/P&gt;&lt;P class=""&gt;We will cover the Semantic Layer and the Visual Layer separately, and then sum up, evaluate, and then you can find my final verdict at the bottom.&lt;/P&gt;&lt;H3&gt;Semantic Model to Metric Views&lt;/H3&gt;&lt;P class=""&gt;&lt;STRONG&gt;What works well&lt;/STRONG&gt;, is understand the wiring between Databricks and Unity Catalog and does the basics:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;The M expressions are parsed, and broken down to their correct counterpart catalog.schema.table setup, and added to the Metric Views sources and joins. I am unsure how much of this is derived from Unity Catalog directly, or if e.g. join columns are derived from the model design in PowerBI&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Each Fact Table is created as its own metric view, all the fields are correctly identified&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;All generic/simple measures are created correctly&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;It references cross-measure references, and creates measures using other measures&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Includes the original DAX expression as a comment to the new measures - ensuring traceability&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;The active filters footer and last refresh timestamp measures are not re-created. This might seem like a drawback, but actually both are built into the AIBI Dashboard UI natively which is why they are not there.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;What does not work so well, &lt;/STRONG&gt;it is honestly almost all of the more advanced stuff, as well as a few basics:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;There is no Calculation Group equivalent concept in Databricks Metric Views. The workaround, that I myself prompted Genie to do, is creating static YTD, QTD, and MTD measures per metric. However, this contradicts the dynamic "inject any measure into any time window" flexibility of Calculation Groups.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Field Parameters are completely omitted - there is no style of dynamic parameter-based&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Cross-fact measures e.g. comparing values across fact tables isn't currently possible. Dashboard relationships are in private preview, and might enable this soon though.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;USERPRINCIPALNAME() as a measure is not handled. As far as I know, a workaround for a similar meaure exists in Databricks but the tool doesn't auto-detect it.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Only one of the four created Metric Views was added to the dashboard, the others had to be added manually. I believe this is because it created some of the measures on the wrong facts - therefore not needing the other ones directly.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;Power BI Dashboard to AIBI Dashboard&lt;/H3&gt;&lt;P class=""&gt;&lt;STRONG&gt;What works well&lt;/STRONG&gt;, is understand the visuals chosen and selecting the right fields:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;The classic BI visuals are replaced correctly, choosing card, bar chart and area chart, as well as the slicers. This works for almost all of the visuals, only one is wrong.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;The right measures/dimensions are added to the visuals&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;What does not work so well, &lt;/STRONG&gt;is the actual attention to detail:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;P class=""&gt;The visual placement is all over the place. The filters are below the visuals and the grid-style of AIBI Dashboards limits the flexibility a bit.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Genie added cards that did not exist in the original layout. Not entirely sure why, as there is not indication we would want invoice Cost and Quantity.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;The filters are not all added on both pages. Despite Global filters being a thing, the Genie Code approach was to add them directly on page. Not a problem in itself, but it split them, adding two on each instead of all four filters on both&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;Power BI's ability to split a single card visual by a dimension into multiple cards doesn't exist in AI/BI dashboards. For some reason, it decided to do a Bar-chart instead.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P class=""&gt;The two later pages with Documentation and Pivot Table are not created at all. This is not a visual problem, as they are not created because there is not a direct replacement for them on the semantic model level. &lt;EM&gt;I did however manage to do the Documentation - catch that at the end!&lt;/EM&gt;&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;EM&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="ImportBI AIBI.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/28695i4AFF25D54E9AB87F/image-size/large?v=v2&amp;amp;px=999" role="button" title="ImportBI AIBI.png" alt="ImportBI AIBI.png" /&gt;&lt;/span&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P class="lia-align-center"&gt;&amp;nbsp;The re-created AIBI Dashboard pages. As you can tell, they are not really up to scratch.&lt;/P&gt;&lt;H2&gt;My personal verdict&lt;/H2&gt;&lt;P class=""&gt;For simple models with built directly on Databricks, with no advanced DAX patterns, ImportBI can meaningfully accelerate the transition. However, how many of those type of solutions do you really have in an enterprise context? For anything production-grade using features like time intelligence, field parameters, complex visual layouts, cross-fact calculations, you should expect a significant amount of manual work after the import.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P class=""&gt;&lt;EM&gt;For now, ImportBI is a useful starting point, not a full-scale migration tool&lt;/EM&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P class=""&gt;Remembering that this is still a Beta feature, I know my critique might seem a little harsh. I sincerely hope that some of these kinks get worked out, and honestly, some of them might even already be fixed when you read this.&lt;/P&gt;&lt;P class=""&gt;To me, some of the most jarring things that need to get worked out is actually in the Dashboard part. Filters that are left out on one page but added to another. Visuals that are not placed correctly, or are not the right type is a real issue. The fact that it does not seems to understand when to add what to a page is a real issue when it claims to be able to do something.&lt;/P&gt;&lt;P class=""&gt;On the Metric Views side, there are some obvious shortcomings related to cross-fact measures that needs to be solved elsewhere, but other than that, most of this part seems solid. I would however love to see some sort of a dynamic approach to time intelligence and/or parameter swapping as part of the intersection between the dashboard and metric views experience.&lt;/P&gt;&lt;P class=""&gt;The important part, to me, is that tool is self-aware of its gaps and shortcomings. During the planning phase, it flags what it's skipped and why, and its migration report gives you a clear checklist of what needs your attention. That level of transparency is something I can appreciate - and it also serves as a good guide for what Databricks might choose to work on in the future.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;P class=""&gt;&lt;STRONG&gt;&lt;EM&gt;My overall verdict of this as a migration tool for Power BI workloads is a score of: 4/10&lt;/EM&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;DIV class=""&gt;&lt;HR /&gt;&lt;DIV class=""&gt;&lt;SPAN&gt;... an unexpected bonus: Model Documentation&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;One useful discovery I made, was that we are actually able to do the documentation setup with only a tiny bit of additional work.&lt;/P&gt;&lt;P class=""&gt;This was done in parallel, in another Genie session, but proved to be quite valuable nonetheless. The main point here being that ImportBI had no actual stake in this.&lt;/P&gt;&lt;P class=""&gt;Because Databricks stores Metric View definitions in a queryable format, we are able to easily extract the YAML definition in code. This is done by querying the information_schema tables. From here we can extract each measure's expression, description, comment and window function configuration, directly from the YAML.&lt;/P&gt;&lt;P class=""&gt;Then, by writing this to a Delta table, slapping a Metric View on top, and adding a simple Table Visual in a Dashboard, you can get a dynamic documentation layer, as shown below:&lt;/P&gt;&lt;P class=""&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="Import BI - Documentation.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/28696i63C7FD486F6D3D08/image-size/large?v=v2&amp;amp;px=999" role="button" title="Import BI - Documentation.png" alt="Import BI - Documentation.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;EM&gt;I believe the Documentation topic deserves a bit of additional attention. So expect a full write-up on it later on with all the code included for you to work with it yourself!&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 07 Jul 2026 09:31:30 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/how-good-is-the-new-importbi-genie-skill/m-p/162083#M13</guid>
      <dc:creator>KrisJohannesen</dc:creator>
      <dc:date>2026-07-07T09:31:30Z</dc:date>
    </item>
    <item>
      <title>Building Production-Ready SDP Pipelines with Genie Code: The Complete Guide</title>
      <link>https://community.databricks.com/t5/genie-hub/building-production-ready-sdp-pipelines-with-genie-code-the/m-p/159195#M11</link>
      <description>&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;EM class="nb"&gt;How Databricks’ AI agent transforms data engineering from manual craftsmanship into conversational pipeline development&lt;/EM&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Data engineers have long accepted a painful truth: building production-grade ETL pipelines means wrestling with hundreds of lines of orchestration code, manually encoding execution order, handling incremental processing logic, and then praying nothing breaks at 2 AM. Spark Declarative Pipelines (SDP) already simplified this dramatically by letting you declare&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM class="nb"&gt;what&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;your data should look like rather than&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM class="nb"&gt;how&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to get there. Now, with Genie Code in Agent mode, you don’t even have to write those declarations yourself.&lt;/P&gt;
&lt;FIGURE class="nn no np nq nr ns nk nl paragraph-image"&gt;
&lt;DIV class="nt nu ek nv bd nw" tabindex="0" role="button"&gt;&lt;SPAN class="eo ep eq ai er es et eu ev speechify-ignore"&gt;Press enter or click to view image in full size&lt;/SPAN&gt;
&lt;DIV class="nk nl nm"&gt;&lt;PICTURE&gt;&lt;SOURCE srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/format:webp/1*1VzZtaCw0WyY8glVdfkstA.png 1400w" type="image/webp" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px"&gt;&lt;/SOURCE&gt;&lt;SOURCE srcset="https://miro.medium.com/v2/resize:fit:640/1*1VzZtaCw0WyY8glVdfkstA.png 640w, https://miro.medium.com/v2/resize:fit:720/1*1VzZtaCw0WyY8glVdfkstA.png 720w, https://miro.medium.com/v2/resize:fit:750/1*1VzZtaCw0WyY8glVdfkstA.png 750w, https://miro.medium.com/v2/resize:fit:786/1*1VzZtaCw0WyY8glVdfkstA.png 786w, https://miro.medium.com/v2/resize:fit:828/1*1VzZtaCw0WyY8glVdfkstA.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*1VzZtaCw0WyY8glVdfkstA.png 1100w, https://miro.medium.com/v2/resize:fit:1400/1*1VzZtaCw0WyY8glVdfkstA.png 1400w" sizes="(min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 700px" data-testid="og"&gt;&lt;/SOURCE&gt;&lt;/PICTURE&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="shwetav1407_0-1781633757203.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/27852iC312D69CBA3164EB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="shwetav1407_0-1781633757203.png" alt="shwetav1407_0-1781633757203.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/FIGURE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;In this guide, we’ll walk through building a complete medallion architecture pipeline using Genie Code and SDP — from raw ingestion through business-ready analytics — and explore the patterns that make this approach production-worthy.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="v cf nc nd ne nf" role="separator"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="f094" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;What Is SDP, and Why Should You Care?&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Lakeflow Spark Declarative Pipelines (SDP)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;is Databricks’ framework for building batch and streaming data pipelines in SQL and Python. Unlike traditional Spark jobs where you manually define execution order, manage checkpoints, and handle retries, SDP lets you declare your transformations and handles the orchestration automatically.&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;The key benefits that matter for real-world pipelines:&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="cd24" class="md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Automatic orchestration&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— SDP analyzes dependencies across all your source files, builds a dataflow graph, and determines the optimal execution order with maximum parallelism. It also retries failures at the most granular level possible: first the Spark task, then the flow, then the pipeline.&lt;/LI&gt;
&lt;LI id="808f" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Incremental processing built in&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— Materialized views automatically process only new data and changes. No more writing&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;MERGE&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;statements by hand.&lt;/LI&gt;
&lt;LI id="f435" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Data quality as code&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— Expectations let you define quality constraints inline, right next to your transformations.&lt;/LI&gt;
&lt;LI id="16f3" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Unified batch and streaming&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— Toggle between batch and streaming processing modes with a single keyword change.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Here’s what that looks like compared to traditional approaches:&lt;/P&gt;
&lt;H3 id="ed67" class="po oa gn bb ob pp pq pr of ps pt pu oj mo pv pw px ms py pz qa mw qb qc qd qe bg" data-selectable-paragraph=""&gt;The Old Way (PySpark + Manual Orchestration)&lt;/H3&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;# Hundreds of lines for a simple weekly sales pipeline&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; pyspark.sql &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; SparkSession&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; pyspark.sql.functions &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; col, &lt;SPAN class="hljs-built_in"&gt;sum&lt;/SPAN&gt;, window&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; delta.tables &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; DeltaTable&lt;BR /&gt;&lt;BR /&gt;spark = SparkSession.builder.getOrCreate()&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# Step 1: Read raw data (manually handle incremental)&lt;/SPAN&gt;&lt;BR /&gt;raw_df = spark.read.&lt;SPAN class="hljs-built_in"&gt;format&lt;/SPAN&gt;(&lt;SPAN class="hljs-string"&gt;"delta"&lt;/SPAN&gt;).load(&lt;SPAN class="hljs-string"&gt;"/data/raw_sales"&lt;/SPAN&gt;)&lt;BR /&gt;last_processed = spark.read.&lt;SPAN class="hljs-built_in"&gt;format&lt;/SPAN&gt;(&lt;SPAN class="hljs-string"&gt;"delta"&lt;/SPAN&gt;) \&lt;BR /&gt;    .load(&lt;SPAN class="hljs-string"&gt;"/checkpoints/last_ts"&lt;/SPAN&gt;).collect()[&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;][&lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;]&lt;BR /&gt;new_data = raw_df.&lt;SPAN class="hljs-built_in"&gt;filter&lt;/SPAN&gt;(col(&lt;SPAN class="hljs-string"&gt;"event_time"&lt;/SPAN&gt;) &amp;gt; last_processed)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# Step 2: Clean (manually write quality checks)&lt;/SPAN&gt;&lt;BR /&gt;cleaned = new_data.&lt;SPAN class="hljs-built_in"&gt;filter&lt;/SPAN&gt;(&lt;BR /&gt;    col(&lt;SPAN class="hljs-string"&gt;"amount"&lt;/SPAN&gt;).isNotNull() &amp;amp; &lt;BR /&gt;    (col(&lt;SPAN class="hljs-string"&gt;"amount"&lt;/SPAN&gt;) &amp;gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;)&lt;BR /&gt;)&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# Step 3: Aggregate (manually handle upserts)&lt;/SPAN&gt;&lt;BR /&gt;weekly = cleaned.groupBy(&lt;BR /&gt;    window(&lt;SPAN class="hljs-string"&gt;"event_time"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"1 week"&lt;/SPAN&gt;), &lt;SPAN class="hljs-string"&gt;"region"&lt;/SPAN&gt;&lt;BR /&gt;).agg(&lt;SPAN class="hljs-built_in"&gt;sum&lt;/SPAN&gt;(&lt;SPAN class="hljs-string"&gt;"amount"&lt;/SPAN&gt;).alias(&lt;SPAN class="hljs-string"&gt;"total_sales"&lt;/SPAN&gt;))&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# Step 4: Write (manually handle merge)&lt;/SPAN&gt;&lt;BR /&gt;target = DeltaTable.forPath(spark, &lt;SPAN class="hljs-string"&gt;"/data/weekly_sales"&lt;/SPAN&gt;)&lt;BR /&gt;target.alias(&lt;SPAN class="hljs-string"&gt;"t"&lt;/SPAN&gt;).merge(&lt;BR /&gt;    weekly.alias(&lt;SPAN class="hljs-string"&gt;"s"&lt;/SPAN&gt;),&lt;BR /&gt;    &lt;SPAN class="hljs-string"&gt;"t.window = s.window AND t.region = s.region"&lt;/SPAN&gt;&lt;BR /&gt;).whenMatchedUpdateAll().whenNotMatchedInsertAll().execute()&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# Step 5: Update checkpoint (manually track state)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;# ... plus an Airflow DAG for scheduling, retries, alerting&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H3 id="6aef" class="po oa gn bb ob pp pq pr of ps pt pu oj mo pv pw px ms py pz qa mw qb qc qd qe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="ah"&gt;The SDP Way (SQL)&lt;/STRONG&gt;&lt;/H3&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- The entire pipeline in a few declarations&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;-- Bronze: raw ingestion with Auto Loader&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; bronze_sales&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM read_files(&lt;BR /&gt;  &lt;SPAN class="hljs-string"&gt;'/data/landing/sales/'&lt;/SPAN&gt;,&lt;BR /&gt;  format &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'json'&lt;/SPAN&gt;,&lt;BR /&gt;  schema &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'event_time TIMESTAMP, region STRING, &lt;BR /&gt;             product STRING, amount DOUBLE'&lt;/SPAN&gt;&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;-- Silver: cleansed with quality expectations&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; silver_sales (&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_amount EXPECT (amount &lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;,&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; not_null_region EXPECT (region &lt;SPAN class="hljs-keyword"&gt;IS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NOT&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NULL&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;&lt;BR /&gt;)&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  event_time,&lt;BR /&gt;  region,&lt;BR /&gt;  product,&lt;BR /&gt;  amount,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;current_timestamp&lt;/SPAN&gt;() &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; processed_at&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM(bronze_sales);&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;-- Gold: business-ready weekly aggregation&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH MATERIALIZED &lt;SPAN class="hljs-keyword"&gt;VIEW&lt;/SPAN&gt; gold_weekly_sales&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  date_trunc(&lt;SPAN class="hljs-string"&gt;'week'&lt;/SPAN&gt;, event_time) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; week_start,&lt;BR /&gt;  region,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;COUNT&lt;/SPAN&gt;(&lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; transaction_count,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;SUM&lt;/SPAN&gt;(amount) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_sales,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;AVG&lt;/SPAN&gt;(amount) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; avg_transaction&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; silver_sales&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;GROUP&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;BY&lt;/SPAN&gt; date_trunc(&lt;SPAN class="hljs-string"&gt;'week'&lt;/SPAN&gt;, event_time), region;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;That’s it. SDP handles incremental processing, execution order, retries, and checkpoint management. The bronze and silver tables use streaming semantics (the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;STREAM&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;keyword), while the gold materialized view uses batch semantics but still only reprocesses changed data.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="v cf nc nd ne nf" role="separator"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="1ce0" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Enter Genie Code: Your AI Data Engineering Partner&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Now here’s where it gets interesting. Genie Code in Agent mode — available inside the Lakeflow Pipelines Editor — doesn’t just help you&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM class="nb"&gt;write&lt;/EM&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;SDP code. It can autonomously&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="mf go"&gt;plan, generate, run, validate, and fix&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;entire pipelines from a single natural language prompt.&lt;/P&gt;
&lt;H2 id="6ebd" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;How Genie Code Agent Mode Works&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;When you enable Agent mode in the Genie Code panel within the Lakeflow Pipelines Editor, the agent adapts its capabilities specifically for data engineering tasks. Unlike chat mode, Agent mode can:&lt;/P&gt;
&lt;OL class=""&gt;
&lt;LI id="809b" class="md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Plan a multi-step solution&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and present it for your review&lt;/LI&gt;
&lt;LI id="1e1e" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Search your Unity Catalog&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for relevant tables, schemas, and lineage&lt;/LI&gt;
&lt;LI id="a111" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Generate SQL or Python SDP source files&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the pipeline editor&lt;/LI&gt;
&lt;LI id="28b7" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Run pipeline updates&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and read the output datasets&lt;/LI&gt;
&lt;LI id="c7a6" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Diagnose and fix errors&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;automatically, iterating until the pipeline succeeds&lt;/LI&gt;
&lt;LI id="fb45" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Respect your Unity Catalog permissions&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— it can only access data you can access&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;The key design principle is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM class="nb"&gt;human-in-the-loop&lt;/EM&gt;: Genie Code proposes plans and asks for approval before executing. You can Allow, Decline, or ask it to try a different approach.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="v cf nc nd ne nf" role="separator"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="5d29" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Tutorial: Building a Medallion Pipeline with Genie Code&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Let’s walk through building a real pipeline — an e-commerce analytics pipeline that ingests order data, cleans and enriches it, and produces dashboards-ready metrics.&lt;/P&gt;
&lt;H2 id="61c2" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;Prerequisites&lt;/H2&gt;
&lt;UL class=""&gt;
&lt;LI id="8c94" class="md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na pc pd pe bg" data-selectable-paragraph=""&gt;A Databricks workspace with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="mf go"&gt;Partner-powered AI features&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;enabled&lt;/LI&gt;
&lt;LI id="cf6c" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;Access to the Lakeflow Pipelines Editor&lt;/LI&gt;
&lt;LI id="ff20" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;Unity Catalog configured with a target catalog and schema&lt;/LI&gt;
&lt;/UL&gt;
&lt;H2 id="03a6" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;Step 1: Create Your Pipeline and Open Genie Code&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Navigate to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="mf go"&gt;Pipelines&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the sidebar and create a new pipeline. Give it a name like&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;ecommerce_analytics&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and set your target catalog and schema (e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;analytics.ecommerce&lt;/CODE&gt;).&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Once in the Lakeflow Pipelines Editor, open the Genie Code panel and switch to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="mf go"&gt;Agent mode&lt;/STRONG&gt;.&lt;/P&gt;
&lt;H2 id="92ca" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;Step 2: Prompt Genie Code to Build the Pipeline&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Start with a descriptive prompt that tells Genie Code what you want:&lt;/P&gt;
&lt;BLOCKQUOTE class="qt qu qv"&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;&lt;EM class="gn"&gt;Your prompt:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM class="gn"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;“Build a medallion architecture pipeline for e-commerce analytics. I have raw order data landing as JSON files in /Volumes/raw_data/orders/ with fields: order_id, customer_id, product_id, quantity, unit_price, order_timestamp, and shipping_region. Create bronze ingestion with Auto Loader, silver cleansing with quality expectations, and gold aggregations for daily revenue by region and top products.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code will create a step-by-step plan that looks something like:&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;Plan:&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;1.&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;Search&lt;/SPAN&gt; Unity Catalog &lt;SPAN class="hljs-keyword"&gt;for&lt;/SPAN&gt; existing related tables&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;2.&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;Create&lt;/SPAN&gt; bronze_orders.sql — streaming &lt;SPAN class="hljs-keyword"&gt;table&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;with&lt;/SPAN&gt; Auto Loader&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;3.&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;Create&lt;/SPAN&gt; silver_orders.sql — cleaned data &lt;SPAN class="hljs-keyword"&gt;with&lt;/SPAN&gt; expectations&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;4.&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;Create&lt;/SPAN&gt; gold_daily_revenue.sql — daily revenue &lt;SPAN class="hljs-keyword"&gt;by&lt;/SPAN&gt; region&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;5.&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;Create&lt;/SPAN&gt; gold_top_products.sql — top products materialized &lt;SPAN class="hljs-keyword"&gt;view&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-number"&gt;6.&lt;/SPAN&gt; Run the pipeline &lt;SPAN class="hljs-keyword"&gt;and&lt;/SPAN&gt; validate outputs&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Review the plan, ask clarifying questions if needed, then select&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG class="mf go"&gt;Allow&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to let Genie Code proceed.&lt;/P&gt;
&lt;H2 id="214e" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;Step 3: Watch Genie Code Generate Your Pipeline&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code creates each source file in your pipeline. Here’s what the generated code typically looks like:&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;File:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;bronze_orders.sql&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- Bronze layer: raw ingestion from JSON landing zone&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; bronze_orders&lt;BR /&gt;COMMENT &lt;SPAN class="hljs-string"&gt;'Raw e-commerce orders ingested via Auto Loader'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt;,&lt;BR /&gt;  _metadata.file_name &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; source_file,&lt;BR /&gt;  _metadata.file_modification_time &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; file_mod_time,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;current_timestamp&lt;/SPAN&gt;() &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; ingestion_timestamp&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM read_files(&lt;BR /&gt;  &lt;SPAN class="hljs-string"&gt;'/Volumes/raw_data/orders/'&lt;/SPAN&gt;,&lt;BR /&gt;  format &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'json'&lt;/SPAN&gt;,&lt;BR /&gt;  inferColumnTypes &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'true'&lt;/SPAN&gt;&lt;BR /&gt;);&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;File:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;silver_orders.sql&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- Silver layer: cleansed and validated orders&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; silver_orders (&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_order_id &lt;BR /&gt;    EXPECT (order_id &lt;SPAN class="hljs-keyword"&gt;IS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NOT&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NULL&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;,&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_quantity &lt;BR /&gt;    EXPECT (quantity &lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;AND&lt;/SPAN&gt; quantity &lt;SPAN class="hljs-operator"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;10000&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;,&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_price &lt;BR /&gt;    EXPECT (unit_price &lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;,&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_timestamp &lt;BR /&gt;    EXPECT (order_timestamp &lt;SPAN class="hljs-keyword"&gt;IS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NOT&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NULL&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;,&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_region &lt;BR /&gt;    EXPECT (shipping_region &lt;SPAN class="hljs-keyword"&gt;IS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NOT&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NULL&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION FAIL &lt;SPAN class="hljs-keyword"&gt;UPDATE&lt;/SPAN&gt;&lt;BR /&gt;)&lt;BR /&gt;COMMENT &lt;SPAN class="hljs-string"&gt;'Cleansed orders with quality expectations enforced'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  order_id,&lt;BR /&gt;  customer_id,&lt;BR /&gt;  product_id,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;CAST&lt;/SPAN&gt;(quantity &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;INT&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; quantity,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;CAST&lt;/SPAN&gt;(unit_price &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;DOUBLE&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; unit_price,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;CAST&lt;/SPAN&gt;(quantity &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;INT&lt;/SPAN&gt;) &lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="hljs-built_in"&gt;CAST&lt;/SPAN&gt;(unit_price &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;DOUBLE&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; line_total,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;CAST&lt;/SPAN&gt;(order_timestamp &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;TIMESTAMP&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; order_timestamp,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;UPPER&lt;/SPAN&gt;(&lt;SPAN class="hljs-built_in"&gt;TRIM&lt;/SPAN&gt;(shipping_region)) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; shipping_region,&lt;BR /&gt;  ingestion_timestamp&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM(bronze_orders);&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;File:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;gold_daily_revenue.sql&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- Gold layer: daily revenue metrics by region&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH MATERIALIZED &lt;SPAN class="hljs-keyword"&gt;VIEW&lt;/SPAN&gt; gold_daily_revenue&lt;BR /&gt;COMMENT &lt;SPAN class="hljs-string"&gt;'Daily revenue aggregation by shipping region'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-type"&gt;DATE&lt;/SPAN&gt;(order_timestamp) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; order_date,&lt;BR /&gt;  shipping_region,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;COUNT&lt;/SPAN&gt;(&lt;SPAN class="hljs-keyword"&gt;DISTINCT&lt;/SPAN&gt; order_id) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_orders,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;COUNT&lt;/SPAN&gt;(&lt;SPAN class="hljs-keyword"&gt;DISTINCT&lt;/SPAN&gt; customer_id) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; unique_customers,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;SUM&lt;/SPAN&gt;(line_total) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_revenue,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;AVG&lt;/SPAN&gt;(line_total) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; avg_order_value,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;SUM&lt;/SPAN&gt;(quantity) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_units_sold&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; silver_orders&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;GROUP&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;BY&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;DATE&lt;/SPAN&gt;(order_timestamp), shipping_region;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;File:&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;CODE class="db pk pl pm pn b"&gt;gold_top_products.sql&lt;/CODE&gt;&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- Gold layer: top products by revenue&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH MATERIALIZED &lt;SPAN class="hljs-keyword"&gt;VIEW&lt;/SPAN&gt; gold_top_products&lt;BR /&gt;COMMENT &lt;SPAN class="hljs-string"&gt;'Product performance ranked by total revenue'&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  product_id,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;COUNT&lt;/SPAN&gt;(&lt;SPAN class="hljs-keyword"&gt;DISTINCT&lt;/SPAN&gt; order_id) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; times_ordered,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;SUM&lt;/SPAN&gt;(quantity) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_units,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;SUM&lt;/SPAN&gt;(line_total) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; total_revenue,&lt;BR /&gt;  &lt;SPAN class="hljs-built_in"&gt;AVG&lt;/SPAN&gt;(unit_price) &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; avg_price&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; silver_orders&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;GROUP&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;BY&lt;/SPAN&gt; product_id;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H2 id="26fd" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;Step 4: Genie Code Runs and Validates&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;After generating the files, Genie Code asks for permission to run the pipeline. Once you approve it:&lt;/P&gt;
&lt;OL class=""&gt;
&lt;LI id="79c5" class="md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na qs pd pe bg" data-selectable-paragraph=""&gt;Triggers a pipeline update&lt;/LI&gt;
&lt;LI id="40e7" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;Monitors execution across all flows&lt;/LI&gt;
&lt;LI id="b3f7" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;Reads the output datasets to verify data landed correctly&lt;/LI&gt;
&lt;LI id="ae40" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na qs pd pe bg" data-selectable-paragraph=""&gt;Reports back with row counts, any expectation violations, and the DAG structure&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;If something fails — say a schema mismatch in the JSON files — Genie Code diagnoses the error, proposes a fix (like adjusting the schema inference or adding a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;CAST&lt;/CODE&gt;), and iterates until the pipeline succeeds.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="3e95" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Going Deeper: Python SDP with Genie Code&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;While SQL is the most common approach, SDP also supports Python for more complex transformation logic. The Python API uses decorators from the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;pyspark.pipelines&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;module (imported as&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;dp&lt;/CODE&gt;).&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Here’s what a Python-based silver layer might look like when you need custom transformation logic:&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; pyspark &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; pipelines &lt;SPAN class="hljs-keyword"&gt;as&lt;/SPAN&gt; dp&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;from&lt;/SPAN&gt; pyspark.sql.functions &lt;SPAN class="hljs-keyword"&gt;import&lt;/SPAN&gt; col, upper, trim, when, lit&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-meta"&gt;@dp.table(&lt;SPAN class="hljs-params"&gt;&lt;BR /&gt;    name=&lt;SPAN class="hljs-string"&gt;"silver_orders_enriched"&lt;/SPAN&gt;,&lt;BR /&gt;    comment=&lt;SPAN class="hljs-string"&gt;"Orders enriched with derived customer segments"&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-meta"&gt;@dp.expect(&lt;SPAN class="hljs-params"&gt;&lt;SPAN class="hljs-string"&gt;"valid_order_id"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"order_id IS NOT NULL"&lt;/SPAN&gt;, on_violation=&lt;SPAN class="hljs-string"&gt;"drop"&lt;/SPAN&gt;&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-meta"&gt;@dp.expect(&lt;SPAN class="hljs-params"&gt;&lt;SPAN class="hljs-string"&gt;"valid_amount"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"line_total &amp;gt; 0"&lt;/SPAN&gt;, on_violation=&lt;SPAN class="hljs-string"&gt;"drop"&lt;/SPAN&gt;&lt;/SPAN&gt;)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;def&lt;/SPAN&gt; &lt;SPAN class="hljs-title.function"&gt;silver_orders_enriched&lt;/SPAN&gt;():&lt;BR /&gt;    &lt;SPAN class="hljs-keyword"&gt;return&lt;/SPAN&gt; (&lt;BR /&gt;        spark.readStream.table(&lt;SPAN class="hljs-string"&gt;"bronze_orders"&lt;/SPAN&gt;)&lt;BR /&gt;        .withColumn(&lt;SPAN class="hljs-string"&gt;"line_total"&lt;/SPAN&gt;, col(&lt;SPAN class="hljs-string"&gt;"quantity"&lt;/SPAN&gt;) * col(&lt;SPAN class="hljs-string"&gt;"unit_price"&lt;/SPAN&gt;))&lt;BR /&gt;        .withColumn(&lt;SPAN class="hljs-string"&gt;"shipping_region"&lt;/SPAN&gt;, upper(trim(col(&lt;SPAN class="hljs-string"&gt;"shipping_region"&lt;/SPAN&gt;))))&lt;BR /&gt;        .withColumn(&lt;BR /&gt;            &lt;SPAN class="hljs-string"&gt;"customer_segment"&lt;/SPAN&gt;,&lt;BR /&gt;            when(col(&lt;SPAN class="hljs-string"&gt;"line_total"&lt;/SPAN&gt;) &amp;gt;= &lt;SPAN class="hljs-number"&gt;500&lt;/SPAN&gt;, lit(&lt;SPAN class="hljs-string"&gt;"premium"&lt;/SPAN&gt;))&lt;BR /&gt;            .when(col(&lt;SPAN class="hljs-string"&gt;"line_total"&lt;/SPAN&gt;) &amp;gt;= &lt;SPAN class="hljs-number"&gt;100&lt;/SPAN&gt;, lit(&lt;SPAN class="hljs-string"&gt;"standard"&lt;/SPAN&gt;))&lt;BR /&gt;            .otherwise(lit(&lt;SPAN class="hljs-string"&gt;"basic"&lt;/SPAN&gt;))&lt;BR /&gt;        )&lt;BR /&gt;        .withColumn(&lt;SPAN class="hljs-string"&gt;"order_date"&lt;/SPAN&gt;, col(&lt;SPAN class="hljs-string"&gt;"order_timestamp"&lt;/SPAN&gt;).cast(&lt;SPAN class="hljs-string"&gt;"date"&lt;/SPAN&gt;))&lt;BR /&gt;    )&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;You can ask Genie Code specifically for Python implementations:&lt;/P&gt;
&lt;BLOCKQUOTE class="qt qu qv"&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;&lt;EM class="gn"&gt;Your prompt:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM class="gn"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;“Add a Python-based silver transformation that enriches orders with a customer loyalty tier based on historical order count from the customers table in analytics.core.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code will search your Unity Catalog for the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;customers&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;table, understand its schema, and generate a Python file that joins and enriches appropriately.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="v cf nc nd ne nf" role="separator"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="97be" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Handling Change Data Capture (CDC)&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;One of SDP’s most powerful features is&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;AUTO CDC&lt;/CODE&gt;, which handles change data capture with full support for out-of-order events. This is where things get genuinely hard in traditional pipelines — and trivial in SDP.&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;SQL example for CDC with SCD Type 2:&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;-- Streaming table to capture raw CDC events&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; customers_cdc_raw&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM read_files(&lt;BR /&gt;  &lt;SPAN class="hljs-string"&gt;'/Volumes/raw_data/customers_cdc/'&lt;/SPAN&gt;,&lt;BR /&gt;  format &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'json'&lt;/SPAN&gt;&lt;BR /&gt;);&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;-- Cleansed CDC with expectations&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; customers_cdc_clean (&lt;BR /&gt;  &lt;SPAN class="hljs-keyword"&gt;CONSTRAINT&lt;/SPAN&gt; valid_id EXPECT (customer_id &lt;SPAN class="hljs-keyword"&gt;IS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NOT&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;NULL&lt;/SPAN&gt;) &lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt;&lt;BR /&gt;)&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt;&lt;BR /&gt;  customer_id,&lt;BR /&gt;  name,&lt;BR /&gt;  email,&lt;BR /&gt;  address,&lt;BR /&gt;  operation,&lt;BR /&gt;  operation_timestamp&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM(customers_cdc_raw);&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-comment"&gt;-- Apply CDC changes with SCD Type 2 history tracking&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; customers;&lt;BR /&gt;&lt;BR /&gt;AUTO CDC &lt;SPAN class="hljs-keyword"&gt;INTO&lt;/SPAN&gt; customers&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM(customers_cdc_clean)&lt;BR /&gt;KEYS (customer_id)&lt;BR /&gt;SEQUENCE &lt;SPAN class="hljs-keyword"&gt;BY&lt;/SPAN&gt; operation_timestamp&lt;BR /&gt;STORED &lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; SCD TYPE &lt;SPAN class="hljs-number"&gt;2&lt;/SPAN&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;You can prompt Genie Code with something like:&lt;/P&gt;
&lt;BLOCKQUOTE class="qt qu qv"&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;&lt;EM class="gn"&gt;Your prompt:&lt;/EM&gt;&lt;/STRONG&gt;&lt;EM class="gn"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;“Add change data capture for customer updates from Debezium CDC events. I need SCD Type 2 to track historical changes to customer addresses.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code understands the CDC patterns and generates the appropriate&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;AUTO CDC&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;declarations.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="v cf nc nd ne nf" role="separator"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="8cfb" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Data Quality Expectations: Your Safety Net&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Expectations are SDP’s built-in data quality framework. There are three violation behaviors:&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;BR /&gt;Behavior What Happens Use &lt;SPAN class="hljs-keyword"&gt;When&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION &lt;SPAN class="hljs-keyword"&gt;DROP&lt;/SPAN&gt; &lt;SPAN class="hljs-type"&gt;ROW&lt;/SPAN&gt; Invalid &lt;SPAN class="hljs-keyword"&gt;rows&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;are&lt;/SPAN&gt; silently dropped Tolerating messy source data&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;ON&lt;/SPAN&gt; VIOLATION FAIL &lt;SPAN class="hljs-keyword"&gt;UPDATE&lt;/SPAN&gt; Entire pipeline &lt;SPAN class="hljs-keyword"&gt;update&lt;/SPAN&gt; fails Critical fields that must exist&lt;BR /&gt;(&lt;SPAN class="hljs-keyword"&gt;no&lt;/SPAN&gt; action specified) Invalid &lt;SPAN class="hljs-keyword"&gt;rows&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;are&lt;/SPAN&gt; logged but kept Monitoring &lt;SPAN class="hljs-keyword"&gt;without&lt;/SPAN&gt; blocking&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;FIGURE class="nn no np nq nr ns nk nl paragraph-image"&gt;
&lt;DIV class="nk nl qx"&gt;&lt;PICTURE&gt;&lt;SOURCE srcset="https://miro.medium.com/v2/resize:fit:640/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 640w, https://miro.medium.com/v2/resize:fit:720/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 720w, https://miro.medium.com/v2/resize:fit:750/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 750w, https://miro.medium.com/v2/resize:fit:786/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 786w, https://miro.medium.com/v2/resize:fit:828/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 828w, https://miro.medium.com/v2/resize:fit:1100/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 1100w, https://miro.medium.com/v2/resize:fit:1162/format:webp/1*JdnpPtnz_EA8b0i-NeY-4Q.png 1162w" type="image/webp" sizes="auto, (min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 581px"&gt;&lt;/SOURCE&gt;&lt;SOURCE srcset="https://miro.medium.com/v2/resize:fit:640/1*JdnpPtnz_EA8b0i-NeY-4Q.png 640w, https://miro.medium.com/v2/resize:fit:720/1*JdnpPtnz_EA8b0i-NeY-4Q.png 720w, https://miro.medium.com/v2/resize:fit:750/1*JdnpPtnz_EA8b0i-NeY-4Q.png 750w, https://miro.medium.com/v2/resize:fit:786/1*JdnpPtnz_EA8b0i-NeY-4Q.png 786w, https://miro.medium.com/v2/resize:fit:828/1*JdnpPtnz_EA8b0i-NeY-4Q.png 828w, https://miro.medium.com/v2/resize:fit:1100/1*JdnpPtnz_EA8b0i-NeY-4Q.png 1100w, https://miro.medium.com/v2/resize:fit:1162/1*JdnpPtnz_EA8b0i-NeY-4Q.png 1162w" sizes="auto, (min-resolution: 4dppx) and (max-width: 700px) 50vw, (-webkit-min-device-pixel-ratio: 4) and (max-width: 700px) 50vw, (min-resolution: 3dppx) and (max-width: 700px) 67vw, (-webkit-min-device-pixel-ratio: 3) and (max-width: 700px) 65vw, (min-resolution: 2.5dppx) and (max-width: 700px) 80vw, (-webkit-min-device-pixel-ratio: 2.5) and (max-width: 700px) 80vw, (min-resolution: 2dppx) and (max-width: 700px) 100vw, (-webkit-min-device-pixel-ratio: 2) and (max-width: 700px) 100vw, 581px" data-testid="og"&gt;&lt;/SOURCE&gt;&lt;/PICTURE&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="shwetav1407_2-1781633756700.png" style="width: 400px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/27851iD9527053953A76C4/image-size/medium?v=v2&amp;amp;px=400" role="button" title="shwetav1407_2-1781633756700.png" alt="shwetav1407_2-1781633756700.png" /&gt;&lt;/span&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/FIGURE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Pro tip:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Use Genie Code to add expectations iteratively. After an initial pipeline run, ask:&lt;/P&gt;
&lt;BLOCKQUOTE class="qt qu qv"&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;EM class="gn"&gt;“Analyze the bronze_orders data and suggest quality expectations for the silver layer based on the actual data distribution.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code can read the output datasets, profile the data, and propose expectations that make sense for your actual data — not just generic null checks.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="c541" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Production Patterns and Best Practices&lt;/H2&gt;
&lt;H3 id="86c7" class="po oa gn bb ob pp pq pr of ps pt pu oj mo pv pw px ms py pz qa mw qb qc qd qe bg" data-selectable-paragraph=""&gt;1. Pipeline Configuration with YAML Spec&lt;/H3&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Your pipeline project uses a YAML spec file for top-level configuration:&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-comment"&gt;# pipeline.yaml&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-attr"&gt;name:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;ecommerce_analytics&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-attr"&gt;target_catalog:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;analytics&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-attr"&gt;target_schema:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;ecommerce&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-attr"&gt;libraries:&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-bullet"&gt;-&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;path:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;./bronze_orders.sql&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-bullet"&gt;-&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;path:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;./silver_orders.sql&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-bullet"&gt;-&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;path:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;./gold_daily_revenue.sql&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-bullet"&gt;-&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;path:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;./gold_top_products.sql&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="hljs-attr"&gt;configuration:&lt;/SPAN&gt;&lt;BR /&gt;  &lt;SPAN class="hljs-attr"&gt;spark.sql.shuffle.partitions:&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;"auto"&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H3 id="0336" class="po oa gn bb ob pp pq pr of ps pt pu oj mo pv pw px ms py pz qa mw qb qc qd qe bg" data-selectable-paragraph=""&gt;2. Parameterize with SET&lt;/H3&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Use&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;CODE class="db pk pl pm pn b"&gt;SET&lt;/CODE&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;to inject environment-specific configurations:&lt;/P&gt;
&lt;PRE class="nn no np nq nr qf pn qg bl qh ax bg"&gt;&lt;SPAN class="qi oa gn pn b bc qj qk e ql qm" data-selectable-paragraph=""&gt;&lt;SPAN class="hljs-keyword"&gt;SET&lt;/SPAN&gt; env &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'production'&lt;/SPAN&gt;;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;SET&lt;/SPAN&gt; raw_path &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'/Volumes/${env}/raw_data/orders/'&lt;/SPAN&gt;;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;CREATE&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;OR&lt;/SPAN&gt; REFRESH STREAMING &lt;SPAN class="hljs-keyword"&gt;TABLE&lt;/SPAN&gt; bronze_orders&lt;BR /&gt;&lt;SPAN class="hljs-keyword"&gt;AS&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="hljs-operator"&gt;*&lt;/SPAN&gt; &lt;SPAN class="hljs-keyword"&gt;FROM&lt;/SPAN&gt; STREAM read_files(&lt;BR /&gt;  &lt;SPAN class="hljs-string"&gt;'${raw_path}'&lt;/SPAN&gt;,&lt;BR /&gt;  format &lt;SPAN class="hljs-operator"&gt;=&lt;/SPAN&gt;&lt;SPAN class="hljs-operator"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN class="hljs-string"&gt;'json'&lt;/SPAN&gt;&lt;BR /&gt;);&lt;/SPAN&gt;&lt;/PRE&gt;
&lt;H2 id="5033" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;3. Mix SQL and Python Files&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;A single pipeline can contain both SQL and Python source files. Use SQL for straightforward transformations and Python when you need UDFs, ML feature engineering, or complex business logic.&lt;/P&gt;
&lt;H2 id="a2f1" class="nz oa gn bb ob oc qn oe of og qo oi oj ok qp om on oo qq oq or os qr ou ov ow bg" data-selectable-paragraph=""&gt;4. Use Genie Code for Ongoing Maintenance&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;Genie Code doesn’t just build pipelines — it monitors them. It can:&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="5269" class="md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Triage failures&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;when a pipeline run breaks&lt;/LI&gt;
&lt;LI id="1554" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Investigate anomalies&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in data quality metrics&lt;/LI&gt;
&lt;LI id="389e" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Handle DBR upgrades&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;by updating deprecated syntax&lt;/LI&gt;
&lt;LI id="648c" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Optimize resource allocation&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;based on observed workload patterns&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;Ask it things like:&lt;/P&gt;
&lt;BLOCKQUOTE class="qt qu qv"&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;EM class="gn"&gt;“The silver_orders pipeline has been failing since yesterday. Diagnose the issue.”&lt;/EM&gt;&lt;/P&gt;
&lt;P class="md me nb mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;EM class="gn"&gt;“Optimize the compute configuration for this pipeline — it’s running slowly on large backfills.”&lt;/EM&gt;&lt;/P&gt;
&lt;/BLOCKQUOTE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;H2 id="9665" class="nz oa gn bb ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow bg" data-selectable-paragraph=""&gt;Wrapping Up&lt;/H2&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg ox mi mj mk oy mm mn mo oz mq mr ms pa mu mv mw pb my mz na gg bg" data-selectable-paragraph=""&gt;The combination of SDP and Genie Code represents a genuine paradigm shift for data engineering on Databricks. SDP eliminates the boilerplate of pipeline orchestration, and Genie Code eliminates the boilerplate of writing SDP. What used to take days of manual pipeline construction can now happen in a single conversation.&lt;/P&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;The key takeaways:&lt;/P&gt;
&lt;UL class=""&gt;
&lt;LI id="bf76" class="md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Start with SDP&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— even without Genie Code, the declarative approach saves enormous amounts of manual orchestration code.&lt;/LI&gt;
&lt;LI id="aacf" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Use Genie Code Agent mode&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;in the Lakeflow Pipelines Editor to plan, generate, and validate entire pipelines from natural language.&lt;/LI&gt;
&lt;LI id="7f69" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Build iteratively&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— start with a basic bronze-silver-gold structure, then ask Genie Code to add CDC handling, expectations, and enrichments.&lt;/LI&gt;
&lt;LI id="d742" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Trust the loop&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— Genie Code’s ability to run the pipeline, read outputs, diagnose errors, and fix them autonomously is the real superpower.&lt;/LI&gt;
&lt;LI id="d545" class="md me gn mf b mg pf mi mj mk pg mm mn mo ph mq mr ms pi mu mv mw pj my mz na pc pd pe bg" data-selectable-paragraph=""&gt;&lt;STRONG class="mf go"&gt;Keep humans in control&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;— every destructive action requires your approval. Genie Code proposes; you decide.&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;SDP and Genie Code are both generally available today at no additional cost for all Databricks customers. Open the Lakeflow Pipelines Editor, flip on Agent mode, and start talking to your data infrastructure.&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="gg gh gi gj gk"&gt;
&lt;DIV class="v cf"&gt;
&lt;DIV class="cm bd fs ft fu fv"&gt;
&lt;P class="pw-post-body-paragraph md me gn mf b mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na gg bg" data-selectable-paragraph=""&gt;&lt;EM class="nb"&gt;Ready to get started? Check out the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;A class="z qy" href="https://docs.databricks.com/aws/en/ldp/" rel="noopener ugc nofollow" target="_blank"&gt;&lt;EM class="nb"&gt;Databricks SDP documentation&lt;/EM&gt;&lt;/A&gt;&lt;EM class="nb"&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/EM&gt;&lt;A class="z qy" href="https://docs.databricks.com/aws/en/ldp/de-agent" rel="noopener ugc nofollow" target="_blank"&gt;&lt;EM class="nb"&gt;Genie Code guide for pipeline development&lt;/EM&gt;&lt;/A&gt;&lt;EM class="nb"&gt;.&lt;/EM&gt;&lt;/P&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;</description>
      <pubDate>Tue, 16 Jun 2026 18:22:36 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/building-production-ready-sdp-pipelines-with-genie-code-the/m-p/159195#M11</guid>
      <dc:creator>shwetav1407</dc:creator>
      <dc:date>2026-06-16T18:22:36Z</dc:date>
    </item>
    <item>
      <title>Databricks now supports importing Tableau and Power BI files into Genie Code to automatically build</title>
      <link>https://community.databricks.com/t5/genie-hub/databricks-now-supports-importing-tableau-and-power-bi-files/m-p/157527#M9</link>
      <description>&lt;P&gt;With&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Genie Code&lt;/STRONG&gt;, you can now add a Tableau or Power BI file and have it build an&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;AI/BI dashboard&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that replicates your existing visualizations - while connecting them to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;metric views&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that mirror the underlying business logic.&lt;/P&gt;&lt;P&gt;&lt;A class="" href="https://learn.microsoft.com/en-us/azure/databricks/dashboards/manage/import-bi#requirements" target="_blank" rel="noopener nofollow ugc"&gt;Import BI files using Genie Code - Azure Databricks | Microsoft Learn&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Many organizations have years of BI logic embedded inside workbooks, reports, templates, and semantic layers. Rebuilding that logic manually in a new platform can be slow, error-prone, and difficult to govern.&lt;/P&gt;&lt;P&gt;This new workflow helps accelerate that migration path:&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;P&gt;Upload a Tableau or Power BI file directly into Genie Code Supported formats include&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;.twb,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;.twbx,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;.tds,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;.tdsx, and&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;.pbit.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Use the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;/importBI&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;command in Agent mode Genie Code imports the BI asset and generates an AI/BI dashboard.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Review the generated dashboard and metric views Measures and dimensions from the original file are transformed into metric views.&lt;/P&gt;&lt;/LI&gt;&lt;LI&gt;&lt;P&gt;Promote metric views to Unity Catalog This makes them reusable across dashboards, Genie Spaces, and notebooks, while adding governance, lineage, access controls, and discoverability.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Currently, there is also a 100 MB limit for direct file uploads. For larger files, the recommended path is to store the file in a Unity Catalog volume and reference it directly, for example:&lt;/P&gt;&lt;P&gt;/importBI @/Volumes/my_catalog/my_schema/my_volume/sales_workbook.twb&lt;/P&gt;</description>
      <pubDate>Sat, 23 May 2026 07:24:40 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/databricks-now-supports-importing-tableau-and-power-bi-files/m-p/157527#M9</guid>
      <dc:creator>szymon_dybczak</dc:creator>
      <dc:date>2026-05-23T07:24:40Z</dc:date>
    </item>
    <item>
      <title>Connecting VS Code and GitHub Copilot to the Databricks Managed MCP Server</title>
      <link>https://community.databricks.com/t5/genie-hub/connecting-vs-code-and-github-copilot-to-the-databricks-managed/m-p/123980#M7</link>
      <description>&lt;P&gt;Recently, Databricks released a preview version of the &lt;A href="https://docs.databricks.com/aws/en/generative-ai/agent-framework/mcp#managed-mcp-servers" target="_blank" rel="noopener"&gt;Managed MCP Server&lt;/A&gt;. Upon seeing this, I immediately wanted to integrate Databricks Genie with VS Code and GitHub Copilot agent mode. Below, I will briefly share the setup process:&lt;/P&gt;&lt;H2&gt;Step 1: Prepare Genie on Databricks.&lt;/H2&gt;&lt;P&gt;In this case, I used the sample table &lt;FONT face="courier new,courier"&gt;samples.nyctaxi.trips&lt;/FONT&gt; to create Genie.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="charlie_wei_0-1751613479319.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/17973iF88679D79FC9D845/image-size/large?v=v2&amp;amp;px=999" role="button" title="charlie_wei_0-1751613479319.png" alt="charlie_wei_0-1751613479319.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;H2&gt;Step 2: Configure VS Code&lt;/H2&gt;&lt;P&gt;Depending on your requirements, edit either &lt;FONT face="courier new,courier"&gt;.vscode/mcp.json&lt;/FONT&gt; or &lt;FONT face="courier new,courier"&gt;.vscode/settings.json&lt;/FONT&gt; in your VS Code workspace. Please refer to the following example for guidance:&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;{
    "chat.mcp.enabled": true,
    "mcp": {
        "inputs": [],
        "servers": {
            "my-genie": {
                "type": "http",
                "url": "https://&amp;lt;your-workspace-hostname&amp;gt;/api/2.0/mcp/genie/{genie_space_id}",
                "headers": {
                    "Authorization": "Bearer &amp;lt;your-personal-access-token&amp;gt;"
                }
            }
        }
    }
}&lt;/LI-CODE&gt;&lt;P&gt;You can obtain a personal access token according to the &lt;A href="https://docs.databricks.com/aws/en/dev-tools/auth/pat#databricks-personal-access-tokens-for-workspace-users" target="_self"&gt;documentation&lt;/A&gt;.&lt;/P&gt;&lt;H2&gt;Step 3: Use Agent Mode&lt;/H2&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="charlie_wei_1-1751615208235.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/17974i157F18EC45FCC11A/image-size/large?v=v2&amp;amp;px=999" role="button" title="charlie_wei_1-1751615208235.png" alt="charlie_wei_1-1751615208235.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Awesome&amp;nbsp;&lt;span class="lia-unicode-emoji" title=":smiling_face_with_sunglasses:"&gt;😎&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 04 Jul 2025 07:52:27 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/connecting-vs-code-and-github-copilot-to-the-databricks-managed/m-p/123980#M7</guid>
      <dc:creator>charlie_wei</dc:creator>
      <dc:date>2025-07-04T07:52:27Z</dc:date>
    </item>
    <item>
      <title>Onboarding your new Databricks AI/BI Genie</title>
      <link>https://community.databricks.com/t5/genie-hub/onboarding-your-new-databricks-ai-bi-genie/m-p/83699#M4</link>
      <description>&lt;P&gt;&lt;SPAN&gt;The integration of AI and BI into the modern data stack has been a game-changer for businesses seeking to leverage data-driven insights. Databricks, a leader in this innovative frontier, has introduced the AI/BI Genie, a tool designed to democratize data analytics by enabling business users to interact with their data through natural language queries.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;The AI/BI Genie is not just a tool; it's akin to adding a new member to your analytics team. This 'Genie' is programmed to understand your business context, learn from interactions, and provide insights without the need for users to know SQL or any other data query language. The onboarding process for the AI/BI Genie involves setting up the basics: defining the scope and domain of questions the Genie can answer, configuring the default warehouse, and specifying the tables it can access for data retrieval.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;What sets the AI/BI Genie apart is its conversational interface, which allows users to ask questions as if they were speaking to a human analyst. This feature is backed by Databricks SQL's performance, ensuring quick and reliable responses. Moreover, the Genie is designed to continuously learn from user interactions, refining its understanding of the business semantics and improving the relevancy of its insights.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;For businesses, the AI/BI Genie represents an opportunity to scale their data analytics capabilities efficiently. It empowers teams to go beyond static dashboards and engage in a dynamic dialogue with their data, leading to deeper insights and more informed decision-making. As AI continues to evolve, tools like the AI/BI Genie are set to become integral components of the enterprise data ecosystem, transforming how organizations interact with and extract value from their data.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://www.databricks.com/blog/onboarding-your-new-aibi-genie" target="_blank" rel="noopener"&gt;&lt;SPAN&gt;Databricks AI/BI Genie&lt;/SPAN&gt;&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 21 Aug 2024 03:30:43 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/onboarding-your-new-databricks-ai-bi-genie/m-p/83699#M4</guid>
      <dc:creator>Ajay-Pandey</dc:creator>
      <dc:date>2024-08-21T03:30:43Z</dc:date>
    </item>
    <item>
      <title>How Databricks Genie Turns Collaboration Tools into AI-Powered Intelligence Platforms</title>
      <link>https://community.databricks.com/t5/genie-hub/how-databricks-genie-turns-collaboration-tools-into-ai-powered/m-p/156429#M2</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Most organizations don’t have a data problem anymore.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;They have a &lt;/SPAN&gt;&lt;I&gt;&lt;SPAN&gt;data access and usability&lt;/SPAN&gt;&lt;/I&gt;&lt;SPAN&gt; problem.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The dashboards exist. The warehouses are modernized. The lakehouse is running. Yet business teams still wait days for answers because analytics remains disconnected from where real work actually happens.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;And that’s the key shift Databricks Genie introduces when integrated into Slack and Microsoft Teams.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This is bigger than “chat with your data.”&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;It’s about turning collaboration platforms into intelligent decision-making environments.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For years, Slack and Teams have been communication hubs:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;project discussions,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;customer escalations,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;sales updates,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;campaign coordination,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;operational reviews,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;executive decision-making.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;But when someone needed data during those conversations, the workflow usually broke:&lt;/SPAN&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;SPAN&gt;Open another BI tool&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Search for a dashboard&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Ask an analyst&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Wait for SQL queries&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;Return to the conversation later&lt;/SPAN&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;&lt;SPAN&gt;That interruption kills momentum.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;With Databricks Genie integrated directly into Slack and Microsoft Teams, the workflow changes completely.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Now a sales manager inside Teams can ask:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;“Why did enterprise conversions decline this month?”&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;A marketing lead in Slack can ask:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;“Which campaigns generated the highest pipeline in Q1?”&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;An operations leader can ask:&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;“Which region has the highest support backlog today?”&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;And receive governed, contextual answers instantly — without leaving the conversation.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;That’s incredibly important because modern enterprises already operate inside Slack and Teams all day long.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The real innovation here is not just AI-powered SQL generation.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;It’s embedding analytics into the natural flow of work.&lt;/SPAN&gt;&lt;/P&gt;&lt;H3&gt;&lt;STRONG&gt;Slack and Teams become intelligent operating systems&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;This is where the feature becomes exciting.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Slack and Teams are evolving from:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;communication platforms,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;into operational intelligence layers.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;Instead of static notifications and fragmented dashboards, organizations can now create environments where:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;data participates in conversations,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;AI assists decision-making,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;and analytics becomes collaborative.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;Imagine:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;revenue discussions with live metrics,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;customer success channels with real-time churn insights,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;sprint planning backed by engineering performance data,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;leadership meetings where questions get answered instantly.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;No dashboard hunting.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;No reporting lag.&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;No dependency bottlenecks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Just conversational access to enterprise intelligence.&lt;/SPAN&gt;&lt;/P&gt;&lt;H3&gt;&lt;STRONG&gt;Why this matters for adoption&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;One of the biggest failures in enterprise BI has always been usability.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Most employees never become power dashboard users.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;But everyone already knows how to use Slack and Teams.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;That changes adoption dynamics completely.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Instead of training business users on complex analytics tools, companies can bring analytics into interfaces employees already understand intuitively.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;That’s how data culture actually scales.&lt;/SPAN&gt;&lt;/P&gt;&lt;H3&gt;&lt;STRONG&gt;Governance is what makes this enterprise-ready&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;The most important part is that this isn’t “open AI search across company data.”&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Because Genie operates on top of Unity Catalog:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;permissions remain enforced,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;governance stays centralized,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;queries are auditable,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;and users only see authorized data.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;The AI assistant effectively inherits enterprise security policies.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;That’s critical for finance, healthcare, SaaS, and regulated industries where uncontrolled AI access is a non-starter.&lt;/SPAN&gt;&lt;/P&gt;&lt;H3&gt;&lt;STRONG&gt;The future is conversational enterprise intelligence&lt;/STRONG&gt;&lt;/H3&gt;&lt;P&gt;&lt;SPAN&gt;We are entering a phase where enterprise collaboration tools become AI orchestration platforms.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Slack and Teams won’t just host conversations anymore.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;They will:&lt;/SPAN&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;surface intelligence,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;trigger workflows,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;retrieve metrics,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;explain anomalies,&lt;/SPAN&gt;&lt;/LI&gt;&lt;LI&gt;&lt;SPAN&gt;and support operational decisions in real time.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;The organizations that move fastest here will dramatically reduce the distance between:&lt;/SPAN&gt;&lt;SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt;Question → Insight → Action.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;And that may become one of the biggest competitive advantages in the AI-native enterprise.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 08 May 2026 06:10:12 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/how-databricks-genie-turns-collaboration-tools-into-ai-powered/m-p/156429#M2</guid>
      <dc:creator>Hammad-Arbisoft</dc:creator>
      <dc:date>2026-05-08T06:10:12Z</dc:date>
    </item>
    <item>
      <title>Databricks AI/BI Genie: The Future of Conversational Analytics</title>
      <link>https://community.databricks.com/t5/genie-hub/databricks-ai-bi-genie-the-future-of-conversational-analytics/m-p/127920#M1</link>
      <description>&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;H1 id="f3c6"&gt;The Rise of AI in Data Analytics&lt;/H1&gt;&lt;P class=""&gt;Over the last decade, organizations have collected massive amounts of data from customer transactions to IoT sensors, web logs, and financial records. But collecting data is just the first step. The real challenge lies in&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;understanding&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that data quickly and effectively so that business decisions can be made at the speed of thought.&lt;/P&gt;&lt;P class=""&gt;Traditionally, exploring data required SQL queries, visualization tools, and expert analysts who could navigate complex datasets. But now, thanks to advances in generative AI, we have a new way forward — a way that’s more natural, intuitive, and accessible to everyone in an organization.&lt;/P&gt;&lt;P class=""&gt;Enter&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Databricks AI/BI Genie&lt;/STRONG&gt;, announced at the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Data + AI Summit 2025&lt;/STRONG&gt;. This is not just another analytics tool — it’s an intelligent conversational agent embedded directly into the Databricks environment.&lt;/P&gt;&lt;H1 id="28cc"&gt;&lt;BR /&gt;What is AI/BI Genie?&lt;/H1&gt;&lt;P class=""&gt;AI/BI Genie is an&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;AI-powered, natural language interface&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that allows you to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ask questions in plain English (or other languages)&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and get instant insights in the form of charts, summaries, or SQL code all generated automatically.&lt;/P&gt;&lt;P class=""&gt;Think of it like having a data analyst who never sleeps, doesn’t get tired, and can respond to any question within seconds. Genie is built directly into&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Databricks SQL&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;and works seamlessly with&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Unity Catalog&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for secure, governed data access.&lt;/P&gt;&lt;P class=""&gt;Example&lt;/P&gt;&lt;P class=""&gt;A user has typed:&lt;/P&gt;&lt;P class=""&gt;“Show me monthly sales trends for the past two years in the APAC region.”&lt;/P&gt;&lt;P class=""&gt;And Genie would respond with&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;A&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;line chart&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;of monthly sales.&lt;/LI&gt;&lt;LI&gt;The&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;SQL query&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;used to generate it.&lt;/LI&gt;&lt;LI&gt;A&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;brief summary&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;of the trend, e.g.,&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;EM&gt;“Sales grew by 18% year-over-year, with the highest spike in November 2024 due to seasonal campaigns.”&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;H1 id="11dd"&gt;&lt;BR /&gt;How Genie Transforms Data Insights&lt;/H1&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;No More Query Writing Barriers&lt;/STRONG&gt;&lt;BR /&gt;Business users no longer need to know SQL or complex BI tools. They just&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;ask questions naturally&lt;/STRONG&gt;.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Governed &amp;amp; Secure&lt;/STRONG&gt;&lt;BR /&gt;Genie respects&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Unity Catalog permissions&lt;/STRONG&gt;, ensuring users only see the data they’re allowed to access.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Instant Visualization&lt;/STRONG&gt;&lt;BR /&gt;Results aren’t just tables — Genie creates&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;interactive dashboards and charts&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;instantly.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Learning Over Time&lt;/STRONG&gt;&lt;BR /&gt;Like any good assistant, Genie gets&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;smarter with use&lt;/STRONG&gt;, learning your organization’s data structures and preferences.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Bridging AI &amp;amp; BI&lt;/STRONG&gt;&lt;BR /&gt;Genie merges the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;exploratory power of AI&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;with the&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;structured insights of BI&lt;/STRONG&gt;, creating a single environment for decision-making.&lt;/LI&gt;&lt;/OL&gt;&lt;H1 id="3224"&gt;&lt;STRONG&gt;&lt;BR /&gt;How AI/BI Genie Works&lt;/STRONG&gt;&lt;/H1&gt;&lt;P class=""&gt;At a high level, Genie works through three main steps&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;1.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Natural Language Understanding (NLU)&lt;/STRONG&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Your text input is analyzed using LLMs (Large Language Models).&lt;/LI&gt;&lt;LI&gt;Genie interprets the intent behind the question.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;2.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Query Generation&lt;/STRONG&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Genie maps your intent to SQL queries based on your organization’s data schema.&lt;/LI&gt;&lt;LI&gt;It uses&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Unity Catalog&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;for metadata and security enforcement.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;&lt;STRONG&gt;3.&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Result Delivery&lt;/STRONG&gt;&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Executes the query in&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Databricks SQL&lt;/STRONG&gt;.&lt;/LI&gt;&lt;LI&gt;Generates visualizations, summaries, and actionable insights.&lt;/LI&gt;&lt;/UL&gt;&lt;H1 id="9b3f"&gt;Benefits Across Teams&lt;/H1&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;Business Executives:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Quick KPI access without analyst dependency.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Data Analysts:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Faster prototyping of queries and dashboards.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Data Engineers:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Less time spent on ad-hoc requests, more on strategic projects.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Product Managers:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;On-demand insights for market analysis and product performance.&lt;/LI&gt;&lt;/UL&gt;&lt;H1 id="4c4e"&gt;&lt;BR /&gt;The Road Ahead&lt;/H1&gt;&lt;P class=""&gt;AI/BI Genie is part of Databricks’ vision to&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;democratize data and AI&lt;/STRONG&gt;. As LLMs improve, Genie will become even more context-aware, able to handle multi-step reasoning, join data across multiple sources, and even trigger downstream workflows — all from a single conversational prompt.&lt;/P&gt;&lt;P class=""&gt;In the future, you might say:&lt;/P&gt;&lt;P class=""&gt;“Compare our Q1 performance with last year, adjust for currency inflation, and suggest three areas to improve customer retention.”&lt;/P&gt;&lt;P class=""&gt;And Genie would not only give the answer but also&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;recommend specific strategies&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;backed by data.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;In short:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;Databricks AI/BI Genie is not just a tool — it’s a&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;data co-pilot&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;that brings analytics to everyone, breaking down the walls between raw data and meaningful action. The future of business intelligence is conversational, and Genie is leading the way.&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sun, 10 Aug 2025 09:31:24 GMT</pubDate>
      <guid>https://community.databricks.com/t5/genie-hub/databricks-ai-bi-genie-the-future-of-conversational-analytics/m-p/127920#M1</guid>
      <dc:creator>RahulGupta</dc:creator>
      <dc:date>2025-08-10T09:31:24Z</dc:date>
    </item>
  </channel>
</rss>

