Skip to main content

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 ObjectResolutionRung
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

Nullable<Int64>

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

BucketAlignment

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

Boolean

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

String

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.