<?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>New board topics in Databricks Community</title>
    <link>https://community.databricks.com/</link>
    <description>Databricks Community</description>
    <pubDate>Tue, 20 Oct 2026 13:11:23 GMT</pubDate>
    <dc:creator>Community</dc:creator>
    <dc:date>2026-10-20T13:11:23Z</dc:date>
    <item>
      <title>Genie One Guardrails</title>
      <link>https://community.databricks.com/t5/generative-ai/genie-one-guardrails/m-p/174051#M2223</link>
      <description>&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;We are opening up the Genie AI to the business users. The Genie One seems to be a good fit, but the problem I noticed is the Guardrails and influence over the single orchestration. All the questions have been nicely interrupted by Genie one and works with agents, tables from all schemas, notebooks, etc. My issue here is that I want to prioritize the search to go on the agents first, Clarifying questions for underspecified prompts than assuming the metrics, categories and date ranges. I feel like that's possible by creating the persona via the skill under Genie One, and customize with guardrails. Is that a right approach?&lt;/P&gt;</description>
      <pubDate>Tue, 20 Oct 2026 12:15:42 GMT</pubDate>
      <guid>https://community.databricks.com/t5/generative-ai/genie-one-guardrails/m-p/174051#M2223</guid>
      <dc:creator>SenthilKrishna</dc:creator>
      <dc:date>2026-10-20T12:15:42Z</dc:date>
    </item>
    <item>
      <title>Governed Tag Propagation (Beta) in Unity Catalog - How It Works and What to Consider</title>
      <link>https://community.databricks.com/t5/get-started-discussions/governed-tag-propagation-beta-in-unity-catalog-how-it-works-and/m-p/174016#M12471</link>
      <description>&lt;P&gt;Databricks' Governed Tag Propagation (Beta) is an interesting addition to Unity Catalog, helping automatically carry governed tags across downstream tables and views using data lineage.&lt;/P&gt;&lt;P&gt;As data moves across medallion layers, this could significantly reduce the effort of manually maintaining consistent classifications across derived datasets.&lt;/P&gt;&lt;P&gt;The below flow illustrates how governed tags propagate through supported operations and some key lifecycle behaviours.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Governed Tag Propagation Flow Diagram.png" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32380i6A187CE2D1705FAA/image-size/large?v=v2&amp;amp;px=999" role="button" title="Governed Tag Propagation Flow Diagram.png" alt="Governed Tag Propagation Flow Diagram.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What I explored:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Tested the Beta with a few common Databricks operations:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;CTAS, INSERT, MERGE and Views&lt;/STRONG&gt;: Governed tags propagated successfully.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Column transformations:&lt;/STRONG&gt; Tags followed renamed and transformed columns.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Delta CLONE:&lt;/STRONG&gt; Table-level tags propagated, but column-level propagation wasn't supported.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Conflicting tag values&lt;/STRONG&gt;: The configured default propagation value was applied.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Tag removal and reclassification&lt;/STRONG&gt;: Removing an upstream tag didn't automatically remove the existing downstream tag during testing. However, explicit downstream removal worked, and subsequent reclassification triggered re-propagation.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Where could this help?&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;PII and sensitive-data classification:&lt;/STRONG&gt; Maintaining consistent classifications through the lakehouse.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Governance automation&lt;/STRONG&gt;: Reducing manual tagging across derived tables and views.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;ABAC integration:&lt;/STRONG&gt; Supporting tag-driven access policies, subject to propagation timing.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Data discovery and compliance&lt;/STRONG&gt;: Improving visibility into classified downstream assets.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;A few interesting questions remain:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;While the initial results are promising, some areas would benefit from further exploration:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Tag removal:&lt;/STRONG&gt; Should removing a source classification automatically revoke its downstream propagated tags, or is retaining them the safer behaviour?&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Propagation latency:&lt;/STRONG&gt; Since propagation is asynchronous, how should organisations handle the period before tag-dependent ABAC policies become effective?&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Governance at scale&lt;/STRONG&gt;: How should teams manage conflicting classifications, downstream overrides, and periodic tag reconciliation?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Overall, this looks like a useful step towards lineage-driven, automated data governance in Databricks. However, understanding the complete tag lifecycle is just as important as ensuring tags propagate successfully.&lt;/P&gt;&lt;P&gt;Would be interested to hear how others are approaching these scenarios or whether you've observed similar behaviour during the Beta.&lt;/P&gt;&lt;P&gt;Reference:&amp;nbsp;&lt;A href="https://docs.databricks.com/aws/en/admin/governed-tags/tag-propagation" target="_self"&gt;https://docs.databricks.com/aws/en/admin/governed-tags/tag-propagation&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 20 Oct 2026 07:38:43 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/governed-tag-propagation-beta-in-unity-catalog-how-it-works-and/m-p/174016#M12471</guid>
      <dc:creator>data_pulse</dc:creator>
      <dc:date>2026-10-20T07:38:43Z</dc:date>
    </item>
    <item>
      <title>Kinessana Reviews 2026: Is It Worth Buying?</title>
      <link>https://community.databricks.com/t5/get-started-discussions/kinessana-reviews-2026-is-it-worth-buying/m-p/174003#M12468</link>
      <description>&lt;P&gt;Its wraparound design helps position the device around the intended area, while an extension strap helps secure it during use. A magnetic touch controller provides access to the available settings, allowing users to adjust the experience according to their comfort preferences.&lt;/P&gt;&lt;P&gt;Kinessana may appeal to people who experience occasional shoulder tension after work, exercise, travel, or other everyday activities. It is also designed for individuals who prefer relaxing at home rather than relying entirely on manual massage techniques.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Official Website &lt;/STRONG&gt;&lt;STRONG&gt;–&lt;/STRONG&gt;- &lt;STRONG&gt;&lt;A href="https://kinessana.net" target="_blank"&gt;https://kinessana.net&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Kinessana&lt;/P&gt;</description>
      <pubDate>Tue, 20 Oct 2026 06:12:12 GMT</pubDate>
      <guid>https://community.databricks.com/t5/get-started-discussions/kinessana-reviews-2026-is-it-worth-buying/m-p/174003#M12468</guid>
      <dc:creator>ciplozine</dc:creator>
      <dc:date>2026-10-20T06:12:12Z</dc:date>
    </item>
    <item>
      <title>DevOps Fundamentals: 08 - Creating and Executing Unit Tests: Instructions doesn't match code</title>
      <link>https://community.databricks.com/t5/certifications/devops-fundamentals-08-creating-and-executing-unit-tests/m-p/173951#M5127</link>
      <description>&lt;P&gt;Instructions:&amp;nbsp;&lt;/P&gt;&lt;P&gt;To execute pytest within Databricks complete the following:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;P&gt;sys.dont_write_bytecode = True - By default, Python generates .pyc bytecode files in a &lt;STRONG&gt;pycache&lt;/STRONG&gt; directory. Setting it to True prevents this, which is useful in read-only environments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Code in cell directly underneath:&lt;/P&gt;&lt;DIV&gt;&lt;UL&gt;&lt;LI&gt;&lt;SPAN&gt;sys.dont_write_bytecode &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;False&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;SPAN&gt;Thanks. I hereby claim my $1000000 bug bounty. You're welcome.&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 21:04:29 GMT</pubDate>
      <guid>https://community.databricks.com/t5/certifications/devops-fundamentals-08-creating-and-executing-unit-tests/m-p/173951#M5127</guid>
      <dc:creator>Daniel_B</dc:creator>
      <dc:date>2026-10-19T21:04:29Z</dc:date>
    </item>
    <item>
      <title>Announcement | Geospatial queries are up to 38x faster with Lakehouse//RT</title>
      <link>https://community.databricks.com/t5/announcements/announcement-geospatial-queries-are-up-to-38x-faster-with/m-p/173900#M1124</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Spatial SQL and spatial joins are now supported on&lt;/SPAN&gt;&lt;A href="https://www.databricks.com/product/lakehouse/real-time-lakehouse" target="_blank"&gt; &lt;SPAN&gt;Lakehouse//RT&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, bringing low-latency, high-concurrency geospatial queries directly to governed lakehouse data. Teams can run spatial workloads without copying data into a separate geospatial serving layer.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Key Highlights&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Up to 38x faster under high concurrency&lt;/STRONG&gt;&lt;SPAN&gt;: In the reported SpatialBench comparison with 50 concurrent users, Lakehouse//RT delivered up to 38x faster performance than a traditional cloud data warehouse. Results vary by query and workload.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Run spatial SQL on governed data&lt;/STRONG&gt;&lt;SPAN&gt;: Use native &lt;/SPAN&gt;&lt;SPAN&gt;GEOMETRY&lt;/SPAN&gt;&lt;SPAN&gt; and &lt;/SPAN&gt;&lt;SPAN&gt;GEOGRAPHY&lt;/SPAN&gt;&lt;SPAN&gt; data types, spatial joins, and the broader Databricks spatial function library on Delta and Iceberg data.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Reuse existing queries&lt;/STRONG&gt;&lt;SPAN&gt;: Existing spatial SQL from Databricks SQL Serverless can run on Lakehouse//RT without query changes; create a Lakehouse//RT warehouse and point workloads to it.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Support real-time geospatial use cases&lt;/STRONG&gt;&lt;SPAN&gt;: Analyze coverage areas, store trade areas, energy infrastructure, insurance risk, delivery zones, and location-based security signals at higher concurrency.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Keep the lakehouse architecture&lt;/STRONG&gt;&lt;SPAN&gt;: Combine real-time performance with open formats, Unity Catalog governance, AI/BI maps, and the rest of the Databricks Data + AI Platform, without a separate serving stack.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Available in Beta&lt;/STRONG&gt;&lt;SPAN&gt;: Spatial SQL and spatial joins on Lakehouse//RT are available now in Beta. Check regional and feature availability before deployment.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;A style="background-color: #ff3621; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; font-weight: bold; display: inline-block;" href="https://www.databricks.com/blog/geospatial-queries-are-38x-faster-lakehousert?utm_source=bambu&amp;amp;utm_medium=social&amp;amp;utm_campaign=advocacy" target="_blank" rel="noopener"&gt; &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_right:"&gt;👉&lt;/span&gt; Read the full story here &lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 17:23:08 GMT</pubDate>
      <guid>https://community.databricks.com/t5/announcements/announcement-geospatial-queries-are-up-to-38x-faster-with/m-p/173900#M1124</guid>
      <dc:creator>Tushar_Parekar</dc:creator>
      <dc:date>2026-10-19T17:23:08Z</dc:date>
    </item>
    <item>
      <title>Certification Support Closed 4 Tickets Without Resolution — Refund &amp; Festival Voucher Issue</title>
      <link>https://community.databricks.com/t5/certifications/certification-support-closed-4-tickets-without-resolution-refund/m-p/173898#M5126</link>
      <description>&lt;P&gt;Hi everyone, especially the community managers.&lt;/P&gt;&lt;P&gt;I'm reaching out publicly because I've exhausted the regular support channels, and four tickets have been closed without resolving my issue. I would really appreciate the chance to speak directly with someone from the Databricks Certification team.&lt;/P&gt;&lt;P&gt;What happened&lt;/P&gt;&lt;P&gt;On October 8, 2026:&lt;/P&gt;&lt;P&gt;- I used a voucher won at the Databricks Festival to book the Data Engineer Professional exam through Webassessor.&lt;BR /&gt;- I accidentally scheduled the English exam for a slot starting just 2 minutes later and paid USD 100.&lt;BR /&gt;- I immediately attempted to cancel that booking.&lt;BR /&gt;- Just 14 minutes later, I booked the Portuguese exam, paid another USD 100, took the exam, and passed! &lt;span class="lia-unicode-emoji" title=":party_popper:"&gt;🎉&lt;/span&gt;&lt;/P&gt;&lt;P&gt;Unfortunately, the original English booking was never properly cancelled and eventually appeared as "Expired."&lt;/P&gt;&lt;P&gt;Contradictory support responses&lt;/P&gt;&lt;P&gt;- Oct 9 (ticket 01040221): Requested a USD 100 refund and restoration of my voucher.&lt;BR /&gt;- Oct 13: Databricks support explicitly acknowledged in writing: "We noticed that you have cancelled the exam and scheduled the exam again with the correct language." The ticket was then closed without resolution.&lt;BR /&gt;- Oct 15–19: Tickets 01045247, 01047289 and 01047318 were also closed without a solution.&lt;BR /&gt;- Oct 19: Support contradicted its earlier statement, claiming that the registration expired because I did not launch the exam, and denied both requests.&lt;/P&gt;&lt;P&gt;Why this deserves review&lt;/P&gt;&lt;P&gt;1. Support initially acknowledged my cancellation, then later denied it.&lt;BR /&gt;2. The booking system allowed me to schedule an exam starting in 2 minutes, despite a cancellation policy requiring 24 hours' notice. Under those rules, cancelling was impossible.&lt;BR /&gt;3. I contacted support the following day.&lt;BR /&gt;4. As a Brazilian consumer, I requested the refund within the 7-day withdrawal period guaranteed by Article 49 of Brazil's Consumer Protection Code.&lt;/P&gt;&lt;P&gt;What I'm requesting&lt;/P&gt;&lt;P&gt;- Refund of USD 100 for the unused English exam booking.&lt;BR /&gt;- Restoration of my Databricks Festival voucher.&lt;BR /&gt;- A direct contact from someone on the Certification team who can review the case, instead of another automated reply.&lt;/P&gt;&lt;P&gt;Current ticket: 01048926&lt;/P&gt;&lt;P&gt;I have already submitted complaints to PROCON and Reclame Aqui, but I would genuinely prefer to resolve this directly with Databricks.&lt;/P&gt;&lt;P&gt;I'm proud to have earned my Databricks certification, and I value this community. That's precisely why I hope this situation can be reviewed fairly rather than having another ticket closed without a meaningful resolution.&lt;/P&gt;&lt;P&gt;Could a community manager please help escalate this case and connect me with the Certification team? I'm happy to share all emails and receipts privately.&lt;/P&gt;&lt;P&gt;Thank you! &lt;span class="lia-unicode-emoji" title=":folded_hands:"&gt;🙏&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 17:08:39 GMT</pubDate>
      <guid>https://community.databricks.com/t5/certifications/certification-support-closed-4-tickets-without-resolution-refund/m-p/173898#M5126</guid>
      <dc:creator>Datastd</dc:creator>
      <dc:date>2026-10-19T17:08:39Z</dc:date>
    </item>
    <item>
      <title>Announcement | Stripe Data Pipeline now syncs real-time Stripe data to Lakebase Postgres</title>
      <link>https://community.databricks.com/t5/lakebase-articles/announcement-stripe-data-pipeline-now-syncs-real-time-stripe/m-p/173872#M84</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Stripe Data Pipeline can now stream Stripe data directly into&lt;/SPAN&gt;&lt;A href="https://docs.databricks.com/aws/en/oltp/" target="_blank"&gt; &lt;SPAN&gt;Databricks Lakebase Postgres&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, giving applications access to current payment, customer, subscription, refund, and payout data without custom API or webhook integrations.&lt;/SPAN&gt;&lt;/P&gt;
