I think there were some prior discussion on that - certainly Constance and
TP who worked on Assets had some thoughts there. I think it's an important
subject and possibly we could have a discussion on the future
assets features - we know not all the planned features have been
implemented yet - certainly once around partitioning and possibly some
relations between partitions with overlapping ranges. I feel that
"freshness" and "time" and "time partiticions" have a lot to do with it,
and maybe that's a good start for a discussion?

J.


On Mon, Jul 21, 2025 at 11:14 AM Dev iL <gid....@gmail.com> wrote:

> The below is a more organized writeup of a suggestion I once shared on
> Slack. I figured it should be documented and discussed here as well. I am
> currently developing something equivalent using a short-circuit operator,
> but it would be nice for this to be a built-in functionality. An
> illustration of the proposed behavior compared to ANY and ALL is provided
> as code as well as a rendered image.
>
> Please let me know: 1) what you think; 2) whether this fits into the
> bigger vision of Asset-based triggering; and 3) would you be willing to
> participate in the implementation of this feature.
>
> So without further ado....
>
> --------------------------------------------------
> A "freshness" check is a condition applied to asset updates of multiple
> URIs to determine if they're sufficiently new in the context of each other.
> Freshness can be used to define temporal constraints between Assets that
> are updated at different frequencies. As a result, a freshness check
> results in a behavior that's intermediate between AssetAny and AssetAll:
>
>    - The check is triggered when ANY of the assets is updated.
>    - The check is satisfied when ALL of the assets are *sufficiently* new
>    ("fresh").
>
>
> ```none
> Illustration (+ represents a trigger, | represents an interval boundary):
>
>             Intrvl 1  Intrvl 2  Intrvl 3  Intrvl 4
> Asset A: |----1----|--2------|------3--|----------|
> Asset B: |---a--b--|---c--d--|--e-f----|---------g|
> All:     |----+-------+-------------+-------------|  Times triggered: 3
> Any:     |---++-+-----++--+-----+-+-+------------+|  Times triggered: 10
> Fresh:   |----+-+--|---+--+--|------+--|----------|  Times triggered: 5
> ```
>
> Thus, within each interval, freshness initially behaves like ALL, but
> "becomes" ANY after the condition is met.
>
> Claude was easily able to suggest potential use cases:
>
>    - Data Drift Detection: Comparing week-old predictions against fresh
>    labels (or vice versa) produces misleading drift calculations.
>    - A/B Test Analysis: Update analysis only when both groups have data
>    from the same time window, since temporal misalignment between groups can
>    create false positive/negative results due to seasonality or external
>    events.
>    - Real-time vs Batch Consistency Monitoring: Flag inconsistencies only
>    when both pipelines have processed the same time range.
>    - Data Quality Monitoring: Calculate data quality metrics only when
>    processing lag is under acceptable threshold.
>
> [image: image.png]
>

Reply via email to