# SmartVisuals Research for Power BI

> SmartVisuals Research reports survey results in Power BI like a research agency: Likert batteries, banner crosstabs with significance letters and NPS, over one survey table, in one visual. Rim-weighted effective bases, tested changes, published methodology. No export to SPSS.

- Page: https://www.smartvisuals.io/visuals/research
- Fields and settings: https://www.smartvisuals.io/visuals/research/settings
- Microsoft Marketplace: https://marketplace.microsoft.com/en-us/product/smartvisuals.smartvisuals-research?tab=overview
- Package: https://www.smartvisuals.io/downloads/smartvisuals-research-1.0.1.0.pbiviz
- Sample report (zipped .pbip): https://www.smartvisuals.io/samples/smartvisuals-research-sample-1.0.1.0.zip
- Price: Free tier for every viewer; premium $4.49 per user per month or $45 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): `smartvisualsResearch504A0517F073481E943E5262BDB5B9D4`

## What is free

- **All three views, unweighted**: Likert battery, banner crosstab and NPS with counts and percentages, bases, the battery's nets and means, remappable NPS cut-offs and the 0 to 10 histogram, from one field mapping.
- **Says the finding**: A smart caption per view with the highest and lowest statement, the strongest dimension, the biggest segment gap or the NPS change, offline, localized and read by screen readers.
- **Agency footnote and Quick Styles**: Base n, effective n under weighting, wave and source in one line; Agency deck, Executive summary and Compact tracker set the whole look in one click.
- **Tracker, dimensions and benchmarks**: A Wave field shows the latest wave with the change since the previous one; a Dimension field groups statements with pooled score bars; a Benchmark measure shows the delta against your norm.
- **Table tools**: Search, transpose, CSV export that keeps the letters, and row virtualization so a 30,000-row banner scrolls like a native table.
- **Every cosmetic option**: Four themes, fonts, colour ramps, a swatch per answer named by the answer itself, bar radius, thickness and gaps, the NPS score as a number, badge or face, cross-filtering, tooltips, keyboard navigation and high contrast.

## What premium adds

- **Weighted results**: Map Sum of Weight and Sum of Weight squared and every percentage, base and test uses Kish effective bases, the convention behind SPSS-style column tests.
- **Significance letters (A/B/C)**: Column proportion z-tests between segments in every view at 90, 95 or 99 % confidence, optional Bonferroni correction, low bases flagged and excluded.
- **Nets and means with tests**: Top and bottom box net rows and mean rows with Welch-test letters in the crosstab; vs-total and vs-benchmark tests per statement; a test on every tracker delta; cells marked above or below the rest of the sample.
- **NPS inference**: A z-test on every wave-over-wave change and on every segment's movement, how big a wave a non-significant change would need, lettered segments, and a target line with the gap to it in promoters.

## Fields

| Field | Internal name | Takes | Needed | What it is for |
| --- | --- | --- | --- | --- |
| Question | `question` | Column | Optional | Likert and Crosstab: one row / table block per question. NPS: leave empty or filter to the recommend question |
| Answer / Score | `answer` | Column | Optional | Scale answers in model sort order (use Sort By Column); for the NPS view the 0–10 likelihood-to-recommend score |
| Value | `value` | Measure | Optional | Respondent count — or Sum of Weight for weighted results |
| Segment / Columns | `segment` | Column | Optional | Optional (premium): comparison groups — Likert segments, Crosstab banner columns, NPS segments — with significance letters |
| Wave / Period | `wave` | Column | Optional | Optional: tracker mode — NPS trend over waves; Likert and Crosstab show the latest wave with the change since the previous one |
| Sum of Weight² (significance) | `weightsq` | Measure | Optional | Optional: SUM(weight²) enables effective bases for weighted significance testing |
| Dimension / Group | `group` | Column | Optional | Optional: the section a statement belongs to (Leadership, Tools, …) — drawn as a header with its pooled score |
| Question Text | `questionText` | Column | Optional | Optional: the full wording behind a short question code — shown in tooltips, the caption and the footnote |
| Benchmark (top box) | `benchmark` | Measure | Optional | Optional: a norm or benchmark for each statement's top box, as a fraction (0.62) or percent (62) — the delta shows next to the net |

## 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`).

### View (`viewSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| View | `view` | `likert` (Likert battery), `crosstab` (Crosstab), `nps` (NPS) |
| Show View Switcher | `showTabs` | On / off |

### Theme (`theme`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Theme | `selectedTheme` | `smartvisuals` (SmartVisuals), `dark` (Dark), `clean` (Clean (White)), `slate` (Slate) |
| Transparent Background | `transparentBg` | On / off |
| Quick Style | `stylePreset` | `custom` (Custom (keep my settings)), `agency` (Agency deck), `executive` (Executive summary), `compact` (Compact tracker) |

### Scale (`scaleSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Neutral Handling | `neutralMode` | `auto` (Auto (middle of odd scale)), `none` (No neutral), `custom` (Custom position) |
| Neutral Position (1-based) | `neutralIndex` | Number |
| Reverse Scale Order | `reverseScale` | On / off |
| N/A Answer Labels (comma-separated) | `naLabels` | Text |
| Include N/A in Base | `naInBase` | On / off |
| Collapse Scale (disagree / neutral / agree) | `collapseScale` | On / off |

