Transformation patterns and load settings

A pattern decides how each run writes rows into a Dimension or Fact table. Use this page to pick the right pattern, set its periodic options and tune the query execution settings of a transformation.

Choose a pattern

Choose the Table first. The pattern list follows the table type, and Diff Delete and Diff Update also depend on the Source System.

  1. Open the transformation and go to Transformation > General.
  2. In Configuration, choose the Table, then the Source System.
  3. Open Pattern. Each option shows what it does under its name.
TablePatternWhat it does
DimensionFull ReloadInserts new records, updates existing changed ones and deletes records that no longer exist.
DimensionDiff UpsertInserts new and updates existing records based on keys.
DimensionDiff InsertOnly inserts new records that don't already exist.
DimensionDiff DeleteDeletes records that no longer exist in the source.
DimensionDiff UpdateUpdates existing records where changes are detected.
FactTruncate Insert (Full)Completely clears and reloads the entire dataset.
FactTruncate Insert (Periodic)Clears the table periodically and inserts new data.
FactDiff Insert (Periodic)Inserts only new records on a scheduled basis.
FactTruncate Insert (Periodic Loop)Clears the table periodically and inserts new data within a looped daily schedule.

Diff Delete and Diff Update appear only when the Dimension already has a transformation for the same source system.

Each pattern decides which of a run's marked rows reach the table. How Dimension and Fact runs write data maps every pattern to the rows it writes.

Note

A Dimension table never loses rows physically. Full Reload and Diff Delete set the Delete Flag column to true instead. The pattern's own note reads: "Delete means Updating "Delete Flag" column value to true, physical Delete never happens in Dimension tables."

Important

The pattern cannot be changed once the transformation is created. The Pattern field stays locked, and the server refuses a change.

For the Lake load patterns, which work differently, see Choose a sync type.

Set the periodic options

The three periodic patterns are Truncate Insert (Periodic), Diff Insert (Periodic) and Truncate Insert (Periodic Loop). When you pick one, their fields appear under Source System and Pattern in Configuration, and Synchronize Days is set to 1.

SettingWhat it doesDefault
Synchronize DaysHow many days of data each run synchronizes. Required for periodic patterns. Takes a whole number from 0 to 9999.1
Full Reload When Partition EmptyWhen on, a source system whose target partition has no data gets a full reload on its run, instead of an incremental sync. The switch reads Full reload on empty partition when on and Incremental sync only when off.Off
Loop Increment ValueThe step size of the back-fill loop. Required for Truncate Insert (Periodic Loop). For the other two periodic patterns, it is required when Full Reload When Partition Empty is on, and it is used only for source systems whose partition is empty. Must be at least 1.1
Full Reload Start DateThe earliest date a full reload goes back to. Shown for a periodic pattern that accepts it, once Full Reload When Partition Empty is on. Format YYYY-MM-DD, between 1970-01-01 and 2106-02-07.Empty

Leave Full Reload Start Date empty and the system finds the earliest date itself. The field then shows an auto badge. A heavy script can fail during that search, so set the date yourself in that case.

Turning off Full Reload When Partition Empty hides Full Reload Start Date, but keeps its value. It also resets Loop Increment Value to 1 for the two periodic patterns that do not use it on their own.

To set the options for one transformation:

  1. Pick a periodic pattern in Pattern.
  2. Set Synchronize Days.
  3. To load the full history of a source system with no data yet, turn on Full Reload When Partition Empty. Set Loop Increment Value if it appears, and Full Reload Start Date if you want to limit how far back the load goes.
  4. Click Apply in the footer.

To change these values for many transformations at once, use Batch edit.

Override the settings for one run

When you execute or test a periodic transformation, the Run Parameters panel shows Synchronize Days, and Loop Increment Value when the pattern uses it.

The panel appears for periodic patterns only; for the rest it is hidden. In the panel, Synchronize Days takes a whole number of at least 1, and Loop Increment Value at least 1. Only the values you change apply to that run; the saved values on the transformation do not change. If the loop value is larger than the synchronize days for that run, the run is refused with a message that names both values, for example "Loop increment value (10) cannot be greater than synchronize days (5)."

To watch the run after it starts, see Deploy, run, truncate and monitor tables.

Set the query execution settings

  1. Open Transformation > General and click Configure under Query execution settings. The row appears once you choose a table.
  2. In Query Settings Configuration, pick a preset: Balanced, Turbo or Eco. To edit the settings text yourself, use the Editor view. Any edit changes the preset to Custom.
  3. Set the two toggles at the bottom of the dialog as needed.
  4. Click Save Settings, then click Apply on the transformation.
PresetWhat it does
BalancedDefault - balanced speed and memory.
TurboFaster - uses more RAM.
EcoSaves RAM - slower.

Balanced is the default. When the preset is not Balanced, a reset icon appears next to the presets, with the tooltip Reset to default.

The two toggles:

The History button in the dialog lists earlier versions of the settings. Restoring one shows Restored version with the version number and the reminder Save Settings to apply it; nothing is saved until you click Save Settings.

The settings text cannot be empty, and it is checked when you save. If it is empty or invalid, Save Settings shows an Invalid query settings message with the reason. The dialog stays open, and nothing is saved.

Permissions

Without the permission, the action is refused with an Access denied. Required permission(s): message that names the missing permission. See Warehouse permissions and row-level security for the full list.

Questions, answered

Why don't I see Diff Delete or Diff Update?

They appear only when the Dimension already has a transformation for the same source system. Choose the Source System first, then check that a transformation exists for it.

Does Diff Delete remove rows from a Dimension?

No. It sets the Delete Flag column to true. Physical deletes never happen in Dimension tables. How Dimension and Fact runs write data lists what each pattern writes.

Which patterns can a Fact table use?

Truncate Insert (Full), Truncate Insert (Periodic), Diff Insert (Periodic) and Truncate Insert (Periodic Loop).

What does Synchronize Days control?

How many days of data each run synchronizes. It defaults to 1 and is required for the three periodic patterns. In the transformation's settings it takes a whole number from 0 to 9999.

My Fact table is empty for a new source system. How do I load all its history?

Turn on Full Reload When Partition Empty. A source system whose partition is empty then gets a full reload on its run. To limit how far back it goes, set Full Reload Start Date. Leave it empty to let the system find the earliest date.

Why must I set a Loop Increment Value?

It is required for Truncate Insert (Periodic Loop), and for the other two periodic patterns when Full Reload When Partition Empty is on. It must be at least 1, and it defaults to 1.

Can I change the pattern after I create a transformation?

No. The Pattern field locks once the transformation exists, and the server refuses a change. To load the same table with another pattern, open a copy of a finalized transformation, choose the new pattern and set a new Suffix. See Build, test and finalize a transformation.

A transformation runs out of memory. What can I change?

Choose the Eco preset in Query execution settings. It saves RAM at the cost of speed. Avoid Turbo, which uses more RAM.

I want to inspect the staging output of the last run. What do I do?

Turn off Empty TARGET_OUTPUT tables after successful ETL run in the query settings dialog, then save and apply. Do this before the run you want to inspect, because a successful run with the toggle on empties the staging copies.

Can I run once with a different Synchronize Days?

Yes. Change Synchronize Days under Run Parameters in the Execute Transformation or Test Transformation dialog. The override must be at least 1, and the saved value stays the same.

Why was my run refused with a loop increment message?

The loop value you set for that run is larger than its synchronize days. The message names both values, for example "Loop increment value (10) cannot be greater than synchronize days (5)." Lower the loop value or raise the synchronize days, then start the run again.