&lt;H2&gt;&lt;FONT size="4"&gt;&lt;STRONG&gt;Key Highlights&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/H2&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Stream Stripe data to Lakebase&lt;/STRONG&gt;&lt;SPAN&gt;: Select the Stripe tables your application needs, and Stripe handles the backfill, ongoing delivery, and data audits through a no-code pipeline.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Power application logic with current data&lt;/STRONG&gt;&lt;SPAN&gt;: Use SQL against Lakebase to support feature access, subscription changes, billing details, financial visibility, and personalized offers.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Reduce integration overhead&lt;/STRONG&gt;&lt;SPAN&gt;: Avoid building and maintaining separate API polling, webhook handlers, retry logic, and reconciliation workflows to keep application data synchronized.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Use one Stripe pipeline for two destinations&lt;/STRONG&gt;&lt;SPAN&gt;: Send Stripe data to Unity Catalog for governed analytics and AI, while syncing the operational data needed by applications to Lakebase Postgres.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Connect analytics and applications&lt;/STRONG&gt;&lt;SPAN&gt;: Join Stripe data with other business data in Databricks for analytics, while Lakebase provides a Postgres interface for application workloads.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Get started in public preview&lt;/STRONG&gt;&lt;SPAN&gt;: Real-time sync to Postgres is available in public preview and is free to get started. Availability depends on supported regions and configuration.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;A style="background-color: #ff3621; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; font-weight: bold; display: inline-block;" href="https://www.databricks.com/blog/stripe-data-pipeline-now-syncs-real-time-stripe-data-lakebase-postgres?utm_source=bambu&amp;amp;utm_medium=social&amp;amp;utm_campaign=advocacy" target="_blank" rel="noopener"&gt; &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_right:"&gt;👉&lt;/span&gt; Read the full story here &lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 14:44:44 GMT</pubDate>
      <guid>https://community.databricks.com/t5/lakebase-articles/announcement-stripe-data-pipeline-now-syncs-real-time-stripe/m-p/173872#M84</guid>
      <dc:creator>Tushar_Parekar</dc:creator>
      <dc:date>2026-10-19T14:44:44Z</dc:date>
    </item>
    <item>
      <title>Table does not support batch scan.</title>
      <link>https://community.databricks.com/t5/data-engineering/table-does-not-support-batch-scan/m-p/173863#M56783</link>
      <description>&lt;P&gt;After moving our incremental load jobs from DBR 16.4 (Spark 3.5) to DBR 18 (Spark 4.1.0), they fail with this error:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;[UNSUPPORTED_FEATURE.TABLE_OPERATION] The feature is not supported:
Table `app_dev`.`vw_period` does not support batch scan. Please check the
current catalog and namespace to make sure the qualified table name is
expected, and also check the catalog implementation which is configured
by "spark.sql.catalog". SQLSTATE: 0A000&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;vw_period&lt;/STRONG&gt; is a regular Unity Catalog view, and the table under it is a plain external Delta table, not a streaming table, materialized view or pipeline output. The same views, data and code ran without problems on 16.4.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Table and view Defination&lt;/STRONG&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;-- external Delta table, about 20 rows in total
CREATE TABLE acme_prod.app_dev.calendar_entries (
  entry_id BIGINT, period_key BIGINT, period_label STRING,
  period_start DATE, period_end DATE, period_tz STRING
  -- other columns omitted
) USING DELTA;

CREATE OR REPLACE VIEW acme_prod.app_dev.vw_period AS
SELECT DISTINCT period_key, period_label, period_start, period_end, period_tz
FROM acme_prod.app_dev.calendar_entries;

-- external Delta table, partitioned by activity_type; the real one has about 170 columns
CREATE TABLE acme_prod.app_dev.activity_events (
  activity_id STRING, actor_key BIGINT, activity_type STRING,
  platform_label STRING, session_id STRING,
  occurred_at TIMESTAMP, is_automated BOOLEAN
  -- other columns omitted
) USING DELTA PARTITIONED BY (activity_type);

CREATE OR REPLACE VIEW acme_prod.app_dev.vw_activity_events AS
SELECT e.*, COALESCE(p.period_key, CAST(-1 AS BIGINT)) AS period_key
FROM acme_prod.app_dev.activity_events e
LEFT JOIN acme_prod.app_dev.vw_period p
  ON CAST(e.occurred_at AS DATE) BETWEEN p.period_start AND p.period_end
WHERE e.activity_type &amp;lt;&amp;gt; 'heartbeat';&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;What works and what fails&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The first read works on DBR 18, and isEmpty() and rdd.isEmpty() both return normally on it:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;src=spark.sql("""
  SELECT * FROM acme_prod.app_dev.vw_activity_events
  WHERE activity_type IN ('a', 'b')
    AND occurred_at &amp;gt;  TIMESTAMP '2026-10-13 09:02:00'
    AND occurred_at &amp;lt;= TIMESTAMP '2026-10-19 12:46:00'
    AND COALESCE(is_automated, false) = false
""")
src.createOrReplaceTempView("events_incr")&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;The next step is where it fails:&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;out = spark.sql("""
  SELECT CONCAT('X_', activity_id) AS event_key, actor_key,
         UPPER(activity_type) AS activity_type, CAST(occurred_at AS DATE) AS event_date,
         period_key,
         MAP('platform_label', platform_label, 'session_id', session_id) AS props
  FROM events_incr
""").filter("actor_key IS NOT NULL")

out.isEmpty()   # raises the error above&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;The plan for the first query is below. Under the outer view, vw_period is not expanded into its SELECT DISTINCT. It shows up as RelationV2 and is read by RemoteSparkConnectScan, while the outer view is expanded normally.&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;== Parsed Logical Plan ==
'Project [*]
+- 'Filter ((activity_type IN (...) AND (occurred_at &amp;gt; 2026-10-13 09:02:00.404))
            AND ((occurred_at &amp;lt;= 2026-10-19 12:46:43.923587)
                 AND (COALESCE(is_automated, false) = false)))
   +- 'UnresolvedRelation [app_dev, vw_activity_events], [], false

== Analyzed Logical Plan ==
Project [...]
+- Filter ((activity_type IN (...) AND (occurred_at &amp;gt; ...)) AND ((occurred_at &amp;lt;= ...) AND (coalesce(is_automated, false) = false)))
   +- SubqueryAlias acme_prod.app_dev.vw_activity_events
      +- View (acme_prod.app_dev.vw_activity_events, [...])
         +- Project [...]
            +- Filter NOT (activity_type = heartbeat)
               +- Join LeftOuter, between(cast(occurred_at as date), period_start, period_end)
                  :- SubqueryAlias acme_prod.app_dev.activity_events
                  :  +- Relation acme_prod.app_dev.activity_events[...] parquet
                  +- SubqueryAlias p
                     +- SubqueryAlias acme_prod.app_dev.vw_period
                        +- RelationV2[period_key, period_label, period_start, period_end, period_tz] acme_prod.app_dev.vw_period

== Optimized Logical Plan ==
Project [...]
+- Join LeftOuter, ((cast(occurred_at as date) &amp;gt;= period_start) AND (cast(occurred_at as date) &amp;lt;= period_end))
   :- Project [...]
   :  +- Filter (activity_type INSET (...) AND occurred_at &amp;gt; ... AND occurred_at &amp;lt;= ... AND NOT coalesce(is_automated, false))
   :     +- Relation acme_prod.app_dev.activity_events[...] parquet
   +- RelationV2[period_key, period_start, period_end] acme_prod.app_dev.vw_period

