Product Documentation

Select a Product:

Find Text:
Submit a question:

Not seeing an answer to a question you might have? You can ask it here and we'll try to update the documentation to address it. If you're making a feature request or reporting a problem, please create a support item for it, instead!


LLM AI Charts

Purpose

The LLM AI Charts visual harnesses the power of Large Language Models to generate chart rendering code which is combined with your data and executed. This enables the presentation of dozens of possible chart types, depending on the characteristics of your data. You can use our Azure OpenAI services with zero setup on your part - or you can use your own LL model which is deployed in Azure AI foundry. You can choose how much or little data is shared with the LLM, to address privacy questions. You can make adjustments to the generated output using natural language prompts.

Data Bucket

The data requirements for the LLM AI Charts visual include 3 bucket fields, listed here:

Field Type Description
Values Any One or more fields from the semantic model. Taken together with any Group by fields, these form the data frame the chart is built from, and they set its granularity: each unique combination of these field values becomes one row. Despite the name, fields here can be categorical or continuous (text, dates, or numbers).
Measures Any Zero, one or more DAX measures. Unlike Values and Group by, measures do not affect granularity: each measure is evaluated at the grain set by your Values and Group by fields — one value per row of that combination (the most detailed level those fields define).
Group by Any Optional. One to three fields that define the primary grouping (series / breakdown) for the chart. Together with Values, they help set the data frame's granularity, and they become its leading hierarchy levels — enabling group-level highlighting, drill-through, and tooltips.

Settings

