[timeseries] Introducing Apache ECharts timeseries results visualization in Controller UI#16390
Conversation
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## master #16390 +/- ##
============================================
+ Coverage 62.90% 63.32% +0.42%
+ Complexity 1386 1363 -23
============================================
Files 2867 2976 +109
Lines 163354 172927 +9573
Branches 24952 26498 +1546
============================================
+ Hits 102755 109509 +6754
- Misses 52847 55051 +2204
- Partials 7752 8367 +615
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
jayeshchoudhary
left a comment
There was a problem hiding this comment.
did a first pass review, some minor comments
pinot-controller/src/main/resources/app/components/Query/TimeseriesChart.tsx
Outdated
Show resolved
Hide resolved
pinot-controller/src/main/resources/app/components/Query/TimeseriesQueryPage.tsx
Show resolved
Hide resolved
| /** | ||
| * Maximum number of series that can be rendered in the chart | ||
| */ | ||
| export const MAX_SERIES_LIMIT = 20; |
There was a problem hiding this comment.
do we show warning at both places chart and table when the limit exceeds ?
There was a problem hiding this comment.
also, what is the reason behind putting limit of these renderers?
is it because the chart will be too cluttered or react will face issues rending such large dataset.
There was a problem hiding this comment.
We show a warning only at the chart because showing it at both places would be redundant - the stats table also acts as a legend.
The limit of these renders is both for clarity and to avoid any unexpected issues while rendering data over large datapoints. I am thinking of making this configurable in a subsequent PR.
pinot-controller/src/main/resources/app/utils/TimeseriesUtils.ts
Outdated
Show resolved
Hide resolved
|
@jayeshchoudhary good catch regarding the timeline not matching with the points! I added a 5% padding on either side of the timechart so that the points do not stick to either extremities, but did not accommodate that on the time axis. Will fix it. |
…t of timeseries axis
ankitsultana
left a comment
There was a problem hiding this comment.
Lgtm. @shauryachats : let's make sure that:
- Errors are handled gracefully.
- If the response ends up being too big, it might crash the UI. In such cases maybe we should truncate the results somehow and return a warning? We can do this later, not required for v1
|
This looks great, and thank you for your contribution. Curious about the use case. There are many dashboarding tools like superset, redash, metabase, Grafana etc. Who will be the main user of this? |
|
@kishoreg : mainly for debugging from Quickstarts for development purposes, quick access for oncalls for debugging any customer reported issues, or just general adhoc exploration by end users if they have access to the controller UI. Prior to this, one needed both a timeseries-plugin and a visualization tool to be able to test out Pinot's timeseries engine. With this only the timeseries-plugin is required for basic access. (but a proper viz. tool like Grafana is still required for production use-cases) |
|
ok. That makes sense. Let's ensure we include that in the documentation. |



Summary
Integrates Apache ECharts for timeseries data visualization in Pinot Controller UI, providing interactive charts with performance-optimized truncation for large datasets.
The timeseries visualization in action:
timechart_overview.mov
Key Features
Breaking Changes
None - all changes are additive and backward compatible.
Testing
Along with the aforementioned attached timeseries visualization video, testing has been done for other corner cases as well.
Large number of series:
Invalid query: (Clear surfacing of errors is a planned TODO and will be done in a subsequent PR).