== Physical Plan ==
AdaptiveSparkPlan isFinalPlan=true
+- BroadcastNestedLoopJoin BuildRight, LeftOuter, ((cast(occurred_at as date) &amp;gt;= period_start) AND (cast(occurred_at as date) &amp;lt;= period_end)), true
   :- FileScan parquet acme_prod.app_dev.activity_events[...]
   :     Batched: false
   :     Location: PreparedDeltaFileIndex(1 paths)[s3://example-bucket/dev/tenant/master-data/activity_events]
   :     PartitionFilters: [isnotnull(activity_type), NOT (activity_type = heartbeat), activity_type INSET (...)]
   :     PushedFilters: [IsNotNull(occurred_at), GreaterThan(occurred_at, ...), LessThanOrEqual(occurred_at, ...)]
   +- Exchange SinglePartition, EXECUTOR_BROADCAST
      +- Project [period_key, period_start, period_end]
         +- RemoteSparkConnectScan acme_prod.app_dev.vw_period[period_key, period_start, period_end]
              PushedPredicates: [period_start IS NOT NULL, period_end IS NOT NULL]
              Runtime row count reported for this side: 5
              Size: 160 bytes&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;STRONG&gt;What I tried&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Setting spark.sql.ansi.enabled to false made no difference.&lt;/LI&gt;&lt;LI&gt;Recreating both views, and using fully qualified names, made no difference. DESCRIBE EXTENDED on both views shows the correct catalog and namespace.&lt;/LI&gt;&lt;LI&gt;Calling localCheckpoint(eager=True) on the first DataFrame, before the second step, lets the whole job run on DBR 18. That is our workaround for now.&lt;/LI&gt;&lt;LI&gt;A second job joins another Delta table to vw_activity_events and adds a transform() over an array column in the same query. It fails the same way. Splitting the join from the transform() with a checkpoint avoids it. I haven’t isolated which expression triggers it.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Is this a known issue in DBR 18? Why is vw_period planned as RelationV2 and read through RemoteSparkConnectScan instead of being expanded, and what makes the second query’s scan fail when the first query’s succeeds? Is there a setting or recommended pattern to use until a fix is out?&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 13:15:27 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/table-does-not-support-batch-scan/m-p/173863#M56783</guid>
      <dc:creator>harsh120</dc:creator>
      <dc:date>2026-10-19T13:15:27Z</dc:date>
    </item>
    <item>
      <title>CUSTOMER STORY | VisionHeight runs real-time queries ~3x faster, for 90% less</title>
      <link>https://community.databricks.com/t5/announcements/customer-story-visionheight-runs-real-time-queries-3x-faster-for/m-p/173850#M1123</link>
      <description>&lt;P&gt;&lt;I&gt;&lt;SPAN&gt;“Once we got Lakehouse//RT, it was very fast. No extracting data out, no maintaining infrastructure, and about a 90% cost reduction. It all just works in Databricks now.”&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/I&gt;&lt;STRONG&gt;- Nitsan Daniel, CTO and Co-founder, VisionHeight&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;VisionHeight&lt;/STRONG&gt; is a pre-attack intelligence platform that helps cybersecurity teams detect threats before they strike by continuously mapping adversary infrastructure. Its customer-facing query experience previously relied on Apache Pinot, requiring a separate always-on cluster, data-copy pipelines and ongoing schema and infrastructure maintenance. By moving the workload to&lt;/SPAN&gt;&lt;A href="https://www.databricks.com/product/lakehouse/real-time-lakehouse" target="_blank"&gt; &lt;SPAN&gt;Lakehouse//RT&lt;/SPAN&gt;&lt;/A&gt;&lt;SPAN&gt;, VisionHeight brought real-time serving onto its existing Databricks foundation.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Key highlights:&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;90%+ cost reduction:&lt;/STRONG&gt;&lt;SPAN&gt; Serverless autoscaling replaced always-on Apache Pinot infrastructure.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Nearly 3× faster queries:&lt;/STRONG&gt;&lt;SPAN&gt; VisionHeight’s heaviest query now returns in sub-second response times.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Production in three days:&lt;/STRONG&gt;&lt;SPAN&gt; The team moved from evaluation to production in two to three days.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Zero data migration:&lt;/STRONG&gt;&lt;SPAN&gt; Queries run directly against data already stored in the lakehouse, with no copying or new ingestion pipelines.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;One platform instead of two:&lt;/STRONG&gt;&lt;SPAN&gt; Data processing, machine learning, analytics, batch jobs and real-time serving now run together on Databricks.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI style="font-weight: 400;" aria-level="1"&gt;&lt;STRONG&gt;Less operational overhead:&lt;/STRONG&gt;&lt;SPAN&gt; VisionHeight no longer maintains a separate serving cluster or troubleshoots schema mismatches between platforms.&lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P class="p8i6j01 paragraph"&gt;&lt;A style="background-color: #ff3621; color: white; padding: 10px 20px; text-decoration: none; border-radius: 5px; font-weight: bold; display: inline-block;" href="https://www.databricks.com/customers/visionheight?utm_source=bambu&amp;amp;utm_medium=social&amp;amp;utm_campaign=advocacy" target="_blank" rel="noopener"&gt; &lt;span class="lia-unicode-emoji" title=":link:"&gt;🔗&lt;/span&gt; Check out the full story &lt;span class="lia-unicode-emoji" title=":backhand_index_pointing_left:"&gt;👈&lt;/span&gt;&lt;/A&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 11:39:12 GMT</pubDate>
      <guid>https://community.databricks.com/t5/announcements/customer-story-visionheight-runs-real-time-queries-3x-faster-for/m-p/173850#M1123</guid>
      <dc:creator>Tushar_Parekar</dc:creator>
      <dc:date>2026-10-19T11:39:12Z</dc:date>
    </item>
    <item>
      <title>Your Genie Agent Passed. Who's Watching Production?</title>
      <link>https://community.databricks.com/t5/community-articles/your-genie-agent-passed-who-s-watching-production/m-p/173838#M1843</link>
      <description>&lt;P&gt;&lt;EM&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Genie_Agent_Article_Cover.jpg" style="width: 999px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32343iBBC9B91B280620F8/image-size/large?v=v2&amp;amp;px=999" role="button" title="Genie_Agent_Article_Cover.jpg" alt="Genie_Agent_Article_Cover.jpg" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;&lt;SPAN&gt;Five controls to put in place before rolling out Databricks Genie Agents.&lt;/SPAN&gt;&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;The benchmarks passed. Business users are ready. But who checks failed questions, approves updates, watches query performance, and manages spending after go-live?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For a Databricks Genie Agent (formerly a Genie Space), I would put five operational controls in place before expanding access.&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;1. Release the agent from source control&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Declarative Automation Bundles support Genie Agents through the &lt;/SPAN&gt;&lt;SPAN&gt;genie_spaces&lt;/SPAN&gt;&lt;SPAN&gt; resource. Keep the serialized definition in a version-controlled &lt;/SPAN&gt;&lt;SPAN&gt;.geniespace.json&lt;/SPAN&gt;&lt;SPAN&gt; file, with workspace-specific warehouse IDs and permissions configured per environment.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Use &lt;/SPAN&gt;&lt;SPAN&gt;databricks bundle validate&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;databricks bundle plan&lt;/SPAN&gt;&lt;SPAN&gt;, and &lt;/SPAN&gt;&lt;SPAN&gt;databricks bundle deploy&lt;/SPAN&gt;&lt;SPAN&gt; in CI/CD. This resource requires Databricks CLI 1.3.0 or later and the direct deployment engine. Cloning is useful for experiments; it is not a release process.&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;2. Make staging a release gate&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Rerun benchmarks against staging data. Compare the generated SQL and returned results with verified answers. Test with restricted business-user permissions, including Unity Catalog row filters and column masks. Check the warehouse and data references before approving deployment.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;A passing benchmark under an administrator’s access does not prove the same agent works safely for every user.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Genie_Agent_Release_Gate.png" style="width: 799px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32344i0CEAFB5D30872EF4/image-size/large?v=v2&amp;amp;px=999" role="button" title="Genie_Agent_Release_Gate.png" alt="Genie_Agent_Release_Gate.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;3. Watch the questions users actually ask&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Use the Genie Agent Monitor tab for conversations, feedback, review requests, and the weekly digest. Analyze Space Usage can help surface repeated questions and gaps in agent context.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For operational signals, query &lt;/SPAN&gt;&lt;SPAN&gt;system.access.audit&lt;/SPAN&gt;&lt;SPAN&gt; for Genie activity, &lt;/SPAN&gt;&lt;SPAN&gt;system.query.history&lt;/SPAN&gt;&lt;SPAN&gt; for slow or failed SQL, and &lt;/SPAN&gt;&lt;SPAN&gt;system.billing.usage&lt;/SPAN&gt;&lt;SPAN&gt; for consumption. Alert on repeated errors, query delays, and unusual spend. Feedback does not automatically retrain Genie; someone must review it and retest changes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Genie_Agent_Monitoring.png" style="width: 799px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32345i3FBFFFD3916AC960/image-size/large?v=v2&amp;amp;px=999" role="button" title="Genie_Agent_Monitoring.png" alt="Genie_Agent_Monitoring.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;4. Track two costs, not one&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;In Account Console → Usage → Budgets, create a Genie budget with resource type Unity Gateway and tag &lt;/SPAN&gt;&lt;SPAN&gt;databricks-product: genie&lt;/SPAN&gt;&lt;SPAN&gt;. Configure shared and per-user thresholds, group overrides, and alerts for billable usage. Blocking is approximate, not a guaranteed cap.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;As of October 2026, interactive Genie One and Genie Agents usage is free through January 31, 2027, and budget controls do not apply to that promotional usage. Service-principal usage is billed. SQL warehouse compute is billed separately and is not covered by Genie LLM budgets.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Genie_Agent_Cost_Controls.png" style="width: 799px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32346i440CF7050C0EB41D/image-size/large?v=v2&amp;amp;px=999" role="button" title="Genie_Agent_Cost_Controls.png" alt="Genie_Agent_Cost_Controls.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;5. Assign a production owner&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Name the person or team responsible for feedback review, benchmark changes, access approvals, cost alerts, and rollback. Keep the previous agent configuration in Git. Consider Certified status after your internal approval process, and review production usage every week.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Benchmarks tell you how an agent performed on known questions. Release controls and monitoring show how it behaves when the questions change.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;#Databricks #GenieAgents #DataEngineering #DataGovernance #DevOps&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 10:47:57 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/your-genie-agent-passed-who-s-watching-production/m-p/173838#M1843</guid>
      <dc:creator>MouR</dc:creator>
      <dc:date>2026-10-19T10:47:57Z</dc:date>
    </item>
    <item>
      <title>Lakebase Search: Vector, Keyword, and Hybrid Retrieval Inside Databricks Postgres</title>
      <link>https://community.databricks.com/t5/community-articles/lakebase-search-vector-keyword-and-hybrid-retrieval-inside/m-p/173821#M1842</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;STRONG&gt;Lakebase Search&lt;/STRONG&gt; brings vector search and BM25 keyword search directly into Lakebase, Databricks’ managed, serverless PostgreSQL offering.&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;It introduces two PostgreSQL extensions:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_vector&lt;/STRONG&gt; — Approximate nearest-neighbor (ANN) vector search, compatible with pgvector.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_text&lt;/STRONG&gt; — BM25 keyword search, compatible with PostgreSQL tsvector.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;Together, these extensions enable semantic, keyword, and hybrid retrieval using SQL in the same database that stores your operational data.&lt;/P&gt;&lt;P class=""&gt;In this post, we’ll explore how Lakebase Search works, when to use each retrieval mode, and how to build a working search implementation with SQL.&lt;/P&gt;&lt;H2&gt;1. The Problem: Search Often Requires Multiple Systems&lt;/H2&gt;&lt;P class=""&gt;Modern applications commonly need three types of search:&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&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; &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;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Search mode&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Question it answers&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Example query&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Keyword&lt;/TD&gt;&lt;TD&gt;Which records contain these exact terms?&lt;/TD&gt;&lt;TD&gt;SKU-12345, an error code&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Semantic (vector)&lt;/TD&gt;&lt;TD&gt;Which records have a similar meaning?&lt;/TD&gt;&lt;TD&gt;“A fantasy book about a boy wizard”&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Hybrid&lt;/TD&gt;&lt;TD&gt;Which records are relevant by both meaning and keywords?&lt;/TD&gt;&lt;TD&gt;“Harry Potter magic school adventure”&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;PostgreSQL has long provided reliable transactional capabilities, built-in full-text search, and vector search through extensions such as pgvector.&lt;/P&gt;&lt;P class=""&gt;However, at scale, teams often operate three separate systems:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;A transactional database for application data&lt;/LI&gt;&lt;LI&gt;A keyword search engine, such as Elasticsearch or OpenSearch&lt;/LI&gt;&lt;LI&gt;A vector database for semantic retrieval&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;This architecture introduces several challenges:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;Data synchronization:&lt;/STRONG&gt; Multiple copies of the same data must remain consistent, and delayed pipelines can produce stale search results.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Operational complexity:&lt;/STRONG&gt; Teams must manage multiple query languages, APIs, indexes, and compute resources.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Multi-step retrieval:&lt;/STRONG&gt; Applications may need to generate embeddings, query multiple search systems, merge results in application code, and retrieve complete records from PostgreSQL.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Additional infrastructure costs:&lt;/STRONG&gt; Separate systems introduce duplicated storage and operational overhead.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;Lakebase Search aims to simplify this architecture by bringing keyword and vector retrieval into the same PostgreSQL database, using SQL as the common interface.&lt;/P&gt;&lt;H2&gt;2. What Does Lakebase Search Provide?&lt;/H2&gt;&lt;P class=""&gt;Lakebase Search introduces two extensions that support different retrieval strategies.&lt;/P&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;BR /&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Extension&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Purpose&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Index type&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;lakebase_vector&lt;/TD&gt;&lt;TD&gt;ANN vector search with pgvector-compatible types, operators, and syntax&lt;/TD&gt;&lt;TD&gt;lakebase_ann&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;lakebase_text&lt;/TD&gt;&lt;TD&gt;BM25 keyword search using PostgreSQL tsvector&lt;/TD&gt;&lt;TD&gt;lakebase_bm25&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H3&gt;Vector search&lt;/H3&gt;&lt;P class=""&gt;The vector search index uses IVF partitioning with RaBitQ quantization.&lt;/P&gt;&lt;P class=""&gt;Key characteristics include:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Storage-backed indexes that persist across scale-to-zero events.&lt;/LI&gt;&lt;LI&gt;Support for large vector indexes.&lt;/LI&gt;&lt;LI&gt;Faster index-building potential compared with HNSW-based approaches, depending on workload and configuration.&lt;/LI&gt;&lt;LI&gt;Familiar pgvector-compatible vector types and operators.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;Databricks positions the technology for very large indexes, including workloads with more than one billion vectors. Consult the official documentation for benchmark results and the conditions under which these performance claims apply.&lt;/P&gt;&lt;H3&gt;Keyword search with BM25&lt;/H3&gt;&lt;P class=""&gt;BM25 is a ranking algorithm that considers term frequency, document length, and corpus-wide statistics.&lt;/P&gt;&lt;P class=""&gt;PostgreSQL’s built-in ts_rank does not use corpus-wide inverse document frequency statistics in the same way. This can affect relevance ranking for large document collections.&lt;/P&gt;&lt;P class=""&gt;Lakebase Search also uses Block-Max WAND to efficiently retrieve top-ranked results without scoring every matching document.&lt;/P&gt;&lt;H3&gt;Hybrid search&lt;/H3&gt;&lt;P class=""&gt;Hybrid search combines vector similarity and keyword relevance in a single SQL statement.&lt;/P&gt;&lt;P class=""&gt;There is no separate hybrid operator. Instead, you can retrieve candidates from both search methods and combine their rankings using an algorithm such as Reciprocal Rank Fusion (RRF).&lt;/P&gt;&lt;P class=""&gt;We’ll implement this in Section 6.&lt;/P&gt;&lt;H2&gt;3. Before You Start&lt;/H2&gt;&lt;P class=""&gt;Before enabling Lakebase Search, check the following prerequisites:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;PostgreSQL version:&lt;/STRONG&gt; PostgreSQL 16 or later.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Feature availability:&lt;/STRONG&gt; Lakebase Search is a Beta feature.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Permissions:&lt;/STRONG&gt; A workspace administrator must enable the feature through the Previews page.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Project configuration:&lt;/STRONG&gt; Enable Lakebase Search under &lt;STRONG&gt;Settings → Lakebase Search&lt;/STRONG&gt; in your project.&lt;/LI&gt;&lt;/UL&gt;&lt;BLOCKQUOTE&gt;&lt;STRONG&gt;Important:&lt;/STRONG&gt; Enabling Lakebase Search is irreversible according to the feature guidance described here and restarts all computes in the project, dropping active connections. Test it in a disposable project before enabling it in a production environment.&lt;/BLOCKQUOTE&gt;&lt;P class=""&gt;After enabling the feature, install the extensions:&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;
CREATE EXTENSION IF NOT EXISTS lakebase_text;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;The CASCADE option installs the required pgvector dependency for lakebase_vector.&lt;/P&gt;&lt;H2&gt;4. Vector Search with lakebase_vector&lt;/H2&gt;&lt;P class=""&gt;Vector search retrieves records based on the similarity between numerical embeddings.&lt;/P&gt;&lt;P class=""&gt;Each record stores an embedding in a VECTOR(n) column, where n must match the embedding model’s output dimension. The table column, index configuration, and query vector must all use compatible dimensions and distance metrics.&lt;/P&gt;&lt;H3&gt;Choosing a distance metric&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Metric&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Operator class&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Operator&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Typical&amp;nbsp;Use case&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Cosine distance&lt;/TD&gt;&lt;TD&gt;vector_cosine_ops&lt;/TD&gt;&lt;TD&gt;&amp;lt;=&amp;gt;&lt;/TD&gt;&lt;TD&gt;Text embeddings and semantic search&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;L2 (Euclidean) distance&lt;/TD&gt;&lt;TD&gt;vector_l2_ops&lt;/TD&gt;&lt;TD&gt;&amp;lt;-&amp;gt;&lt;/TD&gt;&lt;TD&gt;Workloads where absolute geometric distance matters&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Negative inner product&lt;/TD&gt;&lt;TD&gt;vector_ip_ops&lt;/TD&gt;&lt;TD&gt;&amp;lt;#&amp;gt;&lt;/TD&gt;&lt;TD&gt;Similarity ranking, especially with normalized vectors&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;Choose the metric based on how your embedding model is intended to be used. The index operator class and query operator must match.&lt;/P&gt;&lt;H3&gt;Step 1: Create a table&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE TABLE items (
    id        BIGSERIAL PRIMARY KEY,
    embedding VECTOR(3)
);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;The three-dimensional vector is used here only to keep the example small. In a real application, use the dimension produced by your embedding model, such as 384 or another supported dimension.&lt;/P&gt;&lt;H3&gt;Step 2: Insert sample embeddings&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;INSERT INTO items (embedding)
SELECT ARRAY[random(), random(), random()]::real[]
FROM generate_series(1, 1000);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;This generates synthetic vectors for demonstration purposes. It does not generate meaningful semantic embeddings.&lt;/P&gt;&lt;H3&gt;Step 3: Create an ANN index&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE INDEX ON items
USING lakebase_ann (embedding vector_l2_ops);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;For larger datasets, building the index after bulk-loading data can be more efficient than creating it before the initial load.&lt;/P&gt;&lt;H3&gt;Step 4: Query the nearest neighbors&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;SELECT *
FROM items
ORDER BY embedding &amp;lt;-&amp;gt; '[3,1,2]'
LIMIT 5;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;This query returns the five nearest vectors using L2 distance.&lt;/P&gt;&lt;H3&gt;Tuning and utility functions&lt;/H3&gt;&lt;P class=""&gt;Lakebase Search exposes options for managing index-building performance and query-time recall.&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;build_mode = 'fast'&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Can accelerate index builds at the expense of recall. The standard build mode prioritizes recall.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_ann.probes&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Increasing the number of probes can improve recall, generally at the cost of query latency.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_ann.epsilon&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Controls the re-ranking margin. The documented range is 0.0–4.0, with a default of 1.9.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_ann_prewarm(regclass)&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Loads an index into memory to help reduce cold-start latency.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;lakebase_ann_index_info(regclass)&lt;/STRONG&gt;&lt;STRONG&gt;:&lt;/STRONG&gt; Returns index metadata.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;Verify the supported settings and their exact configuration syntax in the documentation for your Lakebase version.&lt;/P&gt;&lt;H2&gt;5. Keyword Search with BM25&lt;/H2&gt;&lt;P class=""&gt;Vector search is useful for semantic similarity, but exact identifiers, product codes, error messages, and terminology often benefit from keyword retrieval.&lt;/P&gt;&lt;P class=""&gt;Lakebase Search provides BM25 ranking through the lakebase_text extension.&lt;/P&gt;&lt;H3&gt;Step 1: Create a table with a generated tsvector column&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE TABLE documents (
    id      SERIAL PRIMARY KEY,
    passage TEXT,
    vector  TSVECTOR GENERATED ALWAYS AS (
        to_tsvector('english', passage)
    ) STORED
);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;The generated column automatically maintains the text-search representation when the underlying passage changes.&lt;/P&gt;&lt;H3&gt;Step 2: Insert sample documents&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;INSERT INTO documents (passage)
VALUES
    ('Postgres is a powerful open-source relational database.'),
    ('Vector search finds semantically similar results.'),
    ('BM25 ranking improves full-text search relevance scores.');&lt;/PRE&gt;&lt;/DIV&gt;&lt;H3&gt;Step 3: Create a BM25 index&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE INDEX documents_passage_bm25