Data and Interaction
Field Default Description
Identifier Optionally provide a label that will be used to uniquely identify this instance of the visual across all reports. This can be used to 'share' rendering logic in different dashboards (when using the same data fields).
Version Number Specify the version number of the code that was generated for this visual. This lets you revert to earlier renderings. Generating new renderings will increment the version number. Set to 0 to force a fresh rebuild.
Privacy Level +Include Column Detailed Stats Controls how much data is shared with the back-end service. Sharing more information can help build more meaningful visualizations. 'Detailed Stats' is the default, where per-column statistics (e.g. the mean) are shared. At 'Detailed Stats' and above, two narrow categories of actual text values are also shared verbatim — to pin correct axis order and stop the model guessing labels it cannot see: (1) recognized ordinal labels (weekday, month, quarter, and survey scales like Likert); and (2) short, low-cardinality category codes — either common generic labels (clothing sizes S/M/L/XL, days, months, Y/N) or alphanumeric codes with at most one letter plus a digit (e.g. 'Q1', 'J-01'), capped at 15 distinct values. All other text values stay obfuscated. Below 'Detailed Stats', NO actual text values are shared. 'Sample Data' additionally sends a few obfuscated sample rows.
Locale Code Override Optionally override the locale used to parse localized values (weekday / month names for axis ordering and cyclical-axis detection, and localized period labels). When blank (the default), the Power BI report/host locale is used. Set a BCP-47 tag like 'de-DE', 'fr-FR', or 'en-US' to force a specific locale — useful for testing, or when the report locale doesn't match the language of the data's labels.
Reasoning Mode Leave to visual How many LLM passes are used. More passes cost more credits but usually improve results. 'Leave to visual' (default) picks a mode by heuristic. 'Code pass only' generates the chart in a single pass - fastest and cheapest, with no chart-selection review. 'Pre-validate pass' adds a validator that picks the most suitable chart before code is written. 'Pre-and-post validate pass' adds both that validator and a post-generation proofread, for the highest quality. 'Code and post-validate pass' skips the validator (the visual's own engine picks a valid chart) and runs only the proofread. (in 2.0)
Model Temperature 30 For models that support it, controls how creative versus deterministic the generated code is. Scale is 1-100; 100 means the most creativity the selected model supports (e.g. 2.0 for OpenAI/DeepSeek chat models, 1.0 for Anthropic Claude). 50 is the model's own default temperature. 1 is highly deterministic (greedy decoding). Lower values produce more reproducible but less varied chart designs; higher values produce more creative but less predictable output. On retry after a code-generation error, the server automatically reduces temperature for better instruction adherence.
Change Creates New Off When disabled (default), the current chart is kept when your data fields change — you rebuild manually (set 'Version Number' to 0 or click the rebuild button). When enabled, changing the data fields automatically creates a new version. Either way, changing a generation setting (model, chart type, colors, etc.) never forces a rebuild on its own — it applies the next time you click Generate.
Reassemble Split Dates On When enabled (default), if a date field was split by Power BI's date hierarchy into separate Year / Quarter / Month / Day columns, the visual reassembles them into a single date column so it can detect trends, seasonality and time-based patterns. Turn off to keep the split parts as independent categories. Applies to NEW generations; an existing chart keeps the layout it was built with until you rebuild.
Field Descriptions You can optionally provide a description for one or more fields in your data source. This can help provide context for better code generation. You can provide a description for each field on sequential lines, or prefix each line with 'field name:' to name specific fields (matching the display names in the data well). Limit: 500 characters total across all descriptions for licensed accounts; ignored entirely for freemium requests. (Bring-Your-Own-Key accounts have no limit.) Longer text is truncated server-side.
Commentary You can optionally provide an explanation of the data, constraints, and any other relevant information. Limit: 500 characters for licensed accounts; ignored entirely for freemium requests. (Bring-Your-Own-Key accounts have no limit.) Longer text is truncated server-side.
Favor General Type N/A Steers the engine toward a family of chart types. 'Traditional' favors familiar charts (bar, column, line, pie, scatter); 'Non-traditional' favors richer forms (treemap, sunburst, Sankey, chord, heatmap, etc.). 'N/A' (default) leaves the choice to the engine. Note: choosing 'Traditional' also turns off the 'Chart Variety' nudge, since the two work against each other.
Allow Generated Measures Leave to Visual Whether the LLM is encouraged to invent derived measures (ratios, z-scores, period-over-period change, etc.) when picking a chart. 'Yes' tells the LLM to always propose 2-4 derived measures and refuse plain bar/line charts of raw values. 'No' suppresses derived-measure generation entirely — the chart reflects raw columns only. 'Leave to Visual' (default) lets the server roll a die (currently 90% yes / 10% no) so most generations get the richer treatment while occasional runs surface a baseline view.
Industry Context N/A Optional — tells the model what industry this data belongs to, so it interprets your columns through the right lens (e.g. a 'spend' column in Logistics is freight/fuel, not ad spend). This helps it infer genuinely valid domain measures AND avoid coining ones the data doesn't support. 'N/A' (default) leaves the model to infer context from the column names alone.
Favor Data Point Values N/A Whether to print data labels - the numeric value drawn on each bar, point, or slice. 'Yes' asks for them, 'No' suppresses them, 'N/A' (default) leaves the choice to the engine (which may omit them when marks are too dense to stay legible).
Title Text Leave to Visual Whether the generated chart should render its own title. 'Leave to Visual' lets the visual decide based on viewport size and a randomized preference (small viewports skip the title; otherwise the title is included on roughly 1-in-4 generations). 'Include' forces a chart title. 'Exclude' tells the LLM not to render one — typically because the report already shows a title outside the chart.
Legend Placement Auto Where the chart legend (if any) should be drawn. 'Auto' places the legend outside the plot area when the viewport is wide enough (≥ 500 px) and leaves it to the renderer otherwise — and for chart families that already name everything inline (flow/Sankey, whose nodes are labelled), Auto may omit the standalone legend entirely. 'Outside' forces the legend into the chart margin (right or bottom) for maximum plot real estate. 'Inside' keeps it inside the plot area where overlap with the data is minimized. 'None' tells the model to OMIT any standalone legend and rely on the chart's own labels. Single-series charts get no legend regardless of this setting.
Favor Limit To N/A Suggests filtering to a subset before charting: 'Latest' (most recent period), 'Top' / 'Bottom' (highest / lowest by the measure), 'Most common', or 'Outliers'. Use 'Favor Limit Count' to cap how many items are kept, and 'Allow Group to Others' to choose whether the remainder is bucketed into 'Others' or dropped. 'N/A' (default) leaves the choice to the engine.
Favor Limit Count Allows suggesting a limit for the number of groups, categories, etc. (blank or 0 = no limit implied / left to LLM)
Aggregation Auto How a measure is summarized per group/region/mark when the chart aggregates (e.g. the colour of each region on a map, the height of each bar). 'Auto' (default) sums additive amounts and averages rates/ratios/percentages. Choose Sum, Average, Median, Min, Max, Count (rows), or Distinct count to force it. Applies to the chart's OWN aggregation on top of any Power BI field-well aggregation; D3 charts re-summarize on the next render, Python-drawn charts apply at the next Generate. You can also just say it in your request (e.g. 'colour by average orders').
Chart Variety Probability (0–1) that the engine deliberately favors a less conventional — but still semantically sound — chart instead of the single most obvious one for your data. Higher = more variety across regenerations. Blank = use the server default. Correctness always wins: if only the obvious chart can represent the data honestly, it is kept. Ignored when you've forced a specific chart type or set 'Favor General Type' to 'Traditional'.
Favor Overlay Leave to Visual Strongly suggests adding the chosen analytical overlay so you get it without asking. The engine still applies it only where it fits the chart + data (and may add any measures it needs). 'Leave to Visual' lets the engine decide.
Compactness Leave to visual Controls how aggressively the LLM aggregates high-cardinality columns before placing them on a chart axis. \
Group to Others Label Optional — RENAMES the 'Others' bucket (default name is 'Other'). Grouping the remainder is controlled by the 'Allow Group to Others' toggle, not by this field.
Allow Group to Others On When ON (default), limiting (Favor Limit Count / Favor Limit To) groups the remaining values into an 'Others' bucket so nothing is dropped. When OFF, the remainder is dropped — a 'leaderboard' showing only the limited set.
Favor Date Summary N/A Suggests the time grain to roll dates up to before charting (Day, Week, Month, Quarter, Year, Decade). 'N/A' (default) leaves the choice to the engine based on the date range.
No Data Text When there is no data available, this text can be shown in place of the chart with no data present.
Filtered-Too-Far Text Shown when a cross-filter or slicer narrows the data so far that the saved chart has nothing left to plot — for example, clicking a single node in another visual collapses one axis of a heatmap. Leave blank to use the built-in message. This is distinct from 'No Data Text', which covers a selection that removes every row.
Retry Count 2 Controls if / how many retries may be attempted if the generated code fails to render due to a client-side error. You will incur credit usage for retries, but larger values increase your chance of successful rendering. '0' disables retries.
Maximum Rows 250000 No more than this number of rows will be loaded for analysis and rendering. (Larger numbers can have negative performance implications.)
Execution Timeout (seconds) 120 If the client-side rendering takes longer than this number of seconds, it will automatically be canceled.
Allow Generate in View Mode Off When enabled, report users can choose to invoke generation of new layouts, at run-time, via the generate button. These will not be saved.
Click Shows Summary On When enabled, clicking on the generated image shows the summary (with any enabled buttons).
Save Thumbnails Off When enabled, initial renderings of versions can be saved at bizintelligencechampions.com, to be used as thumbnail images.
Use Default Context Menus Off When enabled, context menus will be the browser default as opposed to the Power BI context menu. This gives you the option to use browser menu features (eg. copy image).
Allow Tooltips On When enabled (default), hovering a mark shows a tooltip. Use 'Tooltip Source' to choose between the visual's data tooltip and the chart library's native tooltip. Turn off to suppress hover tooltips entirely.
Tooltip Source Auto (default) Which tooltip shows on hover. 'Auto' (default) uses the chart library's own tooltip for Plotly (purpose-built, shows true aggregates) and the visual's tooltip for D3 (D3 charts usually don't draw their own). 'Visual' always uses the visual's 'Data sample' tooltip, integrated with Power BI (for Plotly it suppresses the library's native tooltip to avoid a double tooltip). 'Chart' always uses the chart library's native tooltip and shows no visual tooltip (a D3 chart may then show none if the generated code didn't draw one).
Show Plotly Toolbar On Applies only to Plotly interactive renders. When enabled, Plotly's toolbar appears on hover in the top-right corner of the chart, giving users zoom, pan, box-select, lasso-select, autoscale, and reset-axes tools. When disabled, the toolbar is hidden and drag gestures still zoom (single-click cross-filter is unaffected either way).
Plotly Legend Click Behavior Cross-filter (default) Controls what happens when a user clicks a legend swatch or label on a Plotly-rendered chart. 'Cross-filter' (default) treats the click as a Power BI selection — every row in that category becomes the active filter, dimming non-selected marks here and cross-filtering other visuals on the page (Ctrl/Shift+click accumulates). 'Hide/show trace (Plotly default)' restores Plotly's native behavior of toggling that trace's visibility within this visual only — no cross-filter is sent. 'Disabled' makes legend clicks do nothing. D3-rendered charts ignore this setting (D3 legends don't fire through the same path).
Plotly Sankey Node Behavior Click to cross-filter (default) Controls what happens when a user clicks a node rectangle on a Plotly-rendered Sankey diagram. 'Click to cross-filter' (default) disables Plotly's node-drag handler so clicks reliably fire as Power BI selections — the click cross-filters other visuals on the page and dims unselected nodes/links here. 'Drag to rearrange (Plotly default)' restores Plotly's native draggable nodes; in this mode clicks are typically consumed by the drag handler and do NOT cross-filter (a known Plotly Sankey behavior). Pick this only when laying-out nodes manually matters more than cross-filter. Applies only to Plotly Sankey traces; other chart types are unaffected.

Formatting
Field Default Description
Auto-Localize Visual Text On When enabled (default), the visual translates its built-in messages to the host language. Turn off to keep messages in English regardless of the browser/host locale.
Language Code This setting can by used to override the browser language setting. This can influence localization of generated output. This should be the first 2 characters of a standard BCP 47 language code.
Caption Inside Chart Off When enabled, a short one-line description of what the chart is showing (chart type, derived measures, non-default aggregations) is rendered directly under the chart title in addition to appearing in the hover summary. Default off keeps that detail in the hover panel only.
Selection Dim Opacity (%) 25 When you click a mark to cross-filter, the non-selected marks dim to this opacity (1 = nearly invisible, 100 = no dim). Applies uniformly across heatmaps, bar/scatter/line, pie/treemap/sunburst/funnel, Sankey, and D3 charts. Default 25 matches the pre-setting hardcoded values.
Selected Mark Glyph None Optionally place a small high-contrast glyph at the top-right of each SELECTED mark when cross-filtering. DEFAULT OFF ('None'): most charts read fine on dimming alone, and the glyph can sit awkwardly on some mark geometries (e.g. at the outer edge of a sunburst arc, where it can be misread as belonging to a neighbour). Turn it on (Dot / Check) when you work with PALE / light-coloured marks where the dim is hard to see (e.g. an already-pale heatmap cell). Applies across D3 charts and Plotly cartesian charts (heatmap / scatter / bar / line). Automatically suppressed on flow/relationship, connected-series, and distribution-shape charts (Sankey / Chord / Arc / line / area / streamgraph / box / violin / ridgeline), where the highlight already makes the selection obvious or the mark is not a discrete point.
Filters During Play Off For charts that animate over time (e.g. an animated treemap), controls whether the report cross-filter tracks the animation. When disabled (default), the report cross-filter changes only when you CLICK a mark or a timeline period — playback never shifts the other visuals around. When enabled, the shown period drives the report filter frame by frame during playback (including from a standing start — plain auto-play filters each period as it plays). If 'Play Ends at Last Period' is ALSO enabled, the chart loads with the LAST period's filter already applied as the default report state. Applies to any animated chart type, current or future.
Animation Auto-Play Off For charts that animate over time, controls whether the animation starts playing by itself when the visual loads. When disabled (default), the chart rests at its overview state until the user presses play or picks a period. When enabled, it plays through the periods once on load. Applies to any animated chart type, current or future.
Animation Speed (ms per step) 1000 For charts that animate over time: how long each period stays on screen during playback, in milliseconds (lower = faster). Clamped to 250–5000; default 1000. Applies to any animated chart type, current or future.
Max Ideal Frames 60 For charts that animate over time: the target maximum number of keyframes to walk. The animation summarizes dates to the finest calendar grain (decade/year/quarter/month/week/day) that stays at or under this value (and as close to it as the grains allow) — e.g. 15 years of daily data at 60 becomes ~quarterly. Rows within each period are combined with the chosen aggregation. Re-grains live (no regeneration). Clamped to 3–500; default 60. Applies to any animated chart type.
Play Ends at Last Period Off For charts that animate over time: when enabled, pressing play runs through the periods and STOPS on the final period, AND the chart defaults to that last period on load (instead of the 'All periods' overview). When disabled (default), reaching the end returns the chart to its 'All periods' overview and clears any period filter, and the chart loads on the overview. (With 'Filters During Play' also on, the last period's filter is applied as the default report state.) Applies to any animated chart type, current or future.
Timeline Style Auto For charts that animate over time, how the period scrubber is drawn. 'Line' shows a continuous horizontal timeline with a moving vertical tick — best when there are MANY periods (e.g. a choropleth over 100+ years, where the colours change in place). 'Boxes' shows one selectable box/dot per period — best for a handful of periods. 'Auto' (default) picks a line when there are many periods, boxes when there are few. Applies to any animated chart type, current or future.
Label Contrast Fail-safe Leave to Visual After a chart renders, recolour in-mark text labels (sitting on a coloured tile/bar/cell) whose colour is hard to read against the mark's ACTUAL rendered fill — to black or white for legibility (skips labels that already read well; covers D3 and Plotly SVG charts). 'Leave to Visual' lets the visual decide per instance; 'Enabled' always applies it; 'Disabled' never does — choose Disabled if you ask the LLM for specific label colours you don't want this to override.
Legend Placement Fix-up Smart Placement How the visual adjusts legend placement AFTER a chart renders, to keep the legend from overlapping chart content. This is independent of the generation-time 'Legend Placement' hint (which steers the LLM). 'LLM Only' makes NO runtime adjustment — placement comes solely from how the chart was generated (the prompt prose still applies). 'Leave to Visual' (default) and 'Smart Placement' run the SAME fix-ups — re-anchoring a Plotly legend the code placed inside the plot, and a measured D3 reconcile that opens a gutter and slides an overlapping legend into it — but 'Leave to Visual' only acts on large, unambiguous overlaps and makes minimal changes (these narrow gates are refined over time), while 'Smart Placement' acts on smaller overlaps and allows larger adjustments.
Summary Position Bottom Controls whether and where the summary panel appears. It describes the chosen visualization (chart type, derived measures) and exposes action buttons. Default is 'Bottom'; how long it stays visible is set by 'Hide Summary After (In Edit / In View)'.
Hide Summary After (In Edit) 30 The summary area will be hidden after this number of seconds, when in edit mode. The summary is shown after refreshes and layout generation. 0 = never shown.
Hide Summary After (In View) 0 The summary area will be hidden after this number of seconds, when in reading mode. The summary is shown after refreshes and layout generation. 0 = never shown
Summary Text Font The font family for the summary text.
Summary Text Size The size of the summary text.
Suggested Font If provided, this font family name will be suggested to the LLM as the primary font to use.
Show Credits Remaining (in Reading view too) Off Licensed visuals always show the approximate credit balance in the hover panel when the report is open in Edit view. Turn this on to ALSO show the balance in Reading view (default off, since Reading view is what report consumers see and you may not want to expose Account-level credit balance there). Low-credit warnings fire in both views regardless of this setting.
Hide Some Warnings and Prices Off When enabled, some types of warning messages will not be shown. Also, the credit balance will not be shown in tool tips, and the price list / secret key entry will not be shown in the summary box.
Spinner Type Circles Lets you pick a spinner style, while the visual is processing data.
Please Wait Message Please Wait You can change the message shown when the visual is processing data. (A blank value will show no message.)

Colors
Field Default Description
Background Color The background color for the visual's whitespace areas. (Blank = transparent)
Background Opacity 0 The opacity (percentage) for the background color. (Zero is fully transparent.)
Summary Background Color The background color for the summary panel.
Summary Opacity 85 The opacity (percentage) for the summary panel. (Zero is fully transparent.)
Use Generated Palette On When enabled, a palette will be auto-generated from the current report theme.
Color Scale (Low) Force the LOW end of any continuous color scale (colormap/colorbar) the chart draws — heatmaps, choropleth maps, density plots, continuous bubble color, etc. Blank = automatic (a light tint anchored on the report palette). Applies with 'Color Scale (High)'; D3 charts restyle on the next render, Python-drawn charts apply at the next Generate.
Color Scale (High) Force the HIGH end of any continuous color scale (colormap/colorbar) the chart draws. Blank = automatic (the report palette's primary color). Applies with 'Color Scale (Low)'; D3 charts restyle on the next render, Python-drawn charts apply at the next Generate.
Color Scale Scope All periods For charts that animate over time: what the continuous color scale shows. 'All periods' (default) computes ONE scale over every period so a color means the same value in every frame — the honest view of growth (early periods legitimately read pale). 'Current period' re-scales each frame to that period's own min–max so you see the full color range WITHIN every frame (the colorbar redraws per frame and is labeled accordingly). 'Change vs. own average' switches what's encoded from magnitude to movement: each region's color shows its % deviation from ITS OWN average across all periods (diverging scale; a small region's big swing reads as strongly as a large region's) — outliers are clamped per 'Color Scale Self-Clamp Percentile' below, and the 'All periods' state falls back to the standard magnitude view since every region trivially equals its own average there. D3 charts restyle on the next render without a regeneration. Applies to any animated chart with a continuous color scale, current or future.
Color Scale Self-Clamp Percentile 95 Only applies when 'Color Scale Scope' is 'Change vs. own average'. The diverging scale's outer edge is set to this percentile of |% change| across all regions/periods (not the raw maximum), so one outlier region doesn't wash out everyone else's contrast to near-nothing. Lower = more contrast among typical regions but more outliers pinned to full saturation; higher = more headroom but a flatter map. Default 95.
Map Land Color For maps: the fill for LAND — the base colour of the map's landmasses. On a choropleth this is what you see wherever the data doesn't reach; on a point/bubble map it's the whole basemap under the marks. Blank = automatic (a light grey). In high-contrast mode the system's background colour is used instead and this setting is ignored, as high-contrast forced colours are a requirement rather than a preference.
Map No-Data Color For choropleths: the fill for regions that ARE part of your data's geography but have no value for what's currently shown (e.g. a country with no rows in the selected period). Blank = use 'Map Land Color', so no-data regions are indistinguishable from plain land unless you deliberately set them apart. Set a distinct colour when 'we have no number here' is a finding in its own right rather than just background. Ignored in high-contrast mode.
Color 1 Color #1 of an optional palette suggested to the engine. Fill in colors in order and leave the rest blank. Used when 'Use Generated Palette' is off (or as the seed colors it builds from); leave all blank to follow the report theme.
Color 2 Color #2 in a user-defined suggested palette.
Color 3 Color #3 in a user-defined suggested palette.
Color 4 Color #4 in a user-defined suggested palette.
Color 5 Color #5 in a user-defined suggested palette.
Color 6 Color #6 in a user-defined suggested palette.
Color 7 Color #7 in a user-defined suggested palette.
Color 8 Color #8 in a user-defined suggested palette.
Color 9 Color #9 in a user-defined suggested palette.
Color 10 Color #10 in a user-defined suggested palette.
Color 11 Color #11 in a user-defined suggested palette.
Color 12 Color #12 in a user-defined suggested palette.
Color 13 Color #13 in a user-defined suggested palette.
Color 14 Color #14 in a user-defined suggested palette.
Color 15 Color #15 in a user-defined suggested palette.
Color 16 Color #16 in a user-defined suggested palette.
Color 17 Color #17 in a user-defined suggested palette.
Color 18 Color #18 in a user-defined suggested palette.
Color 19 Color #19 in a user-defined suggested palette.
Color 20 Color #20 in a user-defined suggested palette.

Vega and Vega-lite
Field Default Description
Vega Type N/A Determines whether the visual tries to use Vega or Vega-lite explicitly, or N/A leaves the choice to the visual. (in 2.0)
Render Mode N/A Controls whether Vega/Vega-lite renderings are done with SVG or Canvas. SVG is good for most cases but can become slow for a large number of data points. N/A leaves the choice to the visual. (in 2.0)
User Config You can optionally provide Vega/Vega-lite config JSON that gets used to provide styling. I.e. you can copy-and-paste your config across multiple instances of LLM AI Charts to provide consistent styling. This would be the same JSON you could find in Deneb's Config. (in 2.0)

Licensing
Field Default Description

Other Resources / Links:

AppSource Purchase Guide

Learn more about purchasing one or more user licenses from Microsoft AppSource.
This application may no longer respond until reloaded. Reload 🗙