<?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>topic How execute SET spark.sql.sources.partitionOverwriteMode = dynamic; in SQL Stored procedures in Data Engineering</title>
    <link>https://community.databricks.com/t5/data-engineering/how-execute-set-spark-sql-sources-partitionoverwritemode-dynamic/m-p/158432#M54707</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am able to execute the I&lt;SPAN&gt;NSERT&lt;/SPAN&gt; &lt;SPAN&gt;OVERWRITE&lt;/SPAN&gt; &lt;SPAN&gt;TABLE&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;lt;tables&amp;gt; P&lt;/SPAN&gt;&lt;SPAN&gt;ARTITION command , in a notebook cell&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt; &lt;SPAN&gt;spark&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sql&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sources&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;partitionOverwriteMode&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;dynamic;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;DECLARE&lt;/SPAN&gt; &lt;SPAN&gt;OR&lt;/SPAN&gt; &lt;SPAN&gt;REPLACE&lt;/SPAN&gt; &lt;SPAN&gt;VARIABLE&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date &lt;/SPAN&gt;&lt;SPAN&gt;DATE&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt; &lt;SPAN&gt;VAR&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;DATE&lt;/SPAN&gt; &lt;SPAN&gt;'2026-05-03'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;INSERT&lt;/SPAN&gt; &lt;SPAN&gt;OVERWRITE&lt;/SPAN&gt; &lt;SPAN&gt;TABLE&lt;/SPAN&gt;&lt;SPAN&gt; sil_test_rg &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;PARTITION&lt;/SPAN&gt;&lt;SPAN&gt; (bed)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SELECT&lt;/SPAN&gt; &lt;SPAN&gt;*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;SPAN&gt; brz_test_rg&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; bed &lt;/SPAN&gt;&lt;SPAN&gt;IN&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SELECT DISTINCT&lt;/SPAN&gt;&lt;SPAN&gt; bed&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;SPAN&gt; brz_test_rg&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Once I converted the code to a stored procedure, I dont have the REPLACE functionality,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried wrapping the command "SET spark.sql.sources.partitionOverwriteMode = dynamic" in a&amp;nbsp;execute immediate statement, but it doesn't help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BEGIN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN&gt; slv_ingest_dt &lt;/SPAN&gt;&lt;SPAN&gt;DATE&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt;&lt;SPAN&gt; slv_ingest_dt &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;cast&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'2026-05-03'&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;date&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;execute&lt;/SPAN&gt; &lt;SPAN&gt;immediate&lt;/SPAN&gt; &lt;SPAN&gt;'SET spark.sql.sources.partitionOverwriteMode=dynamic'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;CALL&lt;/SPAN&gt;&lt;SPAN&gt; ingest_silver_table(&lt;/SPAN&gt;&lt;SPAN&gt;'sil_test_rg'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;'brz_test_rg'&lt;/SPAN&gt;&lt;SPAN&gt;,slv_ingest_dt);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;How do I use the SELECTIVE OVERWRITE option in stored procedures ?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
    <pubDate>Fri, 05 Jun 2026 21:28:24 GMT</pubDate>
    <dc:creator>RGSLCA</dc:creator>
    <dc:date>2026-06-05T21:28:24Z</dc:date>
    <item>
      <title>How execute SET spark.sql.sources.partitionOverwriteMode = dynamic; in SQL Stored procedures</title>
      <link>https://community.databricks.com/t5/data-engineering/how-execute-set-spark-sql-sources-partitionoverwritemode-dynamic/m-p/158432#M54707</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am able to execute the I&lt;SPAN&gt;NSERT&lt;/SPAN&gt; &lt;SPAN&gt;OVERWRITE&lt;/SPAN&gt; &lt;SPAN&gt;TABLE&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;&amp;lt;tables&amp;gt; P&lt;/SPAN&gt;&lt;SPAN&gt;ARTITION command , in a notebook cell&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt; &lt;SPAN&gt;spark&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sql&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;sources&lt;/SPAN&gt;&lt;SPAN&gt;.&lt;/SPAN&gt;&lt;SPAN&gt;partitionOverwriteMode&lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt;dynamic;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;DECLARE&lt;/SPAN&gt; &lt;SPAN&gt;OR&lt;/SPAN&gt; &lt;SPAN&gt;REPLACE&lt;/SPAN&gt; &lt;SPAN&gt;VARIABLE&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date &lt;/SPAN&gt;&lt;SPAN&gt;DATE&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt; &lt;SPAN&gt;VAR&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;DATE&lt;/SPAN&gt; &lt;SPAN&gt;'2026-05-03'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;INSERT&lt;/SPAN&gt; &lt;SPAN&gt;OVERWRITE&lt;/SPAN&gt; &lt;SPAN&gt;TABLE&lt;/SPAN&gt;&lt;SPAN&gt; sil_test_rg &lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;PARTITION&lt;/SPAN&gt;&lt;SPAN&gt; (bed)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;SELECT&lt;/SPAN&gt; &lt;SPAN&gt;*&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;SPAN&gt; brz_test_rg&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; bed &lt;/SPAN&gt;&lt;SPAN&gt;IN&lt;/SPAN&gt;&lt;SPAN&gt; (&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SELECT DISTINCT&lt;/SPAN&gt;&lt;SPAN&gt; bed&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;FROM&lt;/SPAN&gt;&lt;SPAN&gt; brz_test_rg&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;WHERE&lt;/SPAN&gt;&lt;SPAN&gt; load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;)&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;and&lt;/SPAN&gt;&lt;SPAN&gt; load_date &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt;&lt;SPAN&gt; v_load_date;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;Once I converted the code to a stored procedure, I dont have the REPLACE functionality,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried wrapping the command "SET spark.sql.sources.partitionOverwriteMode = dynamic" in a&amp;nbsp;execute immediate statement, but it doesn't help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;BEGIN&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;DECLARE&lt;/SPAN&gt;&lt;SPAN&gt; slv_ingest_dt &lt;/SPAN&gt;&lt;SPAN&gt;DATE&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;SET&lt;/SPAN&gt;&lt;SPAN&gt; slv_ingest_dt &lt;/SPAN&gt;&lt;SPAN&gt;=&lt;/SPAN&gt; &lt;SPAN&gt;cast&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;'2026-05-03'&lt;/SPAN&gt; &lt;SPAN&gt;as&lt;/SPAN&gt; &lt;SPAN&gt;date&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;execute&lt;/SPAN&gt; &lt;SPAN&gt;immediate&lt;/SPAN&gt; &lt;SPAN&gt;'SET spark.sql.sources.partitionOverwriteMode=dynamic'&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;BR /&gt;&lt;DIV&gt;&lt;SPAN&gt;&amp;nbsp; &amp;nbsp; &lt;/SPAN&gt;&lt;SPAN&gt;CALL&lt;/SPAN&gt;&lt;SPAN&gt; ingest_silver_table(&lt;/SPAN&gt;&lt;SPAN&gt;'sil_test_rg'&lt;/SPAN&gt;&lt;SPAN&gt;,&lt;/SPAN&gt;&lt;SPAN&gt;'brz_test_rg'&lt;/SPAN&gt;&lt;SPAN&gt;,slv_ingest_dt);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;END&lt;/SPAN&gt;&lt;SPAN&gt;;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;How do I use the SELECTIVE OVERWRITE option in stored procedures ?&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Fri, 05 Jun 2026 21:28:24 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-execute-set-spark-sql-sources-partitionoverwritemode-dynamic/m-p/158432#M54707</guid>
      <dc:creator>RGSLCA</dc:creator>
      <dc:date>2026-06-05T21:28:24Z</dc:date>
    </item>
    <item>
      <title>Re: How execute SET spark.sql.sources.partitionOverwriteMode = dynamic; in SQL Stored procedures</title>
      <link>https://community.databricks.com/t5/data-engineering/how-execute-set-spark-sql-sources-partitionoverwritemode-dynamic/m-p/158442#M54710</link>
      <description>&lt;P&gt;Hello&amp;nbsp;&lt;a href="https://community.databricks.com/t5/user/viewprofilepage/user-id/233222"&gt;@RGSLCA&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;The short answer is that you can't make &lt;CODE class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]"&gt;SET spark.sql.sources.partitionOverwriteMode=dynamic&lt;/CODE&gt; work from a stored procedure running on a SQL warehouse or serverless. That dynamic partition overwrite path is legacy, and it's SQL-supported on classic compute only, so the engine just ignores it everywhere else. EXECUTE IMMEDIATE won't rescue you either, because this is a compute support issue, not a string execution one. The reason it worked in your notebook is that the notebook was attached to a classic all-purpose cluster.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;The supported, compute-independent replacement is INSERT ... REPLACE USING. Rewrite your overwrite this way, with no SET and no EXECUTE IMMEDIATE:&lt;/P&gt;
