File-arrival triggers are based on the creation of a new file. If an upstream system always overwrites the same file name in place (for example, landing/data.csv every time), a file-arrival trigger will generally not fire for every overwrite.
Because you canโt change the filename, here are realistic workarounds:
Option A โ Use a marker file for the trigger (best if you can change the upstream minimally)
Keep your existing data file as-is (same name, same path), but:
After writing data.csv, the upstream (or a tiny helper job) also writes a small marker file with a unique name each time, e.g.
markers/run_2025-11-18T120001.txt.
Configure the LakeFlow event trigger on the marker folder.
The first step of the pipeline just reads data.csv (the file whose name cannot change).
Your data contract stays the same, but the trigger sees each new marker file.
Option B โ Time-based trigger + โchange detectionโ
If you really canโt modify upstream at all:
Switch that pipeline to a schedule-based trigger (e.g. every X minutes).
In your first task, read the last-modified timestamp of the file or a small metadata table.
Compare it with a stored watermark; only continue if it has changed since the last run.
You lose pure event-driven behaviour, but still avoid repeated heavy processing.
Option C โ Change only the path, not the filename (where possible)
If the file name must stay identical but youโre allowed to adjust the folder:
Upstream writes into time-partitioned folders (e.g. /landing/2025/11/18/data.csv).
LakeFlow trigger watches /landing/**.
A later step merges or copies into your legacy fixed path if other systems rely on it.