Year
2026
Status
Maintained
Custom Power BI Visuals
Four production Power BI visuals built in TypeScript where native visuals and DAX could not reproduce established operational layouts.
- TypeScript
- Power BI Visuals SDK
- pbiviz
- DAX
- Power BI
- Microsoft Fabric
- TypeScript
- Power BI
- Analytics engineering
- Custom visuals
Every one of these exists for the same reason: a team already had a layout they ran the business on, usually on paper or in a spreadsheet, and no arrangement of the built-in visuals reproduced it. The alternative to writing a visual is contorting the data model to fit a chart that was never meant to show this — which produces a report nobody trusts and a model nobody can maintain.
So the decision rule is narrow. Write a custom visual when the layout is the requirement and it is genuinely not expressible; otherwise fix the model.
The four visuals
CILR Activity Matrix
A maintenance-focused matrix for cleaning, inspection, lubrication and repair activities, with the sorting and resizing behavior operators expect from a table they scan every shift. Getting the interaction right — column sizing that survives a refresh, sorting that means what it looks like it means — was most of the work.
Safety Green Cross
A calendar-style safety visualization, with category-based colouring and a legend. Each day takes a colour from its recorded category, which makes a month of safety performance readable at a glance — the same artefact many plants keep on a wall.
Safety Pyramid
Current year against prior year, with a monthly grid beneath. The comparison is the point: a pyramid on its own says little, and the same pyramid beside last year’s says whether anything is improving.
Single-Date Calendar Slicer
A purpose-built date selector for week-oriented reporting. Power BI’s date slicers are built around ranges; several reports needed one date, cleanly, with week semantics attached. Fighting a range slicer into that shape is worse than writing a slicer that does it.
How they are built and kept
- written in TypeScript against the Power BI Visuals SDK
- packaged with pbiviz and versioned, so a report author can be told which version they have
- deployed into the tenant rather than distributed as loose files
- maintained as report requirements change, which is the part that actually costs — a custom visual is a small piece of owned software, and it has the same lifecycle as any other
Where this sits relative to the rest of my analytics work
Custom visuals are the last resort, not the default. Most of what I do in Power BI is semantic modeling, DAX, and moving expensive transformation logic out of Power Query into SQL or Databricks so refreshes stay reliable and capacity stays within budget. A visual is what you write when the model is already right and the presentation still is not possible.