Tutorial

Control charts in Power BI, from first chart to confident signals

This guide explains what a control chart tells you, then walks through every setting of Control Charts Pro that matters, with two sample datasets you can download and follow along with.

Follow along: download the coating thickness sample (four production lines, 30 weeks each: one stable, one with a spike, one with a step change, one drifting) and the infection rates sample (four wards, 18 months, with the number of patients at risk) for the P chart chapter. Every number quoted on this page comes from those files.

1. What a control chart tells you

Every process varies. A control chart separates the ordinary variation you should leave alone from the signals worth acting on. It draws your values in time order, a centre line at their average, and control limits three standard deviations either side, worked out from the data itself. A point outside the limits, or a pattern that chance rarely produces, is a signal. Everything else is noise, and reacting to noise makes a process worse.

2. Quick start

  1. Value = the number you measure, for example Thickness.
  2. Point (X axis) = what orders the points, for example Week.
    Use the plain date field, not the Year / Quarter / Month / Day hierarchy; the visual asks for the plain date if it gets the hierarchy.
  3. Panel (small multiples) = optional: one chart per line, ward or site, each with its own limits.
  4. Denominator is needed for P and U charts only. Phase / baseline and Tooltips are optional.

Chart type is the first card of the format pane. “Show advanced settings” in that card reveals the rest; the essentials are visible without it.

A two-by-two grid of control charts, one per coating line, each with its own centre line and limits.
The thickness sample. Coating Line 1 reads centre 99.57 with limits 95.28 to 103.86 and nothing signalling; Coating Line 2 has one point beyond its limits, 110.5 on 5 January 2026.

3. How the limits are calculated, and how to check them

For an individuals chart the limits are the mean ± 3 sigma, and sigma comes from the moving ranges, the differences between consecutive points, not from the overall standard deviation. That is what makes the limits robust to the very shifts you are trying to detect.

4. Signals, and rules you can name

Red markers are beyond a control limit. Amber markers are inside the limits but part of a pattern chance rarely produces. The key at the end of the caption says which is which, and the tooltip names every rule that fired.

A control chart with a tooltip on a flagged point listing the value, centre, limits, sigma distance, moving range and three named rules.
Coating Line 3 under Nelson 1–8. The week of 26 January 2026 reads 106.54 and fired three rules, each named in the tooltip.

5. XmR: the moving-range chart

Switch on Add moving-range chart (XmR) and a strip appears under each panel showing the point-to-point changes with their own limit. It answers a different question: not “is the level unusual?” but “was this jump unusual?”. A single spike shows as two consecutive breaches, one jump up and one back down, which tells you it was one event and not a shift.

Two control charts with moving-range strips; the second shows two consecutive moving-range breaches around a single spike.
Coating Line 2: one spike above, two consecutive moving-range breaches below.

6. When the process really changes: baselines and rebasing

Limits calculated from all the data absorb a real change and hide it. Two tools deal with that.

Coating Line 3 twice: limits frozen on a baseline above, limits recalculated after the step below.
The same line, frozen on a baseline above and rebased below.

7. Counts and rates: P, C and U charts

P charts for four wards with stepped limits and one month flagged above its limit.
The infections sample: centres 2.7%, 3.4%, 5.9% and 2.8%, and one signal, Orthopaedics in November 2025 at 13.3% against a limit of 6.6% that month.

8. Panels, axes and text

Something not covered here?

Ask — the answer usually ends up back in this tutorial.