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 @@ -132,6 +132,12 @@ be used in pre-aggregations when using AWS Athena as a source database. To learn
more about AWS Athena's support for approximate aggregate functions, [click
here][aws-athena-docs-approx-agg-fns].

### Time zones

A `DATE`-typed time dimension converted to a non-UTC time zone is now handled
correctly. Existing pre-aggregations with a time dimension rebuild once
automatically on upgrade, since this change affects the generated SQL.

## Pre-Aggregation Build Strategies

<Info>
Expand Down
6 changes: 6 additions & 0 deletions docs-mintlify/admin/connect-to-data/data-sources/presto.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ be used in pre-aggregations when using Presto as a source database. To learn
more about Presto support for approximate aggregate functions, [click
here][presto-docs-approx-agg-fns].

### Time zones

A `DATE`-typed time dimension converted to a non-UTC time zone is now handled
correctly. Existing pre-aggregations with a time dimension rebuild once
automatically on upgrade, since this change affects the generated SQL.

## Pre-Aggregation Build Strategies

<Info>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,13 @@ schema). The [export bucket](#export-bucket) strategy writes to the bucket, not
mapped service user.
- Optionally, the warehouse name, the user role, and the database name.

## Query cancellation

Cancelling a query via the [`{base_path}/v1/running-query/{requestId}`][ref-rest-api-cancel]
endpoint aborts the statement on the Snowflake warehouse itself, not just
Cube's wait for it — so a cancelled query stops consuming warehouse compute
instead of continuing to run in the background.
Comment on lines +37 to +42

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 section lands between the Prerequisites bullet list and Setup, which breaks the "what you need → how to connect" flow every other data-source page follows. A runtime behavior note reads better after the connection material — e.g. right before ## SSL, or as a subsection of ## Environment Variables.

Also, "not just Cube's wait for it" is implicitly contrasting with prior behavior a new reader never saw. Straight present-tense description is enough here: "…aborts the statement on the Snowflake warehouse itself, so a cancelled query stops consuming warehouse compute."


## Setup

<Warning>
Expand Down Expand Up @@ -393,6 +400,7 @@ connections are made over HTTPS.
[ref-schema-ref-types-formats-countdistinctapprox]: /reference/data-modeling/measures#type
[ref-oidc-overview]: /admin/deployment/oidc
[ref-driver-factory]: /reference/configuration/config#driver_factory
[ref-rest-api-cancel]: /reference/core-data-apis/rest-api/reference#base_path/v1/running-query/requestid
[self-preaggs-batching]: #batching
[snowflake]: https://www.snowflake.com/
[snowflake-docs-account-id]:
Expand Down
6 changes: 6 additions & 0 deletions docs-mintlify/admin/connect-to-data/data-sources/trino.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ be used in pre-aggregations when using Trino as a source database. To learn more
about Trino support for approximate aggregate functions, [click
here][trino-docs-approx-agg-fns].

### Time zones

A `DATE`-typed time dimension converted to a non-UTC time zone is now handled
correctly. Existing pre-aggregations with a time dimension rebuild once
automatically on upgrade, since this change affects the generated SQL.

Comment on lines +59 to +64

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 about this block (it's duplicated verbatim in presto.mdx and aws-athena.mdx, so the same applies there):

  1. Placement. ## Pre-Aggregation Feature Support is the section listing which pre-agg features the driver supports (count_distinct_approx). The time-zone conversion fix applies to any query with a DATE-typed time dimension, not just pre-aggregations — the pre-agg rebuild is a side effect. A ## Time zones top-level section (or a note near the driver's setup/environment section) targets it better.

  2. Changelog voice. "is now handled correctly" and "on upgrade" are release-note framing in a version-less doc — six months from now a reader has no anchor for what "now" or "upgrade" refers to. Consider stating the behavior in the present tense and scoping the migration note explicitly, e.g.:

Suggested change
### Time zones
A `DATE`-typed time dimension converted to a non-UTC time zone is now handled
correctly. Existing pre-aggregations with a time dimension rebuild once
automatically on upgrade, since this change affects the generated SQL.
### Time zones
`DATE`-typed time dimensions are converted correctly when a non-UTC time zone is
requested.
<Info>
This was fixed in Cube v1.4.x. Because it changes the generated SQL, existing
pre-aggregations with a time dimension are rebuilt once automatically after the upgrade.
</Info>

(Substitute the actual release version — worth pinning, since the rebuild is the operationally relevant part.)

## Pre-Aggregation Build Strategies

<Info>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,19 @@ It is a setting on an existing chart, not a chart type of its own: a bar, line,

The **Small multiples** section appears in the Fields tab for bar, line, area, and scatter charts.

Pick a dimension in **Split by** and the chart is replaced by one panel per value of that dimension. Clearing the picker returns the chart to a single plot.
Pick a dimension in **First dimension** and the chart is replaced by one panel per value of that dimension, laid out across columns. Clearing the picker returns the chart to a single plot.

Only dimensions are offered. Splitting by a measure is not supported — a measure has no discrete values to make panels from.
Optionally pick a **Second dimension** to split by a second dimension at the same time, laying it out down the rows — the grid becomes one panel per combination of the two dimensions' values (row × column). The second picker never offers the dimension already chosen as the first.

Only dimensions are offered in either picker. Splitting by a measure is not supported — a measure has no discrete values to make panels from.

## Options

These options appear once a **Split by** dimension is chosen.

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.

The picker was renamed to First dimension on line 16, but this line still calls it Split by. A reader following the doc top-to-bottom will look for a control that no longer exists under that name.

Suggested change
These options appear once a **Split by** dimension is chosen.
These options appear once a **First dimension** is chosen.


| Option | What it does |
|---|---|
| **Grid** | Columns × rows, up to 5 × 5. Both are preselected from the number of distinct values in the split dimension, so a four-value dimension opens as a 2 × 2 grid. |
| **Grid** | Columns × rows, up to 5 × 5. Both are preselected from the number of distinct values in the split dimension(s), so a four-value dimension opens as a 2 × 2 grid. With a second dimension chosen, each axis is capped independently (still up to 5 columns and 5 rows), and a combination with no matching data renders an empty, labeled panel rather than being skipped. |
| **Axis scales** | Whether every panel is drawn against the same scale (**Shared**) or each scales to its own data (**Independent**). |
| **Sort panels by** | Orders the panels by the dimension's own values (**Value**) or by a measure (**Measure**). |
| **Sort order** | **Ascending** or **Descending**. |
Expand Down Expand Up @@ -54,7 +56,7 @@ A legend is shared across the grid rather than repeated per panel. Clicking a le

## Limitations

- **One split dimension.** One dimension fills the grid, panel by panel. Splitting by two dimensions at once — one down the rows and another across the columns — is not supported.
- **Up to two split dimensions.** A chart can be split by at most a first (column) and second (row) dimension.
- **Cartesian charts only.** Bar, line, area, and scatter. Pie, table, KPI, heatmap, boxplot, map, and HTML charts cannot be split.
- **Panel labels are not configurable.** Each panel is labeled with its dimension value; the font, size, and color are fixed.
- **The split is enabled on a single-view chart.** A chart that already carries data labels, a reference line, or a second Y axis series cannot be split — turn the split on first. The order is the only constraint: once a chart is split, data labels and reference lines can be added freely and are drawn in every panel.
2 changes: 2 additions & 0 deletions docs-mintlify/docs/explore-analyze/explore.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ The functionality in Explore is similar to when working with semantic views in w

Explore state is also saved in the URL, making it easy to share your exploration with other users by simply copying and sharing the link.

If you share an exploration with a user who only has view access to it, they can open it and see the results, but the page shows a **Read only** badge and hides editing controls — they can't modify the query, apply a security context, or save changes.

If you have developer or admin access, you can [apply a security context](/docs/explore-analyze/workbooks/querying-data#applying-a-security-context) to an exploration to verify what a specific end user—or an AI agent querying on their behalf—would see.

Explore results carry the same [freshness and pre-aggregation indicators](/docs/explore-analyze/workbooks/querying-data#result-freshness-and-provenance) as workbook reports.
Expand Down
27 changes: 13 additions & 14 deletions docs-mintlify/docs/integrations/mcp-server.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -189,21 +189,20 @@ An MCP client is not locked to a single deployment for the whole session. After
connecting, it can discover the deployments and agents you can access and target a
specific one on each request.

Three tools work together:

- **`listDeployments`** — discovery. Returns every deployment you can access via MCP
(already filtered by the admin's deployment-access settings and your permissions) and
each deployment's agents. Use it to find valid `deploymentId` and `agentId` values
before calling `chat`. Every deployment offers an **Auto** agent (`agentId: null`) in
addition to any configured agents.
- **`chat`** — accepts two optional selection parameters:
- **`deploymentId`** — the deployment to use for this request. When omitted, the chat
uses the deployment from the current session (the default resolved at connect time).
- **`agentId`** — the agent to use for this request. When omitted or `null`, the
deployment's **Auto** agent is used. Pass a specific `agentId` to route to a
configured agent.
- **`loadQueryResults`** — paginates through the results of a previous query on the same
deployment context.
each deployment's agents. Use it to find valid `deploymentId` and `agentId` values.
Every deployment offers an **Auto** agent (`agentId: null`) in addition to any
configured agents.
- **Every other tool** accepts an optional **`deploymentId`** parameter to target a
deployment other than the session default (the one resolved at connect time). `chat`
additionally accepts an optional **`agentId`** — when omitted or `null`, the target
deployment's **Auto** agent is used.
- **`loadQueryResults`** does not take a `deploymentId` — it always resumes a previous
query on the deployment that query already ran on.
- Resuming an existing chat (passing `chatId` to `chat` or `visualize`) always continues
on the deployment that conversation started on; passing a different `deploymentId` for
Comment on lines +197 to +204

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.

The second bullet claims "Every other tool accepts an optional deploymentId", and the third bullet then walks it back for loadQueryResults. Stating the exception up front reads better and avoids a reader who stops after one bullet coming away with the wrong rule:

Suggested change
- **Every other tool** accepts an optional **`deploymentId`** parameter to target a
deployment other than the session default (the one resolved at connect time). `chat`
additionally accepts an optional **`agentId`** — when omitted or `null`, the target
deployment's **Auto** agent is used.
- **`loadQueryResults`** does not take a `deploymentId` — it always resumes a previous
query on the deployment that query already ran on.
- Resuming an existing chat (passing `chatId` to `chat` or `visualize`) always continues
on the deployment that conversation started on; passing a different `deploymentId` for
- **Every other tool except `loadQueryResults`** accepts an optional **`deploymentId`**
parameter to target a deployment other than the session default (the one resolved at
connect time). `chat` additionally accepts an optional **`agentId`** — when omitted or
`null`, the target deployment's **Auto** agent is used.
- **`loadQueryResults`** does not take a `deploymentId` — it always resumes a previous
query on the deployment that query already ran on.
- Resuming an existing chat (passing `chatId` to `chat` or `visualize`) always continues
on the deployment that conversation started on; passing a different `deploymentId` for
the same `chatId` is rejected rather than silently ignored.

the same `chatId` is rejected rather than silently ignored.

A typical client workflow:

Expand All @@ -225,7 +224,7 @@ A typical client workflow:
Requests are always validated against the admin's deployment-access settings. A deployment
that is outside the allow-list — or that you don't have permission to see — is rejected
with a **403 Forbidden** (`Deployment <id> is not available via MCP for this account`), so
neither `listDeployments` nor the `chat` selection can reach an excluded deployment.
no tool's `deploymentId` selection can reach an excluded deployment.

## Available actions

Expand Down
22 changes: 22 additions & 0 deletions docs-mintlify/reference/core-data-apis/sql-api/reference.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -346,6 +346,28 @@ of the PostgreSQL documentation.
| `LIKE` | Returns `TRUE` if the string matches the supplied pattern | ✅ Yes | <nobr>✅ Outer</nobr><br/><nobr>✅ Inner (selections)</nobr><br/><nobr>✅ Inner (projections)</nobr> |
| `REGEXP_SUBSTR` | Returns the substring that matches a POSIX regular expression pattern | ✅ Yes | <nobr>✅ Outer</nobr><br/><nobr>❌ Inner (selections)</nobr><br/><nobr>✅ Inner (projections)</nobr> |

### Casts

<Info>

Learn more in the
[relevant section](https://www.postgresql.org/docs/current/datatype-oid.html)
of the PostgreSQL documentation.

</Info>

The SQL API supports `::regtype` and `::regtype[]` casts, including standard
type aliases (`int`, `int8`, `decimal`, `char`, `float`, etc.) and
`pg_catalog`-qualified type names. This lets Postgres-compatible BI tools that
introspect column types — for example, comparing `pg_attribute.atttypid`
against a `regtype[]` literal to classify a table's columns — connect to the
SQL API without erroring.

```sql
SELECT atttypid = ANY ('{int8,numeric,bool}'::regtype[])
FROM pg_catalog.pg_attribute;
Comment on lines +349 to +368

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.

Nit on the example: it's a bare SELECT over pg_attribute with no WHERE and an unnamed boolean output column, so it demonstrates the cast syntax but isn't something a reader would run as-is. Something closer to the actual BI-tool introspection pattern would carry more:

SELECT attname, atttypid::regtype AS type_name
FROM pg_catalog.pg_attribute
WHERE atttypid = ANY ('{int8,numeric,bool}'::regtype[]);

Either way, worth pasting the final example through the SQL API once to confirm it executes — the surrounding sections in this file are all support tables rather than runnable snippets, so this is the one thing on the page that can go stale silently.

```

### Data type formatting functions

<Info>
Expand Down
Loading