ResolutionRung
Namespace: Meshmakers.Octo.Runtime.Contracts.StreamData
One candidate archive in a series' resolution family — either the base archive (raw or
time-range) or one of its rollups. The SeriesResolutionPlanner reasons purely over a list
of these to pick the archive to query. See concept-resolution-aware-series-queries.md §4.
public record ResolutionRung : IEquatable<ResolutionRung>
Inheritance Object → ResolutionRung
Implements IEquatable<ResolutionRung>
Properties
ArchiveRtId
The archive entity id to query if this rung is chosen.
public OctoObjectId ArchiveRtId { get; set; }
Property Value
OctoObjectId
GrainMs
The rung's native bucket width in milliseconds — a rollup's BucketSize, or a
time-range base archive's Period. null when the grain is unknown (a raw archive, or
a time-range archive whose advisory Period is unset); such a rung is treated as "finest,
unknown resolution".
public Nullable<long> GrainMs { get; set; }
Property Value
Alignment
Bucket alignment. BucketAlignment.FixedSize means ResolutionRung.GrainMs fully determines the width; calendar variants derive an effective width from the wall clock (and the reference time zone) instead.
public BucketAlignment Alignment { get; set; }
Property Value
StoredFunctionsForSeries
All aggregation functions this rung stores for the requested series' column — a rollup may carry several aggregations on the same source path (AB#4188), e.g. AVG and MAX side by side. Empty for a base archive (which stores no aggregation) or when the rung does not aggregate the requested path. A rollup rung is a valid reduction source only when this contains the caller's requested aggregation.
public IReadOnlyCollection<CkRollupFunction> StoredFunctionsForSeries { get; set; }
Property Value
IReadOnlyCollection<CkRollupFunction>
IsBase
True for the base archive (raw or time-range) the rollups are derived from; false for rollups. The base is never reduced by the resolver (decision O2-followup) — it is returned unreduced when no compatible rollup exists, or when its native data already fits the requested point count.
public bool IsBase { get; set; }
Property Value
ReferenceTimeZone
IANA time-zone id used to align calendar buckets (day/month/year) to local wall-clock
boundaries. null ⇒ UTC. Only consulted for calendar ResolutionRung.Alignment variants.
(AB#4290 Phase 4 / decision O6.)
public string ReferenceTimeZone { get; set; }
Property Value
Constructors
ResolutionRung(OctoObjectId, Nullable<Int64>, BucketAlignment, IReadOnlyCollection<CkRollupFunction>, Boolean)
One candidate archive in a series' resolution family — either the base archive (raw or
time-range) or one of its rollups. The SeriesResolutionPlanner reasons purely over a list
of these to pick the archive to query. See concept-resolution-aware-series-queries.md §4.
public ResolutionRung(OctoObjectId ArchiveRtId, Nullable<long> GrainMs, BucketAlignment Alignment, IReadOnlyCollection<CkRollupFunction> StoredFunctionsForSeries, bool IsBase)
Parameters
ArchiveRtId OctoObjectId
The archive entity id to query if this rung is chosen.
GrainMs Nullable<Int64>
The rung's native bucket width in milliseconds — a rollup's BucketSize, or a
time-range base archive's Period. null when the grain is unknown (a raw archive, or
a time-range archive whose advisory Period is unset); such a rung is treated as "finest,
unknown resolution".
Alignment BucketAlignment
Bucket alignment. BucketAlignment.FixedSize means ResolutionRung.GrainMs fully
determines the width; calendar variants derive an effective width from the wall clock (and the
reference time zone) instead.
StoredFunctionsForSeries IReadOnlyCollection<CkRollupFunction>
All aggregation functions this rung stores for the requested series' column — a rollup may carry
several aggregations on the same source path (AB#4188), e.g. AVG and MAX side by side. Empty for
a base archive (which stores no aggregation) or when the rung does not aggregate the requested
path. A rollup rung is a valid reduction source only when this contains the caller's requested
aggregation.
IsBase Boolean
True for the base archive (raw or time-range) the rollups are derived from; false for rollups.
The base is never reduced by the resolver (decision O2-followup) — it is returned unreduced when
no compatible rollup exists, or when its native data already fits the requested point count.