A Fabric pipeline loads a source table incrementally by filtering on its ModifiedAt column with no upper bound. The Copy activity takes about 40 minutes, and the source keeps receiving updates while it runs. After the rows are loaded into the Lakehouse, which value should the pipeline store as the watermark for the next run?
Choose one.
In the high-water-mark pattern the stored watermark is the highest change-indicator value actually loaded, taken from the extracted data in the same column the filter uses.
Taking MAX(ModifiedAt) from the extracted rows ties the watermark to the source's own clock and to what was really captured. A clock time taken after a long copy jumps past changes that happened during the copy and were not in the extract, so they are lost. The minimum value and the last-written row are both safe from loss but re-read data, because neither marks how far the load reached.
- Read the stored watermark at the start of the run.
- Extract rows with ModifiedAt greater than the stored value.
- Load the rows, then compute MAX(ModifiedAt) over the extracted rows.
- Persist that maximum in the control table only after the load succeeds.
Exam tip: Advance the watermark to the maximum change value you actually extracted, never to the pipeline's clock.
Fabric Loading Patterns: Full, Incremental, and Dimensional Model Loads — the lesson that teaches this.