Omniscope Custom Views › decomposition

Seasonal Decomposition

Is it growth, or is it just the season? Split any time series into trend, seasonal pattern and what is left over, and find the periods that were genuinely unusual.

Line and scatter visokio-agents

Open the demo in Omniscope Download demo.ioz Sample data: sessions.csv Source on GitHub

Items tagged visokio-agents are community examples built by Visokio's agents, to extend Omniscope's core blocks and views with popular, specialist and more unusual use cases, and to show what anyone, people or agents, can build on Omniscope. They are tested by automated tests and were run on a real Omniscope server. They were not reviewed by Omniscope's core team, so they are not on a par with the core blocks and views, which have years of manual, functional and unit tests behind them. About

Is it growth, or is it just the season? Split any time series into trend, seasonal pattern and what is left over, and find the periods that were genuinely unusual.

Live: three years of illustrative weekly website sessions split into trend, yearly pattern and residual. The circled weeks are unusual: an outage and a campaign. Hover any week; click to select it.

The problem it solves

Most business measures move with the calendar: retail peaks in December, travel in summer, B2B dips in August. That makes it hard to answer simple questions. Is this month's rise real growth or the usual seasonal lift? Was last week's drop a problem or a normal quiet week? Seasonal decomposition is the standard technique, but it is usually done in a statistics package, not in the dashboard where the questions are asked.

The Seasonal Decomposition view does it in the report. In the illustrative website traffic above, the yearly pattern (a winter high and a summer low) is separated from a steady upward trend, and the residual picks out the weeks that really were unusual, above all a two-week outage in March 2025 and a campaign in September 2026. The method is robust, so those weeks do not distort the seasonal pattern itself. Monthly data with a seasonal swing that grows with the business uses the multiplicative form:

Live: monthly sales with a multiplicative season, where the December peak grows with the business.

Where it earns its place

The examples below are illustrative.

Team Series Question
Digital and marketing Weekly sessions, leads Was the campaign or the outage real, and how big?
Retail Monthly sales Underlying growth after the Christmas peak
Operations Daily calls or orders Which days were out of pattern
Finance Monthly revenue or costs Explaining variances in a monthly review
Utilities Daily consumption Unusual usage after allowing for the season

How to use it in Omniscope

  1. Bring the history into a workflow with a date and a measure.
  2. Connect it to a Report block, add a view and choose Seasonal Decomposition.
  3. Set Dated by, Measure and the Period.
  4. Choose a multiplicative season if the seasonal swing grows with the level.
  5. Click an unusual period to select it and see what happened in other views.

Why do this in Omniscope

Data and options

A date and a measure, with at least two full seasons.

Option What it does
Dated by The date field
Measure What to decompose
Period Week, month, day or quarter
Season length Periods in one cycle
Season Additive or multiplicative
Unusual beyond Flagging threshold

Tested with 400,000 records aggregated to weeks.

Tested

Hovering a week
Hovering a week
Running on the Omniscope server
Running on the Omniscope server

Reference

Fields it reads

NameTypeWhat it does
Dated byFIELDThe date of each record
MeasureMEASUREWhat to decompose per period, e.g. sum of Sessions (default: number of records)

Options

NameTypeWhat it does
PeriodCHOICESize of each period (default week)
Season lengthNUMBERPeriods in one seasonal cycle (default 52 weeks, 12 months, 7 days or 4 quarters)
SeasonCHOICEHow the seasonal pattern combines with the trend
Unusual beyondNUMBERFlag periods whose residual is more than this many robust standard deviations from typical (default 3)

Third-party libraries