&lt;DIV class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" tabindex="0" role="group" aria-label="sql code"&gt;
&lt;DIV class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;DIV class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;
&lt;DIV class="relative"&gt;
&lt;DIV class="absolute inset-0 flex items-center justify-center"&gt;
&lt;DIV class="transition-all opacity-0 scale-50"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="text-text-500 font-small p-3.5 pb-0"&gt;sql&lt;/DIV&gt;
&lt;DIV class="overflow-x-auto"&gt;
&lt;PRE class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;CODE class="language-sql"&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;INTO&lt;/SPAN&gt; sil_test_rg
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;REPLACE&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;USING&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;(&lt;/SPAN&gt;bed&lt;SPAN class="token token"&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;*&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;FROM&lt;/SPAN&gt; brz_test_rg
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;WHERE&lt;/SPAN&gt; load_date &lt;SPAN class="token token"&gt;=&lt;/SPAN&gt; slv_ingest_dt&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;That replaces every existing row in sil_test_rg whose bed value shows up in the day's data and leaves all other bed partitions untouched, which is exactly what your dynamic partition overwrite was doing.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;The change belongs inside ingest_silver_table, since that's where the actual INSERT OVERWRITE lives. Because that procedure receives the table names as parameters, wrap them in IDENTIFIER():&lt;/P&gt;
&lt;DIV class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" tabindex="0" role="group" aria-label="sql code"&gt;
&lt;DIV class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;DIV class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;
&lt;DIV class="relative"&gt;
&lt;DIV class="transition-all opacity-100 scale-100"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class="absolute inset-0 flex items-center justify-center"&gt;
&lt;DIV class="transition-all opacity-0 scale-50"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="text-text-500 font-small p-3.5 pb-0"&gt;sql&lt;/DIV&gt;
&lt;DIV class="overflow-x-auto"&gt;
&lt;PRE class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;CODE class="language-sql"&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;INSERT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;INTO&lt;/SPAN&gt; IDENTIFIER&lt;SPAN class="token token"&gt;(&lt;/SPAN&gt;p_target_table&lt;SPAN class="token token"&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;REPLACE&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;USING&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;(&lt;/SPAN&gt;bed&lt;SPAN class="token token"&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;SELECT&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;*&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;FROM&lt;/SPAN&gt; IDENTIFIER&lt;SPAN class="token token"&gt;(&lt;/SPAN&gt;p_source_table&lt;SPAN class="token token"&gt;)&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;WHERE&lt;/SPAN&gt; load_date &lt;SPAN class="token token"&gt;=&lt;/SPAN&gt; p_ingest_dt&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;Your outer procedure then drops the SET entirely:&lt;/P&gt;
&lt;DIV class="relative group/copy bg-bg-000/50 border-0.5 border-border-400 rounded-lg focus:outline-none focus-visible:ring-2 focus-visible:ring-accent-100" tabindex="0" role="group" aria-label="sql code"&gt;
&lt;DIV class="sticky opacity-0 group-hover/copy:opacity-100 group-focus-within/copy:opacity-100 top-2 py-2 h-12 w-0 float-right"&gt;
&lt;DIV class="absolute right-0 h-8 px-2 items-center inline-flex z-10"&gt;
&lt;DIV class="relative"&gt;
&lt;DIV class="absolute inset-0 flex items-center justify-center"&gt;
&lt;DIV class="transition-all opacity-0 scale-50"&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;DIV class="text-text-500 font-small p-3.5 pb-0"&gt;sql&lt;/DIV&gt;
&lt;DIV class="overflow-x-auto"&gt;
&lt;PRE class="code-block__code !my-0 !rounded-lg !text-sm !leading-relaxed p-3.5"&gt;&lt;CODE class="language-sql"&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;BEGIN&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class="token token"&gt;DECLARE&lt;/SPAN&gt; slv_ingest_dt &lt;SPAN class="token token"&gt;DATE&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class="token token"&gt;SET&lt;/SPAN&gt; slv_ingest_dt &lt;SPAN class="token token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;DATE&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;'2026-05-03'&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;  &lt;SPAN class="token token"&gt;CALL&lt;/SPAN&gt; ingest_silver_table&lt;SPAN class="token token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;'sil_test_rg'&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;,&lt;/SPAN&gt; &lt;SPAN class="token token"&gt;'brz_test_rg'&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;,&lt;/SPAN&gt; slv_ingest_dt&lt;SPAN class="token token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;SPAN&gt;&lt;SPAN class="token token"&gt;END&lt;/SPAN&gt;&lt;SPAN class="token token"&gt;;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;A few version and behavior notes, because they matter for REPLACE USING:&lt;/P&gt;
&lt;OL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;REPLACE USING for SQL needs Databricks Runtime 16.3 or later (Python and Scala need 18.2 or later).&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;On DBR 16.3 through 17.1 you get the legacy behavior: only dynamic partition overwrites, and you have to list the full set of the table's partition columns in USING. Since bed is your partition column, REPLACE USING (bed) satisfies that and works on 16.3 and up.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;On DBR 17.2 and later you get the broader dynamic data overwrite. USING can name any columns, and partitioned, unpartitioned, and liquid-clustered tables are all supported.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Empty source is safe. REPLACE USING doesn't delete any rows when the SELECT returns nothing, so it won't blank out a partition on a zero-row day. That's the same net effect as your dynamic partition overwrite.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;One safety note: the docs ask you to validate that the written data only touches the expected bed values. A stray row in the wrong partition will overwrite that whole partition.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;If REPLACE USING doesn't fit your case, you have a few alternatives.&lt;/P&gt;
&lt;OL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;INSERT INTO ... REPLACE WHERE &amp;lt;predicate&amp;gt; works on SQL from DBR 12.2 LTS and up, on all compute. It's a good fit when you have a fixed predicate like load_date = '2026-05-03'. One caveat: with an empty source, REPLACE WHERE can delete rows.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;REPLACE ON (&amp;lt;NULL-safe condition&amp;gt;) works on SQL from DBR 17.1 and up, but only reach for it if you need NULL-safe or more complex match logic.&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;If you truly have to keep INSERT OVERWRITE ... PARTITION with partitionOverwriteMode=dynamic, run the procedure on classic compute rather than a SQL warehouse or serverless. Databricks labels this legacy and not recommended for new workloads, so I'd treat it as a last resort.&lt;/LI&gt;
&lt;/OL&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;Regards, Louis.&lt;/P&gt;
&lt;P class="font-claude-response-body break-words whitespace-normal leading-[1.7]"&gt;Sources used in my research:&lt;/P&gt;
&lt;OL class="[li_&amp;amp;]:mb-0 [li_&amp;amp;]:mt-1 [li_&amp;amp;]:gap-1 [&amp;amp;:not(:last-child)_ul]:pb-1 [&amp;amp;:not(:last-child)_ol]:pb-1 list-decimal flex flex-col gap-1 pl-8 mb-3"&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Selectively overwrite data with Delta Lake, Databricks on AWS: &lt;A class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://docs.databricks.com/aws/en/delta/selective-overwrite" target="_blank"&gt;https://docs.databricks.com/aws/en/delta/selective-overwrite&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;Selectively overwrite data with Delta Lake, Azure Databricks (Microsoft Learn): &lt;A class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://learn.microsoft.com/en-us/azure/databricks/delta/selective-overwrite" target="_blank"&gt;https://learn.microsoft.com/en-us/azure/databricks/delta/selective-overwrite&lt;/A&gt;&lt;/LI&gt;
&lt;LI class="font-claude-response-body whitespace-normal break-words pl-2"&gt;INSERT, Databricks SQL language reference: &lt;A class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://docs.databricks.com/aws/en/sql/language-manual/sql-ref-syntax-dml-insert-into" target="_blank"&gt;https://docs.databricks.com/aws/en/sql/language-manual/sql-ref-syntax-dml-insert-into&lt;/A&gt;&lt;/LI&gt;
&lt;/OL&gt;</description>
      <pubDate>Sat, 06 Jun 2026 00:31:20 GMT</pubDate>
      <guid>https://community.databricks.com/t5/data-engineering/how-execute-set-spark-sql-sources-partitionoverwritemode-dynamic/m-p/158442#M54710</guid>
      <dc:creator>Louis_Frolio</dc:creator>
      <dc:date>2026-06-06T00:31:20Z</dc:date>
    </item>
  </channel>
</rss>