### Colors (`colorSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Positive Side | `positiveColor` | Colour |
| Negative Side | `negativeColor` | Colour |
| Neutral | `neutralColor` | Colour |
| N/A | `naColor` | Colour |
| Detractors | `detractorColor` | Colour |
| Passives | `passiveColor` | Colour |
| Promoters | `promoterColor` | Colour |

### Bars (`barSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Corner Radius | `cornerRadius` | Number |
| Bar Thickness (%) | `thickness` | Number |
| Gap Between Segments | `segmentGap` | Number |

### Answer Colors (`answerColors`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Color | `fill` | Colour |

### Labels (`labelSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show % in Segments | `showPct` | On / off |
| Decimal Places | `decimals` | Number |
| Min Segment % to Label | `minSegmentPct` | Number |
| Font Size | `fontSize` | Number |
| Font | `fontFamily` | `inter` (Inter), `segoe` (Segoe UI), `arial` (Arial), `georgia` (Georgia) |
| Font Color | `fontColor` | Colour |
| Show Base (n=) | `showBase` | On / off |
| Show Split % | `showShares` | On / off |

### Nets & Means (Premium) (`netSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Top Box | `showTopBox` | On / off |
| Show Bottom Box | `showBottomBox` | On / off |
| Box Size (scale points) | `boxSize` | Number |
| Show Mean (scale 1..k) | `showMean` | On / off |
| Mean Decimal Places | `meanDecimals` | Number |
| All Statements Row | `showTotalRow` | On / off |
| Benchmark Label | `benchmarkLabel` | Text |
| Show Change vs Previous Wave | `showWaveDelta` | On / off |
| Show Margin of Error (±) | `showMarginOfError` | On / off |

### Sorting (`sortSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Sort Questions By | `sortBy` | `data` (Data order), `topDesc` (Top box (high → low)), `topAsc` (Top box (low → high)) |

### Legend (`legendSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Legend | `show` | On / off |
| Position | `position` | `bottom` (Bottom), `top` (Top) |

### Display (`display`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Cell Content | `cellContent` | `pct` (Column %), `count` (Value), `both` (% and value), `index` (Index vs Total) |
| % Decimal Places | `decimals` | Number |
| Show Total Column | `showTotal` | On / off |
| Show Base Row | `showBaseRow` | On / off |
| Shade Cells by % | `heatmap` | On / off |
| Show Headline Score | `showHeadline` | On / off |
| Show Split Bar | `showSplit` | On / off |
| Show Wave Trend | `showTrend` | On / off |
| Score Decimal Places | `scoreDecimals` | Number |
| Score Style | `scoreStyle` | `number` (Number), `badge` (Badge), `face` (Face) |
| Score Position | `scorePosition` | `left` (Left), `center` (Center), `right` (Right) |
| Change vs | `deltaReference` | `previous` (Previous wave), `first` (First wave), `target` (Target) |
| Colour Score by Band | `colorByBand` | On / off |
| Good from | `bandGood` | Number |
| Poor below | `bandPoor` | Number |
| Score Label | `scoreLabel` | Text |
| Animate Score | `animateScore` | On / off |
| Show 0–10 Histogram | `showHistogram` | On / off |
| Trend Smoothing | `rollingWaves` | `1` (None), `3` (3-wave rolling average) |
| Sort Segments | `segmentSort` | `data` (Data order), `score` (By score), `change` (By change vs previous wave) |
| Focus on Significant Cells | `focusSignificant` | On / off |
| Transpose (segments as rows) | `transpose` | On / off |
| Show Search Box | `showSearch` | On / off |
| Show Change vs Previous Wave | `showWaveDelta` | On / off |
| Show Trend Column | `showSparkline` | On / off |
| Show CSV Export | `exportEnabled` | On / off |
| Show Margin of Error (±) | `showMarginOfError` | On / off |
| Show Confidence Band on Trend | `showConfidenceBand` | On / off |
| Mark Cells Above / Below Total | `testVsTotal` | On / off |

### Score Mapping (`mapping`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Detractors Up To | `detractorMax` | Number |
| Promoters From | `promoterMin` | Number |

### Target (Premium) (`target`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Target | `show` | On / off |
| Target Score | `value` | Number |
| Label | `label` | Text |
| Color (empty = theme) | `color` | Colour |
| Show Gap to Target | `showGapHint` | On / off |

### Significance (Premium) (`significance`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Significance Testing | `enabled` | On / off |
| Confidence Level | `confidence` | `90` (90 %), `95` (95 %), `99` (99 %) |
| Min Base for Testing | `minBase` | Number |
| Multiple-Comparison Correction | `correction` | `none` (None (agency convention)), `bonferroni` (Bonferroni) |
| Higher / Letters (empty = theme) | `positiveColor` | Colour |
| Lower (empty = theme) | `negativeColor` | Colour |
| Explain Letters in Footer | `showLetterLegend` | On / off |
| Hatch Low Bases | `lowBaseHatch` | On / off |

### Smart Caption (`insights`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Caption | `show` | On / off |
| Position | `position` | `top` (Top), `bottom` (Bottom) |

### Footnote (`footnote`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Show Footnote | `show` | On / off |
| Template ({base} {n} {neff} {wave} {question} {source}) | `template` | Text |
| Source | `source` | Text |

### Dimensions (`groupSettings`)

| Setting | Internal name | Type or options |
| --- | --- | --- |
| Dimension Score Bars | `groupBars` | On / off |