ON documents
USING lakebase_bm25 (vector);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;Build the index after loading the initial dataset so that the index can calculate corpus statistics from the populated collection.&lt;/P&gt;&lt;H3&gt;Step 4: Execute a keyword query&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;SELECT
    id,
    passage,
    vector &amp;lt;@&amp;gt; to_bm25query(
        to_tsvector('english', 'database'),
        'documents_passage_bm25'
    ) AS score
FROM documents
ORDER BY score
LIMIT 5;&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;The &amp;lt;@&amp;gt; operator returns a negative BM25 score, so ascending order places the most relevant results first.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Operational consideration:&lt;/STRONG&gt; BM25 ranking depends on corpus statistics calculated during index construction. Review the documented behavior for inserts and updates, and determine whether your workload requires index maintenance or rebuilding to keep ranking quality aligned with the evolving dataset.&lt;/P&gt;&lt;H2&gt;6. Hybrid Search with Reciprocal Rank Fusion (RRF)&lt;/H2&gt;&lt;P class=""&gt;Vector and keyword retrieval produce scores on different scales. Combining their raw scores directly can therefore be misleading.&lt;/P&gt;&lt;P class=""&gt;Reciprocal Rank Fusion avoids this issue by combining the rank positions of documents rather than their raw scores.&lt;/P&gt;&lt;P class=""&gt;The RRF formula is:&lt;/P&gt;&lt;P&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;&lt;SPAN class=""&gt;RRF⁡(d)=1k+rv(d)+1k+rk(d)\operatorname{RRF}(d) = \frac{1}{k+r_v(d)} + \frac{1}{k+r_k(d)}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P class=""&gt;Where:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;dd&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is a document.&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;rv(d)r_v(d)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is its rank in the vector results.&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;rk(d)r_k(d)&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is its rank in the keyword results.&lt;/LI&gt;&lt;LI&gt;&lt;SPAN class=""&gt;&lt;SPAN&gt;&lt;SPAN class=""&gt;kk&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/SPAN&gt; is a smoothing constant, commonly set to 60.&lt;/LI&gt;&lt;/UL&gt;&lt;P class=""&gt;A document appearing near the top of both result lists receives a stronger combined score.&lt;/P&gt;&lt;H3&gt;Step 1: Create a table for both retrieval methods&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE TABLE docs (
    id        SERIAL PRIMARY KEY,
    title     TEXT NOT NULL,
    body      TEXT NOT NULL,
    embedding VECTOR(3),
    body_tsv  TSVECTOR GENERATED ALWAYS AS (
        to_tsvector('english', body)
    ) STORED
);&lt;/PRE&gt;&lt;/DIV&gt;&lt;H3&gt;Step 2: Insert sample documents&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;INSERT INTO docs (title, body, embedding)
VALUES
    (
        'Postgres overview',
        'Postgres is an open-source relational database.',
        '[0.1, 0.2, 0.3]'
    ),
    (
        'Vector search guide',
        'Vector search finds semantically similar results.',
        '[0.4, 0.5, 0.6]'
    ),
    (
        'Full-text search',
        'BM25 ranking improves keyword search relevance.',
        '[0.7, 0.8, 0.9]'
    );&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;These embeddings are illustrative and are not intended to represent actual semantic relationships.&lt;/P&gt;&lt;H3&gt;Step 3: Create both indexes&lt;/H3&gt;&lt;DIV class=""&gt;&lt;PRE&gt;CREATE INDEX ON docs
USING lakebase_ann (embedding vector_cosine_ops);

CREATE INDEX docs_body_bm25
ON docs
USING lakebase_bm25 (body_tsv);&lt;/PRE&gt;&lt;/DIV&gt;&lt;H3&gt;Step 4: Retrieve and fuse the results&lt;/H3&gt;&lt;P class=""&gt;The following query retrieves candidates from both methods, assigns ranks, and combines them using RRF.&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;WITH vector_ranked AS (
    SELECT
        id,
        RANK() OVER (ORDER BY dist) AS rank
    FROM (
        SELECT
            id,
            embedding &amp;lt;=&amp;gt; '[0.1, 0.2, 0.3]' AS dist
        FROM docs
        ORDER BY dist
        LIMIT 40
    ) v
),
keyword_ranked AS (
    SELECT
        id,
        RANK() OVER (ORDER BY score) AS rank
    FROM (
        SELECT
            id,
            body_tsv &amp;lt;@&amp;gt; to_bm25query(
                to_tsvector('english', 'database'),
                'docs_body_bm25'
            ) AS score
        FROM docs
        ORDER BY score
        LIMIT 40
    ) k
)
SELECT
    d.id,
    d.title,
    COALESCE(1.0 / (60 + v.rank), 0)
      + COALESCE(1.0 / (60 + k.rank), 0) AS rrf_score
FROM docs d
LEFT JOIN vector_ranked v
    ON d.id = v.id
LEFT JOIN keyword_ranked k
    ON d.id = k.id
WHERE v.id IS NOT NULL
   OR k.id IS NOT NULL
