Add channel aliasing, sinkless mode, sequence-of-events, column mapping#7
Merged
Conversation
tombonfert
previously approved these changes
May 8, 2026
Collaborator
tombonfert
left a comment
There was a problem hiding this comment.
LGTM. Please check if demo notebooks are still working.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds channel aliasing for the KeyValueStoreSolver, plus four supporting changes:
per-table column-name mapping in solvers, an optional sinkless mode for
Report,a new
SequenceOfEventsevent type, and selector-aware batching inReport.determine_report.Changes
QueryBuilder.channel_with_alias()andMeasurementDB.channel_mapping();KeyValueStoreSolverresolves aliasedselectors via a configurable
channel_mappingtable.TimeSeriesSelectornow exposesselector_id(CRC32) and
get_selectors()on every node — used to drive batching andalias resolution.
_apply_column_mappinglets each solvertable (container_tags / container_metrics / channel_tags / channel_metrics
/ channel_mapping / channels) translate physical column names to internal
ones at read time.
Report:Report.sinkis nowSink | None; persistencepaths are guarded by
_has_sinkso a report can be built and solvedwithout writing to UC.
SequenceOfEvents: new event type that joins overlapping consecutiveintervals into one sequence.
filter_channel_tags/filter_channel_metricsnow take(spark, db, container_df, selectors)instead of(spark, query, …).Breaks any external solver subclasses.
Report.determine_reportorchestration extracted intomda_reporting.core.report_utils(also includes a Best-Fit-Decreasingbin-packer for selector-aware batching).
Test Plan
column mapping, batching, and sinkless mode (~1500 lines new).
Checklist