Use Rainmaker Insights (RI) Chat to describe how you want a Visual to appear. You can also review or manually adjust its configuration in the ECharts Spec JSON field in the Style section.
Configure a Visual with RI Chat
RI Chat provides an easy way to configure your report using plain language. Describe the layout, formatting, or changes you want, and RI Chat generates the configuration.
Navigate to Reports → RI Visuals.
Create a new Visual or open an existing Visual for editing.
Select the RI Chat tab in the Build section.
Enter a prompt describing the changes you want. For example:
“Display the results as a pie chart showing account counts by status.”
“Group the table by agent and include subtotals and a grand total for the collected amount.”
“Rename the Amount column to Collected and display values with two decimal places.”
Select Run Preview and review the results.
Enter additional prompts to refine the Visual, then select Save.
For detailed instructions, see Creating an RI Visual.
The following sections explain the supported Style JSON settings for users who want to review or manually adjust the configuration.
Access the Style Section
Navigate to Reports → RI Visuals.
Open or create a visual.
Expand Style.
Enter the JSON configuration in the ECharts Spec JSON field.
Select Run Preview to review the results.
Select Apply or Save to save the visual.

Image displays the ECharts Spec JSON field in the Style section.
Note
The ECharts Spec JSON field uses RI-specific configuration options. It is not a general ECharts configuration object. Only options supported by RI are applied.
What You Can Style
The JSON configuration can control:
Visual types and data mappings.
Column labels and formatting.
Tables, groups, subtotals, and totals.
Charts, heatmaps, gauges, scorecards, and cross tabs.
Legends and cell visuals.
Delivery and export defaults.
This article covers JSON configuration for individual RI Visuals. Board-level styles, SQL, and Default Parameters are configured separately.
Understand the JSON Configuration
The JSON configuration tells RI how to display the data returned by the visual's SQL. Most configurations include three types of settings:
Component | Purpose | Example |
|---|---|---|
Visual type | Determines how the data is displayed. |
|
Data mapping | Identifies which SQL results are used in the visual. |
|
Display options | Controls the appearance or behavior of the visual. | Labels, formatting, totals, legends |
For example:
"type": "pie" tells RI to display the data as a pie chart.
"labelColumn": "status" tells RI to use the SQL alias status for the pie slice labels.
"valueColumn": "account_count" tells RI to use the SQL alias account_count to determine the value of each slice.
{
"type": "pie",
"labelColumn": "status",
"valueColumn": "account_count"
}JSON Syntax Guidelines
When entering JSON:
Use double quotation marks for text values.
Use true or false for Boolean values.
Use brackets [ ] for lists.
Enter numbers without quotation marks.
Do not include comments or trailing commas.
Omit optional settings when not needed.
When referencing data, use the SQL output alias returned by the visual.
General Settings
Setting | JSON Type | Description |
|---|---|---|
| string | Specifies the visual type. |
| string | Specifies the title displayed on the visual. If omitted, the visual label is used. |
| string | Changes how supported visual types are displayed. |
Supported Visual Types
Type | Description |
|---|---|
| Displays data in rows and columns. |
| Displays data in a chart. |
| Displays values as slices of a pie chart. |
| Displays values in a heatmap or comparison matrix. |
| Displays progress toward a goal. |
| Displays one or more key metrics. |
| Summarizes data in a row-and-column grid. |
Configure Columns and Drilldowns
Columns control which data appears in the visual and how it is presented.
Setting | JSON Type | Description |
|---|---|---|
| array of strings | Places the specified columns first. Additional returned columns can still appear. |
| array of strings | Hides specified columns from the table. The fields remain available in the source data. |
| object | Changes the displayed labels for specified columns. |
| object | Applies supported display formats to specified columns. |
| object | Applies additional display options to specified columns. |
| array of strings | Adds specified fields to chart tooltips. |
| array of strings | Identifies columns used to pass row context to detail SQL. Detail SQL and matching placeholders are also required. |
Column Configuration Example
{
"type": "table",
"columns": ["agent", "amount"],
"hiddenColumns": ["agent_id"],
"columnLabels": {
"agent": "Agent",
"amount": "Collected"
},
"columnFormats": {
"amount": "decimal"
}
}
Image Displays an RI Table with Custom Column Labels and Two Decimal Places.
Note
columnscontrols column order, not visibility. Additional columns returned by the SQL remain visible unless included inhiddenColumns.
Configure Tables
Table settings control how rows and columns are presented and how users interact with the table.
Setting | JSON Type | Description |
|---|---|---|
| boolean | Default |
| boolean | Default |
| boolean | Default |
| integer | Default |
| boolean | Default |
| string | Uses a specified column to control row presentation based on supported statuses. |
| string | Uses a specified column to set the row background color. |
| string | Uses a specified column to control row font weight. |
Row Formatting Example
{
"rowColorColumn": "row_color",
"hiddenColumns": ["row_color"]
}Note
Setting
pageabletofalsedoes not remove applicable data or memory limits. Grouping and totals can also affect how rows are loaded and displayed.
Format Column Values
Use columnFormats to control how values are displayed.
In this example, amount identifies the column to format and currency-decimal specifies how its values are displayed.
{
"columnFormats": {
"amount": "currency-decimal"
}
}Note
Formatting changes how a value is displayed. It does not change the value returned by the SQL.
Supported Formats
Format | Description |
|---|---|
| Preserves the displayed text. Useful for codes, leading zeros, and text values. |
| Displays numbers with grouping. Non-integers display two decimal places in RI Visuals. |
| Displays numbers with grouping and two decimal places. |
| Displays a rounded whole number. |
| Displays a rounded whole amount without a currency symbol in table cells. |
| Displays whole-number currency values. Export formatting can differ. |
| Displays currency values with two decimal places and no currency symbol in table cells. |
| Supports legacy mixed-unit currency values. Use only when the underlying data follows that convention. |
| Converts a fractional value to a percentage with two decimal places. For example, |
| Displays supported dates in |
Use the lowercase values shown above. Unsupported values cannot be used to create custom formatting patterns.
Formatting Considerations
Formatting can vary by visual type and output format. For example, the same format may display differently in a table, gauge, scorecard, legend, or export.
For amounts that require two decimal places, use decimal.
For percentages, provide the value as a fraction. For example, 0.125 displays as 12.50%.
Note
When modifying an existing report, verify representative values in both the RI visual and the intended export format.
Configure Column Display Options
Use columnOptions to apply additional display options to individual columns.
Setting | JSON Type | Description |
|---|---|---|
| boolean | Default |
| boolean | Default |
| string | Sets the padding direction after decryption. Use |
| integer | Sets the minimum display length after decryption. |
| string | Specifies the characters used for padding. |
Column Display Example
{
"type": "table",
"columnOptions": {
"status_markup": {
"renderHtml": true
},
"encrypted_reference": {
"decrypt": true,
"padDirection": "LEFT",
"padLength": 8,
"padCharacters": "0"
}
},
"columnFormats": {
"encrypted_reference": "text"
}
}Warning
Decrypted values can appear in reports and exported files. Only use
decryptfor fields the report audience is authorized to access.
Supported HTML includes common inline formatting and links. Scripts and other unsupported content are not rendered. PDF output can display HTML-formatted values differently.
Configure Groups, Subtotals, and Totals
Use grouping to organize table rows by a shared value and display subtotals or a grand total.
Setting | JSON Type | Description |
|---|---|---|
| array of objects | Defines how table rows are grouped. |
| boolean | Default |
| boolean | Default |
| boolean | Default |
| object | Defines how values are summarized for specified columns. |
| array of strings | Legacy option for specifying columns to total for group subtotals. |
| array of strings | Legacy option for specifying columns to include in the grand total. |
Summary Operations
Use the following values with summaryColumns:
sumortotalaverage,avg, ormeanminorminimummaxormaximumnone
groupBy Settings
Setting | Description |
|---|---|
| Required. Specifies the column used to group rows. |
| Specifies an optional group heading. |
| Specifies a different column to display as the group value. |
| Specifies a column used to sort groups in ascending order. |
Grouped Table Example
{
"type": "table",
"groupBy": [
{
"column": "team",
"label": "Team"
}
],
"showGroupSubtotals": true,
"showGrandTotal": true,
"summaryColumns": {
"amount": "sum"
}
}
Image Displays an RI Table Organized by Team with Group Subtotals and a Grand Total.
Note
When using nested groups, verify results when the same value appears in more than one parent group.
Configure Grouped Headers
Use grouped headers to place related columns under a shared heading.
Use headerGroups for a single row of grouped headings or headerGroupRows for multiple rows.
Setting | Description |
|---|---|
| Specifies the header text. |
| Uses the first displayed value from a specified column when |
| Specifies the number of consecutive columns included under the heading. |
| Use |
Grouped Header Example
{
"type": "table",
"columns": ["agent", "amount", "rate"],
"columnFormats": {
"amount": "decimal",
"rate": "percent"
},
"headerGroups": [
{"label": "Team", "colspan": 1},
{"label": "Performance", "colspan": 2}
],
"groupBy": [
{"column": "agent", "label": "Agent"}
],
"showGroupSubtotals": true,
"showGrandTotal": true,
"summaryColumns": {
"amount": "sum",
"rate": "average"
}
}Note
Keep the column order and
colspanvalues aligned so each grouped heading appears above the intended columns.
Configure Bar, Line, Area, and Pie Charts
Use chart settings to define categories, values, series, and display options.
Setting | Description |
|---|---|
| Specifies the category displayed on the X-axis. |
| Specifies a single value displayed on the Y-axis. |
| Specifies multiple values displayed on the Y-axis. |
| Groups values into separate chart series. |
| Specifies the labels for pie chart slices. |
| Specifies the values used for pie chart slices or other supported charts. |
| Set to |
| Set to |
| Set to |
| Set to |
| Set to |
Line Chart Example
{
"type": "line",
"title": "Monthly Collected",
"xAxisColumn": "period",
"yAxisColumn": "amount",
"smooth": true,
"showTrendLine": true,
"columnFormats": {
"amount": "currency-decimal"
}
}
Image Displays an RI Line Chart with a Single Measure and a Trend Line.
Note
Trend lines may not appear in PDF output.
If duplicate category and series combinations are returned, RI does not automatically combine their values. Aggregate the values in the visual's SQL when needed.
Pie Chart Example
{
"type": "pie",
"title": "Accounts by Status",
"labelColumn": "status",
"valueColumn": "account_count",
"columnLabels": {
"account_count": "Accounts"
}
}
Image displays RI pie chart using status for labels and count for values.
Configure Heatmaps and Comparison Matrices
A heatmap uses values to show differences across two categories.
A comparison matrix displays those values in a table-style grid and can show changes between current and prior values.
For a standard heatmap, configure:
xAxisColumnyAxisColumnvalueColumn
To display a comparison matrix, also set "renderMode":"table".
Setting | Description |
|---|---|
| Required in table mode. Specifies percentage change in percentage points. |
| Required in table mode. Specifies the prior-period amount. |
| Optional secondary label displayed below the primary row label. |
| Optional column used to control matrix column order. |
| Sets the negative and positive percentage-change saturation limits in matrix mode. |
Comparison Matrix Example
{
"type": "heatmap-cartesian",
"renderMode": "table",
"title": "Monthly Activity",
"xAxisColumn": "period",
"yAxisColumn": "team",
"valueColumn": "amount",
"priorValueColumn": "prior",
"changeColumn": "change_pct",
"minValue": -25,
"maxValue": 25
}
Image displays RI heatmap comparison matrix showing values and percent change by team and period.
Return one row for each row/period combination. Duplicate cells can replace previously returned values instead of aggregating them.
Comparison matrices include built-in totals, sorting, status colors, and amount formatting. CSV and Excel exports retain the source long-form heatmap rows rather than reproducing the displayed matrix.
Configure Progress Gauges
A progress gauge shows how a current value compares with a goal or target.
Use "type":"progress-gauge" to create a progress gauge. The gauge uses the first returned row, so the SQL should return the intended aggregate in that row.
Setting | Description |
|---|---|
| Specifies the current value. |
| Specifies the goal value. |
| Alternative to |
| Specifies the supported value format. |
| Sets the minimum gauge value. Default |
| Sets the maximum gauge value. When omitted, the goal is used. |
Progress Gauge Example
{
"type": "progress-gauge",
"title": "Collected vs Goal",
"valueColumn": "collected",
"goalColumn": "goal",
"minValue": 0,
"maxValue": 100000,
"format": "currency-decimal"
}
Image Displays an RI Progress Gauge.
How Progress Is Calculated
RI calculates progress by comparing the current value to the configured minimum and maximum values:
(value - minValue) / (maxValue - minValue)
For the example above, $62,500 of $100,000 displays as 62.5% progress.
The result is limited to a range of 0–100%. If maxValue is omitted, RI uses the goal as the maximum value.
Configure Scorecards
Scorecards display important metrics in individual cards, making them useful for showing summary values such as collected amounts, account counts, or rates.
Use "type":"scorecard" and metricCards to configure scorecard metrics.
Setting | Description |
|---|---|
| Specifies the card label. |
| Specifies the SQL alias containing the main metric. |
| Adds an optional secondary line. |
| Adds optional trend text. It does not calculate a trend. |
| Specifies supported metric formatting. |
| Sets a supported card tone: |
Scorecard Example
{
"type": "scorecard",
"metricCards": [
{
"label": "Collected",
"valueColumn": "amount",
"format": "currency-decimal",
"tone": "good"
},
{
"label": "Recovery Rate",
"valueColumn": "rate",
"format": "percent",
"tone": "watch"
}
]
}
Image Displays RI Scorecards with Key Metrics.
A scorecard uses the first returned row. It does not automatically sum multiple rows; perform the required aggregation in SQL.
Configure Cross Tabs
A cross tab summarizes data in a grid. One SQL result becomes the rows, another becomes the columns, and a value appears at their intersection.
For example, a cross tab could display teams as rows, months as columns, and collected amounts as values.
Use "type":"crosstab" to pivot long-form results into row and column categories.
Setting | Description |
|---|---|
| Required row identity. |
| Optional displayed row label. |
| Optional ascending row sort. |
| Required pivot-column identity. |
| Optional displayed pivot-column label. |
| Optional ascending pivot-column sort. |
| Creates multiple measures under each pivot column. |
| Use |
| Adds totals across pivot columns. |
| Adds a total row across pivot rows. |
Cross Tab Example
{
"type": "crosstab",
"rowColumn": "team",
"columnColumn": "period",
"valueColumn": "amount",
"aggregation": "sum",
"showRowTotals": true,
"showColumnTotals": true
}
Image displays cross tab showing values by team and period with totals.
Note
Use "aggregation":"sum" when repeated row/column combinations should be added together. Otherwise, a later matching row can replace an earlier value.
Configure Legend and Summary Boxes
Legend and summary boxes display calculated or fixed values alongside a visual.
Use legendBox to configure one summary box or legendBoxes to configure multiple boxes.
Supported item operations include:
firstcountsumaverage,avg, ormeanminorminimummaxormaximum
Example:
{
"legendBox": {
"title": "Summary",
"items": [
{
"label": "Collected",
"valueColumn": "amount",
"operation": "sum",
"format": "currency-decimal"
},
{
"label": "Period",
"value": "Current month"
}
]
}
}Note
Legend calculations use the rows available to the visual. When the visual is paged, calculations may reflect only the loaded rows.
Configure Bullet Bars
Bullet bars add an inline visual indicator to a table cell.
Use tableCellVisuals to add supported inline visuals to ordinary table cells. cellVisuals is an alternate setting.
Currently supported cell visual type:
bullet-bar
Bullet Bar Example
{
"type": "table",
"columns": ["agent", "amount"],
"tableCellVisuals": {
"amount": {
"type": "bullet-bar",
"thresholdColumns": ["low_goal", "high_goal"]
}
}
}
Image displays RI table with a bullet bar in the Amount column.
Note
Some Style JSON options are supported only in the RI Visuals screen and may not produce the same result in exported or PDF output. Verify the delivery format used by the report.
Configure Delivery and Export Settings
Style JSON can define default delivery and CSV settings.
Setting | Description |
|---|---|
| Sets the default delivery format. |
| Sets the delimiter used for CSV output. |
| Sets the quote character used for CSV output. |
Supported defaultExportFormat values are:
PDFCSVEXCELHTMLTSVDELIMITEDFIXED_LENGTHXMLJSON
Use EXCEL, not XLSX, for this setting.
Example:
{
"type": "table",
"defaultExportFormat": "CSV",
"csvDelimiter": "|",
"csvQuoteCharacter": "\"",
"showHeader": true
}The Default delivery format field in the Style section updates the applicable settings in the same configuration.
Note
Default Parameters, displayed below ECharts Spec JSON, are separate SQL-defined controls. Do not add Default Parameters to ECharts Spec JSON.
Troubleshoot Style JSON
Issue | What to Check |
|---|---|
Chart customization has no effect | Use supported RI Style JSON options. General ECharts options, arbitrary CSS properties, unsupported format strings, and unsupported visual types are not automatically applied. |
Extra columns appear |
|
Amounts or percentages are incorrect | Verify the units returned by SQL and the configured format. |
Totals differ from expectations | Define |
Duplicate chart values are missing | Aggregate duplicate category and series values in SQL. |
Header groups do not align | Verify SQL output order, |
PDF differs from the visual | Some interactive visual features and formatting are not reproduced in PDF output. |
CSV or Excel differs from the visual | Exported output can use different formatting and projection behavior than the displayed visual. |
A setting saves but has no effect | Confirm that the setting is supported for the selected visual type. |
Verify the Configuration
When creating or changing Style JSON:
Start with an explicit
typeand exact SQL aliases.Change one group of settings at a time.
Select Run Preview and test representative values, including zero, negative, and missing values.
Select Save or Apply.
Verify the delivery or export format that the report will use.
Glossary
Term | Definition |
|---|---|
Aggregate | A calculated value that combines multiple rows, such as a sum, average, minimum, or maximum. |
Array | A JSON list containing one or more values enclosed in square brackets ( |
Boolean | A JSON value that is either |
Column | A field returned by the visual's SQL query. |
Cross tab | A grid that summarizes values using one field for rows and another for columns. |
ECharts Spec JSON | The Style field used to configure supported RI visual and display options. |
Group | A set of table rows organized by a common value. |
JSON | JavaScript Object Notation (JSON), a structured text format used to define RI Visual configuration settings. |
Measure | A numeric value displayed or calculated by a visual, such as an amount, count, or percentage. |
Object | A collection of JSON settings enclosed in braces ( |
Series | A related set of values displayed together in a chart. |
SQL alias | The name assigned to a value returned by the visual's SQL and used to reference that value in Style JSON. |
Subtotal | A calculated summary for a group of rows. |
Visual | An RI report configured to display SQL results as a table, chart, scorecard, gauge, or another supported format. |
ECharts Spec JSON Option Index
Use this index to locate additional information about a JSON setting.
Setting | Section |
|---|---|
| Configure Cross Tabs |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bullet Bars |
| Configure Heatmaps and Comparison Matrices |
| Configure Cross Tabs |
| Format Column Values |
| Configure Cross Tabs |
| Configure Columns and Drilldowns |
| Configure Column Display Options |
| Configure Columns and Drilldowns |
| Configure Heatmaps and Comparison Matrices / Configure Cross Tabs |
| Configure Delivery and Export Settings |
| Configure Delivery and Export Settings |
| Configure Delivery and Export Settings |
| Configure Columns and Drilldowns |
| Configure Progress Gauges |
| Configure Progress Gauges |
| Configure Groups, Subtotals, and Totals |
| Configure Grouped Headers |
| Configure Grouped Headers |
| Configure Columns and Drilldowns |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Legend and Summary Boxes |
| Configure Legend and Summary Boxes |
| Configure Heatmaps and Comparison Matrices / Configure Progress Gauges |
| Configure Scorecards |
| Configure Heatmaps and Comparison Matrices / Configure Progress Gauges |
| Configure Tables |
| Configure Tables |
| Configure Heatmaps and Comparison Matrices |
| Configure Tables |
| General Settings |
| Configure Tables |
| Configure Tables |
| Configure Cross Tabs |
| Configure Tables |
| Configure Cross Tabs |
| Configure Cross Tabs |
| Configure Heatmaps and Comparison Matrices |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Cross Tabs |
| Configure Groups, Subtotals, and Totals |
| Configure Groups, Subtotals, and Totals |
| Configure Tables |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Cross Tabs |
| Configure Groups, Subtotals, and Totals |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Tables |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Groups, Subtotals, and Totals |
| Configure Groups, Subtotals, and Totals |
| Configure Bullet Bars |
| Configure Progress Gauges |
| General Settings |
| Configure Columns and Drilldowns |
| Configure Groups, Subtotals, and Totals |
| Configure Bar, Line, Area, and Pie Charts |
| General Settings |
| Configure Bar, Line, Area, and Pie Charts / Configure Progress Gauges / Configure Scorecards / Configure Cross Tabs |
| Configure Cross Tabs |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bar, Line, Area, and Pie Charts |
| Configure Bar, Line, Area, and Pie Charts |
Nested settings are documented with their parent configuration: columnOptions, groupBy, headerGroups/headerGroupRows, metricCards, legendBox/legendBoxes, and tableCellVisuals/cellVisuals.
