Beyond the Native: Using Custom JSON in Power BI to Deliver What Clients Really Want
- Mike Wohlfarth

- Sep 29
- 4 min read

One of the biggest strengths of Power BI is its ability to quickly turn data into insight. Native visuals like bar charts, line charts, tables, and maps make it easy to build dashboards that drive business decisions.
At Opportune, we always strive to show the best visual representation of the data, something that is clear, accurate, and actionable. But if you’ve worked with clients long enough, you know the request is almost always the same:
“This looks great…but can you make it look like this Excel chart I built?”
That’s where things can get tricky. Power BI’s native visuals have limitations, and those limits can leave gaps between what clients ideally need and what the tool can deliver out of the box. It can feel surprising that Excel, another Microsoft product, often provides more flexibility for certain chart types than Power BI itself.
The good news? Those gaps can be bridged with custom JSON specifications, which give us the flexibility to honor very specific client designs while still keeping the power of an interactive Power BI dashboard.
Why Native Visuals Fall Short
Native visuals in Power BI are powerful, but they’re designed for broad, common use cases. Where they struggle is in the very specific requirements that clients often bring to the table.
For example:
Advanced label placement: Moving values outside of bars, slices, or stacked segments for clarity.
Dynamic formatting rules: Changing not just colors, but also fonts, icons, or text depending on thresholds.
Custom chart types: Visuals like Sankey diagrams, multi-layered scatter plots, or other non-standard layouts that aren’t available natively.
Mixed-value handling: Showing positive and negative values intuitively in visuals like donuts, heatmaps, or contribution charts.
These aren’t about “making things pretty.” They’re about creating visuals that both look right and tell the story clearly.
Going Beyond Native Visuals with Custom JSON
With visuals like Deneb (powered by Vega & Vega-Lite), we can write custom JSON definitions that tell Power BI exactly how to render a visualization.
This means we’re no longer limited to the buttons and toggles in the formatting pane, instead, we gain full creative control.
Here are just a few things JSON makes possible:
Mixed-value clarity: Display positives and negatives side by side, with context-specific formatting like $50.5M vs. ($10.8M).
Stakeholder-first visuals: Deliver designs that mirror Excel mockups or prototypes while adding the interactivity and scalability of Power BI.
Full customization: Control every detail of the visual’s appearance and behavior, from brand color palettes to gradient scales.
By leveraging JSON, we can say yes to those questions more often. It’s the difference between saying, “Sorry, Power BI can’t do that” and saying, “Yes, let’s build it.”
Bridging the Gap Between Vision and Platform
At the end of the day, business users don’t care if a dashboard uses a native visual, a custom visual, or JSON under the hood.
What matters is simple:
Does it tell the story clearly?
Does it look like what they had in mind?
Does it build trust in the data?
That’s the real value of going beyond Power BI’s native limits, bridging the gap between a client’s vision and the platform’s capabilities.
Example: Before vs After

On the left, you see a native Power BI donut chart. While it’s functional, it has clear limitations:
Because the chart includes both positive and negative margin values, Power BI requires converting them into absolute values just to make the donut render. As a result, you lose the ability to see whether a category is positive or negative at a glance.
Labels are constrained, formatting is rigid, and color customization is minimal.
On the right, the same data has been rebuilt using custom JSON in Power BI. Notice the improvements:
True mixed-value display: Positives and negatives are shown together with clear green (positive) and red (negative) slices.
Context-specific labels: Gains and losses are labeled differently ($M vs. ($M)), making the story obvious at a glance.
Callouts for clarity: Labels are placed outside with connectors, ensuring every slice is visible.
Greater functionality and focus: The visual delivers a higher level of flexibility and makes it easy to see key areas of attention at a glance, all while remaining fully interactive in Power BI.
This side-by-side shows the power of JSON: native visuals are great for speed, but custom JSON unlocks flexibility that matches client expectations exactly.
From “Can’t Do” to “Let’s Build It”
Power BI’s native visuals are a great starting point. But if you’re working with stakeholders who have specific design preferences or advanced reporting needs, custom JSON is how you unlock the next level.
Again, it’s not about making things “pretty.” It’s about delivering the exact experience clients expect, without compromising data integrity or usability.
Pro Tip: Start small. Take one chart a stakeholder insists on, replicate it in JSON, and show them what’s possible. You’ll often see their entire perspective on Power BI change.
Want to Learn More?
If you’re curious about how custom JSON can bridge the gap between client vision and Power BI’s native limits, let’s talk.
Whether you’d like to see a quick demo, explore specific use cases, or just swap ideas, feel free to reach out. We are always happy to share what we’ve learned and show how we help clients get the visuals they really want, without compromise.



Comments