Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -103,13 +103,18 @@ opens a bucket that includes its lower bound and excludes the upper one, and two
open-ended buckets are added at the edges—so `0, 18, 25` yields `< 0`, `[0, 18)`,
`[18, 25)`, `>= 25`, and no row is dropped. **Label style** renders a bucket as
`[10, 20)`, `>= 10 and < 20`, or `10 to 19`; the last is offered only while every
boundary is a whole number. Rows where the dimension is `NULL` are reported as
`Unknown`.
boundary is a whole number. Choose **Custom** to type your own label for each
bucket instead.

By default, rows where the dimension is `NULL` get their own label (**Unknown**,
editable). Turn off **Label empty values separately** to fold them into the last
bucket instead.
Comment on lines +109 to +111

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Worth double-checking "fold them into the last bucket". The buckets described just above are ordered by value (< 0, [0, 18), [18, 25), >= 25), so "the last bucket" means NULL rows land in the highest bucket — a surprising enough behavior that if it's right it deserves a word of emphasis, and if the actual behavior is "the first/lowest bucket" or "the generated CASE falls through to the ELSE branch", the sentence is wrong in a way a reader can't detect.

Also, this paragraph replaces the old flat statement "Rows where the dimension is NULL are reported as Unknown", so it's now the only place that behavior is documented — worth getting exactly right.


**Value groups** collect the dimension's values into named sets: pick values, name
the group, and choose **Add group**. A value belongs to one group at a time.
Whatever you did not pick—including empty values—falls under **Everything else**,
which defaults to `Other`.
which defaults to `Other`. Turn off **Group remaining values** to return `NULL`
for unpicked and empty values instead.

Bucket labels carry their position as a prefix (`1.`, `2.`, zero-padded past nine
buckets) so that sorting the column sorts it by value rather than alphabetically,
Expand Down
21 changes: 21 additions & 0 deletions docs-mintlify/docs/integrations/dbt.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -672,6 +672,27 @@ Each push creates exactly two new files:
from the cube's joins (only to targets that originated in dbt), and the cube's measures
preserved under `meta.cube.measures` for context.

## Author dbt models from Analytics Chat

<Warning>

Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. Reach out to the [Cube support team](/admin/account-billing/support) to
activate this feature for your account.

