Thanks for sharing the screenshots - it’s clear you’ve already got the decomposition logic working, but the issue seems to be with rendering the time series into multiple panels (y-split) as shown in the official example.
Based on what I see, the reason the multiple panels view (with ySplit=panels
) renders blank is likely due to missing or mismatched series
column values in your result set. Azure Data Explorer expects each decomposed component (like baseline
, trend
, seasonal
, residual
) to be represented as separate rows, each with a unique series
identifier.
What you're likely missing:
Ensure you're using extend series =
in your query to assign the correct labels:
make-series value=avg(SensorValue) on TimeStamp from min_t to max_t step 5m by DeviceId
| extend (baseline, seasonal, trend, residual) = series_decompose(value, -1, 'linefit')
| project TimeStamp, baseline, seasonal, trend, residual
| mv-expand
baseline, seasonal, trend, residual,
TimeStamp
| extend value = baseline, series = "baseline"
| union (
project TimeStamp, value = trend, series = "trend"
),
(
project TimeStamp, value = seasonal, series = "seasonal"
),
(
project TimeStamp, value = residual, series = "residual"
)
| render timechart with(title="Temperature, decomposition", ysplit=panels)
Or you can streamline the union into one expression using mv-expand
with bag_pack
and mv-expand
.
Key point:
The charting engine requires a column named series
to split each component onto its own panel. Without this, the ySplit option will not behave as expected and panels will appear blank.
Let me know if you need help adjusting your current KQL to match this pattern.
If this resolves your issue, please consider upvote the comment so others in the community can benefit from it as well. Happy to assist further if needed!