From 5c49143dd0c4ba52504997d0262175d463a600de Mon Sep 17 00:00:00 2001 From: Artyom Keydunov Date: Sun, 19 Apr 2026 20:54:20 -0700 Subject: [PATCH 1/2] docs: expand charts section with per-type pages and configuration reference Replace the single-page charts stub with a full Charts section elevated to the Explore & Analyze level. Adds 19 pages covering all chart types (bar, line, area, scatter, pie, donut, heatmap, boxplot, table, KPI, map, HTML), a standalone custom visualizations page for Vega-Lite spec editing, and a Configure charts reference group (series mapping, series config, color & stacking, axes, tooltips, data labels). Made-with: Cursor --- docs-mintlify/docs.json | 39 ++++- .../charts/chart-types/area.mdx | 38 +++++ .../charts/chart-types/bar.mdx | 78 ++++++++++ .../charts/chart-types/boxplot.mdx | 32 +++++ .../charts/chart-types/heatmap.mdx | 31 ++++ .../charts/chart-types/html.mdx | 54 +++++++ .../charts/chart-types/index.mdx | 20 +++ .../charts/chart-types/kpi.mdx | 115 +++++++++++++++ .../charts/chart-types/line.mdx | 42 ++++++ .../charts/chart-types/map.mdx | 65 +++++++++ .../charts/chart-types/pie.mdx | 30 ++++ .../charts/chart-types/scatter.mdx | 38 +++++ .../charts/chart-types/table.mdx | 134 ++++++++++++++++++ .../charts/configuration/axes.mdx | 60 ++++++++ .../configuration/color-and-stacking.mdx | 96 +++++++++++++ .../charts/configuration/data-labels.mdx | 22 +++ .../charts/configuration/index.mdx | 15 ++ .../configuration/series-configuration.mdx | 48 +++++++ .../charts/configuration/series-mapping.mdx | 35 +++++ .../charts/configuration/tooltips.mdx | 32 +++++ .../docs/explore-analyze/charts/custom.mdx | 52 +++++++ .../docs/explore-analyze/charts/index.mdx | 41 ++++++ .../docs/explore-analyze/workbooks/charts.mdx | 33 ----- 23 files changed, 1115 insertions(+), 35 deletions(-) create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/area.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/bar.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/boxplot.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/heatmap.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/html.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/kpi.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/line.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/map.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/pie.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/scatter.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/chart-types/table.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/axes.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/color-and-stacking.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/data-labels.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/index.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/series-configuration.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/series-mapping.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/configuration/tooltips.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/custom.mdx create mode 100644 docs-mintlify/docs/explore-analyze/charts/index.mdx delete mode 100644 docs-mintlify/docs/explore-analyze/workbooks/charts.mdx diff --git a/docs-mintlify/docs.json b/docs-mintlify/docs.json index 397139a676302..004f6c9743406 100644 --- a/docs-mintlify/docs.json +++ b/docs-mintlify/docs.json @@ -53,11 +53,46 @@ "pages": [ "docs/explore-analyze/workbooks/querying-data", "docs/explore-analyze/workbooks/calculated-fields", - "docs/explore-analyze/workbooks/source-sql-tabs", - "docs/explore-analyze/workbooks/charts" + "docs/explore-analyze/workbooks/source-sql-tabs" ] }, "docs/explore-analyze/explore", + { + "group": "Charts", + "root": "docs/explore-analyze/charts/index", + "pages": [ + { + "group": "Chart types", + "root": "docs/explore-analyze/charts/chart-types/index", + "pages": [ + "docs/explore-analyze/charts/chart-types/bar", + "docs/explore-analyze/charts/chart-types/line", + "docs/explore-analyze/charts/chart-types/area", + "docs/explore-analyze/charts/chart-types/scatter", + "docs/explore-analyze/charts/chart-types/pie", + "docs/explore-analyze/charts/chart-types/heatmap", + "docs/explore-analyze/charts/chart-types/boxplot", + "docs/explore-analyze/charts/chart-types/table", + "docs/explore-analyze/charts/chart-types/kpi", + "docs/explore-analyze/charts/chart-types/map", + "docs/explore-analyze/charts/chart-types/html" + ] + }, + "docs/explore-analyze/charts/custom", + { + "group": "Configure charts", + "root": "docs/explore-analyze/charts/configuration/index", + "pages": [ + "docs/explore-analyze/charts/configuration/series-mapping", + "docs/explore-analyze/charts/configuration/series-configuration", + "docs/explore-analyze/charts/configuration/color-and-stacking", + "docs/explore-analyze/charts/configuration/axes", + "docs/explore-analyze/charts/configuration/tooltips", + "docs/explore-analyze/charts/configuration/data-labels" + ] + } + ] + }, "docs/explore-analyze/analytics-chat" ] }, diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/area.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/area.mdx new file mode 100644 index 0000000000000..fc1eb87af68c7 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/area.mdx @@ -0,0 +1,38 @@ +--- +title: Area +description: Show volume or part-to-whole trends over time with a filled region beneath the line. +--- + +Area charts add a filled region beneath the line. The fill communicates magnitude and cumulative volume, making area charts especially effective for stacked part-to-whole breakdowns over time. + +## Variants + +### Stacked + +Each series is stacked on top of the previous one. The top edge shows the cumulative total; each filled band shows the individual contribution. Use this for part-to-whole breakdowns over time (e.g. revenue by product category over months). + +{/* Screenshot: stacked area chart — total sale price by month, split by product category (4–5 stacked bands). Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Percentage stacked (Stack %) + +Each series is normalized to 100% at every X-axis value, showing proportional contribution over time. Use when relative share matters more than absolute volume. + +{/* Screenshot: percentage stacked area chart — same data normalized to 100%. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Overlaid + +All series share the same baseline. Use only when series are clearly separated in value and you want to compare trajectories rather than totals — with many series, fills will occlude each other. + +{/* Screenshot: overlaid area chart — two series, clearly separated in value. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Stacking + +Set stacking behavior in the **Color & stacking** section of the Style tab. The **Stack**, **Stack %**, and **Overlay** options are the relevant modes for area charts. + +{/* Screenshot: stacking dropdown in the Style tab. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +See [Color & stacking](/docs/explore-analyze/charts/configuration/color-and-stacking) for palette options and stacked segment sorting. + +## Axis behavior + +Area charts use a temporal X axis for time dimensions — continuous and time-aware. For non-time fields, the axis is ordinal. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/bar.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/bar.mdx new file mode 100644 index 0000000000000..da3505d375cb6 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/bar.mdx @@ -0,0 +1,78 @@ +--- +title: Bar +description: Compare values across categories with grouped, stacked, percentage, and horizontal variants. +--- + +Bar charts compare values across discrete categories. Use them when the magnitude of individual values matters and direct comparison between categories is the goal. + +## Variants + +### Basic + +One dimension on the X axis, one measure on the Y axis. Each category gets a single bar. + + + + + +### Grouped + +Each series renders as a separate cluster of bars side-by-side at every X-axis value. Best for comparing absolute values across multiple series at each category. + +{/* Screenshot: grouped bar chart — order count by status, grouped by product category. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Stacked + +Series are stacked on top of each other at each X-axis value. Use when you want to show both individual contributions and the total at a glance. + +{/* Screenshot: stacked bar chart — revenue by product category stacked by order status. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Percentage stacked (Stack %) + +Each stack is normalized to 100%, showing each series as a proportion of the total per X-axis value. Use when relative distribution matters more than absolute values. + +{/* Screenshot: percentage stacked bar — same data as stacked but normalized to 100%. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Horizontal + +All three vertical variants are also available horizontally. Horizontal bars work well for long category labels, many categories, or when a left-to-right reading direction feels more natural. + +{/* Screenshot: horizontal stacked bar chart. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Composite (bar + line) + +Assign one series to the right Y axis and set its mark type to **Line** in [series configuration](/docs/explore-analyze/charts/configuration/series-configuration). This creates a dual-axis chart — useful for overlaying a rate on top of volume data (e.g. order count as bars, revenue per order as a line). + +{/* Screenshot: composite bar+line chart with dual Y axes — order count (bars, left axis) and average order value (line, right axis). Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Stacking + +Stacking behavior is set in the **Color & stacking** section of the Style tab: + +| Option | Behavior | +|---|---| +| **Automatic** | Cube picks the best option based on your data | +| **Stack** | Series at the same X value are stacked | +| **Group** | Series at the same X value are placed side-by-side | +| **Overlay** | Series are drawn on top of each other (rarely useful for bars) | +| **Stack %** | Series are stacked and normalized to 100% | + +Stacking can also be set independently per Y-axis series — enabling grouped clusters of stacked sub-groups. + +{/* Screenshot: stacking dropdown open in the Style tab showing all five options. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +## Data labels + +Bar charts support totals labels on stacked charts — showing the aggregate value above each full stack. Enable **Data Labels** in the Fields tab, then configure: + +- **Format** — number format applied to the label value +- **Font size** — size of the label text +- **Position** — Outside end, Inside end, Inside center, or Inside base + +{/* Screenshot: stacked bar with total labels above each stack, Fields tab open showing Data Labels toggle enabled and Position set to "Outside end". Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Axis behavior + +Bar charts use an ordinal X axis — each bar is labeled independently, the axis is not time-aware, and categories not present in the result set are not plotted. With time fields, bars are ordered ascending automatically. For other data types, order follows the results table sort. + +Tooltips on stacked bars are scoped to the segment under the cursor, not the full stack total. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/boxplot.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/boxplot.mdx new file mode 100644 index 0000000000000..8fc0c748fbb1b --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/boxplot.mdx @@ -0,0 +1,32 @@ +--- +title: Boxplot +description: Display the statistical distribution of a measure across categories using box-and-whisker plots. +--- + +Boxplots summarize the distribution of a numeric measure per category, showing the median, interquartile range, and outliers in a single mark. Use them to compare spread and skew across groups rather than just averages. + +## Variant + +### Box-and-whisker + +One dimension on the X axis groups the data into categories. One measure on the Y axis provides the raw values. The chart computes the distribution statistics internally. + +{/* Screenshot: boxplot — sale price distribution by product category (5–6 boxes with visible whiskers and outlier points). Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Reading a boxplot + +{/* Screenshot: annotated single box with labels pointing to the box, center line, whiskers, and outlier points. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +| Element | Description | +|---|---| +| **Box** | Interquartile range — 25th to 75th percentile | +| **Center line** | Median (50th percentile) | +| **Whiskers** | Extend to min/max within 1.5× the IQR | +| **Points** | Values beyond the whiskers (outliers) | + +## Data structure + +Boxplots require **raw, row-level data** — each row is one observation. Do not pre-aggregate before using a boxplot; the chart engine computes the distribution itself. + +- **X axis** — the grouping dimension (e.g. product category) +- **Y axis** — the measure to distribute (e.g. sale price) diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/heatmap.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/heatmap.mdx new file mode 100644 index 0000000000000..b364a10377c76 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/heatmap.mdx @@ -0,0 +1,31 @@ +--- +title: Heatmap +description: Visualize a measure across two categorical dimensions as a color-coded grid. +--- + +Heatmaps render data as a grid where each cell's color encodes a measure value at the intersection of two dimensions. Use them to spot patterns, dense clusters, and outliers across two categorical axes at once. + +## Variant + +### Color-scaled grid + +One dimension on the X axis, one on the Y axis, and one measure mapped to the **Color** channel. Each cell's color encodes that measure's value for its row/column pair. + +{/* Screenshot: heatmap — order count by product category (Y) and month (X), colored from light to dark. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Color palette + +A continuous gradient palette is applied by default — low values map to the lighter end, high values to the darker end. Change or reverse the palette in the **Color** section of the Style tab. + +{/* Screenshot: Style tab Color section open — showing the palette picker and Reverse colors toggle. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +For custom palettes, see [Color & stacking](/docs/explore-analyze/charts/configuration/color-and-stacking). + +## Data structure + +A heatmap requires exactly: +- One dimension on the **X axis** +- One dimension on the **Y axis** +- One measure on the **Color** channel + +Cells with no data in the result set are left blank. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/html.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/html.mdx new file mode 100644 index 0000000000000..0e40c827d379b --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/html.mdx @@ -0,0 +1,54 @@ +--- +title: HTML +description: Build fully custom layouts using HTML templates with Handlebars and JavaScript. +--- + +HTML charts let you render any layout that Vega-Lite cannot produce — custom scorecards, branded cards, rich tables, or any structure built with HTML, CSS, and JavaScript. Query results are available inside the template via [Handlebars](https://handlebarsjs.com/) expressions. + +## Variant + +### HTML template + +A free-form HTML document with Handlebars expressions. Write any markup and bind query result data directly in the template. + +{/* Screenshot: HTML chart with a custom branded scorecard layout. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Template structure + +Query results are available in the template context under `result`. + +**Access the first row** with `result._first`: + +```html +
+

