Forum Discussion

PaginatedDino's avatar
1 month ago
Solved

Power BI visual layer (thin report) and agentic development

Hi all,

 

TLDR; in the context of agentic development - when there is a proper semantic model, a proper specification of visualization requirements, scaffolding/framework of Deneb definitions - why wouldn't we switch to Deneb visuals as the default if the constraints like crossfiltering and slight performance hit et cetera would not be applicable or not unacceptable? 

 

I am in the process of developing a report's visual layer. I am doing this based on a semantic model separately developed. Nowaways like a lot of peers, I heavily rely on LLM/agentic flows to speed up development and delegate tedious tasks while improving consistency e.g. naming conventions. I am using DBT (core) to define my data warehouse and I find this a wonderful solution 🙂  

 

The problem I always faced a bit is the development of the visual layer. I might be picky myself on this front on what I find acceptable, while not having the greatest UI/UX talents to quickly get to the point I want. This implies that I feel I'm spending too much time on this phase to an extend I dread Power BI thin report development. The feedback almost always was very positive, but it does not weigh up against the dread anymore of all the different properties you need to change... I know there is templating when you remain in UI/desktop development mode BUT... 

 

Of course there is now also agentic development possible via MCP and using plugins like https://github.com/data-goblin/power-bi-agentic-development (great resource which probably a lot of you will already have heard of). This really made me excited about going from defining reporting specificiations in a well defined format and delegating the development of the report. My first attempts were not that great though. I'm specifically talking about the use of native visuals, which I think are still something complex to get right from the bat. That's when I started thinking about questioning the general paradigm adhered to by seasoned Power BI developers, to only use Deneb and SVG when you cannot do it via native visuals. I am all for maintainability  and consistency, but my (naïve) take on this is that once you also define a system/skill where you don't leave too much room for interpretation and add template/scaffolding, you could have a way to quickly develop the visual layer in a consistent and maintainable way since a deneb visual definition is contained in a single json block. 

 

I know there are some downsides vs native visuals regarding performance, crossfiltering et cetera, but most use cases I faced is not about power users of the business requiring a lot of control to start analysis in a Power BI report. Rather they just want to have some simple time filter + some category/department/{dimension} drilldown/filtering, which then could still make Deneb stand it's own as the default chart type, no? 

 

As a sidenote, besides Power BI desktop also Apps are also taking a positition. I have tried out Databricks Apps with Dash to quickly prototype reports and also since it's just code, it seems a lot more appropriate in function of agentic development. 

 

Interested to your take on this!

Cheers 

  • Hi PaginatedDino 

    I do not think the idea is naïve. In the scenario you describe, a Deneb-first approach can be entirely reasonable.

    Agentic development changes part of the traditional calculation. A declarative Vega or Vega-Lite specification is deterministic, reusable, versionable and much easier for an agent to generate consistently than a native visual containing many loosely related formatting properties. Deneb 1.9 even provides specific PBIR guidance for programmatically or LLM-generated Deneb visuals, so this is clearly becoming a valid development pattern rather than an unintended workaround.

    However, I would not equate “contained in one JSON block” with “automatically more maintainable.” With Deneb, you own not only the appearance, but also much more of the visual behaviour.

    For example, cross-filtering is supported, but it is disabled by default, depends on resolvable row context, and requires the specification to represent selected and unselected states correctly. Aggregations and transformations can make that resolution considerably more complicated. Deneb also limits the number of data points passed through a selection operation.

    The same applies to tooltips, context menus and drill-through. They work well when the mark retains the original row context, but transformations can break that connection. Therefore, the scaffolding would need to define interaction behaviour as rigorously as it defines axes, labels, colours and spacing.

    Performance is also not simply a fixed “slight Deneb penalty.” It depends on the number of rows, marks, layers, transforms and renderer. Deneb has a default 10,000-row limit, and its documentation recommends Canvas rather than SVG for designs containing many elements. Every additional field also affects both the Power BI query and the Vega rendering workload.

    Native visuals still have one major advantage: Power BI owns their platform integration. Standard interaction behaviour, accessibility, focus mode, high-contrast support and showing the underlying data are part of the normal Power BI consumption experience. With generated Deneb specifications, these behaviours should become explicit acceptance tests rather than assumptions.

    Therefore, I would probably not adopt the rule:

    Use Deneb only when a native visual cannot do it.

    But I would also avoid:

    Every visual should be a newly generated Deneb specification.

    A better rule could be:

    Use native visuals for standard analytical components, and use governed Deneb components whenever the organisation requires precise, repeatable presentation patterns.

    If 70–80% of the required report layer can be represented by perhaps ten well-tested Deneb templates, making those templates the default is defensible. The important part is that agents should instantiate approved components rather than invent a new Vega specification for every chart.

    Such a framework would ideally include:

    A controlled set of supported chart patterns.
    Semantic field roles rather than hard-coded report-specific field names.
    Central design tokens for fonts, spacing, colours and number formatting.
    Defined tooltip, selection and cross-filtering behaviour.
    Performance limits for rows and rendered marks.
    Visual regression tests or screenshot validation.
    Accessibility, export and mobile-layout checks.
    A native-visual fallback when the required Power BI functionality is more important than pixel-level control.

    In that setup, Deneb is no longer merely a custom visual used for exceptional charts. It becomes an internal visualization component framework—and that is a much stronger case for making it the default within its supported boundaries.

    If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly.

