# SmartVisuals KPI Weather for Power BI

> KPI status as weather in Power BI: sunny to storm vs target for up to 500 KPIs, trend and prior year free. Premium: forecast and chance of meeting target.

- Page: https://www.smartvisuals.io/visuals/kpi-weather
- Fields and settings: https://www.smartvisuals.io/visuals/kpi-weather/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-kpi-weather?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-kpi-weather-1.0.1.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-kpi-weather-sample-1.0.1.0.zip
- Price: Free tier for every viewer; premium $1.99 per user per month or $19 per user per year on Microsoft Marketplace, with a 30-day free trial. Premium works in edit mode without a licence; unlicensed viewers see the free tier, never a blocked visual.
- Certified by Microsoft: yes
- Version: 1.0.1.0
- GUID (visualType and publicCustomVisuals): `kpiWeatherFF07437A76914148ACA0775101EF3B6F`

## What is free

- **Weather for up to 500 KPIs**: Sunny on target, partly cloudy within tolerance, rain below, storm far below, fog when there is no reading.
- **Your bands, your direction**: Tolerance bands you set (100 / 95 / 85 % by default) or per-KPI rain and storm thresholds; lower-is-better per visual or per row; zero-harm targets.
- **Trend and sparkline**: A five-step trend arrow and a sparkline with its target line, plus an optional rule that a falling trend lowers the weather.
- **One comparison, such as prior year**: "vs Prior year +4.2%" on every KPI and in the table, labelled with your field's real name; the tooltip says better or worse per KPI direction.
- **Four layouts**: One big hero with wall-screen rotation, a grid with one tile per KPI (small multiples), a forecast strip, and Boardroom mode: the same data as a plain status table. Tile columns and value size adjust to the size of the visual.
- **Four themes, four art styles**: Our own weather art in four styles, four themes with their own personality, and weather words, business words or your own.
- **Never colour alone**: Shape and word on every KPI, high contrast, keyboard navigation, reduced motion and 10 languages.

## What premium adds

- **Outlook**: The weather for the next 1 to 6 periods from a linear trend, each period judged against its own budget.
- **Chance of meeting target**: For every forecast period, the way a forecaster gives the chance of rain.
- **Storm warnings**: Outlook sentences in the weather report, such as "Scrap rate turns stormy in Oct 2026".
- **Pace to target**: Year, quarter or month to date judged against where you should be today, with the run-rate landing.
- **More comparisons**: A second and third measure: prior year, forecast and group average side by side.
- **Sky scenes**: Weather-matched sky backdrops for wall screens and landing pages.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| KPI | `category` | Column | Optional | One forecast per KPI, region, plant line or project. |
| Group | `group` | Column | Optional | Optional sections: KPIs are grouped under a header with their weather counts. |
| Period | `period` | Column | Optional | Optional date or period: the latest period with an actual is today's weather; the history draws the trend and feeds the forecast. |
| Actual | `value` | Measure | Optional | The measured value of the KPI. |
| Target | `target` | Measure | Optional | Plan, budget or goal. Today's weather is the actual against it; future periods are judged against their own target. |
| Comparison | `comparison` | Measure | Optional, up to 3 | Prior year, last forecast or any value to compare the actual with. The first is free; a second and third are premium. The weather stays actual vs target. |
| Rain threshold | `rainAt` | Measure | Optional | Optional per-KPI value where rain begins (below it for higher-is-better KPIs, above it for lower-is-better). |
| Storm threshold | `stormAt` | Measure | Optional | Optional per-KPI value where storm begins. |
| Lower is better | `lowerIsBetter` | Measure | Optional | Per-KPI direction: 1/true where a lower value is better (costs, defects, lead time). Aggregate with Max. |
| Elapsed % | `elapsed` | Measure | Optional | Share of the period already elapsed (0 to 1) for pace: a to-date value is judged against target × elapsed. |
| Unit or format | `unit` | Measure | Optional | Per-KPI unit (%, days, kWh, €) or format string (0.0%) for mixed-unit scorecards. Use First or Max on a text column. |
| Tooltips | `tooltips` | Measure | Optional, up to 5 | Extra measures shown in the tooltip. |

## Format pane

Each card is a key under `visual.objects` in a PBIR visual.json; each setting is a property of it. Toggles take `true`/`false`, choices and text a value in single quotes (`'auto'`), numbers a `D` suffix (`12D`).

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean (White)), `slate` (Slate) |
| Font | `fontFamily` | `inter` (Inter), `segoe` (Segoe UI), `arial` (Arial), `georgia` (Georgia) |
| Weather art | `glyphStyle` | `theme` (Theme default), `illustrated` (Illustrated), `glow` (Glow), `line` (Line), `solid` (Solid) |
| Backdrop | `skyScene` | `none` (None), `sky` (Sky scenes) |
| Transparent background | `transparentBg` | On / off |
| Background color | `backgroundColor` | Colour |

