`latest_state_join`

Generic Description

Uses latest-prior state matching terminology for as-of temporal joins. It is documented separately because time construction, sequence ordering, window parameters, and as-of behavior materially change analytical meaning.

Simple example:

WITH [{ts: 1735689600000, value: 10.0, state: 'ok'}, {ts: 1735689660000, value: 13.0, state: 'ok'}, {ts: 1735689840000, value: 9.0, state: 'warn'}, {ts: 1735690200000, value: 16.0, state: 'ok'}] AS readings, [{ts: 1735689300000, state: 'baseline'}, {ts: 1735689720000, state: 'release'}] AS context
RETURN latest_state_join(readings, context, 900000) AS joined_rows

Consumer-Level Explanation

Use it when the right-side sequence is state context such as deployment, plan, or ownership. Prefer this function when the temporal assumption should be visible to the planner, especially for event streams, freshness checks, and sequence features.

More Detailed Explanation

latest_state_join works on ordered temporal or sequence-style values inside Cypher. The practical contract is to assemble the sequence deliberately, choose the time or window parameter explicitly, and return named fields so downstream planner tooling does not invent unsupported window syntax.

Advanced Example

This example names the event stream and operational context before applying latest_state_join, which helps planner tooling preserve the intended sequence semantics.

WITH 'sensor-1' AS subject_id,
     [{ts: 1735689600000, value: 10.0, state: 'ok'}, {ts: 1735689660000, value: 13.0, state: 'ok'}, {ts: 1735689840000, value: 9.0, state: 'warn'}, {ts: 1735690200000, value: 16.0, state: 'ok'}] AS readings,
     [{ts: 1735689300000, state: 'baseline'}, {ts: 1735689720000, state: 'release'}] AS context
RETURN subject_id,
       latest_state_join(readings, context, 900000) AS joined_rows

Real Use Cases

Real Limitations And Tradeoffs