3 Replies

  • Hi PaginatedDino 

    I do not think the idea is naïve. In the scenario you describe, a Deneb-first approach can be entirely reasonable.

    Agentic development changes part of the traditional calculation. A declarative Vega or Vega-Lite specification is deterministic, reusable, versionable and much easier for an agent to generate consistently than a native visual containing many loosely related formatting properties. Deneb 1.9 even provides specific PBIR guidance for programmatically or LLM-generated Deneb visuals, so this is clearly becoming a valid development pattern rather than an unintended workaround.

    However, I would not equate “contained in one JSON block” with “automatically more maintainable.” With Deneb, you own not only the appearance, but also much more of the visual behaviour.

    For example, cross-filtering is supported, but it is disabled by default, depends on resolvable row context, and requires the specification to represent selected and unselected states correctly. Aggregations and transformations can make that resolution considerably more complicated. Deneb also limits the number of data points passed through a selection operation.

    The same applies to tooltips, context menus and drill-through. They work well when the mark retains the original row context, but transformations can break that connection. Therefore, the scaffolding would need to define interaction behaviour as rigorously as it defines axes, labels, colours and spacing.

    Performance is also not simply a fixed “slight Deneb penalty.” It depends on the number of rows, marks, layers, transforms and renderer. Deneb has a default 10,000-row limit, and its documentation recommends Canvas rather than SVG for designs containing many elements. Every additional field also affects both the Power BI query and the Vega rendering workload.

    Native visuals still have one major advantage: Power BI owns their platform integration. Standard interaction behaviour, accessibility, focus mode, high-contrast support and showing the underlying data are part of the normal Power BI consumption experience. With generated Deneb specifications, these behaviours should become explicit acceptance tests rather than assumptions.

    Therefore, I would probably not adopt the rule:

    Use Deneb only when a native visual cannot do it.

    But I would also avoid:

    Every visual should be a newly generated Deneb specification.

    A better rule could be:

    Use native visuals for standard analytical components, and use governed Deneb components whenever the organisation requires precise, repeatable presentation patterns.

    If 70–80% of the required report layer can be represented by perhaps ten well-tested Deneb templates, making those templates the default is defensible. The important part is that agents should instantiate approved components rather than invent a new Vega specification for every chart.

    Such a framework would ideally include:

    A controlled set of supported chart patterns.
    Semantic field roles rather than hard-coded report-specific field names.
    Central design tokens for fonts, spacing, colours and number formatting.
    Defined tooltip, selection and cross-filtering behaviour.
    Performance limits for rows and rendered marks.
    Visual regression tests or screenshot validation.
    Accessibility, export and mobile-layout checks.
    A native-visual fallback when the required Power BI functionality is more important than pixel-level control.

    In that setup, Deneb is no longer merely a custom visual used for exceptional charts. It becomes an internal visualization component framework—and that is a much stronger case for making it the default within its supported boundaries.

    If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly.

  • Hi Ritaf1983,

     

    Thanks for your valuable input 🙂 

    Yes I agree with your mentioned caveats and gotchas. I indeed would not consider this the default for all reporting purposes, rather depending on the use case: no complex interactions in the report itself, limited dataset volume/data points et cetera. 

     

    All the best

  • v-aatheeque's avatar
    v-aatheeque
    Icon for Community Support rankCommunity Support

    Hi PaginatedDino 

    Have you had a chance to look through the responses shared earlier? If anything is still unclear, we’ll be happy to provide additional support.