### Layout (`layout`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Layout | `mode` | `auto` (Auto), `hero` (Hero), `grid` (Grid), `strip` (Forecast strip), `boardroom` (Boardroom table) |
| Sort | `sortBy` | `data` (Data order), `worst` (Worst first), `best` (Best first), `name` (Name, A to Z) |
| Tile columns (0 = auto) | `tileColumns` | Number |
| Rotate KPIs every n seconds (0 = off) | `rotateSeconds` | Number |
| Group headers | `showGroups` | On / off |
| Rotation dots | `showDots` | On / off |

### Tiles (`tiles`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Tile color | `tileColor` | Colour |
| Border color | `borderColor` | Colour |
| Status stripe | `stripe` | `theme` (Theme default), `on` (On), `off` (Off) |
| Corner radius (-1 = theme) | `cornerRadius` | Number |

### Weather rules (`status`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Direction | `polarity` | `higher` (Higher is better), `lower` (Lower is better) |
| Sunny from (% of target) | `sunnyFrom` | Number |
| Partly cloudy from (% of target) | `partlyFrom` | Number |
| Rain from (% of target), storm below | `rainFrom` | Number |
| Trend rule | `trendAdjust` | `off` (Off), `lower` (Falling trend lowers the weather) |
| Steady wind within (± % points) | `steadyBand` | Number |

### Weather words (`words`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show words | `show` | On / off |
| Words | `wordSet` | `weather` (Weather), `business` (Business), `custom` (Custom) |
| Sunny | `sunny` | Text |
| Partly cloudy | `partly` | Text |
| Rain | `rain` | Text |
| Storm | `storm` | Text |
| No reading | `fog` | Text |

### Weather colors (`colors`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Sunny | `sunnyColor` | Colour |
| Partly cloudy | `partlyColor` | Colour |
| Rain | `rainColor` | Colour |
| Storm | `stormColor` | Colour |
| No reading | `fogColor` | Colour |

### Values (`values`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Value | `showValue` | On / off |
| Target | `showTarget` | On / off |
| Variance | `varianceMode` | `none` (Off), `pct` (Percent), `abs` (Absolute), `both` (Absolute and percent) |
| Display units | `displayUnits` | `auto` (Auto), `none` (None), `thousands` (Thousands), `millions` (Millions), `billions` (Billions) |
| Decimal places (-1 = auto) | `decimals` | Number |
| Value size (0 = auto) | `valueSize` | Number |
| Value color | `valueColor` | Colour |

### Comparison (`comparison`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show comparison | `show` | On / off |
| Variance to comparison | `varianceMode` | `pct` (Percent), `abs` (Absolute), `both` (Absolute and percent) |
| Comparison value | `showValue` | On / off |

### Trend (`trend`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Wind arrow | `showWind` | On / off |
| Sparkline | `showSparkline` | On / off |
| Sparkline color | `sparkColor` | Colour |
| Target line in sparkline | `showTargetLine` | On / off |
| Target line color | `targetLineColor` | Colour |
| Wind arrow color | `windColor` | Colour |
| Current value from | `aggregation` | `latest` (Latest period), `sum` (Sum of periods), `average` (Average of periods) |

### Outlook (`forecast`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Periods ahead (0 = off) | `horizon` | Number |
| Trend fitted on last n periods | `window` | Number |
| Chance of meeting target | `showChance` | On / off |
| Chance as | `chanceStyle` | `percent` (Percent (70%)), `in10` (Odds (7 in 10)) |
| Forecast values | `showValues` | On / off |
| Storm warnings in the report | `showWarnings` | On / off |
| Outlook text size (0 = auto) | `outlookSize` | Number |

### Pace (`pace`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Period elapsed | `period` | `none` (Off), `year` (Year to date (today)), `quarter` (Quarter to date (today)), `month` (Month to date (today)), `fixed` (Fixed %), `measure` (Elapsed % field) |
| Elapsed % | `fixedElapsed` | Number |

### Labels (`labels`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| KPI names | `showName` | On / off |
| Font size | `fontSize` | Number |
| Font color | `fontColor` | Colour |
| Secondary text color | `secondaryColor` | Colour |

### Weather report (`report`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Summary sentence | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom) |
| Font size | `fontSize` | Number |
| Color | `color` | Colour |

### Animation (`animation`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Weather animation | `mode` | `off` (Off), `settle` (Play once, then rest), `continuous` (Continuous (wall screens)) |

### Accessibility (`accessibility`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Focus outline color | `focusColor` | Colour |
| Focus outline width | `focusWidth` | Number |
| Minimum text size (0 = off) | `minFontSize` | Number |
| Reduce motion | `reduceMotion` | `system` (Follow system), `always` (Always reduce), `off` (Off) |