ORDER BY rrf_score DESC, d.id
LIMIT 10;&lt;/PRE&gt;&lt;/DIV&gt;&lt;H3&gt;How the query works&lt;/H3&gt;&lt;OL class=""&gt;&lt;LI&gt;&lt;STRONG&gt;Vector retrieval:&lt;/STRONG&gt; Finds the top 40 candidates by cosine distance.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Keyword retrieval:&lt;/STRONG&gt; Finds the top 40 candidates by BM25 relevance.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Rank calculation:&lt;/STRONG&gt; Assigns each candidate a position in its respective result list.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Rank fusion:&lt;/STRONG&gt; Adds the reciprocal-rank contributions from both lists.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Final ranking:&lt;/STRONG&gt; Returns the highest-scoring documents.&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;The LEFT JOIN and COALESCE expressions ensure that a document found by only one retrieval method still contributes to the final ranking.&lt;/P&gt;&lt;P class=""&gt;The d.id tie-breaker makes result ordering deterministic for equal RRF scores, although stable pagination across changing data may still require an appropriate snapshot or cursor strategy.&lt;/P&gt;&lt;P class=""&gt;&lt;STRONG&gt;Tuning tip:&lt;/STRONG&gt; The candidate limit of 40 and the RRF constant of 60 are starting points, not universal defaults. Evaluate them against your dataset, relevance requirements, recall targets, and latency budget. Weighted fusion is another option when one retrieval method should contribute more strongly than the other.&lt;/P&gt;&lt;H2&gt;7. Bringing Lakehouse Data into Lakebase with Synced Tables&lt;/H2&gt;&lt;P class=""&gt;You do not need to write every record directly into PostgreSQL.&lt;/P&gt;&lt;P class=""&gt;Lakebase synced tables allow you to replicate a Unity Catalog Delta table into Lakebase, making lakehouse data available to operational applications and search workloads.&lt;/P&gt;&lt;H3&gt;Available synchronization modes&lt;/H3&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;BR /&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Mode&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Behavior&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Change Data Feed required&amp;nbsp;&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Best suited for&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Snapshot&lt;/TD&gt;&lt;TD&gt;One-time full copy&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;Initial setup and smaller datasets&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Triggered&lt;/TD&gt;&lt;TD&gt;Updates on demand or on a schedule&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Periodic refreshes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Continuous&lt;/TD&gt;&lt;TD&gt;Ongoing, near-real-time synchronization&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Applications requiring frequent updates&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;For modes that require Change Data Feed (CDF), enable it on the source Delta table:&lt;/P&gt;&lt;DIV class=""&gt;&lt;PRE&gt;ALTER TABLE your_table
SET TBLPROPERTIES (
    delta.enableChangeDataFeed = true
);&lt;/PRE&gt;&lt;/DIV&gt;&lt;P class=""&gt;Once the synced data is available in Lakebase:&lt;/P&gt;&lt;OL class=""&gt;&lt;LI&gt;Create the required vector and text-search columns.&lt;/LI&gt;&lt;LI&gt;Generate embeddings outside PostgreSQL, for example with Databricks Model Serving or ai_query, where supported by your workflow.&lt;/LI&gt;&lt;LI&gt;Store embeddings in a VECTOR(n) column.&lt;/LI&gt;&lt;LI&gt;Create the appropriate lakebase_ann and lakebase_bm25 indexes.&lt;/LI&gt;&lt;LI&gt;Validate synchronization behavior and search freshness.&lt;/LI&gt;&lt;/OL&gt;&lt;P class=""&gt;&lt;STRONG&gt;An important design principle:&lt;/STRONG&gt; Search freshness is constrained by the freshness of the underlying synchronized data and any downstream embedding or indexing work. Select the synchronization mode based on your application’s latency requirements.&lt;/P&gt;&lt;H2&gt;8. When Should You Use Each Search Mode?&lt;/H2&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&amp;nbsp; &lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Use case&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Recommended approach&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Why&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RAG over internal documents&lt;/TD&gt;&lt;TD&gt;Vector or hybrid&lt;/TD&gt;&lt;TD&gt;Retrieves semantically relevant passages, with hybrid search adding exact-term matching&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Product and e-commerce search&lt;/TD&gt;&lt;TD&gt;Hybrid&lt;/TD&gt;&lt;TD&gt;Combines descriptions and semantic similarity with product names and SKUs&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Similar historical support tickets&lt;/TD&gt;&lt;TD&gt;Vector&lt;/TD&gt;&lt;TD&gt;Finds issues with similar meaning even when wording differs&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Source code, identifiers, and error codes&lt;/TD&gt;&lt;TD&gt;Keyword&lt;/TD&gt;&lt;TD&gt;Exact terminology and identifiers matter&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Recommendations based on similarity&lt;/TD&gt;&lt;TD&gt;Vector&lt;/TD&gt;&lt;TD&gt;Finds items with similar embedding representations&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P class=""&gt;These are starting points. The best approach depends on your data, query patterns, and relevance evaluation results.&lt;/P&gt;&lt;H2&gt;9. Trade-Offs to Consider&lt;/H2&gt;&lt;P class=""&gt;Lakebase Search simplifies the search architecture, but it does not eliminate the need for careful system design.&lt;/P&gt;&lt;H3&gt;Beta status and rollout risk&lt;/H3&gt;&lt;P class=""&gt;The feature is in Beta, and enabling it is described as irreversible. Test it in a separate project and confirm the current feature limitations before rolling it out.&lt;/P&gt;&lt;H3&gt;Shared compute resources&lt;/H3&gt;&lt;P class=""&gt;Search queries and transactional operations share the database environment. Heavy indexing or retrieval workloads can affect application latency, so benchmark realistic workloads and size your compute accordingly.&lt;/P&gt;&lt;H3&gt;Search-engine feature differences&lt;/H3&gt;&lt;P class=""&gt;Lakebase Search is not necessarily a drop-in replacement for every Elasticsearch or OpenSearch capability.&lt;/P&gt;&lt;P class=""&gt;Evaluate requirements such as:&lt;/P&gt;&lt;UL class=""&gt;&lt;LI&gt;Faceted navigation and aggregations&lt;/LI&gt;&lt;LI&gt;Fuzzy matching and phrase search&lt;/LI&gt;&lt;LI&gt;Language-specific analyzers&lt;/LI&gt;&lt;LI&gt;Highlighting and snippets&lt;/LI&gt;&lt;LI&gt;Filtering and complex ranking logic&lt;/LI&gt;&lt;/UL&gt;&lt;H3&gt;Embedding lifecycle management&lt;/H3&gt;&lt;P class=""&gt;Your application is responsible for producing and maintaining embeddings. The vector dimension must match the model output and schema, and switching embedding models generally requires regenerating embeddings and rebuilding or updating the relevant indexes.&lt;/P&gt;&lt;H3&gt;Lakebase Search versus Databricks Vector Search&lt;/H3&gt;&lt;P class=""&gt;If your primary requirement is a managed vector index over Delta tables, evaluate Databricks Vector Search as well.&lt;/P&gt;&lt;P class=""&gt;Lakebase Search is especially worth considering when retrieval needs to live alongside operational PostgreSQL data. The right choice depends on your data architecture, query requirements, latency targets, and operational constraints.&lt;/P&gt;&lt;H2&gt;10. Quick Reference&lt;/H2&gt;&lt;DIV class=""&gt;&lt;DIV class=""&gt;&lt;BR /&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Task&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;SQL&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Install vector extension&lt;/TD&gt;&lt;TD&gt;CREATE EXTENSION IF NOT EXISTS lakebase_vector CASCADE;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Install text extension&lt;/TD&gt;&lt;TD&gt;CREATE EXTENSION IF NOT EXISTS lakebase_text;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Define vector column&lt;/TD&gt;&lt;TD&gt;embedding VECTOR(384)&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Define text-search column&lt;/TD&gt;&lt;TD&gt;body_tsv TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', body)) STORED&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Create ANN index&lt;/TD&gt;&lt;TD&gt;CREATE INDEX ON tbl USING lakebase_ann (embedding vector_cosine_ops);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Create BM25 index&lt;/TD&gt;&lt;TD&gt;CREATE INDEX idx ON tbl USING lakebase_bm25 (body_tsv);&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Run vector search&lt;/TD&gt;&lt;TD&gt;SELECT * FROM tbl ORDER BY embedding &amp;lt;=&amp;gt; '[...]' LIMIT 10;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Run BM25 search&lt;/TD&gt;&lt;TD&gt;SELECT *, body_tsv &amp;lt;@&amp;gt; to_bm25query(to_tsvector('english', 'q'), 'idx') AS score FROM tbl ORDER BY score LIMIT 10;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;H2&gt;Conclusion&lt;/H2&gt;&lt;P class=""&gt;Lakebase Search brings vector, keyword, and hybrid retrieval into the PostgreSQL database that already holds your operational data.&lt;/P&gt;&lt;P class=""&gt;By combining lakebase_vector and lakebase_text, applications can use SQL to retrieve semantically similar content, rank keyword matches with BM25, and combine both result sets with Reciprocal Rank Fusion.&lt;/P&gt;&lt;P class=""&gt;For workloads where search and transactions operate on the same data, this can reduce infrastructure complexity and eliminate some of the synchronization work associated with maintaining separate search systems.&lt;/P&gt;&lt;P class=""&gt;However, Lakebase Search is still in Beta. Before adopting it for production workloads, validate its relevance, recall, latency, indexing behavior, and operational trade-offs against your own dataset.&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;Have you tried Lakebase Search? Share your implementation experience, performance results, and questions in the comments.&lt;/EM&gt;&lt;/P&gt;&lt;P class=""&gt;&lt;EM&gt;&lt;STRONG&gt;Author:&lt;/STRONG&gt;&lt;SPAN&gt;&amp;nbsp;Isaac Pandraju&amp;nbsp;&lt;/SPAN&gt;&lt;STRONG&gt;Feature status:&lt;/STRONG&gt; Beta&amp;nbsp;&lt;STRONG&gt;Last reviewed:&lt;/STRONG&gt; October 2026&lt;/EM&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 10:19:59 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/lakebase-search-vector-keyword-and-hybrid-retrieval-inside/m-p/173821#M1842</guid>
      <dc:creator>Isaac_18</dc:creator>
      <dc:date>2026-10-19T10:19:59Z</dc:date>
    </item>
    <item>
      <title>SCIM not returning account-level groups for Databricks App users</title>
      <link>https://community.databricks.com/t5/administration-architecture/scim-not-returning-account-level-groups-for-databricks-app-users/m-p/173815#M6043</link>
      <description>&lt;P&gt;We’re building an Azure Databricks App for a company use case, designed as a self-service tool for a group of non-technical users (around 100-200).&lt;/P&gt;&lt;P&gt;The main idea is that these users don’t have any permissions on the workspace. Access is granted only through an Entra ID group synced at the account level. This group is granted the CAN USE permission directly on the app through the Databricks Asset Bundle used for deployment, so users can log in successfully, and we are correctly capturing and recording their emails in the insights and logs. The Entra ID groups are not nested.&lt;/P&gt;&lt;P&gt;The problem comes with segregating sections or functionalities within the app. We can’t resolve the users’ security groups, because both the groups and the users exist only at the account level (the groups are added in the account groups section).&lt;/P&gt;&lt;P&gt;So far we have tried the workspace-level SCIM endpoint /api/2.0/preview/scim/v2/Me and the account-level SCIM endpoint /api/2.0/accounts/{account_id}/scim/v2/Users, both with the user’s OBO token (X-Forwarded-Access-Token) and with the app service principal token. We also tried making the app identity a workspace admin and granting it CAN MANAGE on the account group. None of these return the users’ group membership, so we can’t implement the segregation properly.&lt;/P&gt;&lt;P&gt;However, when a user has also been added to the workspace through other technical workspace groups, SCIM does return their group membership. Our hypothesis is that the workspace-level SCIM API only returns groups assigned to the workspace, so account-only groups are not visible to the app, even when the app identity has elevated permissions.&lt;/P&gt;&lt;P&gt;We are trying to avoid adding the users’ groups to the workspace, to keep things simple and maintain a scalable permissions model. Also, have a table of groups member its not maintainable for us their sync.&amp;nbsp;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Is there a supported way for a Databricks App to resolve the account-level group membership of the current user without assigning those groups to the workspace?&lt;/LI&gt;&lt;LI&gt;Which api or permission of the App Identity could resolved this problem?&lt;/LI&gt;&lt;LI&gt;If any its possible, what is the recommended pattern for role-based access within a Databricks App for account-only users?&amp;nbsp;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;</description>
      <pubDate>Mon, 19 Oct 2026 09:40:00 GMT</pubDate>
      <guid>https://community.databricks.com/t5/administration-architecture/scim-not-returning-account-level-groups-for-databricks-app-users/m-p/173815#M6043</guid>
      <dc:creator>juan_maedo</dc:creator>
      <dc:date>2026-10-19T09:40:00Z</dc:date>
    </item>
    <item>
      <title>Databricks DiscountVoucher</title>
      <link>https://community.databricks.com/t5/training-offerings/databricks-discountvoucher/m-p/173814#M1321</link>
      <description>&lt;P&gt;When does Databricks send email Discount Voucher? Because I'm waiting for today and not get it?&lt;BR /&gt;&lt;BR /&gt;Thank you.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2026 09:19:36 GMT</pubDate>
      <guid>https://community.databricks.com/t5/training-offerings/databricks-discountvoucher/m-p/173814#M1321</guid>
      <dc:creator>TheVinhBui</dc:creator>
      <dc:date>2026-10-19T09:19:36Z</dc:date>
    </item>
    <item>
      <title>Databricks Genie One - Managing past conversation initiated by Databricks service principal account</title>
      <link>https://community.databricks.com/t5/generative-ai/databricks-genie-one-managing-past-conversation-initiated-by/m-p/173770#M2217</link>
      <description>&lt;P&gt;Hello everyone.&lt;/P&gt;&lt;P&gt;Recently, our team use Databricks service principal account, connecting to Genie One MCP server (via unity gateway) for data retrieval. &lt;STRONG&gt;However, we notice that there are currently no ways for us to manage the past conversations that had happened with service principal. &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;We not able to find SDKs or APIs to list all or perform deletion on past conversations initiated by service principal. As far as we know, there is no way for us to login as service principal and perform deletion via Genie One interface. We also noted that those functionalities only available for Genie Agent.&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This limitation is problematic for us. In some cases, Genie One has misinterpreted our data during its reasoning process. Although we have corrected the relevant issues in the data semantic layer, Genie One continues to rely on past conversations containing incorrect interpretations when answering user questions. Since we are unable to delete these past conversations, it is difficult for us to prevent Genie One from reusing misleading context.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Are there any future plans on having a way for listing all or performing deletion on past conversations that were done by service principals? Or are there any alternative ways to manage the past conversations by service principals?&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Appreciate any insights and suggestions from Databricks community. Thank you.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Oct 2026 14:32:19 GMT</pubDate>
      <guid>https://community.databricks.com/t5/generative-ai/databricks-genie-one-managing-past-conversation-initiated-by/m-p/173770#M2217</guid>
      <dc:creator>ken_npk</dc:creator>
      <dc:date>2026-10-18T14:32:19Z</dc:date>
    </item>
    <item>
      <title>Why Your Genie Space Gives Wrong Answers: A Debugging Playbook</title>
      <link>https://community.databricks.com/t5/community-articles/why-your-genie-space-gives-wrong-answers-a-debugging-playbook/m-p/173762#M1841</link>
      <description>&lt;P&gt;Every team that builds a Databricks Genie space goes through the same moment. The demo went well, the first few questions came back clean, and then a stakeholder asks something slightly different and the number is wrong. Not obviously wrong, which would be easy. Plausibly wrong, which is worse.&lt;/P&gt;&lt;P&gt;The instinctive reaction is to open the instructions box and type another rule. Sometimes that works. Often it makes things quietly worse, because the real problem was somewhere else. This post is a debugging playbook for that moment. It gives you a repeatable way to work out why Genie produced a bad answer, which of your levers actually fixes it, and how to confirm the fix did not break something else.&lt;/P&gt;&lt;P&gt;The core idea is simple: treat a wrong answer the way you would treat a failing test. Reproduce it, isolate the cause, apply the smallest fix that addresses it, and check for regressions.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Start With the SQL, Not the Answer&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Genie shows you the query it generated. That query is your stack trace. Before you change anything, read it carefully and compare it with the query you would have written yourself.&lt;BR /&gt;When you read the SQL, ask a fixed set of questions:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Did it pick the right table, or a table that merely looks right?&lt;/LI&gt;&lt;LI&gt;Are the joins correct, including the join keys and the join type?&lt;/LI&gt;&lt;LI&gt;Did it filter on the right columns, and are the filter values the ones the data actually contains?&lt;/LI&gt;&lt;LI&gt;Which date column did it use, and is that the one the business means?&lt;/LI&gt;&lt;LI&gt;Did it aggregate at the right grain, or did it double count by joining before aggregating?&lt;/LI&gt;&lt;LI&gt;Did it apply the business definition of the metric, or invent a plausible one?&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Write down the first place where the generated query diverges from the correct one. That single divergence is the bug. Everything else in this post is about figuring out why Genie made that choice and how to change it.&lt;BR /&gt;It also helps to run the correct query yourself and compare results. If you cannot say what the right answer should be, you are not ready to debug the space yet. Find a domain expert or a trusted report first.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The Four Root Causes&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Almost every wrong answer traces back to one of four root causes. Learning to tell them apart is the most valuable skill in running a Genie space, because each one has a different fix.&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;A metadata problem.&lt;/STRONG&gt; The tables and columns are named or described in a way that misleads Genie.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;A definition problem.&lt;/STRONG&gt; Genie does not know how your business defines a term or calculates a metric.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;A pattern problem.&lt;/STRONG&gt; The logic is complex, and Genie keeps assembling it slightly wrong even though it understands the terms.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;A scope problem.&lt;/STRONG&gt; The question is outside what the space was designed to answer, or the data to answer it is not there.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;The sections below take each one in turn, with symptoms, examples, and fixes.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Root Cause One: Metadata Problems&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Genie reads your table names, column names, data types, and comments to decide what to query. If those are cryptic, duplicated, or misleading, Genie has to guess, and guesses are where wrong answers come from.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Symptoms.&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Genie picks a column that sounds right but is not, such as order_date versus ship_date versus created_at.&lt;/LI&gt;&lt;LI&gt;Two tables hold similar data and Genie chooses the wrong one.&lt;/LI&gt;&lt;LI&gt;Genie filters on a status code and gets no rows because it guessed the wrong value.&lt;/LI&gt;&lt;LI&gt;Results change depending on how the question is phrased, in ways that do not make business sense.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Example.&lt;/STRONG&gt; A user asks for revenue last quarter. The sales table has three amount columns: amt, amt_net, and amt_adj. None has a comment. Genie picks amt, which includes tax and refunds. The number is wrong, and nothing in the question could have told Genie which column was right.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Fixes.&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Add comments to tables and columns in Unity Catalog. Write them for someone who has never seen your system. Say what the column means, what unit it uses, and when to prefer it over similar columns.&lt;/LI&gt;&lt;LI&gt;Rename or alias confusing columns in a curated view. A view called sales_curated with clean names is often better than exposing the raw table.&lt;/LI&gt;&lt;LI&gt;Remove columns Genie should never use. If a legacy column is deprecated, hide it from the space or the view rather than hoping Genie avoids it.&lt;/LI&gt;&lt;LI&gt;Document allowed values for status and category columns, for example status is one of open, closed, cancelled.&lt;/LI&gt;&lt;LI&gt;Make relationships explicit so join keys are clear.&lt;/LI&gt;&lt;LI&gt;How to confirm. Rerun the failing question and check that the generated SQL now uses the right column. Then rerun two or three similar questions to make sure the fix generalizes.&lt;/LI&gt;&lt;LI&gt;Metadata fixes are the cheapest and most durable. They also help every future question, not just the one you are debugging. If you take only one lesson from this post, make it this: fix the data documentation before you touch the instructions.&lt;/LI&gt;&lt;/OL&gt;</description>
      <pubDate>Sun, 18 Oct 2026 08:26:03 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/why-your-genie-space-gives-wrong-answers-a-debugging-playbook/m-p/173762#M1841</guid>
      <dc:creator>aayush_410</dc:creator>
      <dc:date>2026-10-18T08:26:03Z</dc:date>
    </item>
    <item>
      <title>Feature Request: Cross-job dependencies with business-date awareness</title>
      <link>https://community.databricks.com/t5/data-engineering/feature-request-cross-job-dependencies-with-business-date/m-p/173761#M56770</link>
      <description>&lt;P&gt;&lt;STRONG&gt;Summary&lt;/STRONG&gt;&lt;BR /&gt;Workflows can chain tasks inside one job, but there is no native way to say: “Run job X once per day, after jobs A, B, C, D and E have each completed successfully for the same business date, even though they are independent jobs with their own schedules.” We’d like native support for this.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;The scenario&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;We have 5 dimension jobs: dimjob1 to dimjob5, each owned and scheduled independently.&lt;/LI&gt;&lt;LI&gt;We have one fact job, factjob1, which must run &lt;STRONG&gt;once per day&lt;/STRONG&gt;, only after &lt;STRONG&gt;all 5 dimension jobs have succeeded for the current business date&lt;/STRONG&gt;.&lt;/LI&gt;&lt;LI&gt;The dimension tables are also updated throughout the day by other jobs and manual processes. &lt;STRONG&gt;Those updates must not trigger or satisfy factjob1.&lt;/STRONG&gt; Only the completion of dimjob1-5 counts.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Enterprise schedulers such as Tidal, Control-M and Autosys handle this with a simple job-level dependency.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Our current workaround&lt;/STRONG&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;Each dimension job writes a completion record (job name, business date, status) to a custom control table at the end.&lt;/LI&gt;&lt;LI&gt;factjob1 has a gate task that checks all 5 records for today’s business date.&lt;/LI&gt;&lt;LI&gt;An If/else condition task acts on the gate’s result.&lt;/LI&gt;&lt;LI&gt;factjob1 is scheduled on a polling interval (e.g. every 15-30 minutes) because we can’t know when the dimension jobs will finish.&lt;/LI&gt;&lt;LI&gt;An “already succeeded today” guard prevents duplicate runs.&lt;/LI&gt;&lt;LI&gt;Custom alerting handles the case where dependencies aren’t met by the deadline.&lt;/LI&gt;&lt;/OL&gt;&lt;P&gt;Alternatives don’t fit either. A “Run Job” orchestrator forces us to merge the independent schedules and ownership into one pipeline, and table update triggers fire on any write, including the manual and ad hoc loads we need to ignore.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Why this is a problem&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Six custom components to express one dependency rule.&lt;/LI&gt;&lt;LI&gt;Fragile: every dimension job must write its completion record correctly.&lt;/LI&gt;&lt;LI&gt;Rebuilt by every team in a slightly different way.&lt;/LI&gt;&lt;LI&gt;Polling wastes job runs and compute just to ask “are they done yet?”&lt;/LI&gt;&lt;LI&gt;Dependency status is invisible in the Workflows UI, so support teams can’t see why factjob1 hasn’t started.&lt;/LI&gt;&lt;LI&gt;Teams migrating from Tidal or similar tools have to redesign their dependencies, not just re-point them.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Proposed solution&lt;/STRONG&gt;&lt;BR /&gt;Native job-level dependencies on a job’s trigger, for example (syntax is only a suggestion):&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;yaml&lt;/DIV&gt;&lt;DIV&gt;&lt;PRE&gt;&lt;SPAN&gt;trigger:
  job_dependencies:
    jobs: [dimjob1, dimjob2, dimjob3, dimjob4, dimjob5]
    condition: ALL_SUCCEEDED
    window: DAILY              # business date / calendar window and timezone
    run_policy: ONCE_PER_WINDOW
    deadline: "08:00"          # alert if not satisfied by then&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Key capabilities:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;All-of-N job runs succeeded&lt;/STRONG&gt; within a window (daily, or a custom business date).&lt;/LI&gt;&lt;LI&gt;Only &lt;STRONG&gt;job run outcomes&lt;/STRONG&gt; count. Table writes from other processes are ignored.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Once-per-window&lt;/STRONG&gt; execution, with no re-trigger on later reruns.&lt;/LI&gt;&lt;LI&gt;Support for &lt;STRONG&gt;independent schedules and owners&lt;/STRONG&gt;, with no need to merge jobs.&lt;/LI&gt;&lt;LI&gt;Optional passing of the business date as a parameter to the downstream job.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;SLA deadline alerting&lt;/STRONG&gt; if dependencies aren’t met in time.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;UI visibility&lt;/STRONG&gt; of which upstream jobs are satisfied and which are pending.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;STRONG&gt;Benefits&lt;/STRONG&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Six custom components shrink to a few lines of configuration.&lt;/LI&gt;&lt;LI&gt;No polling, no custom control tables, no convention for every job to follow.&lt;/LI&gt;&lt;LI&gt;Teams keep independent ownership and schedules.&lt;/LI&gt;&lt;LI&gt;Operations can see dependency status directly in the UI.&lt;/LI&gt;&lt;LI&gt;Migration from Tidal, Control-M and Autosys becomes much simpler.&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;Could you please log this as a feature request and let me know if it’s on the roadmap? Happy to share more detail or test an early version.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Oct 2026 08:19:09 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/feature-request-cross-job-dependencies-with-business-date/m-p/173761#M56770</guid>
      <dc:creator>indradbxlearn</dc:creator>
      <dc:date>2026-10-18T08:19:09Z</dc:date>
    </item>
    <item>
      <title>Per-agent guardrails: what do you alert on, tokens, retries, or cost per task?</title>
      <link>https://community.databricks.com/t5/generative-ai/per-agent-guardrails-what-do-you-alert-on-tokens-retries-or-cost/m-p/173743#M2216</link>
      <description>&lt;P&gt;I'm trying to work out what a sensible guardrail looks like for each agent when several of them share a few serving endpoints.&lt;/P&gt;&lt;P&gt;A plain token budget feels too blunt. An agent that retries a failing tool four times looks like a heavy user, while a cheap agent stuck in a loop can burn far more than its neighbours before anyone notices.&lt;/P&gt;&lt;P&gt;The options I'm weighing:&lt;/P&gt;&lt;P&gt;1. A hard daily cap per agent on tokens, through AI Gateway rate limits.&lt;/P&gt;&lt;P&gt;2. An alert on tool invocations per request, to catch loops and retry storms early.&lt;/P&gt;&lt;P&gt;3. An alert on cost per completed task against that agent's own 7-day baseline.&lt;/P&gt;&lt;P&gt;For those running agents in production on Databricks: which of these do you actually use, and which one did you regret? And is anything in the system tables or inference tables good enough to build that baseline from, or do you end up logging your own per-task numbers?&lt;/P&gt;&lt;P&gt;Happy to hear partial answers too, even just what you stopped doing.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Oct 2026 00:56:24 GMT</pubDate>
      <guid>https://community.databricks.com/t5/generative-ai/per-agent-guardrails-what-do-you-alert-on-tokens-retries-or-cost/m-p/173743#M2216</guid>
      <dc:creator>DoTA</dc:creator>
      <dc:date>2026-10-18T00:56:24Z</dc:date>
    </item>
    <item>
      <title>The Databricks Serverless Conversion Playbook</title>
      <link>https://community.databricks.com/t5/community-articles/the-databricks-serverless-conversion-playbook/m-p/173731#M1839</link>
      <description>&lt;P&gt;The shift from classic compute to Serverless in Databricks is a game-changer, but the migration process requires a solid strategy. After diving deep into serverless conversions recently, I’ve put together a guided playbook.&lt;/P&gt;&lt;P&gt;Here are my top 5 takeaways for a smooth transition:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;STRONG&gt;Audit &amp;amp; Standardize First&lt;/STRONG&gt; Before moving anything, identify the standard patterns your company follows across notebooks, Python scripts, and SQL files. You need a clear baseline of your current architecture.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Bake Standards into a Databricks SKILL&lt;/STRONG&gt; Take those identified standards and encode them into a custom Databricks SKILL. This turns your organizational knowledge into a reusable, automated asset for the migration.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Navigating the spark.conf.set Limitation&lt;/STRONG&gt; Serverless doesn't support most spark.conf.set configurations (even custom ones). &lt;I&gt;The Workaround:&lt;/I&gt; Pass configurations via widgets as an environment Python wheel stored in a Unity Catalog Volume, sharing it across teams. Alternatively, create a common environment notebook and inject it at the top of your jobs using %run.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Democratize the Conversion&lt;/STRONG&gt; Once your SKILL is set up, share it across your data teams! They can use the SKILL and the standardized notebooks to independently check compatibility, convert their workloads, and test their jobs on Serverless compute.&lt;/LI&gt;&lt;LI&gt;&lt;STRONG&gt;Iterative Bulk Testing over "Big Bang"&lt;/STRONG&gt;&lt;SPAN&gt; Don't try to convert everything at once. The best approach is domain-driven bulk testing. Take one repository or one specific data process, run the conversion, test the serverless execution thoroughly, and then scale the pattern.&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;I’ve compiled these steps and architectural diagrams into a full Playbook (attached below!).&lt;/P&gt;&lt;P&gt;Has your team started the move to Serverless yet?&lt;/P&gt;&lt;P&gt;#Databricks #DataEngineering #Serverless #ApacheSpark #DataArchitecture #DatabricksCommunity #CloudComputing&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Databricks Serverless Conversion Playbook.jpg" style="width: 595px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32326i6C1F79E25A3D6999/image-size/large?v=v2&amp;amp;px=999" role="button" title="Databricks Serverless Conversion Playbook.jpg" alt="Databricks Serverless Conversion Playbook.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Databricks Serverless Conversion Playbook 2.jpg" style="width: 595px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32327iAAB5439749D54790/image-size/large?v=v2&amp;amp;px=999" role="button" title="Databricks Serverless Conversion Playbook 2.jpg" alt="Databricks Serverless Conversion Playbook 2.jpg" /&gt;&lt;/span&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Databricks Serverless Conversion Playbook 3.jpg" style="width: 595px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32328iD57AAC5AD1CD883B/image-size/large?v=v2&amp;amp;px=999" role="button" title="Databricks Serverless Conversion Playbook 3.jpg" alt="Databricks Serverless Conversion Playbook 3.jpg" /&gt;&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Oct 2026 18:07:16 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/the-databricks-serverless-conversion-playbook/m-p/173731#M1839</guid>
      <dc:creator>ShamenParis</dc:creator>
      <dc:date>2026-10-17T18:07:16Z</dc:date>
    </item>
    <item>
      <title>Palantir Foundry + Databricks: Move the Data or Just Read It?</title>
      <link>https://community.databricks.com/t5/community-articles/palantir-foundry-databricks-move-the-data-or-just-read-it/m-p/173726#M1838</link>
      <description>&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Sometimes the cheapest migration is no migration at all.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;An organization has already invested in Palantir Foundry, with established pipelines, validated data, Ontology models and operational applications. Another team wants to use the same data in Databricks.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Should they move everything, copy selected datasets, or simply read the data where it already lives?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Before migrating anything, consider what Databricks would add.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="palantir_1.png" style="width: 550px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32321i94DF9B4E6EF6E257/image-size/large?v=v2&amp;amp;px=999" role="button" title="palantir_1.png" alt="palantir_1.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;Why move something that already works?&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;If Foundry's Contour, Quiver, Workshop applications or existing BI integrations meet the business requirements, keeping those workloads in Foundry may be the most economical option.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;If another team needs Foundry data alongside datasets already available in Databricks, federation may be sufficient.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Databricks can act as an additional analytics consumer without taking ownership of the source data, transformations or operational applications.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="palantir_2.png" style="width: 549px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32325iFF918BC26D4E4953/image-size/large?v=v2&amp;amp;px=999" role="button" title="palantir_2.png" alt="palantir_2.png" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;FONT face="arial black,avant garde" size="5"&gt;&lt;STRONG&gt;Federation vs. ingestion: Which costs less?&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Databricks supports read-only federation of eligible Foundry-managed Apache Iceberg tables through Unity Catalog, currently in Public Preview.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;This avoids building and maintaining a second ingestion pipeline. But federation isn't free. Databricks compute, cloud storage access and possible data transfer charges still apply.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Ingestion creates an independently managed copy, usually in Delta tables. It introduces storage, pipeline monitoring, reconciliation and ongoing maintenance costs.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Ingestion is worth considering when repeated transformations, large joins, ML workloads, independent writes or demanding reporting requirements justify those costs.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="palantir_3.png" style="width: 546px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32323iA666A8DEE79C1733/image-size/large?v=v2&amp;amp;px=999" role="button" title="palantir_3.png" alt="palantir_3.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;But what about latency?&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Federation isn't automatically slower.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For supported Iceberg tables, Databricks reads the underlying data from cloud storage using its own compute. Performance depends on storage location, file layout, query complexity and concurrent demand.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For occasional analytics, federation may be entirely adequate. For frequently refreshed, heavily used dashboards, a curated local copy may provide more predictable performance.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;The simplest test:&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;SPAN&gt; Run representative queries both ways. Compare response time, data freshness, compute consumption and monthly operating costs.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;If federation meets the performance target at an acceptable cost, why introduce another pipeline?&lt;/SPAN&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;When does full migration make sense?&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Full Foundry replacement is a separate business decision. It involves more than data movement: pipelines, Ontology relationships, actions, security rules and Workshop applications must also be considered.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Databricks Labs Lakebridge may assist with selected SQL assessment, conversion and validation tasks, but it does not provide a native one-click Foundry migration.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;For platform consolidation, estimate the cost of rebuilding and operating the complete solution before committing to a move.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-center" image-alt="palantir_4.png" style="width: 549px;"&gt;&lt;img src="https://community.databricks.com/t5/image/serverpage/image-id/32324iF80ACADFD91F65FF/image-size/large?v=v2&amp;amp;px=999" role="button" title="palantir_4.png" alt="palantir_4.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;H2&gt;&lt;SPAN&gt;The takeaway&lt;/SPAN&gt;&lt;/H2&gt;&lt;P&gt;&lt;SPAN&gt;Keep validated workloads where they already deliver value. Use federation when Databricks only needs to consume the data. Ingest selectively when performance, processing or independent ownership justifies a copy.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;&lt;SPAN&gt;Move the data because the workload needs it, not simply because another platform can store it.&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Oct 2026 17:50:04 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/palantir-foundry-databricks-move-the-data-or-just-read-it/m-p/173726#M1838</guid>
      <dc:creator>MouR</dc:creator>
      <dc:date>2026-10-17T17:50:04Z</dc:date>
    </item>
    <item>
      <title>How New Developers Learn Databricks Genie: A Practical Learning Path</title>
      <link>https://community.databricks.com/t5/community-articles/how-new-developers-learn-databricks-genie-a-practical-learning/m-p/173712#M1837</link>
      <description>&lt;P&gt;If you are new to the Databricks ecosystem, you have probably heard the name Genie in a demo, a keynote, or a hallway conversation. The pitch is simple and a little magical: ask a question about your data in plain English, and get back a table, a chart, and the SQL that produced it. For a new developer, that pitch raises as many questions as it answers. Is Genie a product for analysts or for engineers? Do I need to know machine learning? Where do I even start?&lt;BR /&gt;This post is a guided tour of how new developers actually learn Genie, and how you can do it faster. It is organized as a path rather than a feature list, because Genie is best learned in layers: first as a user, then as a builder, then as the person responsible for making it trustworthy, and finally as a developer who wires it into other systems. Each stage builds on the last, and skipping ahead is the most common reason people get frustrated.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;What Genie Actually Is&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Genie is the natural language interface of Databricks AI/BI. You create a Genie space, which is a curated workspace pointed at a set of Unity Catalog tables and views. Business users type questions, and Genie translates them into SQL, runs the SQL on a SQL warehouse, and shows the results. It also shows you the generated query, so nothing is hidden.&lt;BR /&gt;The important word there is curated. Genie is not a general chatbot that happens to know about your data. It is a system that behaves well in proportion to how much context you give it about your tables, your columns, your business terms, and your preferred ways of calculating things. A Genie space with five clean tables, good column descriptions, and a handful of example queries will outperform a space with fifty raw tables and no guidance, every time.&lt;BR /&gt;That single idea explains most of what new developers need to learn. The model is the easy part. The craft is in the setup.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Why Developers, Not Just Analysts, Should Learn It&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Genie is marketed to business users, so developers sometimes assume it is not their problem. In practice, developers and data engineers end up owning it for three reasons.&lt;BR /&gt;First, Genie sits on top of Unity Catalog, which means the quality of your tables, naming, comments, and permissions directly shapes the quality of the answers. The people who build and govern those tables are usually engineers.&lt;/P&gt;&lt;P&gt;Second, Genie is increasingly something you build with, not just something you use. There is an API for running conversations programmatically, and Genie can be a component inside larger agent systems. If you are building internal tools, chat experiences, or automation, Genie becomes one of the pieces you call.&lt;BR /&gt;Third, when Genie gives a wrong answer, someone has to debug it. That person needs to read SQL, understand the data model, and know which knob to turn. That is a developer skill.&lt;BR /&gt;So the right framing is this: analysts consume Genie, but engineers make it good.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Stage One: Learn It as a User&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;The fastest way to start is to use a Genie space that someone else built. If your workspace has one, ask for access. If not, many Databricks workspaces include sample data, and the documentation walks through creating a space on top of it. Spend a few hours just asking questions.&lt;BR /&gt;While you do this, pay attention to four things.&lt;BR /&gt;&lt;STRONG&gt;Read the generated SQL every time.&lt;/STRONG&gt; This is the single most valuable habit you can form. Genie shows its work, and the SQL tells you how it interpreted your question. When the answer looks right, check that the SQL matches your intent. When it looks wrong, the SQL usually shows you why: a wrong join, a misread column, a filter on the wrong date field.&lt;BR /&gt;&lt;STRONG&gt;Notice how phrasing changes results.&lt;/STRONG&gt; Ask the same question three ways. Try asking for totals, then averages, then breakdowns by a category. Try vague questions and specific ones. You will quickly develop a feel for what Genie handles well and where it guesses.&lt;BR /&gt;Use follow-up questions. Genie keeps conversational context, so you can say things like break that down by region or now exclude returns. Learning to iterate this way is a different skill from writing one perfect query, and it is the way business users will actually work.&lt;BR /&gt;&lt;STRONG&gt;Collect the failures.&lt;/STRONG&gt; Keep a running list of questions that gave wrong or confusing answers. This list becomes gold in Stage Four, when you start testing systematically.&lt;BR /&gt;By the end of this stage you should be able to explain, in two sentences, what Genie does and where it tends to go wrong. If you can do that, you are ready to build.&lt;BR /&gt;&lt;STRONG&gt;Stage Two: Build Your First Genie Space&lt;/STRONG&gt;&lt;BR /&gt;Building a space is where learning accelerates, because you are forced to make the decisions that determine quality.&lt;BR /&gt;Start small. Pick one business domain, such as sales orders, support tickets, or inventory, and choose three to five tables that answer real questions in that domain. Resist the urge to add everything. A focused space is easier to reason about, easier to test, and cheaper to run.&lt;BR /&gt;Before you touch Genie itself, prepare the tables in Unity Catalog:&lt;BR /&gt;• Give tables and columns clear names. Cryptic abbreviations like cust_stat_cd force Genie to guess.&lt;BR /&gt;• Add comments to tables and columns. These descriptions are part of the context Genie reads, so write them for a reader who has never seen your system.&lt;BR /&gt;• Check data types and key relationships. If joins between tables are not obvious, document them or define the relationships.&lt;BR /&gt;• Make sure the people who will use the space have the right permissions. Genie respects Unity Catalog governance, so users only see data they are allowed to see.&lt;BR /&gt;Then create the space, attach your tables, and choose a SQL warehouse to run queries. Add a short description of what the space is for. Finally, add a few sample questions. These show up as starting points for users and also signal to Genie what kinds of questions are in scope.&lt;BR /&gt;Now test it. Ask the questions you collected in Stage One, plus the questions a real stakeholder would ask. Some will work. Some will not. That is the point. Every failure is a pointer to something you can improve, and the next stage is about how.&lt;BR /&gt;A useful exercise for new developers is to build the same small space twice: once with raw, undocumented tables, and once after cleaning up names and adding comments. The difference in answer quality is the most persuasive lesson in the whole subject, and no tutorial teaches it as well as seeing it happen on your own data.&lt;BR /&gt;Stage Three: Teach Genie Your Business&lt;BR /&gt;Once the basics work, you move from setup to teaching. Genie gives you several ways to add context beyond table metadata, and learning when to use each one is the core skill of a Genie developer.&lt;BR /&gt;General instructions. These are plain-language guidelines that apply to the whole space. They are the right place for rules like our fiscal year starts in February, revenue means net of refunds, or always exclude test accounts. Keep them short, specific, and unambiguous. Long, rambling instructions tend to hurt more than help.&lt;BR /&gt;Example SQL queries. When a question has a known correct answer, you can provide the question and the SQL that answers it. Genie uses these as patterns. This is especially powerful for questions that require non-obvious logic, such as a particular way of computing retention, or a multi-step calculation that should always be done the same way.&lt;BR /&gt;Reusable SQL expressions and functions. For metrics and definitions that appear repeatedly, such as active customer or gross margin, you can define them once and let Genie reuse them. This is how you stop every conversation from reinventing a key business definition slightly differently.&lt;BR /&gt;Trusted assets. Parameterized queries and functions that you have vetted can be marked as trusted. When a user's question matches one, the response can be flagged as coming from a verified source. For leadership-facing numbers, this distinction matters a great deal.&lt;BR /&gt;The skill to build here is diagnosis. When Genie gets something wrong, ask which kind of problem it is:&lt;BR /&gt;1. A metadata problem. The column names or comments are misleading. Fix the table documentation.&lt;BR /&gt;2. A definition problem. Genie does not know how your business defines a term. Add an instruction or a reusable expression.&lt;BR /&gt;3. A pattern problem. The logic is complex and Genie keeps getting it slightly wrong. Add an example query.&lt;BR /&gt;4. A scope problem. The question is outside what the space was designed to answer. Tell users, or expand the space deliberately.&lt;BR /&gt;New developers often reach for the same fix every time, usually piling more instructions into the general text box. Learning to match the fix to the failure is what separates a space that slowly improves from one that slowly becomes a mess.&lt;BR /&gt;Stage Four: Measure Quality Instead of Guessing&lt;BR /&gt;It is easy to tweak a Genie space, ask a few questions, and decide it feels better. It is much harder, and much more valuable, to know whether it is better.&lt;BR /&gt;This is where benchmarks come in. A benchmark is a set of questions paired with the SQL you consider the correct answer. You run the benchmark against your space, and Genie reports how its answers compare. Each time you change instructions, add an example, or edit table descriptions, you rerun the benchmark and see whether the score moved and which questions flipped.&lt;BR /&gt;A good way to build your first benchmark:&lt;BR /&gt;• Start with the failures you collected in Stage One and Stage Two.&lt;BR /&gt;• Add the ten to twenty questions your real users ask most often.&lt;BR /&gt;• Include a few deliberately tricky ones: ambiguous terms, edge cases, questions that need multiple joins.&lt;BR /&gt;• Write the reference SQL carefully, and have a domain expert review it. A benchmark with wrong answers is worse than no benchmark.&lt;BR /&gt;Also learn to use the feedback and monitoring tools. Users can mark answers as helpful or not, and space owners can review conversations to see what people are really asking. Real usage almost always surprises you. People ask questions you did not anticipate, use vocabulary you did not document, and expect the space to cover areas you never intended. Reviewing those conversations regularly is the cheapest source of improvement ideas you will ever have.&lt;BR /&gt;There is a mindset shift here worth naming. Traditional software has tests that pass or fail. A natural language interface has a pass rate that you push upward over time. Developers who accept that early, and who invest in evaluation before they invest in polish, tend to ship spaces that people actually trust.&lt;BR /&gt;Stage Five: Go Programmatic&lt;BR /&gt;Once you are comfortable building and evaluating spaces in the interface, the next step is treating Genie as a service you can call from code.&lt;BR /&gt;Databricks provides a Genie Conversation API that lets you start conversations, send messages, and retrieve results programmatically. That opens up a range of practical projects:&lt;BR /&gt;• A chat experience inside an internal web app or portal, so people can ask data questions without leaving the tool they already use.&lt;BR /&gt;• A Slack or Teams bot that answers common metric questions.&lt;BR /&gt;• Automated workflows that ask Genie a question on a schedule and route the answer somewhere useful.&lt;BR /&gt;• A component inside a larger agent that decides when a question needs structured data and hands it to Genie.&lt;BR /&gt;If you are learning the API, begin with the simplest possible script: authenticate, send one question to a space, wait for the response, and print the generated SQL and the result. Then add conversation follow-ups. Then add error handling for the cases where a query fails or returns nothing. Only after that should you think about wrapping it in an application.&lt;BR /&gt;A few practical lessons come up repeatedly. Authentication choices matter, because whether queries run as the end user or as a service identity determines what data comes back. Warehouse sizing and startup time affect how snappy the experience feels. And responses can be asynchronous, so your code needs to handle polling or waiting gracefully rather than assuming an instant answer.&lt;BR /&gt;Because Databricks is investing heavily in agent tooling, it is worth keeping an eye on how Genie fits into multi-agent setups, where one agent orchestrates several specialized ones and Genie handles the structured data questions. The details of those products change quickly, so treat the current documentation as your source of truth rather than any blog post, including this one.&lt;BR /&gt;Common Mistakes New Developers Make&lt;BR /&gt;After watching enough people learn Genie, the same mistakes show up again and again.&lt;BR /&gt;Adding too many tables. More tables mean more ambiguity. If two tables could plausibly answer the same question, Genie may pick the wrong one. Start narrow and expand only when you have a reason.&lt;BR /&gt;Skipping documentation. Developers who would never ship an undocumented API often ship an undocumented table to Genie. Column comments are not decoration. They are the interface.&lt;BR /&gt;Writing enormous instruction blocks. Instructions compete for attention. A dozen crisp rules beat three pages of prose. If an instruction is really a specific query pattern, make it an example SQL instead.&lt;BR /&gt;Trusting without verifying. Genie is good, not infallible. For anything that drives a decision, check the SQL, compare against a known number, or use a trusted asset. Teach your users the same habit.&lt;BR /&gt;Ignoring governance. Because Genie respects Unity Catalog permissions, a space is only as safe as the access controls behind it. Review who can see what before you share a space widely.&lt;BR /&gt;Treating launch as the finish line. A Genie space is a living thing. Data changes, the business changes, and users find new questions. Plan for ongoing maintenance from day one.&lt;BR /&gt;Where to Learn: A Realistic Resource Mix&lt;BR /&gt;No single resource will carry you through every stage, so mix a few.&lt;BR /&gt;The official Databricks documentation is the foundation. It is the most current source for how spaces are configured, what the instruction types are, and how the API behaves. Read the sections on setting up a space and on benchmarks closely.&lt;BR /&gt;Databricks Academy and the learning paths on the Databricks site offer structured courses on AI/BI and related topics, some of them free. They are useful for filling gaps in the surrounding platform, such as Unity Catalog and SQL warehouses, which Genie depends on.&lt;BR /&gt;The Databricks blog and community forums are where you find real-world patterns and war stories. Search for posts about improving Genie accuracy, and read the questions other developers ask. Seeing the problems other people hit is a shortcut to avoiding them.&lt;BR /&gt;Product release notes deserve a place on your reading list too. Genie evolves quickly, and features that were missing or in preview when you started may be generally available by the time you need them. When a tutorial seems out of date, the release notes will tell you why.&lt;BR /&gt;Finally, build something real. The most effective learning comes from pointing Genie at data you actually understand, such as a work dataset or a personal project, because you can instantly tell when an answer is wrong.&lt;BR /&gt;A 30-Day Plan for a New Developer&lt;BR /&gt;If you want a concrete schedule, here is one that works well.&lt;BR /&gt;Week one: use and observe. Get access to a Genie space or a sample workspace. Ask at least fifty questions. Read every generated query. Keep a log of failures and surprises. Skim the documentation overview so the vocabulary is familiar.&lt;BR /&gt;Week two: build. Choose one domain and three to five tables. Clean up names, add comments, and create your first space with a description and sample questions. Test it with the failures from week one and with questions from a real colleague.&lt;BR /&gt;Week three: teach and measure. Add general instructions, example queries, and reusable definitions based on the failures you see. Build a benchmark of at least fifteen questions and record a baseline score. Make changes one at a time and rerun the benchmark so you can tell which changes helped.&lt;BR /&gt;Week four: integrate and share. Write a small script against the Conversation API. Review conversations from your first real users. Decide what to improve next, and write down the lessons you have learned for the next person who joins the team.&lt;BR /&gt;By the end of those thirty days, you will have gone from curious to capable, with a working space, a measured quality baseline, and a handle on the programmatic side.&lt;BR /&gt;The Bigger Lesson&lt;BR /&gt;The most useful thing new developers learn from Genie is not about Genie at all. It is that natural language interfaces to data are a data quality and data modeling problem wearing a friendly disguise. The clearer your tables, definitions, and metrics are, the better any AI system will perform on top of them. The work you do to make Genie reliable, such as naming things well, documenting them, agreeing on definitions, and testing against known answers, also makes your analytics better for humans.&lt;BR /&gt;That is why learning Genie is worth the effort even if the product changes. The habits transfer: curate before you automate, show your work, measure instead of guessing, and treat quality as something you improve continuously.&lt;BR /&gt;Start small, read the SQL, and build one space you would be proud to hand to a colleague. The rest follows from there.&lt;/P&gt;</description>
      <pubDate>Sat, 17 Oct 2026 13:45:11 GMT</pubDate>
      <guid>https://community.databricks.com/t5/community-articles/how-new-developers-learn-databricks-genie-a-practical-learning/m-p/173712#M1837</guid>
      <dc:creator>aayush_410</dc:creator>
      <dc:date>2026-10-17T13:45:11Z</dc:date>
    </item>
  </channel>
</rss>

