Hi 01725609 Thank you for your detailed question and follow-up this is an important scenario and a common source of confusion when working with materialized views in Azure Data Explorer (ADX), especially when dealing with historical ingestion and deduplication logic.
Understanding the Behavior
You're absolutely correct: As per current official documentation, the effectiveDateTime and updateExtentsCreationTime properties are only honored when backfill=true is specified at view creation time.
If backfill is not enabled:
The extents in the materialized view will reflect the time of ingestion into the view, not the original creation times from the source table.
Even if lightningest was used to ingest historical data correctly into the source table, this does not propagate to the materialized view unless backfill=true.
Why Altering Doesn't Help
You also pointed out that these properties are not supported in the .alter materialized-view command and you're right again. Unfortunately, effectiveDateTime is not alterable post-creation, meaning the only way to apply it is during initial creation of the view with backfill=true.
Workaround Recommendations
Given your concern about avoiding a full backfill due to large data volumes, here are a few practical alternatives:
Create the View with backfill=true on a filtered dataset: If possible, segment your data (e.g. one month or week at a time) and create the materialized view using backfill=true with filtering, so only a manageable subset is included during backfill.
Example:
Copy
.create materialized-view with (
lookback=1d,
lookback_column="CustomDateTime",
autoUpdateSchema=true,
backfill=true,
effectiveDateTime=datetime(2025-01-01)
) Mv_TableName_Deduplicated on table TableName
{
TableName
| where CustomDateTime >= datetime(2025-01-01) and CustomDateTime < datetime(2025-02-01)
| summarize take_any(*) by DuplicateDetectionHash
}
You can then repeat this process incrementally for historical partitions.
Use Update Policies or Scheduled Queries Instead: For more control over extent timestamps (and to avoid materialized view limitations), you can:
- Create a new table with a schema matching your view
- Use an Update Policy or scheduled KQL job to populate it from the source
- Use ingest inline or ingest from query to maintain timestamp alignment manually.
Hope this helps. If this answers your query, do click Accept Answer
and Yes
for was this answer helpful. And, if you have any further query do let us know.