-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[timeseries] Remove Time Series Specific Code from V1 Engine #14841
base: master
Are you sure you want to change the base?
Conversation
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #14841 +/- ##
============================================
+ Coverage 61.75% 63.76% +2.01%
- Complexity 207 1611 +1404
============================================
Files 2436 2703 +267
Lines 133233 151188 +17955
Branches 20636 23341 +2705
============================================
+ Hits 82274 96402 +14128
- Misses 44911 47551 +2640
- Partials 6048 7235 +1187
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
/** | ||
* Used by the leaf stage, because the leaf stage materializes tag values very late. | ||
*/ | ||
public abstract TimeSeries buildWithTagOverrides(List<String> tagNames, Object[] tagValues); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@raghavyadav01 : this one change will be required in series builders. This should do the build, AND use the provided tag names and values for the new series. See other builders in this PR for reference.
Description
Removes Time Series specific code from Pinot's V1 Engine, and instead leverages a Transform function and an Aggregation function to implement the leaf stage for Time Series queries.
This helps us take advantage of the speed that
GroupByOperator
andAggregationOperator
, while at the same time, allows Time Series languages to define how they want their series to built.This also greatly simplifies the Time Series code, as can be seen by the fact that this PR removes a ton of code.
Series Limit Handling
Series limit are now handled via standard Group By limits as defined here.
API Changes
BaseTimeSeriesBuilder
has a new method calledbuildWithTagOverrides
. This is because theGroupByOperator
materializes Group values lazily to avoid excessive allocations.Future Work
TimeSeriesBlock
, and propagate the group limit reached warning to the caller.