Consumed by row aggregator after decoding.
A named, nested view of a Chronon feature value.
A named, nested view of a Chronon feature value.
Unlike the classic Map[String, AnyRef] fetcher response, where struct-typed values are
positional Array[Any] and the field names live only in the schema, every level of a
FeatureRecord is keyed by field name. Struct-typed fields resolve to nested FeatureRecords and
lists of structs resolve to List[FeatureRecord], so callers can navigate arbitrarily deep
nesting by name instead of by position.
values carries everything the underlying fetcher response carried, including the
<name>_exception keys the fetcher uses to report partial failures (see errors).
schema is narrowed to the declared fields actually present in values.
Consumed by row aggregator after decoding. Mutations follow the same schema as input for value indices. However there are two main differences. * ts and reversal columns are required for computation * Mutation ts takes on the role of ts. Since the schema is the same with the sole difference of the added columns, we add these columns on the tail of the Array and extract them accordingly. i.e. for mutations: reversal index = ArrayRow.length - (Constants.MutationAvroColumns.length - (index of reversal in Constants.MutationAvroColumns)