{{result._first.order_items.status}}

+

{{result._first.order_items.count}} orders

+
+``` + +**Iterate over all rows** with `{{#each result.data}}`: + +```html + +``` + +## Using JavaScript + +Standard ` + +``` diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx new file mode 100644 index 0000000000000..a29a4ce8b1866 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/index.mdx @@ -0,0 +1,20 @@ +--- +title: Chart types +description: Overview of all built-in chart types available in Cube workbooks. +--- + +Cube includes a library of built-in chart types covering the most common visualization patterns. Each type is designed for specific data shapes — choose the one that best fits your query structure and the question you're answering. + +- [Bar](/docs/explore-analyze/charts/chart-types/bar) +- [Line](/docs/explore-analyze/charts/chart-types/line) +- [Area](/docs/explore-analyze/charts/chart-types/area) +- [Scatter](/docs/explore-analyze/charts/chart-types/scatter) +- [Pie & donut](/docs/explore-analyze/charts/chart-types/pie) +- [Heatmap](/docs/explore-analyze/charts/chart-types/heatmap) +- [Boxplot](/docs/explore-analyze/charts/chart-types/boxplot) +- [Table](/docs/explore-analyze/charts/chart-types/table) +- [KPI](/docs/explore-analyze/charts/chart-types/kpi) +- [Map](/docs/explore-analyze/charts/chart-types/map) +- [HTML](/docs/explore-analyze/charts/chart-types/html) + +For configuration options that apply across chart types — axes, color, series settings, tooltips — see [Configure charts](/docs/explore-analyze/charts/configuration). diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/kpi.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/kpi.mdx new file mode 100644 index 0000000000000..4e7a9f7d69f32 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/kpi.mdx @@ -0,0 +1,115 @@ +--- +title: KPI +description: Highlight key metrics with composable blocks — numbers, comparisons, progress bars, sparklines, text, and HTML. +--- + +KPI tiles highlight important metrics and key performance indicators. Rather than a single fixed layout, KPIs are **row-based and composable** — you build the tile by stacking blocks of different types, each configured independently. + +{/* TODO screenshot: KPI tile with Number + Comparison + Sparkline blocks stacked (hidden — replace this comment with when image is ready) */} + +## Getting started + +The KPI visualization starts with a **Number** block that compares the first and second rows of your result for the first numeric column. + +To add a new block, click the **+** button inside the visualization and choose the block type. To edit a block, click it in the visualization — the configuration panel updates to show that block's settings. + +Reorder blocks by dragging the handle on the left side of each block. Delete a block with the trash icon in its configuration panel. + +{/* TODO screenshot: KPI builder panel showing block list with drag handles (hidden — replace this comment with when image is ready) */} + +## Block types + +### Number + +Displays a single value from your query result. + +| Setting | Description | +|---|---| +| **Field** | The measure or dimension to display | +| **Row** | Which row of the result to read from | +| **Format** | Number formatting (currency, percent, etc.) | +| **Font size / color** | Text appearance | +| **Alignment** | Left, center, or right | + +{/* TODO screenshot: Number block (hidden — replace this comment with when image is ready) */} + +### Comparison + +Displays a current value alongside a previous value with a calculated difference. Use this to show period-over-period change or target vs. actual. + +| Setting | Description | +|---|---| +| **Current field / row** | The primary value | +| **Previous field / row** | The value to compare against — can be a different column or a different row from the same column | +| **Difference format** | Absolute, percentage, or both | +| **Positive color / Negative color** | Colors applied based on whether the change is positive or negative | + +To compare to a static goal, add a column to your query that always returns the same number (e.g. a calculated field with a constant), then select it as the **Previous** field. + +{/* TODO screenshot: Comparison block showing current vs. previous with colored delta (hidden — replace this comment with when image is ready) */} + +### Progress bar + +Shows a value relative to a target as a progress bar or circle. Useful for goal tracking. + +| Setting | Description | +|---|---| +| **Value field / row** | The current progress value | +| **Target field / row** | The goal or maximum value | +| **Style** | Bar or circle | +| **Color** | Fill color for the progress indicator | + + +To compare against a static number like a quarterly goal, add a calculated field that always returns that number and use it as the **Target** field. + + +{/* TODO screenshot: Progress bar block (bar style) and circle style (hidden — replace this comment with when image is ready) */} + +### Sparkline + +Renders a compact trend chart — either a bar or line — within the KPI tile. Use this to show the trend behind the headline number. + +| Setting | Description | +|---|---| +| **Series measure** | The measure to plot | +| **Series dimension** | The dimension to use as the X axis (typically a time dimension) | +| **Chart type** | Bar or line | +| **Height / Width** | Dimensions of the sparkline in the tile | +| **Max points** | Limits the number of data points rendered | +| **Colors** | Line/fill colors | + +{/* TODO screenshot: Sparkline block showing a trend line (hidden — replace this comment with when image is ready) */} + +### Text + +A Markdown-enabled text field for titles, headings, or descriptions within the tile. Supports standard Markdown formatting. + +Use text blocks for short labels and headings inside the KPI. For complex layouts with Markdown, use the [HTML block](#html) or consider the [Custom visualization](/docs/explore-analyze/charts/chart-types/custom) instead. + +{/* TODO screenshot: Text block with a heading (hidden — replace this comment with when image is ready) */} + +### HTML + +A free-form HTML block rendered inside the KPI tile. Use this for advanced custom layouts that go beyond what the other block types support. + +{/* TODO screenshot: HTML block with custom content (hidden — replace this comment with when image is ready) */} + +## Layout controls + +KPI tiles have a layout panel that controls how blocks are arranged: + +| Setting | Description | +|---|---| +| **Direction** | Row (blocks side-by-side) or Column (blocks stacked vertically) | +| **Alignment** | How blocks align on the cross axis | +| **Justify** | How blocks are distributed along the main axis | +| **Gap** | Spacing between blocks | +| **Wrap** | Whether blocks wrap to a new line when the tile is narrow | + +## Converting to raw Markdown + +If you need customization beyond what the block builder supports, you can convert the KPI visualization directly to Markdown by clicking on the Markdown visualization option. + + +Converting to Markdown is a one-way operation. If you do this accidentally, use the undo button to revert. + diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/line.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/line.mdx new file mode 100644 index 0000000000000..ab97c9c66febf --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/line.mdx @@ -0,0 +1,42 @@ +--- +title: Line +description: Track how a measure changes over time or across an ordered dimension. +--- + +Line charts connect data points with a continuous line. Use them when the direction and rate of change matter — trends over time, trajectories of multiple series, or any ordered dimension where continuity is meaningful. + +## Variants + +### Single series + +One measure plotted against a time or ordered dimension. The simplest and most common use case. + +{/* Screenshot: single-series line chart — total revenue by month over 12 months. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### Multi-series + +Multiple lines plotted on the same axes. Map a second dimension to the **Color** channel to split one measure into one line per dimension value, or add multiple measures to the Y axis to plot them as separate series. + +{/* Screenshot: multi-series line chart — order count by week, split by order status (3–4 colored lines). Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### With reference line + +A horizontal reference line marks a target, threshold, or benchmark. Added via the **Axes** section of the Style tab. + +{/* Screenshot: line chart with a dashed reference line at a target value, label visible on the right side of the line. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Reference lines + +Add a horizontal reference line in the **Y axis** section of the Style tab. Set the value, label, color, and line style (solid, dashed, or dotted). Multiple reference lines are supported. + +{/* Screenshot: reference line configuration panel open — value field, label field, style dropdown. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +See [Axes](/docs/explore-analyze/charts/configuration/axes) for the full configuration reference. + +## Axis behavior + +Line charts use a temporal X axis for time dimensions — continuous, time-aware, and not constrained to the result set. For non-time dimensions, the axis is ordinal and follows the result set sort order. Gaps in the line indicate missing data points. + +## Combining with bars + +To layer a line on top of a bar chart, add a second series to the Y axis, set its mark type to **Line** in [series configuration](/docs/explore-analyze/charts/configuration/series-configuration), and assign it to the right Y axis for a dual-axis layout. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/map.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/map.mdx new file mode 100644 index 0000000000000..a83ad7aa8d822 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/map.mdx @@ -0,0 +1,65 @@ +--- +title: Map +description: Plot geographic data using latitude and longitude coordinates on an interactive Mapbox map. +--- + +Map charts visualize geographic data as interactive point maps. Each data point is plotted at its latitude/longitude coordinates and can be sized and colored by additional measures or dimensions in your query. + +{/* TODO screenshot: map chart with colored and sized point pins (hidden — replace this comment with when image is ready) */} + +## When to use + +- Visualizing events or entities with known geographic coordinates (e.g. store locations, shipment origins, user sign-up cities) +- Identifying geographic clusters or outliers +- Showing how a measure varies across geographic locations + +For region-based maps (countries, states), use the [Custom visualization](/docs/explore-analyze/charts/chart-types/custom) with a Vega-Lite geographic spec. + +## Data structure + +A map chart requires at minimum: +- A **Latitude** field — a numeric measure or dimension containing decimal latitude values +- A **Longitude** field — a numeric measure or dimension containing decimal longitude values + +Optionally: +- A **Size** field — a numeric measure that scales point radius proportionally +- A **Color** field — a dimension or measure that colors points by category or value + +{/* TODO screenshot: map builder panel with latitude, longitude, size, and color fields assigned (hidden — replace this comment with when image is ready) */} + +## Configuring the map + +### Point color + +When no **Color** field is assigned, all points render in a single configurable color. Use the color picker in the style panel to change it. + +When a dimension is assigned to the **Color** channel, each unique dimension value gets a distinct color from the active [color palette](/docs/explore-analyze/charts/configuration/color-and-stacking). + +### Point size + +Assign a numeric measure to the **Size** channel to scale point radius by value. The size range (minimum and maximum radius in pixels) can be configured in the style panel. + +When no Size field is assigned, all points render at the same fixed radius. + +### Tooltip fields + +Add fields to the **Tooltip** channel to control what appears when a user hovers over a point. By default, all mapped fields (latitude, longitude, size, color) appear in the tooltip. Remove or reorder them in the **Tooltips** section of the Fields tab. + +See [Tooltips](/docs/explore-analyze/charts/configuration/tooltips) for details. + +## Projection + +The map supports two projection types: + +| Projection | Description | +|---|---| +| **Mercator (2D)** | Standard flat map projection — best for most use cases | +| **Globe (3D)** | Spherical globe view — useful for data spanning multiple continents | + +Switch the projection in the style panel. + +{/* TODO screenshot: Mercator vs Globe projection side-by-side (hidden — replace this comment with when image is ready) */} + +## Map interaction + +The map is interactive by default — users can pan and zoom. Initial center coordinates and zoom level can be configured in the style panel. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/pie.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/pie.mdx new file mode 100644 index 0000000000000..688298f5e27ec --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/pie.mdx @@ -0,0 +1,30 @@ +--- +title: Pie & donut +description: Show how a single measure is distributed across a small number of categories. +--- + +Pie charts divide a circle into slices proportional to each category's share of the total. Best for communicating part-to-whole proportions to a broad audience when you have a small number of clearly distinct categories (typically five or fewer). + +## Variants + +### Pie + +Standard filled circle. Each slice's arc length is proportional to its value. + +{/* Screenshot: pie chart — total revenue split by product category (5 slices with a legend). Place directly below this heading, half-width centered or side-by-side with donut. (hidden — replace this comment with when image is ready) */} + +### Donut + +A pie with a hollow center. Increase the **Inner radius** value in the Style tab to any non-zero value to switch to a donut. The hollow center can be used to surface a summary value via a [KPI](/docs/explore-analyze/charts/chart-types/kpi) tile on a dashboard, or simply to reduce visual density. + +{/* Screenshot: donut chart — same data as the pie variant, with inner radius applied. Place directly below this heading, half-width centered or side-by-side with pie. (hidden — replace this comment with when image is ready) */} + +## Inner radius + +Drag the **Inner radius** slider in the Style tab or enter a pixel value. Setting it to `0` returns to a full pie. + +{/* Screenshot: Style tab with the Inner radius control highlighted. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +## Color and slice ordering + +Slices are colored using the active [color palette](/docs/explore-analyze/charts/configuration/color-and-stacking) in palette order, matched to the sort order of your query results. To change which slice appears first, adjust the sort in the results table. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/scatter.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/scatter.mdx new file mode 100644 index 0000000000000..70feeb5640368 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/scatter.mdx @@ -0,0 +1,38 @@ +--- +title: Scatter +description: Plot two measures against each other to find correlations, clusters, and outliers. +--- + +Scatter charts plot individual data points using two measures as X and Y coordinates. Use them to explore relationships between measures, identify clusters, and spot outliers across a population of entities. + +## Variants + +### Basic scatter + +Two measures on the X and Y axes. Each row in your result set becomes one point. + +{/* Screenshot: scatter chart — average order value (X) vs. order count (Y), one point per user. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### With color grouping + +Map a dimension to the **Color** channel to assign each point a color by category. Use this to compare how different groups distribute across the same two measures. + +{/* Screenshot: scatter chart — same axes, points colored by traffic source (4–5 colors). Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +### With size encoding + +Map a third numeric measure to the **Size** channel to scale each point's radius by value. Use this to encode a third variable without adding a new axis. + +{/* Screenshot: scatter chart with sized and colored points — average order value (X), return rate (Y), total revenue as size, colored by category. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Size encoding + +Assign a measure to the **Size** channel in the Fields tab. Points scale proportionally to the measure value. Configure the minimum and maximum radius in the Style tab. + +{/* Screenshot: Fields tab with Size channel assigned — showing the size field token. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} + +## Tooltips + +All mapped fields appear in the tooltip by default. Add or remove fields in the **Tooltips** section of the Fields tab. + +See [Tooltips](/docs/explore-analyze/charts/configuration/tooltips) for details. diff --git a/docs-mintlify/docs/explore-analyze/charts/chart-types/table.mdx b/docs-mintlify/docs/explore-analyze/charts/chart-types/table.mdx new file mode 100644 index 0000000000000..7fe660f8176a9 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/chart-types/table.mdx @@ -0,0 +1,134 @@ +--- +title: Table +description: Display query results as a configurable table with pivots, conditional formatting, and inline visualizations. +--- + +The table visualization presents query results in a structured grid. Unlike the raw results table in the query panel, the table visualization is designed for sharing — it supports pivots, column display overrides, conditional formatting, custom styling, and inline bar/link/image column rendering. + +{/* TODO screenshot: styled table with pivot and conditional formatting (hidden — replace this comment with when image is ready) */} + +## Showing and hiding columns + +Right-click a column header in the table visualization to hide it. Hidden columns can be restored from the **Fields** section of the configuration panel. You can also hide columns from the column options menu (the three-dot menu on each column header). + +## Reordering columns + +Drag a column header to reorder columns. Dimensions and measures can be interspersed freely when no pivot is active. + +## Pivots + +Pivoting a dimension turns its unique values into columns, creating a cross-tab view. Drag a dimension to the **Pivot columns** drop zone in the **Fields** section to pivot it. + +{/* TODO screenshot: table with pivot active — dimension values as column headers (hidden — replace this comment with when image is ready) */} + +Pivot behavior: +- Pivot columns can be sorted by clicking the column header, including the totals column. +- Pivot columns can also be sorted by row values — click a row number to sort by that row, including the totals row. +- Pivoted columns can be hidden, but hiding is indexed to the specific value (e.g. hiding `status: returned`), not position. + +## Table options + +The **Table** tab in the configuration panel controls layout and display settings: + +| Option | Description | +|---|---| +| **Column width** | **Stretch** fills the full table width; **Fixed** keeps column widths constant regardless of tile size | +| **Header text** | Controls whether long column headers **truncate** or **wrap** to the next line | +| **View names** | When enabled, the view/cube name is shown in the column header | +| **Row numbers** | Adds a row number column on the left | +| **Group dimensions** | Groups multiple dimensions per row into a collapsible section for subtotaling | + +## Column field options + +Click the dropdown arrow on any field in the **Fields** section to configure it: + +| Option | Description | +|---|---| +| **Label** | Override the column header text | +| **Alignment** | Left, center, or right | +| **Word wrap** | Allow cell content to wrap to multiple lines | +| **Hide** | Show or hide the column | + +## Display tab — showing columns as links, images, or bars + +By default, columns display their raw value. The **Display** tab for each field lets you change this: + +### Links + +Display a field's value as a clickable hyperlink. To create dynamic per-row links: + +1. Add a [calculated field](/docs/explore-analyze/workbooks/calculated-fields) that produces a URL — for example: + ``` + CONCAT("https://example.com/orders/", order_items.order_id) + ``` +2. In the table visualization, hide the calculated field column. +3. In the **Display** tab for the field you want to link, set **Display as** to **Link** and select the hidden URL field as the source. + +{/* TODO screenshot: column display dropdown showing Link option selected (hidden — replace this comment with when image is ready) */} + +### Images + +Display a field as an image by setting **Display as** to **Image**. Configure height and width. To make the image a link, check **Link image** and set the **Link URL**. + +The URL must be publicly accessible without authentication. + +### Inline bars + +Display a numeric column as a proportional bar by setting **Display as** to **Bar**. Bars scale relative to the max value in the column. Columns with negative values will split the bar in both directions. + +{/* TODO screenshot: table with inline bar column (hidden — replace this comment with when image is ready) */} + +## Style options + +The **Style** tab controls the visual appearance of the table: + +| Option | Description | +|---|---| +| **Row numbers** | Show or hide the row number column | +| **Row banding** | Alternates row background between white and a secondary color | +| **Font size** | Adjust size independently for Headers, Values, and Totals | +| **Description** | Show a description below the table title | + +### Colors + +Set background and text colors for table elements: + +- Table headers (background + text) +- Values (background + text) +- Banding (background) +- Hover state +- Totals row + +Use the three-dot menu in the Colors section to **reset to defaults** or **copy the color palette** as a JSON string for reuse: + +```json +{"header":{"fontColor":"#fefefe","backgroundColor":"#5339CF"},"banding":{"backgroundColor":"#f5f3ff"}} +``` + +## Conditional formatting + +The **Conditional formatting** tab applies cell or row styling based on conditions you define. Configure: + +1. The field to evaluate +2. The condition (e.g. greater than, contains, is null) +3. The styling to apply when the condition is met (background color, text color) + +To make a background transparent, open the color picker and clear the hex value. + +{/* TODO screenshot: conditional formatting panel with a condition configured (hidden — replace this comment with when image is ready) */} + +### Gradient color scale + +The **Color scale** tab applies a gradient across a column based on value ranges. Configure a minimum color, a midpoint color (optional), and a maximum color. The gradient is applied across all visible rows. + + +If you don't set a mapping value for the scale, the gradient applies across visible rows only. This can produce unexpected results when row limits or pagination are active. + + +Use the **Treat as zero** toggle to handle null values in the gradient calculation. + +{/* TODO screenshot: table with gradient color scale applied to a numeric column (hidden — replace this comment with when image is ready) */} + +## Totals + +Enable column totals and row totals from the **Table** configuration tab. Totals rows and columns are styled separately from body cells. diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/axes.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/axes.mdx new file mode 100644 index 0000000000000..483fc6400dd8c --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/axes.mdx @@ -0,0 +1,60 @@ +--- +title: Axes +description: Configure axis titles, grid lines, label formatting, dual Y-axis, and reference lines. +--- + +The **Axes** section in the Style tab controls the appearance and behavior of the X axis and Y axis (or left and right Y axes in dual-axis charts). Most axis settings are available for all Vega-based chart types (bar, line, area, scatter, heatmap). + +{/* TODO screenshot: axes configuration panel open in Style tab (hidden — replace this comment with when image is ready) */} + +## X axis + +| Setting | Description | +|---|---| +| **Show axis** | Toggle the X axis on or off | +| **Title** | Custom axis label — leave blank to hide the axis title | +| **Grid lines** | Toggle grid lines perpendicular to the X axis | +| **Labels** | Toggle axis tick labels | +| **Label angle** | Rotate axis labels (useful for long category names) | +| **Label format** | Number or date format applied to axis labels | + +## Y axis (left) + +| Setting | Description | +|---|---| +| **Show axis** | Toggle the Y axis on or off | +| **Title** | Custom axis label | +| **Grid lines** | Toggle horizontal grid lines | +| **Labels** | Toggle axis tick labels | +| **Label format** | Number format applied to axis labels (e.g. `$,.0f` for currency) | +| **Min / Max** | Override the axis scale minimum and maximum values | + +{/* TODO screenshot: Y-axis settings panel with title and grid controls (hidden — replace this comment with when image is ready) */} + +## Dual Y axis (right axis) + +Add a second Y axis on the right side of the chart to plot a series on a different scale. This is useful for combining measures with different units or magnitudes — for example, showing order count on the left axis and average order value on the right. + +To use the right axis: +1. In the **Series configuration** for a specific series, change the **Y axis** assignment from **Left** to **Right**. +2. The right axis settings appear in the Style tab — configure its title, labels, and scale independently from the left axis. + +{/* TODO screenshot: dual-axis chart with bar on left axis and line on right axis (hidden — replace this comment with when image is ready) */} + +## Reference lines + +Add horizontal reference lines to mark a target, threshold, or benchmark value. Reference lines appear at a fixed Y value across the full width of the chart. + +To add a reference line: +1. In the **Y axis** section of the Style tab, click **Add reference line**. +2. Set the **Value** — the Y position of the line. +3. Optionally set a **Label** that appears next to the line. +4. Configure **Color** and **Style** (solid, dashed, or dotted). + +{/* TODO screenshot: chart with a dashed reference line and label (hidden — replace this comment with when image is ready) */} + +You can add multiple reference lines to the same axis. Each is configured independently. + + +Reference lines are only available on the left Y axis. For right-axis reference lines, use a [custom Vega-Lite spec](/docs/explore-analyze/charts/chart-types/custom). + diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/color-and-stacking.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/color-and-stacking.mdx new file mode 100644 index 0000000000000..29c8502d396e2 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/color-and-stacking.mdx @@ -0,0 +1,96 @@ +--- +title: Color & stacking +description: Configure color palettes, stacking behavior, stacked segment sorting, and legend placement for charts. +--- + +The **Color** section in the Style tab controls two related things: how series are colored, and how they are stacked or grouped relative to each other. These settings apply across bar, line, area, scatter, and heatmap charts. + +{/* TODO screenshot: color and stacking section of the Style tab (hidden — replace this comment with when image is ready) */} + +## Color faceting + +Mapping a field to the **Color** channel in the Fields tab creates one series per unique value in that field, each assigned a color from the active palette. How this field is typed affects the available options: + +| Data type | Palette options | +|---|---| +| **String / nominal** | Discrete palettes (one color per category value) | +| **Date / temporal** | Discrete (nominal) or continuous (temporal gradient) | +| **Numeric / quantitative** | Discrete (nominal) or continuous (quantitative gradient) | + +For strings, only discrete bucketing is available. For dates and numbers, you can choose whether each value gets its own distinct color (discrete) or a gradient is applied across the range (continuous). + +If a date or numeric field only offers discrete options, try casting the field to the appropriate type. + +## Palettes + +### Discrete palettes + +For discrete data, colors from the palette are applied in palette order, matching the sort order of the query results. Change the palette order by adjusting the sort in your query. + +Enable **Reverse colors** to reverse the order colors are applied. + +### Continuous (gradient) palettes + +For continuous data, the gradient palette maps to the range of values in your results. Select a different gradient from the palette dropdown to change the color treatment. + +### Custom palettes + +If none of the provided palettes fit your needs, you can build a custom palette for an individual chart: + +1. Open the **Color** section of the Style tab. +2. Select the last option in the palette menu: **Custom palette**. +3. Click **Customize** to open the palette editor. +4. Add, remove, and edit individual hex colors. +5. Use **Open hex code editor** to toggle a bulk editor and paste a comma-separated list of hex values. + +{/* TODO screenshot: custom palette editor with hex editor open (hidden — replace this comment with when image is ready) */} + +To reuse a custom palette across charts, copy the hex codes and paste them into the custom palette editor of another chart. + +## Series color controls + +When no Color channel is assigned (single measure, no color-by), each series gets an individual color picker in the **Series** section of the Style tab. Click the color swatch next to a series to change its color. + +## Stacking options + +The stacking behavior controls how multiple series at the same X-axis value are positioned relative to each other. The available modes: + +| Option | Behavior | +|---|---| +| **Automatic** | Cube selects the best option based on chart type and data | +| **Stack** | Series are stacked on top of each other | +| **Group** | Series are placed side-by-side (bar charts only) | +| **Overlay** | Series are drawn on top of each other from the same baseline | +| **Stack %** | Series are stacked and normalized to 100% — tooltip shows raw value | + +{/* TODO screenshot: stacking option dropdown (hidden — replace this comment with when image is ready) */} + +### Per-axis stacking + +Stacking can also be set independently per Y-axis series in the Y-axis series configuration. This enables creating grouped clusters of stacked sub-groups — for example, two stacked grouplets placed side-by-side. + +## Stacked segment sorting + +When stacking is active, control how segments within each stack are ordered using **Sort stack by**: + +| Option | Description | +|---|---| +| **Label** | Alphabetical by dimension value (default) | +| **Value** | By measure value within each individual stack (bar/column only) | +| **Sum** | By total sum across all stacks — useful for ordering by overall contribution | +| **Unsorted** | Preserves the original data order from the query results | + + +The **Value** sorting option is only available for bar and column charts. For area and line charts, use **Sum** or **Label**. + + +## Legend + +The legend appears when a Color channel is assigned. Configure it in the **Legend** section: + +| Option | Description | +|---|---| +| **Position** | Right, left, top, or bottom | +| **Hidden** | Remove the legend entirely | + +{/* TODO screenshot: legend position options (hidden — replace this comment with when image is ready) */} diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/data-labels.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/data-labels.mdx new file mode 100644 index 0000000000000..39da2bbf782ed --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/data-labels.mdx @@ -0,0 +1,22 @@ +--- +title: Data labels +description: Display totals directly on stacked bar charts with configurable positioning and formatting. +--- + +Data labels show the aggregate total value above each full stack on stacked bar charts. They let users read exact values without cross-referencing the Y axis. + +{/* Screenshot: stacked bar chart with total labels visible above each stack, Fields tab open showing Data Labels enabled. Place directly below this heading, full-width. (hidden — replace this comment with when image is ready) */} + +## Enabling data labels + +Open the **Fields** tab and enable the **Data Labels** toggle. + +## Label settings + +| Setting | Description | +|---|---| +| **Format** | Number format applied to the label value (e.g. `,.0f` for integers, `$,.2f` for currency) | +| **Font size** | Size of the label text | +| **Position** | Outside end, Inside end, Inside center, or Inside base | + +{/* Screenshot: Fields tab with Data Labels toggle on and Position dropdown open showing the four options. Place inline, 50% width, right-aligned. (hidden — replace this comment with when image is ready) */} diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/index.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/index.mdx new file mode 100644 index 0000000000000..24bfc3f61429b --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/index.mdx @@ -0,0 +1,15 @@ +--- +title: Configure charts +description: Reference for chart configuration options — series mapping, color, axes, tooltips, and data labels. +--- + +The chart configuration panel has two tabs — **Fields** and **Style** — available for every chart type. Configuration options are divided into per-channel field assignments and per-chart style controls. + +| Page | What it covers | +|---|---| +| [Series mapping](/docs/explore-analyze/charts/configuration/series-mapping) | Assigning query columns to chart channels (X, Y, color, size, tooltip) | +| [Series configuration](/docs/explore-analyze/charts/configuration/series-configuration) | Per-series mark type, color, and individual display options | +| [Color & stacking](/docs/explore-analyze/charts/configuration/color-and-stacking) | Color palettes, stacking mode, stacked segment sorting, and legend placement | +| [Axes](/docs/explore-analyze/charts/configuration/axes) | Axis titles, grid lines, label formatting, dual Y-axis, and reference lines | +| [Tooltips](/docs/explore-analyze/charts/configuration/tooltips) | Which fields appear on hover and how they are formatted | +| [Data labels](/docs/explore-analyze/charts/configuration/data-labels) | Labels shown on chart marks — positioning, formatting, and stacked totals | diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/series-configuration.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/series-configuration.mdx new file mode 100644 index 0000000000000..680fa3fd373ca --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/series-configuration.mdx @@ -0,0 +1,48 @@ +--- +title: Series configuration +description: Configure individual series — mark type, color, and display options — independently from the global chart settings. +--- + +Series configuration lets you override chart settings on a per-series basis. Access it from the **Fields** tab by expanding an individual series in the Y-axis section. + +{/* TODO screenshot: series configuration panel expanded for one series (hidden — replace this comment with when image is ready) */} + +## Mark type override + +Each series can use a different mark type, independent of the global chart mark. This enables composite charts — for example, plotting one measure as a bar and another as a line on the same chart. + +Available mark types per series: +- **Bar** +- **Line** +- **Area** +- **Scatter** (point) + +To create a bar + line chart: +1. Add two measures to the Y axis. +2. Expand the second series in the Fields tab. +3. Set its mark type to **Line**. +4. Optionally assign it to the **Right Y axis** in the same panel (see [Axes](/docs/explore-analyze/charts/configuration/axes)). + +{/* TODO screenshot: second series with mark type set to Line (hidden — replace this comment with when image is ready) */} + +## Series color + +When no **Color** channel is assigned (single-color charts with no color-by dimension), each series has an individual color picker. Click the color swatch to open the picker and set a custom color for that series. + +This setting has no effect when a Color channel is active — in that case, colors are managed by the palette in [Color & stacking](/docs/explore-analyze/charts/configuration/color-and-stacking). + +## Y axis assignment + +For charts with a dual Y axis, assign each series to either the **Left** or **Right** Y axis. This controls which axis scale the series uses. + +See [Axes](/docs/explore-analyze/charts/configuration/axes) for configuring the right axis title, labels, and scale. + +## Data labels per series + +Enable data labels for an individual series without enabling them globally. Configure label position, font, and format independently for each series. + +See [Data labels](/docs/explore-analyze/charts/configuration/data-labels) for the full configuration reference. + +## Stacking override + +On charts with multiple Y-axis series, you can set stacking behavior per-axis rather than globally. This lets you create grouped clusters where each cluster is internally stacked — expand the Y-axis settings for a specific series to access this option. diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/series-mapping.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/series-mapping.mdx new file mode 100644 index 0000000000000..4b8582a81239e --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/series-mapping.mdx @@ -0,0 +1,35 @@ +--- +title: Series mapping +description: Assign query columns to chart channels — X axis, Y axis, color, size, and tooltips. +--- + +Series mapping controls which query columns are assigned to which chart channels. This is done in the **Fields** tab of the chart configuration panel. + +{/* TODO screenshot: Fields tab open showing drag targets for X, Y, Color, Size, Tooltip (hidden — replace this comment with when image is ready) */} + +## Chart channels + +| Channel | Description | Applicable chart types | +|---|---|---| +| **X** | The horizontal axis dimension or time field | Bar, line, area, scatter, heatmap, boxplot | +| **Y** | The vertical axis measure | Bar, line, area, scatter, boxplot | +| **Color** | Creates one series per unique value; controls stacking behavior | All Vega-based types | +| **Size** | Scales point radius by a numeric measure | Scatter, map | +| **Tooltip** | Fields shown on hover | All types | +| **Theta** (pie) | The measure that determines slice size | Pie | + +## Assigning fields + +Drag a field from the **Available fields** list at the bottom of the Fields tab into the target channel slot. You can also drag an already-assigned field between channels. + +Fields can appear in more than one channel simultaneously — drag from **Available fields** to add a field to a second channel without removing it from the first. For example, you can assign the same dimension to both the X axis and the tooltip. + +{/* TODO screenshot: dragging a field from available fields into the Color channel (hidden — replace this comment with when image is ready) */} + +## Multiple measures on Y + +To plot multiple measures as separate series, drag additional measures into the **Y** channel. Each measure renders as its own series, with independent color and style settings in [series configuration](/docs/explore-analyze/charts/configuration/series-configuration). + +## Removing a field + +Drag a field out of its channel slot back to **Available fields**, or click the **×** on the field token to remove it. diff --git a/docs-mintlify/docs/explore-analyze/charts/configuration/tooltips.mdx b/docs-mintlify/docs/explore-analyze/charts/configuration/tooltips.mdx new file mode 100644 index 0000000000000..1f4ec0b5956d6 --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/configuration/tooltips.mdx @@ -0,0 +1,32 @@ +--- +title: Tooltips +description: Control which fields appear when a user hovers over a chart mark. +--- + +Tooltips appear when a user hovers over a data point in a chart. By default, Cube automatically populates the tooltip with all fields mapped to chart channels. You can customize which fields are shown and in what order. + +{/* TODO screenshot: tooltip displayed on a bar chart showing multiple fields (hidden — replace this comment with when image is ready) */} + +## Default behavior + +When a chart is first created, all fields assigned to the chart (X, Y, color, size) are included in the tooltip automatically. The tooltip is enabled by default on all Vega-based chart types (bar, line, area, scatter, heatmap, boxplot) and on map charts. + +## Configuring tooltip fields + +Open the **Fields** tab of the chart configuration panel. The **Tooltip** section shows the list of fields currently included in the tooltip. + +| Action | How | +|---|---| +| **Add a field** | Drag a field from **Available fields** into the Tooltip slot | +| **Remove a field** | Click the **×** on a field token in the Tooltip list | +| **Reorder fields** | Drag field tokens within the Tooltip list | + +{/* TODO screenshot: Tooltip section in the Fields tab with field list (hidden — replace this comment with when image is ready) */} + +## Disabling tooltips + +To turn off tooltips entirely, remove all fields from the Tooltip slot. When the Tooltip slot is empty, no tooltip is shown on hover. + +## Tooltip behavior on stacked charts + +On stacked bar charts, the tooltip is scoped to the individual stack segment under the cursor — it shows the value for that specific series at that X position, not the total stack value. To display the stack total, use [data labels](/docs/explore-analyze/charts/configuration/data-labels) with the **Simple totals** option. diff --git a/docs-mintlify/docs/explore-analyze/charts/custom.mdx b/docs-mintlify/docs/explore-analyze/charts/custom.mdx new file mode 100644 index 0000000000000..4ed5aa2ca66dd --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/custom.mdx @@ -0,0 +1,52 @@ +--- +title: Custom visualizations +description: Edit raw Vega-Lite specs to build visualizations beyond what the chart builder supports. +--- + +All standard Cube chart types are built on [Vega-Lite v5](https://vega.github.io/vega-lite/). The visual builder covers the most common patterns, but for anything beyond that — multiple layers with transforms, complex dual-axis rules, custom aggregations, or annotations — you can edit the raw spec directly. + +For fully freeform layouts using HTML and CSS, see [HTML charts](/docs/explore-analyze/charts/chart-types/html). + +## When the spec editor appears + +The chart panel automatically falls back to the **spec editor** when the current Vega-Lite spec has features the visual builder cannot represent: + +- Top-level `transform` clauses +- More than two non-text layers +- Certain dual-axis + rule mark combinations + +In these cases, the visual builder is replaced by a code editor showing the full Vega-Lite JSON. + +{/* Screenshot: Vega spec editor open with a multi-layer spec (hidden — replace this comment with when image is ready) */} + +## Opening the spec editor manually + +Click the **Edit spec** button in the chart panel (visible on Vega-based charts) to open the spec editor. This lets you inspect and modify the generated spec even when the visual builder is active. + +Changes take effect immediately in the preview. + +{/* Screenshot: Edit spec button and dialog (hidden — replace this comment with when image is ready) */} + +## Spec structure + +Cube generates standard Vega-Lite v5 specs. The key fields: + +```json +{ + "$schema": "https://vega.github.io/schema/vega-lite/v5.json", + "mark": { "type": "bar" }, + "encoding": { + "x": { "field": "order_items.status", "type": "nominal" }, + "y": { "field": "order_items.count", "type": "quantitative" }, + "color": { "field": "order_items.status", "type": "nominal" } + } +} +``` + +Any valid Vega-Lite v5 spec is supported. Refer to the [Vega-Lite documentation](https://vega.github.io/vega-lite/docs/) for the full spec reference. + +## AI-generated specs + +The AI agent can generate a full Vega-Lite spec from a natural language description. After running a query, prompt the agent — for example: _"Show this as a heatmap of order count by status and month"_ — and the agent will write the complete spec. + +AI-generated specs produce valid Vega-Lite v5 JSON and can be further refined in the spec editor. diff --git a/docs-mintlify/docs/explore-analyze/charts/index.mdx b/docs-mintlify/docs/explore-analyze/charts/index.mdx new file mode 100644 index 0000000000000..e405f9d1d139f --- /dev/null +++ b/docs-mintlify/docs/explore-analyze/charts/index.mdx @@ -0,0 +1,41 @@ +--- +title: Charts +description: Visualize query results as charts, tables, KPIs, and maps directly inside Cube workbooks. +--- + +Every tab in a Cube workbook has a chart panel. Once your query returns results, switch to the chart panel to pick a visualization type and configure how the data is displayed — from a simple bar chart to a composable KPI tile or a fully custom Vega-Lite spec. + +## Chart types + +Cube has built-in support for bar, line, area, pie, scatter, heatmap, KPI, map, boxplot, and more. See the [chart types overview](/docs/explore-analyze/charts/chart-types) for a full list and guidance on which type fits which data shape. + +### Selecting a chart type + +Chart type icons at the top of the chart panel let you quickly switch between common layouts — grouped vs. stacked bars, line vs. area, table vs. chart view — without opening the full configuration panel. + +Cube automatically picks a chart type when you run a new query. Any manual configuration you apply is preserved when you change query fields. + +### Resetting chart settings + +To discard your configuration and let Cube re-select a chart type based on the current query, open the tab options menu and choose **Reset chart**. + +## Generate charts with AI + +Describe the visualization you want in plain language — for example, _"show this as a stacked bar grouped by status"_ — and the AI agent will build and configure it. You can also let the agent auto-suggest the best chart for your query results. + +Charts generated by the AI are written as [Vega-Lite v5](https://vega.github.io/vega-lite/) specs and can be further edited in the [custom visualization](/docs/explore-analyze/charts/chart-types/custom) spec editor. + +## Configure charts + +Adjust the appearance of any chart through the configuration panel: + +- **[Color and stacking](/docs/explore-analyze/charts/configuration/color-and-stacking)** — Color palettes, series coloring, and stacking behavior +- **[Series configuration](/docs/explore-analyze/charts/configuration/series-configuration)** — Per-series mark type, color, and display options +- **[Series mapping](/docs/explore-analyze/charts/configuration/series-mapping)** — Assign query fields to chart channels (X, Y, color, size) +- **[Axes](/docs/explore-analyze/charts/configuration/axes)** — Axis titles, grid lines, scale, and reference lines +- **[Tooltips](/docs/explore-analyze/charts/configuration/tooltips)** — Fields shown on hover +- **[Data labels](/docs/explore-analyze/charts/configuration/data-labels)** — Values displayed directly on chart marks + +## Custom visualizations + +When the built-in chart types don't cover your use case, write a raw [Vega-Lite spec](/docs/explore-analyze/charts/chart-types/custom) or use an HTML template with Handlebars. Both options give you complete control over the rendered output. diff --git a/docs-mintlify/docs/explore-analyze/workbooks/charts.mdx b/docs-mintlify/docs/explore-analyze/workbooks/charts.mdx deleted file mode 100644 index 049f48123c41f..0000000000000 --- a/docs-mintlify/docs/explore-analyze/workbooks/charts.mdx +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: Charts -description: Survey built-in workbook visualizations—from Vega-Lite charts and KPIs to tables, maps, and custom HTML—and how to extend them. ---- - -Charts in Cube workbooks provide powerful visualization capabilities for your data models, enabling you to create interactive and insightful visual representations of your analytics. - - -## Built-in visualizations - -Cube includes the following built-in chart types: - -### Vega-Lite based - -- **Bars** – Bar charts including grouped, stacked, and percentage variants in both vertical and horizontal orientations -- **Line** – Line chart showing trends over time or categories -- **Area** – Area chart with filled regions beneath the line -- **Scatter** – Scatter plot for correlation analysis -- **Pie** – Pie chart for proportional data -- **Heatmap** – Heatmap for matrix data visualization -- **Boxplot** – Box plot for statistical distribution - -### Other - -- **Table** – Tabular view of data -- **KPI** – Key Performance Indicator display -- **HTML** – Custom HTML content -- **Map** – Geographic data visualization - -## Custom visualizations - -Cube enables deep customization for visuals either by providing a custom Vega-Lite spec or through HTML charts, which allows for any level of customization. - From c490c96682c27f22becbf593ed361fc94dc57d72 Mon Sep 17 00:00:00 2001 From: Artyom Keydunov Date: Sun, 19 Apr 2026 21:05:16 -0700 Subject: [PATCH 2/2] docs: apply GEO best practices for AI search engine optimization (#10716) Improve documentation discoverability by AI answer engines (ChatGPT, Perplexity, Google AI) and traditional search by following Mintlify's Generative Engine Optimization guide: - Add SEO config to docs.json (indexing: all, og metatags) - Add missing title frontmatter to 24 index pages - Label 36 unlabeled code blocks with language identifiers - Fix heading hierarchy violations in 2 multitenancy pages Made-with: Cursor --- docs-mintlify/admin/ai/agent-rules.mdx | 24 +++++++++---------- .../admin/ai/spaces-agents-models.mdx | 4 ++-- docs-mintlify/admin/ai/yaml-config.mdx | 2 +- .../data-sources/ms-fabric.mdx | 2 +- .../data-sources/snowflake.mdx | 2 +- .../admin/connect-to-data/multitenancy.mdx | 2 +- .../visualization-tools/index.mdx | 1 + docs-mintlify/admin/deployment/byoc/index.mdx | 1 + .../admin/deployment/providers/index.mdx | 1 + .../admin/deployment/vpc/aws/index.mdx | 1 + .../admin/deployment/vpc/azure/index.mdx | 1 + .../monitoring/monitoring-integrations/s3.mdx | 2 +- .../admin/sso/microsoft-entra-id/index.mdx | 1 + .../cube-core/getting-started/index.mdx | 1 + .../cube-core/migrate-from-core/index.mdx | 1 + .../cube-core/running-in-production.mdx | 6 ++--- docs-mintlify/docs.json | 7 ++++++ .../data-modeling/access-control/index.mdx | 1 + .../docs/data-modeling/dynamic/index.mdx | 1 + .../docs/getting-started/cloud/index.mdx | 1 + .../docs/getting-started/databricks/index.mdx | 1 + docs-mintlify/docs/getting-started/index.mdx | 1 + .../migrate-from-core/index.mdx | 1 + .../docs/integrations/power-bi/kerberos.mdx | 4 ++-- .../semantic-layer-sync/index.mdx | 1 + .../integrations/snowflake-semantic-views.mdx | 1 + docs-mintlify/docs/integrations/tableau.mdx | 2 ++ .../running-in-production.mdx | 6 ++--- .../using-pre-aggregations.mdx | 2 +- docs-mintlify/embedding/multitenancy.mdx | 2 +- docs-mintlify/embedding/signed-embedding.mdx | 2 +- docs-mintlify/recipes/data-modeling/xirr.mdx | 2 +- .../reference/configuration/config.mdx | 2 +- .../core-data-apis/dax-api/index.mdx | 1 + .../core-data-apis/graphql-api/index.mdx | 1 + .../reference/core-data-apis/index.mdx | 1 + .../reference/core-data-apis/mdx-api.mdx | 2 +- .../reference/core-data-apis/queries.mdx | 2 +- .../core-data-apis/rest-api/index.mdx | 1 + .../reference/embed-apis/chat-api.mdx | 6 ++--- .../reference/embed-apis/generate-session.mdx | 2 +- docs-mintlify/reference/embed-apis/index.mdx | 1 + docs-mintlify/reference/index.mdx | 1 + .../reference/orchestration-api/index.mdx | 1 + 44 files changed, 70 insertions(+), 38 deletions(-) diff --git a/docs-mintlify/admin/ai/agent-rules.mdx b/docs-mintlify/admin/ai/agent-rules.mdx index 3f652fe06fe88..182d85cbbc393 100644 --- a/docs-mintlify/admin/ai/agent-rules.mdx +++ b/docs-mintlify/admin/ai/agent-rules.mdx @@ -18,15 +18,15 @@ Agent Rules in Cube provide a powerful way to customize and control how AI agent - Domain-specific terminology **Example Always Rules:** -``` +```text Sales efficiency is deal size divided by sales cycle length ``` -``` +```text When analyzing customer data, always consider seasonality patterns from our retail business ``` -``` +```text Revenue should be calculated using our standard GAAP accounting principles ``` @@ -41,15 +41,15 @@ Revenue should be calculated using our standard GAAP accounting principles - Scenario-specific instructions **Example Agent Requested Rules:** -``` +```text If you asked to analyze sales efficiency start with correlation to WSE ``` -``` +```text For customer segmentation analysis, use RFM methodology (Recency, Frequency, Monetary) ``` -``` +```text When analyzing marketing performance, compare against industry benchmarks where available ``` @@ -77,13 +77,13 @@ When analyzing marketing performance, compare against industry benchmarks where ### Domain-Specific Rules **E-commerce Example:** -``` +```text Always Rule: "Customer lifetime value equals average order value × purchase frequency × customer lifespan" Agent Requested: "For cart abandonment analysis, segment by device type and traffic source" ``` **SaaS Example:** -``` +```text Always Rule: "MRR growth rate should exclude one-time charges and setup fees" Agent Requested: "When analyzing churn, differentiate between voluntary and involuntary churn" ``` @@ -92,7 +92,7 @@ Agent Requested: "When analyzing churn, differentiate between voluntary and invo Rules should provide context that agents might not inherently understand about your business: -``` +```text Always Rule: "Our peak season is Q4, with 40% of annual revenue typically occurring in December" Agent Requested: "For inventory analysis, consider our 6-week lead time for international suppliers" ``` @@ -111,7 +111,7 @@ Based on the rule configuration system, when multiple rules could apply to the s ### Example Conflict Scenarios **Scenario 1: Direct Contradiction** -``` +```text Rule A (Always): "Revenue recognition follows monthly billing cycles" Rule B (Always): "Revenue should be recognized quarterly" @@ -119,7 +119,7 @@ Resolution: The agent will flag this conflict and may ask for clarification ``` **Scenario 2: Complementary Rules** -``` +```text Rule A (Always): "Sales efficiency is deal size divided by sales cycle length" Rule B (Agent Requested): "When analyzing sales efficiency, include pipeline velocity metrics" @@ -127,7 +127,7 @@ Resolution: Both rules work together - B provides additional context to A ``` **Scenario 3: Specificity Override** -``` +```text Rule A (Always): "Use standard deviation for all variance calculations" Rule B (Agent Requested): "For customer behavior analysis, use median absolute deviation instead of standard deviation" diff --git a/docs-mintlify/admin/ai/spaces-agents-models.mdx b/docs-mintlify/admin/ai/spaces-agents-models.mdx index 237d82c7694c2..ccf4398a68411 100644 --- a/docs-mintlify/admin/ai/spaces-agents-models.mdx +++ b/docs-mintlify/admin/ai/spaces-agents-models.mdx @@ -73,7 +73,7 @@ Cube is an agentic analytics platform that combines AI agents with semantic data ### Example Interaction: -``` +```text User: "Show me sales performance by region for Q4" Agent: @@ -86,7 +86,7 @@ Agent: ### Space-Agent-Model Relationship: -``` +```text Space (Sales Analytics) ├── Rules: "Revenue = quantity × price" ├── Memories: Past Q4 analyses diff --git a/docs-mintlify/admin/ai/yaml-config.mdx b/docs-mintlify/admin/ai/yaml-config.mdx index f781629154f45..b1c93dda46253 100644 --- a/docs-mintlify/admin/ai/yaml-config.mdx +++ b/docs-mintlify/admin/ai/yaml-config.mdx @@ -64,7 +64,7 @@ When YAML agent configuration is enabled, an `auto` space and `auto` agent are a ### File Structure -``` +```text your-cube-project/ ├── model/ │ └── cubes/ diff --git a/docs-mintlify/admin/connect-to-data/data-sources/ms-fabric.mdx b/docs-mintlify/admin/connect-to-data/data-sources/ms-fabric.mdx index d99036acabe7f..e49e5b36039be 100644 --- a/docs-mintlify/admin/connect-to-data/data-sources/ms-fabric.mdx +++ b/docs-mintlify/admin/connect-to-data/data-sources/ms-fabric.mdx @@ -27,7 +27,7 @@ Then, provide the **JDBC URL** connection string in the following format. See below for tips on filling in ``, ``, ``, ``, and ``. -``` +```text jdbc:sqlserver://;serverName=.datawarehouse.pbidedicated.windows.net;database=;encrypt=true;Authentication=;UserName=;Password= ``` diff --git a/docs-mintlify/admin/connect-to-data/data-sources/snowflake.mdx b/docs-mintlify/admin/connect-to-data/data-sources/snowflake.mdx index 1a4ade880d610..8993421298027 100644 --- a/docs-mintlify/admin/connect-to-data/data-sources/snowflake.mdx +++ b/docs-mintlify/admin/connect-to-data/data-sources/snowflake.mdx @@ -12,7 +12,7 @@ description: "Snowflake is a popular cloud-based data platform." In order to connect Cube to Snowflake, you need to grant certain permissions to the Snowflake role used by Cube. Cube requires the role to have `USAGE` on databases and schemas and `SELECT` on tables. An example configuration: -``` +```sql GRANT USAGE ON DATABASE ABC TO ROLE XYZ; GRANT USAGE ON ALL SCHEMAS IN DATABASE ABC TO ROLE XYZ; GRANT USAGE ON FUTURE SCHEMAS IN DATABASE ABC TO ROLE XYZ; diff --git a/docs-mintlify/admin/connect-to-data/multitenancy.mdx b/docs-mintlify/admin/connect-to-data/multitenancy.mdx index e05c219551635..acc71238f08e5 100644 --- a/docs-mintlify/admin/connect-to-data/multitenancy.mdx +++ b/docs-mintlify/admin/connect-to-data/multitenancy.mdx @@ -40,7 +40,7 @@ See the following recipes: -### Multitenancy vs Multiple Data Sources +## Multitenancy vs Multiple Data Sources In cases where your Cube data model is spread across multiple different data sources, consider using the [`data_source` cube property][ref-cube-datasource] diff --git a/docs-mintlify/admin/connect-to-data/visualization-tools/index.mdx b/docs-mintlify/admin/connect-to-data/visualization-tools/index.mdx index c8f90bdd6c2fe..bad89b39e349d 100644 --- a/docs-mintlify/admin/connect-to-data/visualization-tools/index.mdx +++ b/docs-mintlify/admin/connect-to-data/visualization-tools/index.mdx @@ -1,4 +1,5 @@ --- +title: Connecting to Visualization Tools description: Find connection guides for BI and visualization tools that integrate with Cube. --- diff --git a/docs-mintlify/admin/deployment/byoc/index.mdx b/docs-mintlify/admin/deployment/byoc/index.mdx index d640c1b977c2d..9b3ae75ab08bf 100644 --- a/docs-mintlify/admin/deployment/byoc/index.mdx +++ b/docs-mintlify/admin/deployment/byoc/index.mdx @@ -1,4 +1,5 @@ --- +title: Bring Your Own Cloud (BYOC) description: Deploy Cube Cloud data-plane components on your own AWS, Azure, or GCP infrastructure for full data residency control. --- diff --git a/docs-mintlify/admin/deployment/providers/index.mdx b/docs-mintlify/admin/deployment/providers/index.mdx index b9b7a4af0de3c..678a9e9caeaf4 100644 --- a/docs-mintlify/admin/deployment/providers/index.mdx +++ b/docs-mintlify/admin/deployment/providers/index.mdx @@ -1,4 +1,5 @@ --- +title: Cloud Providers description: Learn about AWS, GCP, and Azure support in Cube Cloud, including available regions and dedicated infrastructure. --- diff --git a/docs-mintlify/admin/deployment/vpc/aws/index.mdx b/docs-mintlify/admin/deployment/vpc/aws/index.mdx index a85b7118f64e3..efdf55446dab4 100644 --- a/docs-mintlify/admin/deployment/vpc/aws/index.mdx +++ b/docs-mintlify/admin/deployment/vpc/aws/index.mdx @@ -1,4 +1,5 @@ --- +title: AWS VPC Connectivity description: Establish a private network connection between Cube Cloud and your AWS VPC using PrivateLink or VPC peering. --- diff --git a/docs-mintlify/admin/deployment/vpc/azure/index.mdx b/docs-mintlify/admin/deployment/vpc/azure/index.mdx index 87c0fb2c5af8c..820d52fa5acc9 100644 --- a/docs-mintlify/admin/deployment/vpc/azure/index.mdx +++ b/docs-mintlify/admin/deployment/vpc/azure/index.mdx @@ -1,4 +1,5 @@ --- +title: Azure VNet Connectivity description: Establish a private network connection between Cube Cloud and your Azure VNet using Private Link or VNet peering. --- diff --git a/docs-mintlify/admin/monitoring/monitoring-integrations/s3.mdx b/docs-mintlify/admin/monitoring/monitoring-integrations/s3.mdx index 1bc7d62785c20..c005820f1ac03 100644 --- a/docs-mintlify/admin/monitoring/monitoring-integrations/s3.mdx +++ b/docs-mintlify/admin/monitoring/monitoring-integrations/s3.mdx @@ -54,7 +54,7 @@ navigate to your S3 bucket and watch the logs coming. You might see the following error message in Vector logs: -``` +```text The bucket you are attempting to access must be addressed using the specified endpoint. Please send all future requests to this endpoint. ``` diff --git a/docs-mintlify/admin/sso/microsoft-entra-id/index.mdx b/docs-mintlify/admin/sso/microsoft-entra-id/index.mdx index a14d33cfb5265..320f6eb20ff02 100644 --- a/docs-mintlify/admin/sso/microsoft-entra-id/index.mdx +++ b/docs-mintlify/admin/sso/microsoft-entra-id/index.mdx @@ -1,4 +1,5 @@ --- +title: Microsoft Entra ID SSO description: Set up single sign-on for Cube Cloud using Microsoft Entra ID with SAML authentication and SCIM provisioning. --- diff --git a/docs-mintlify/cube-core/getting-started/index.mdx b/docs-mintlify/cube-core/getting-started/index.mdx index 6c9c71295452f..876037744b092 100644 --- a/docs-mintlify/cube-core/getting-started/index.mdx +++ b/docs-mintlify/cube-core/getting-started/index.mdx @@ -1,4 +1,5 @@ --- +title: Getting Started with Cube Core description: Create a project, connect a database, query data, and add a pre-aggregation in self-hosted Cube Core. --- diff --git a/docs-mintlify/cube-core/migrate-from-core/index.mdx b/docs-mintlify/cube-core/migrate-from-core/index.mdx index a1bcbd60e1b33..415de74b4918f 100644 --- a/docs-mintlify/cube-core/migrate-from-core/index.mdx +++ b/docs-mintlify/cube-core/migrate-from-core/index.mdx @@ -1,4 +1,5 @@ --- +title: Migrate from Cube Core to Cube Cloud description: Import your self-hosted Cube Core project into Cube Cloud using Git, SSH, or the CLI. --- diff --git a/docs-mintlify/cube-core/running-in-production.mdx b/docs-mintlify/cube-core/running-in-production.mdx index 6bc479a4eed5a..e0d442e738fdc 100644 --- a/docs-mintlify/cube-core/running-in-production.mdx +++ b/docs-mintlify/cube-core/running-in-production.mdx @@ -328,7 +328,7 @@ system to report the creation time of a file. If the file system does not support getting the creation time, you will see the following error message in Cube Store logs: -``` +```text ERROR [cubestore::remotefs::cleanup] error while getting created time for file ".chunk.parquet": creation time is not available for the filesystem @@ -377,7 +377,7 @@ for Cube Store via the **Encryption Keys** page in Cube Cloud. When building some pre-aggregations, you might encounter the following error: -``` +```text Error: Error during create table: CREATE TABLE Error: Query execution timeout after 10 min of waiting ``` @@ -402,7 +402,7 @@ However, it is recommended that you optimize your pre-aggregations instead: When using MinIO for persistent storage, you might encounter the following error: -``` +```text Error: Error during upload of File can't be listed after upload. Either there's Cube Store cluster misconfiguration, diff --git a/docs-mintlify/docs.json b/docs-mintlify/docs.json index 004f6c9743406..83d4c4b945b10 100644 --- a/docs-mintlify/docs.json +++ b/docs-mintlify/docs.json @@ -658,6 +658,13 @@ "href": "https://cubecloud.dev/auth/signup" } }, + "seo": { + "indexing": "all", + "metatags": { + "og:type": "website", + "og:site_name": "Cube Documentation" + } + }, "footer": { "socials": { "x": "https://x.com/the_cube_dev", diff --git a/docs-mintlify/docs/data-modeling/access-control/index.mdx b/docs-mintlify/docs/data-modeling/access-control/index.mdx index ce0973957e232..b34b7a49011c3 100644 --- a/docs-mintlify/docs/data-modeling/access-control/index.mdx +++ b/docs-mintlify/docs/data-modeling/access-control/index.mdx @@ -1,4 +1,5 @@ --- +title: Access Control sidebarTitle: Overview description: Learn how Cube separates authentication and authorization to control who can access your data and platform features. --- diff --git a/docs-mintlify/docs/data-modeling/dynamic/index.mdx b/docs-mintlify/docs/data-modeling/dynamic/index.mdx index 88cc08cfb2690..bc2ee254c5151 100644 --- a/docs-mintlify/docs/data-modeling/dynamic/index.mdx +++ b/docs-mintlify/docs/data-modeling/dynamic/index.mdx @@ -1,4 +1,5 @@ --- +title: Dynamic Data Models description: Generate data models programmatically using Jinja with Python or JavaScript for dynamic schema creation. --- diff --git a/docs-mintlify/docs/getting-started/cloud/index.mdx b/docs-mintlify/docs/getting-started/cloud/index.mdx index 31212c5c8593f..18c1703bd595f 100644 --- a/docs-mintlify/docs/getting-started/cloud/index.mdx +++ b/docs-mintlify/docs/getting-started/cloud/index.mdx @@ -1,4 +1,5 @@ --- +title: Getting Started with Cube Cloud and Snowflake description: Follow a step-by-step tutorial to connect Cube Cloud to Snowflake, build a data model, and query from BI and React. --- diff --git a/docs-mintlify/docs/getting-started/databricks/index.mdx b/docs-mintlify/docs/getting-started/databricks/index.mdx index 99b241b6a2be3..bcbc14fac7cda 100644 --- a/docs-mintlify/docs/getting-started/databricks/index.mdx +++ b/docs-mintlify/docs/getting-started/databricks/index.mdx @@ -1,4 +1,5 @@ --- +title: Getting Started with Cube Cloud and Databricks description: Follow a step-by-step tutorial to connect Cube Cloud to Databricks, build a data model, and query from BI and React. --- diff --git a/docs-mintlify/docs/getting-started/index.mdx b/docs-mintlify/docs/getting-started/index.mdx index 064655bad6362..0bcc7ba676edc 100644 --- a/docs-mintlify/docs/getting-started/index.mdx +++ b/docs-mintlify/docs/getting-started/index.mdx @@ -1,4 +1,5 @@ --- +title: Getting Started with Cube description: Sign up for Cube Cloud, connect a data source, and let AI build your initial semantic model. --- diff --git a/docs-mintlify/docs/getting-started/migrate-from-core/index.mdx b/docs-mintlify/docs/getting-started/migrate-from-core/index.mdx index a1bcbd60e1b33..415de74b4918f 100644 --- a/docs-mintlify/docs/getting-started/migrate-from-core/index.mdx +++ b/docs-mintlify/docs/getting-started/migrate-from-core/index.mdx @@ -1,4 +1,5 @@ --- +title: Migrate from Cube Core to Cube Cloud description: Import your self-hosted Cube Core project into Cube Cloud using Git, SSH, or the CLI. --- diff --git a/docs-mintlify/docs/integrations/power-bi/kerberos.mdx b/docs-mintlify/docs/integrations/power-bi/kerberos.mdx index d75c8d085aade..cd4aaef4c0358 100644 --- a/docs-mintlify/docs/integrations/power-bi/kerberos.mdx +++ b/docs-mintlify/docs/integrations/power-bi/kerberos.mdx @@ -79,7 +79,7 @@ In the following example, the web service (`HTTP`) SPN on the `redundant-brohman.gcp-us-central1.cubecloudapp.dev` domain is registered for the `mdax-api-svc-account` user in the `CUBE` domain: -``` +```bash setspn -S HTTP/redundant-brohman.gcp-us-central1.cubecloudapp.dev CUBE\mdax-api-svc-account ``` @@ -91,7 +91,7 @@ token. First, use the [`ktpass` command][link-ktpass] to generate the keytab file. You will be prompted to enter the password for the specified user: -``` +```bash ktpass /out kerberos.keytab /princ HTTP/redundant-brohman.gcp-us-central1.cubecloudapp.dev@CUBE.DEV /mapuser mdax-api-svc-account /crypto All /ptype KRB5_NT_PRINCIPAL /pass * ``` diff --git a/docs-mintlify/docs/integrations/semantic-layer-sync/index.mdx b/docs-mintlify/docs/integrations/semantic-layer-sync/index.mdx index 0c3ac2b341a63..5f2e9aeeceebe 100644 --- a/docs-mintlify/docs/integrations/semantic-layer-sync/index.mdx +++ b/docs-mintlify/docs/integrations/semantic-layer-sync/index.mdx @@ -1,4 +1,5 @@ --- +title: Semantic Layer Sync description: Automatically synchronize your Cube data model into BI tools like Superset, Metabase, Preset, and Tableau. --- diff --git a/docs-mintlify/docs/integrations/snowflake-semantic-views.mdx b/docs-mintlify/docs/integrations/snowflake-semantic-views.mdx index 9b0b2faf3e90f..d661b8a808f6f 100644 --- a/docs-mintlify/docs/integrations/snowflake-semantic-views.mdx +++ b/docs-mintlify/docs/integrations/snowflake-semantic-views.mdx @@ -1,5 +1,6 @@ --- title: Snowflake Semantic Views Integration +sidebarTitle: Snowflake Semantic Views description: Snowflake Semantic Views integration is available in Cube on the Enterprise plan. --- diff --git a/docs-mintlify/docs/integrations/tableau.mdx b/docs-mintlify/docs/integrations/tableau.mdx index a6024df235488..1857fbf72f2b7 100644 --- a/docs-mintlify/docs/integrations/tableau.mdx +++ b/docs-mintlify/docs/integrations/tableau.mdx @@ -1,4 +1,6 @@ --- +title: Tableau Integration +sidebarTitle: Tableau description: Connect Tableau to Cube using Semantic Layer Sync to programmatically create and update Tableau data sources. --- diff --git a/docs-mintlify/docs/pre-aggregations/running-in-production.mdx b/docs-mintlify/docs/pre-aggregations/running-in-production.mdx index 6bc479a4eed5a..e0d442e738fdc 100644 --- a/docs-mintlify/docs/pre-aggregations/running-in-production.mdx +++ b/docs-mintlify/docs/pre-aggregations/running-in-production.mdx @@ -328,7 +328,7 @@ system to report the creation time of a file. If the file system does not support getting the creation time, you will see the following error message in Cube Store logs: -``` +```text ERROR [cubestore::remotefs::cleanup] error while getting created time for file ".chunk.parquet": creation time is not available for the filesystem @@ -377,7 +377,7 @@ for Cube Store via the **Encryption Keys** page in Cube Cloud. When building some pre-aggregations, you might encounter the following error: -``` +```text Error: Error during create table: CREATE TABLE Error: Query execution timeout after 10 min of waiting ``` @@ -402,7 +402,7 @@ However, it is recommended that you optimize your pre-aggregations instead: When using MinIO for persistent storage, you might encounter the following error: -``` +```text Error: Error during upload of File can't be listed after upload. Either there's Cube Store cluster misconfiguration, diff --git a/docs-mintlify/docs/pre-aggregations/using-pre-aggregations.mdx b/docs-mintlify/docs/pre-aggregations/using-pre-aggregations.mdx index d4541f04cda26..5495e20a985e4 100644 --- a/docs-mintlify/docs/pre-aggregations/using-pre-aggregations.mdx +++ b/docs-mintlify/docs/pre-aggregations/using-pre-aggregations.mdx @@ -1022,7 +1022,7 @@ pre-aggregations. When building pre-aggregations, you might get an error similar to the this one: -``` +```text Error during create table: CREATE TABLE : Custom type 'fixed' is not supported ``` diff --git a/docs-mintlify/embedding/multitenancy.mdx b/docs-mintlify/embedding/multitenancy.mdx index 68b6be151c638..e5958c43df89d 100644 --- a/docs-mintlify/embedding/multitenancy.mdx +++ b/docs-mintlify/embedding/multitenancy.mdx @@ -40,7 +40,7 @@ See the following recipes: -### Multitenancy vs Multiple Data Sources +## Multitenancy vs Multiple Data Sources In cases where your Cube data model is spread across multiple different data sources, consider using the [`data_source` cube property][ref-cube-datasource] diff --git a/docs-mintlify/embedding/signed-embedding.mdx b/docs-mintlify/embedding/signed-embedding.mdx index 12ca0a7dba84a..7206944b8818b 100644 --- a/docs-mintlify/embedding/signed-embedding.mdx +++ b/docs-mintlify/embedding/signed-embedding.mdx @@ -165,7 +165,7 @@ defaults to `equals`. Example: -``` +```text https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&f_orders_transactions.users_country={"value":"USA"} ``` diff --git a/docs-mintlify/recipes/data-modeling/xirr.mdx b/docs-mintlify/recipes/data-modeling/xirr.mdx index c1f1dc66ca14e..1c1c676a91f7a 100644 --- a/docs-mintlify/recipes/data-modeling/xirr.mdx +++ b/docs-mintlify/recipes/data-modeling/xirr.mdx @@ -175,7 +175,7 @@ FROM payments; All queries above would yield the same result: -``` +```text xirr -------------------- 0.3748585976775555 diff --git a/docs-mintlify/reference/configuration/config.mdx b/docs-mintlify/reference/configuration/config.mdx index d39f0ec5ee189..bc558cc272d81 100644 --- a/docs-mintlify/reference/configuration/config.mdx +++ b/docs-mintlify/reference/configuration/config.mdx @@ -1179,7 +1179,7 @@ Please [track this issue](https://github.com/cube-js/cube/issues/8136). ### `jwt` -``` +```typescript jwt: { jwkUrl?: ((payload: any) => string) | string; key?: string; diff --git a/docs-mintlify/reference/core-data-apis/dax-api/index.mdx b/docs-mintlify/reference/core-data-apis/dax-api/index.mdx index ea7f385ccb72c..b0770477940ba 100644 --- a/docs-mintlify/reference/core-data-apis/dax-api/index.mdx +++ b/docs-mintlify/reference/core-data-apis/dax-api/index.mdx @@ -1,4 +1,5 @@ --- +title: DAX API description: "Connect Microsoft Power BI to Cube natively using the DAX API for superior feature support over the SQL API." --- diff --git a/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx b/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx index fed10dd58243c..c98ac47e5040d 100644 --- a/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx +++ b/docs-mintlify/reference/core-data-apis/graphql-api/index.mdx @@ -1,4 +1,5 @@ --- +title: GraphQL API description: "Query Cube over HTTP using GraphQL for embedded analytics and front-end data applications." --- diff --git a/docs-mintlify/reference/core-data-apis/index.mdx b/docs-mintlify/reference/core-data-apis/index.mdx index 9ffcd4485d3ec..5bd99d82b05a0 100644 --- a/docs-mintlify/reference/core-data-apis/index.mdx +++ b/docs-mintlify/reference/core-data-apis/index.mdx @@ -1,4 +1,5 @@ --- +title: Core Data APIs sidebarTitle: Overview description: "Query the Cube semantic layer using SQL, DAX, REST, or GraphQL protocols depending on your application needs." --- diff --git a/docs-mintlify/reference/core-data-apis/mdx-api.mdx b/docs-mintlify/reference/core-data-apis/mdx-api.mdx index 644aae2934ede..420ef1855d1f0 100644 --- a/docs-mintlify/reference/core-data-apis/mdx-api.mdx +++ b/docs-mintlify/reference/core-data-apis/mdx-api.mdx @@ -60,7 +60,7 @@ subsecond latency. Consider tuning the concurrency and quotas to achieve that. By default, the MDX API creates additional hierarchies for all [time dimensions][ref-time-dimensions] and organizes them in a separate folder called "Calendar" for each dimension. The following hierarchies are created: -``` +```text - Dimension Calendar: - Year - Quarter diff --git a/docs-mintlify/reference/core-data-apis/queries.mdx b/docs-mintlify/reference/core-data-apis/queries.mdx index 75b2c050e5b34..d531db3acf0ef 100644 --- a/docs-mintlify/reference/core-data-apis/queries.mdx +++ b/docs-mintlify/reference/core-data-apis/queries.mdx @@ -385,7 +385,7 @@ You might encounter the following error when running an [ungrouped query](#ungro that includes `HAVING COUNT(1) > 0` (or a similar expression) against a cube or a view that have no measure called `count`. [Tableau][ref-tableau] is knows to generate such queries. -``` +```text Failed to deserialize: invalid type: unit value, expected struct JoinDefinitionStatic ``` diff --git a/docs-mintlify/reference/core-data-apis/rest-api/index.mdx b/docs-mintlify/reference/core-data-apis/rest-api/index.mdx index 0a07b2886f294..5c1365c8dd400 100644 --- a/docs-mintlify/reference/core-data-apis/rest-api/index.mdx +++ b/docs-mintlify/reference/core-data-apis/rest-api/index.mdx @@ -1,4 +1,5 @@ --- +title: REST API description: "Deliver data from Cube over HTTP to front-end apps, notebooks, low-code tools, and automated jobs." --- diff --git a/docs-mintlify/reference/embed-apis/chat-api.mdx b/docs-mintlify/reference/embed-apis/chat-api.mdx index 4582ba3682184..ab2ae916f8d55 100644 --- a/docs-mintlify/reference/embed-apis/chat-api.mdx +++ b/docs-mintlify/reference/embed-apis/chat-api.mdx @@ -14,7 +14,7 @@ The Chat API is available on [Premium and Enterprise plans](https://cube.dev/pri The endpoint has the following structure: -``` +```text https://ai.{cloudRegion}.cubecloud.dev/api/v1/public/{accountName}/agents/{agentId}/chat/stream-chat-state ``` @@ -136,7 +136,7 @@ The attributes passed during session generation become available as `userAttribu **POST** -``` +```text https://ai.{cloudRegion}.cubecloud.dev/api/v1/public/{accountName}/agents/{agentId}/chat/stream-chat-state ``` @@ -801,7 +801,7 @@ response. **POST** -``` +```text https://ai.{cloudRegion}.cubecloud.dev/api/v1/public/{accountName}/agents/{agentId}/chat/abort ``` diff --git a/docs-mintlify/reference/embed-apis/generate-session.mdx b/docs-mintlify/reference/embed-apis/generate-session.mdx index 8a2d98ee00c94..bcb5cf508f34a 100644 --- a/docs-mintlify/reference/embed-apis/generate-session.mdx +++ b/docs-mintlify/reference/embed-apis/generate-session.mdx @@ -17,7 +17,7 @@ The Generate Session API requires your [Cube Cloud API key][ref-api-keys] for au ## Endpoint -``` +```text POST https://{accountName}.cubecloud.dev/api/v1/embed/generate-session ``` diff --git a/docs-mintlify/reference/embed-apis/index.mdx b/docs-mintlify/reference/embed-apis/index.mdx index dd8d8335a2816..c1c063cecc9ce 100644 --- a/docs-mintlify/reference/embed-apis/index.mdx +++ b/docs-mintlify/reference/embed-apis/index.mdx @@ -1,4 +1,5 @@ --- +title: Embed APIs sidebarTitle: Overview description: "Integrate Cube analytics into your applications using the Chat API and session-based secure embedding." --- diff --git a/docs-mintlify/reference/index.mdx b/docs-mintlify/reference/index.mdx index 8ff2665e704fa..57c6dc508b860 100644 --- a/docs-mintlify/reference/index.mdx +++ b/docs-mintlify/reference/index.mdx @@ -1,4 +1,5 @@ --- +title: API Reference description: "Explore Cube's Embed APIs, Core Data APIs, and management APIs for powering data applications." --- diff --git a/docs-mintlify/reference/orchestration-api/index.mdx b/docs-mintlify/reference/orchestration-api/index.mdx index b269e89daefee..ece7a745c0286 100644 --- a/docs-mintlify/reference/orchestration-api/index.mdx +++ b/docs-mintlify/reference/orchestration-api/index.mdx @@ -1,4 +1,5 @@ --- +title: Orchestration API description: "Trigger pre-aggregation refreshes from Airflow, Dagster, or Prefect instead of relying on Cube's scheduled refresh." ---