<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RudderStack Docs – Incremental SQL Models</title><link>https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/</link><description>Recent content in Incremental SQL Models on RudderStack Docs</description><generator>Hugo -- gohugo.io</generator><language>en</language><atom:link href="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/index.xml" rel="self" type="application/rss+xml"/><item><title>Archive: DeRef Reference</title><link>https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/</guid><description>
&lt;p>This reference provides complete syntax and usage information for &lt;code>this.DeRef()&lt;/code> in incremental SQL models.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="overview" data-heading="Overview" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h2 id="overview">Overview&lt;/h2>&lt;p>&lt;code>this.DeRef()&lt;/code> references other models, creates dependency relationships, and enables incremental processing by referencing previous materializations.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="parameter-reference" data-heading="Parameter reference" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h2 id="parameter-reference">Parameter reference&lt;/h2>&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Parameter&lt;/th>
&lt;th>Type&lt;/th>
&lt;th>&lt;div style="width:350px">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>dependency&lt;/code>&lt;/td>
&lt;td>String&lt;/td>
&lt;td>Specifies the dependency type:&lt;br />&lt;ul>&lt;li>&lt;code>&amp;quot;normal&amp;quot;&lt;/code>: Mandatory&lt;/li>&lt;li>&lt;code>&amp;quot;optional&amp;quot;&lt;/code>: Use if exists&lt;/li>&lt;li>&lt;code>&amp;quot;coercive&amp;quot;&lt;/code>: Prefer to create&lt;/li>&lt;/ul> &lt;br />&lt;strong>Default&lt;/strong>: &lt;code>&amp;quot;normal&amp;quot;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>pre_existing&lt;/code>&lt;/td>
&lt;td>Boolean&lt;/td>
&lt;td>When &lt;code>true&lt;/code>, references a previous materialization of the model (typically the current model itself for incremental processing). Should be used with &lt;code>dependency=&amp;quot;optional&amp;quot;&lt;/code> and &lt;code>checkpoint_name&lt;/code> to specify the baseline context. &lt;br />&lt;strong>Default&lt;/strong>: &lt;code>false&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>prereqs&lt;/code>&lt;/td>
&lt;td>Array&lt;/td>
&lt;td>Prerequisites that must be met before referencing. Use &lt;code>.Except()&lt;/code> for negative prerequisites &lt;br />&lt;br />&lt;strong>Default&lt;/strong>: &lt;code>[]&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>baseline_name&lt;/code>&lt;/td>
&lt;td>String&lt;/td>
&lt;td>Baseline context name for incremental processing (must match &lt;code>checkpoint_name&lt;/code>). Used when referencing delta models to specify which baseline checkpoint to use for delta computation. &lt;br />&lt;br />&lt;strong>Default&lt;/strong>: &lt;code>&amp;quot;&amp;quot;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>checkpoint_name&lt;/code>&lt;/td>
&lt;td>String&lt;/td>
&lt;td>Checkpoint name for context management. When using &lt;code>pre_existing=true&lt;/code>, this names the checkpoint context for referencing previous materializations. &lt;br />&lt;br />&lt;strong>Default&lt;/strong>: &lt;code>&amp;quot;&amp;quot;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>time_grain_spec&lt;/code>&lt;/td>
&lt;td>String&lt;/td>
&lt;td>Time grain: &lt;code>&amp;quot;hourly&amp;quot;&lt;/code>, &lt;code>&amp;quot;daily&amp;quot;&lt;/code>, &lt;code>&amp;quot;weekly&amp;quot;&lt;/code>, &lt;code>&amp;quot;monthly&amp;quot;&lt;/code>, &lt;code>&amp;quot;yearly&amp;quot;&lt;/code> &lt;br />&lt;br />&lt;strong>Default&lt;/strong>: &lt;code>&amp;quot;&amp;quot;&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>skip_dependency&lt;/code>&lt;/td>
&lt;td>Boolean&lt;/td>
&lt;td>Skip dependency registration &lt;br />&lt;strong>Default&lt;/strong>: &lt;code>false&lt;/code>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>contract&lt;/code>&lt;/td>
&lt;td>Contract object&lt;/td>
&lt;td>Contract specification for model validation &lt;br />&lt;br />&lt;strong>Default&lt;/strong>: &lt;code>null&lt;/code>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="returned-object-methods" data-heading="Returned object methods" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="returned-object-methods">Returned object methods&lt;/h3>&lt;p>The object returned by &lt;code>this.DeRef()&lt;/code> provides these methods:&lt;/p>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Method&lt;/th>
&lt;th>&lt;div style="width:350px">Description&lt;/div>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>.IsEnabled()&lt;/code>&lt;/td>
&lt;td>Returns &lt;code>true&lt;/code> if the model is enabled and available. Returns &lt;code>false&lt;/code> if &lt;code>IsNil()&lt;/code> is &lt;code>true&lt;/code> or if enablement status is not &lt;code>enabled=true&lt;/code>. Prefer using &lt;code>.IsEnabled()&lt;/code> in conditions to check if a model is available.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.IsNil()&lt;/code>&lt;/td>
&lt;td>Returns &lt;code>true&lt;/code> if the checkpoint itself wasn&amp;rsquo;t found. This is a structural check for missing checkpoints and is rarely used.&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>.Except()&lt;/code>&lt;/td>
&lt;td>Creates a negative prerequisite. Use in &lt;code>prereqs&lt;/code> to proceed only when the model does not exist.&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="usage" data-heading="Usage" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h2 id="usage">Usage&lt;/h2>&lt;p>This section explains some common usage patterns for &lt;code>this.DeRef()&lt;/code>.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="basic-model-reference" data-heading="Basic model reference" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="basic-model-reference">Basic model reference&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">with&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">users&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/users&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">users&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">endwith&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="optional-dependency" data-heading="Optional dependency" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="optional-dependency">Optional dependency&lt;/h3>&lt;p>Use &lt;code>dependency=&amp;quot;optional&amp;quot;&lt;/code> when the model may not exist. You can check if the model is enabled using &lt;code>.IsEnabled()&lt;/code> method:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">with&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">optional_model&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;models/optional_feature&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependency&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;optional&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">optional_model&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">IsEnabled&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">optional_model&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">else&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s1">&amp;#39;Feature not available&amp;#39;&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">status&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">endif&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">endwith&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="reference-with-contract" data-heading="Reference with contract" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="reference-with-contract">Reference with contract&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">contract&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">BuildContract&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s1">&amp;#39;{&amp;#34;is_event_stream&amp;#34;: false, &amp;#34;with_columns&amp;#34;:[{&amp;#34;name&amp;#34;:&amp;#34;user_id&amp;#34;}]}&amp;#39;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">with&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/events&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">contract&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">contract&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_id&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">COUNT&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">as&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">event_count&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">GROUP&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">BY&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">user_id&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">endwith&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="incremental-sql-model-pattern" data-heading="Incremental SQL model pattern" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="incremental-sql-model-pattern">Incremental SQL model pattern&lt;/h3>&lt;p>The standard pattern for incremental SQL models is shown:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="err">{&lt;/span>&lt;span class="o">%-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">rootIncrementalPreReqs&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="n">RootIncrementalPreReqs&lt;/span>&lt;span class="p">()&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%-&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lastThis&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="n">pre_existing&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="k">true&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependency&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;optional&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">checkpoint_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;baseline&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="n">rootIncrementalPreReqs&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">-%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events_delta&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/events/incr_delta_tbl&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependency&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;coercive&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">baseline_name&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;baseline&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">lastThis&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events_full&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/events&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">events_delta&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">Except&lt;/span>&lt;span class="p">()])&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">All&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">before&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">line&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">Note&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">that&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">should&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">not&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">be&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">put&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">in&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">conditionals&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">mark&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependencies&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">—&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">use&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">for&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">conditional&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependencies&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">#&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">if&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lastThis&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">-- Incremental mode: merge with baseline
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">lastThis&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">UNION&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">ALL&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events_delta&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">else&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w"> &lt;/span>&lt;span class="c1">-- Full refresh mode: process all data
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">SELECT&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">*&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">FROM&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">events_full&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">endif&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>&lt;strong>How it works&lt;/strong>&lt;/p>
&lt;ol>
&lt;li>&lt;strong>lastThis&lt;/strong>: References the previous materialization using &lt;code>pre_existing=true&lt;/code>. Returns &lt;code>nil&lt;/code> if no baseline exists.&lt;/li>
&lt;li>&lt;strong>events_delta&lt;/strong>: Delta table (new data since baseline). Only enabled when &lt;code>lastThis&lt;/code> exists (via &lt;code>prereqs=[lastThis]&lt;/code>). Uses &lt;code>baseline_name&lt;/code> to specify which baseline checkpoint to compare against.&lt;/li>
&lt;li>&lt;strong>events_full&lt;/strong>: Full input table. Only enabled when &lt;code>events_delta&lt;/code> does NOT exist (via &lt;code>prereqs=[events_delta.Except()]&lt;/code>).&lt;/li>
&lt;li>&lt;strong>Conditional logic&lt;/strong>: If &lt;code>lastThis&lt;/code> exists, merge with delta; otherwise, process full data.&lt;/li>
&lt;/ol>
&lt;!DOCTYPE html>
&lt;html lang="en">
&lt;blockquote class="tip">
&lt;div class="tip-quote">
&lt;img src=https://www.rudderstack.com/docs/docs/images/tip.svg loading="lazy" alt="tip" decoding="async" class="img__small" style="margin-top: 3px; width: 20px;height: 16px;" />
&lt;div class="tip-text">&lt;strong>Tip:&lt;/strong>
Always declare all &lt;code>this.DeRef()&lt;/code> calls together at the top of your template, not inside conditionals. Use &lt;code>prereqs&lt;/code> to chain conditional evaluation instead.&lt;/div>
&lt;/div>
&lt;/blockquote>
&lt;/html>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="prerequisites-for-conditional-dependencies" data-heading="Prerequisites for conditional dependencies" data-level="3" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h3 id="prerequisites-for-conditional-dependencies">Prerequisites for conditional dependencies&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-sql" data-lang="sql">&lt;span class="line">&lt;span class="cl">&lt;span class="c1">-- Ensure specific models exist before referencing
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;models/target&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">model1&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">model2&lt;/span>&lt;span class="p">])&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="c1">-- Negative prerequisite - only proceed if specified model does NOT exist
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="c1">&lt;/span>&lt;span class="err">{&lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="k">set&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">deltaInputVarTable&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/events/incr_delta_tbl/var_table&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">dependency&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="s2">&amp;#34;optional&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="o">%&lt;/span>&lt;span class="err">}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="err">{{&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">this&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">DeRef&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s2">&amp;#34;inputs/events/var_table&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="n">prereqs&lt;/span>&lt;span class="o">=&lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="n">deltaInputVarTable&lt;/span>&lt;span class="p">.&lt;/span>&lt;span class="k">Except&lt;/span>&lt;span class="p">()])&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="err">}}&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>For &lt;code>is_append_only&lt;/code> input models, Profiles automatically creates delta models at &lt;code>/path/to/input/incr_delta_tbl&lt;/code>. Prerequisites determine the SQL generation strategy based on the availability of these incremental artifacts.&lt;/p>
&lt;!-- end-chunk -->
&lt;!-- begin-chunk data-anchor="see-more" data-heading="See more" data-level="2" data-permalink="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/deref-reference/" data-title="DeRef Reference" -->
&lt;h2 id="see-more">See more&lt;/h2>&lt;ul>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/incremental-sql-models/" >Incremental SQL Models&lt;/a>: Overview of incremental SQL models&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/archive/profiles/0.25/concepts/incremental-features/checkpoints-and-baselines/" >Checkpoints and Baselines&lt;/a>: Understand checkpoints and baselines&lt;/li>
&lt;li>&lt;a href="https://www.rudderstack.com/docs/archive/profiles/0.25/dev-docs/incremental-features/make-features-incremental/" >How to Make Features Incremental&lt;/a>: Step-by-step guide to convert features to incremental&lt;/li>
&lt;/ul></description></item></channel></rss>