Comment on lines +677 to +682

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This callout says to contact support to activate the feature, but the last paragraph of the section says enablement is shared with dbt push — and dbt push is activated by the customer themselves under Settings → Data Sources → Push to dbt (the ### Enable push steps at lines 590–620). As written the reader gets two contradictory activation paths.

Note the sibling preview callout at line 567 deliberately uses the softer form ("If you run into issues, reach out to the Cube support team") for exactly this reason. Suggest matching it:

Suggested change
<Warning>
Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. Reach out to the [Cube support team](/admin/account-billing/support) to
activate this feature for your account.
<Warning>
Authoring dbt models from Analytics Chat is currently in preview, and its behavior may
still change. If you run into issues, reach out to the
[Cube support team](/admin/account-billing/support).
</Warning>

If it genuinely does need a support-side flag on top of the push setting, then say that explicitly instead — "requires dbt push to be enabled and activation by the Cube support team."

</Warning>

Ask [the agent](/docs/explore-analyze/analytics-chat) to create or update a dbt
model — for example, "turn this cube into a dbt model" or "add a `region` column to the
`orders` dbt model." The agent opens a private **dbt workspace**: a live sandbox scoped
to that model, where it reads the existing model and YAML files, drafts or edits the
SQL, runs `dbt` to validate the change, and iterates until it compiles. Once you
confirm, it publishes the result — a pull request or a direct commit, per your
[delivery mode](#enable-push) — back to your dbt repository.

This shares its enablement with [dbt push](#push-cubes-to-dbt): activating one activates
the other, and a model authored from chat is delivered the same way a pushed cube is.

## Limitations

- **Supported warehouses:** Snowflake, Amazon Redshift, PostgreSQL, Google
Expand Down
6 changes: 5 additions & 1 deletion docs-mintlify/docs/integrations/google-sheets.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,11 @@ Google Cloud for Sheets works only with [views][ref-views], not cubes.
Click on members to add them to **Rows** and **Measures**.
If needed, drag dimensions from **Rows** to **Columns**. Click on
the funnel buttons to add members to **Filters**. Click on **×** to
remove members from a query.
remove members from a query. Drag measures within the **Measures** pane to
reorder them in the output. When the pivot has column dimensions, a
**Measure position** setting controls whether measures nest **After columns**
(the default — each column value gets its own set of measures) or
**Before columns** (each measure spans every column value).

<Frame>
<img src="https://ucarecdn.com/acc8e133-f237-4aa7-a725-f32dd4a2ebdb/" />
Expand Down
8 changes: 8 additions & 0 deletions docs-mintlify/docs/integrations/mcp-server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -244,6 +244,14 @@ work together.
Call `searchDataModel` before `runQuery` to find exact view and member names rather than
guessing them.

Pass an optional `branchName` to `runQuery` to query a dev branch's model — the one

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Placement suggestion: this paragraph documents a data-model-editing workflow but lives in the "Query and discovery" reference section, ~160 lines above the walkthrough it belongs to. The "Edit the data model" workflow (lines 405–412) currently ends at "Review the result with getDataModelChanges, then commit the branch from the Cube UI" — that's exactly where a reader learns they can sanity-check the branch with real data first.

Keeping this paragraph here is fine, but consider adding one sentence there cross-linking it (e.g. "To check the edit against real data before committing, call runQuery with the same branchName").

returned by `startDataModelEdit` — instead of the deployed model, so you can verify an
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), which never just echoes the argument back. Keep
`branchName` identical across paginated calls: `runQuery` re-issues the whole query for
each page, so dropping it on a later page silently switches that page to the deployed
model.
Comment on lines +249 to +253

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two things here:

  1. "which never just echoes the argument back" reads as a negation of a claim the reader never made — it's the kind of implementation detail that only makes sense if you've read the PR. Either drop it or state the useful version positively (e.g. "so you can confirm the query really ran against the branch").

  2. The pagination warning may be pointing at the wrong tool. Line 232 documents loadQueryResults as "Paginates through the results of a previous query." If pagination normally goes through loadQueryResults, a reader will wonder whether that call also needs branchName, and the warning as written ("runQuery re-issues the whole query for each page") doesn't answer it. Please confirm which path is authoritative and, if loadQueryResults is branch-aware/branch-inheriting, say so explicitly.

Suggested change
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), which never just echoes the argument back. Keep
`branchName` identical across paginated calls: `runQuery` re-issues the whole query for
each page, so dropping it on a later page silently switches that page to the deployed
model.
Pass an optional `branchName` to `runQuery` to query a dev branch's model — the one
returned by `startDataModelEdit` — instead of the deployed model, so you can verify an
edit before it's committed. The response reports the branch it actually queried
(`null` for the deployed model), so you can confirm the query ran where you intended.
Keep `branchName` identical across paginated calls: `runQuery` re-issues the whole query
for each page, so dropping it on a later page silently switches that page to the
deployed model.


### Dashboard authoring

These tools build [workbooks][ref-workbooks] and [dashboards][ref-dashboards]
Expand Down
6 changes: 5 additions & 1 deletion docs-mintlify/docs/integrations/microsoft-excel.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,11 @@ Cube Cloud for Excel works only with [views][ref-views], not cubes.
Click on members to add them to **Rows** and **Measures**.
If needed, drag dimensions from **Rows** to **Columns**. Click on
the funnel buttons to add members to **Filters**. Click on **×** to
remove members from a query.
remove members from a query. Drag measures within the **Measures** pane to
reorder them in the output. When the pivot has column dimensions, a
**Measure position** setting controls whether measures nest **After columns**
(the default — each column value gets its own set of measures) or
**Before columns** (each measure spans every column value).

<Frame>
<img src="https://ucarecdn.com/670fda9d-358a-4345-9242-7888d8aaedd8/" />
Expand Down
16 changes: 9 additions & 7 deletions docs-mintlify/embedding/iframe/dashboards.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -77,20 +77,22 @@ This works on both regular and published (embedded) dashboards. The filter is
only applied if a matching filter widget for that dimension already exists on the
dashboard.

## Allow CSV export
## Allow chart export

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Renaming this heading changes its slug from #allow-csv-export to #allow-chart-export, which breaks an existing internal link:

docs-mintlify/embedding/iframe/events.mdx:213-214

includes `allowExport=true` (see [Dashboards → Allow CSV
export](/embedding/iframe/dashboards#allow-csv-export)). The event fires when a

Two ways to fix — either keep the old slug with Mintlify's explicit anchor syntax (the repo already does this elsewhere for link stability, e.g. ## Download as PNG, PDF, or CSV {#download-as-png-or-pdf}):

Suggested change
## Allow chart export {#allow-csv-export}

…or rename the heading as-is and update the link text/target in events.mdx in this same PR.

Fix this →

By default, embedded dashboards do not expose a download action on individual
widgets. To let viewers download a chart widget's data as a CSV file, add the
`allowExport=true` query parameter to the embed URL:
widgets. To let viewers export a chart widget, add the `allowExport=true` query
parameter to the embed URL:

```text
https://your-tenant.cubecloud.dev/embed/dashboard/YOUR_DASHBOARD_PUBLIC_ID?session=YOUR_SESSION_ID&allowExport=true
```

When enabled, each chart widget's ⋮ menu shows a **Download as CSV** action. The
CSV is generated client-side from the data already loaded into the widget, so no
additional query is issued. The parameter is opt-in — omit it (the default) to
keep the download action hidden.
When enabled, each chart widget's ⋮ menu shows **Download as CSV**, **Download as
PNG**, and **Download as PDF** actions. CSV is generated client-side from the data
already loaded into the widget; PNG and PDF are [server-rendered
snapshots](/docs/explore-analyze/dashboards#download-as-png-or-pdf), the same as
on a non-embedded dashboard. The parameter is opt-in — omit it (the default) to
keep the download actions hidden.
Comment on lines +91 to +95

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change leaves two now-stale statements in embedding/iframe/events.mdx that describe the same feature:

  • Line 189: "Emitted when a viewer exports something — a widget's data as CSV, or (in future) a dashboard image." PNG/PDF widget export is no longer "in future".
  • Lines 211–216: "The CSV download action on a dashboard widget only appears when the embed URL includes allowExport=true" — it now gates the PNG and PDF actions too.

Worth updating both in this PR so the cube:event:download docs (which already list png / pdf in the format column) agree with the export docs.

Fix this →


## Show or hide the AI chat

Expand Down
Loading