Skip to content

Commit 8ea3b3a

Browse files
committed
Merge branch 'main' into feat/instrument-first-mile-journey
2 parents 4f06f70 + 0ca38b2 commit 8ea3b3a

58 files changed

Lines changed: 1653 additions & 1124 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

docs/blog/0.85.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
date: 2026-04-07
3+
image: https://github.com/rilldata/rill/assets/5587788/b30486f6-002a-445d-8a1b-955b6ec0066d
4+
description: Rill is the world's first AI-native business intelligence tool. Trusted by thousands of developers and analysts around the globe, Rill accelerates the creation of dashboards and data applications using BI-as-code.
5+
---
6+
7+
# Rill 0.85 - Snowflake Live Connector, First Mile Flow, Preview Mode
8+
9+
:::note
10+
**Rill Developer** lets you transform datasets with SQL and build fast, exploratory dashboards. **Rill Cloud** enables collaboration at scale.
11+
12+
👉 [Install Rill Developer](/developers/get-started/install)[Join our Discord](https://discord.gg/2ubRfjC7Rh)[Deploy to Rill Cloud](/developers/deploy/deploy-dashboard)
13+
:::
14+
15+
![release-0.85](<https://cdn.rilldata.com/docs/release-notes/release-0.85.gif>)
16+
17+
## Snowflake Live Connector
18+
19+
You can now create metrics views directly on Snowflake via the new live connector, expanding Rill's OLAP support beyond ClickHouse and DuckDB.
20+
21+
## Improved First Mile Experience
22+
23+
The onboarding experience has been improved to make getting started with Rill smoother and more guided.
24+
25+
## Preview Mode for Rill Developer
26+
27+
A new Preview Mode lets you preview your dashboards locally before deploying, giving you a faster feedback loop during development.
28+
29+
## Window Support for Glob Partitions
30+
31+
You can now use `start` and `end` to filter glob partitions by path range, making it easy to process only a specific window of data:
32+
33+
```yaml
34+
#models/s3_model.yaml
35+
36+
#Fixed: Hard-coded start path
37+
partitions:
38+
glob:
39+
path: s3://bucket/year=*/month=*/day=*
40+
start: s3://bucket/year=2026
41+
42+
# Dynamic: Last 180 entries, i.e. 180 days
43+
partitions:
44+
glob:
45+
path: s3://bucket/year=*/month=*/day=*
46+
last: 180
47+
```
48+
49+
## Cmd+J to Toggle AI Chat
50+
51+
Use `Cmd+J` (or `Ctrl+J`) to quickly toggle the AI chatbot from anywhere in the app.
52+
53+
## Bug Fixes and Improvements
54+
55+
### Explore / Dashboards
56+
- Fixed tooltip formatting for measure values across leaderboard, dimension table, and pivot table
57+
- Fixed pivot table sort state lost on refresh
58+
- Fixed explore preview showing 404 instead of reconcile error on navigation
59+
- Fixed singleton points disappearing when connect sparse data is enabled
60+
- Fixed not listing all public URLs
61+
- Improved empty dashboard error message for NULL timestamps
62+
63+
### Canvas
64+
- Fixed canvas `CanvasProvider` re-mount on breadcrumb navigation so custom themes apply
65+
- Ported legacy TDD charts to canvas charts
66+
- Removed legacy canvas RPCs
67+
- Added KPI delta theme tokens
68+
69+
### AI / LLM
70+
- Fixed chat context picker not getting the full Svelte context
71+
- Fixed chat context component missing runtime client
72+
- Fixed show AI chat toggle on Canvas dashboards for non-logged-in users
73+
- Fixed citation URL when MetricsViewTimeRange data is missing
74+
- Added MCP tool annotations to AI tool specs
75+
- Nicer hints and errors in `rill query`
76+
77+
### Connectors
78+
- Fixed glob last not correctly picked
79+
- Added listing directory using glob
80+
- Added connector form advanced keys in dropdown
81+
82+
### Rill Developer
83+
- Fixed workspace UI errors not shown
84+
85+
### Cloud
86+
- Fixed avatar dropdown menu positioning and inconsistent font weights
87+
- Fixed download report crashing the app
88+
- Fixed undefined checked value binding breaking forms
89+
- Fixed enforce from admin service in variables based on editable deployment
90+
- Do case insensitive comparison of resource name in security checks
91+
- Hidden Discord and support links in embedded contexts
92+
93+
### Infrastructure
94+
- Pinned axios to exact version after npm supply chain attack
95+
- Security vulnerability fixes (Go JOSE, library upgrades)
96+

docs/docs/developers/build/connectors/connectors.md

Lines changed: 29 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,22 +29,15 @@ Rill offers flexible connection strategies to fit different data architectures a
2929

3030
## OLAP Engines
3131

32-
### DuckDB
3332
### ClickHouse
34-
### MotherDuck
3533
### Druid
34+
### DuckDB
35+
### MotherDuck
3636
### Pinot
37+
### Snowflake
3738
### StarRocks
3839

3940
<div className="connector-icon-grid">
40-
<ConnectorIcon
41-
icon={<img src="/img/build/connectors/icons/Logo-DuckDB.svg" alt="DuckDB" />}
42-
content="DuckDB is the default engine for Rill Developer."
43-
link="/developers/build/connectors/olap/duckdb"
44-
linkLabel="Learn more"
45-
referenceLink="duckdb"
46-
/>
47-
4841
<ConnectorIcon
4942
icon={<img src="/img/build/connectors/icons/Logo-ClickHouse.svg" alt="ClickHouse" />}
5043
content="High-performance columnar database for real-time analytics and data warehousing."
@@ -53,14 +46,6 @@ Rill offers flexible connection strategies to fit different data architectures a
5346
referenceLink="clickhouse"
5447
/>
5548

56-
<ConnectorIcon
57-
icon={<img src="/img/build/connectors/icons/Logo-MotherDuck.svg" alt="MotherDuck" />}
58-
content="Cloud-native DuckDB service for scalable analytics and data processing."
59-
link="/developers/build/connectors/olap/motherduck"
60-
linkLabel="Learn more"
61-
referenceLink="motherduck"
62-
/>
63-
6449
<ConnectorIcon
6550
icon={<img src="/img/build/connectors/icons/Logo-Druid.svg" alt="Druid" />}
6651
content="Real-time analytics database designed for high-performance OLAP queries."
@@ -69,14 +54,39 @@ Rill offers flexible connection strategies to fit different data architectures a
6954
referenceLink="druid"
7055
/>
7156

57+
<ConnectorIcon
58+
icon={<img src="/img/build/connectors/icons/Logo-DuckDB.svg" alt="DuckDB" />}
59+
content="DuckDB is the default engine for Rill Developer."
60+
link="/developers/build/connectors/olap/duckdb"
61+
linkLabel="Learn more"
62+
referenceLink="duckdb"
63+
/>
64+
65+
<ConnectorIcon
66+
icon={<img src="/img/build/connectors/icons/Logo-MotherDuck.svg" alt="MotherDuck" />}
67+
content="Cloud-native DuckDB service for scalable analytics and data processing."
68+
link="/developers/build/connectors/olap/motherduck"
69+
linkLabel="Learn more"
70+
referenceLink="motherduck"
71+
/>
72+
7273
<ConnectorIcon
7374
icon={<img src="/img/build/connectors/icons/Logo-Pinot.svg" alt="Pinot" />}
7475
content="Distributed OLAP datastore for real-time analytics and business intelligence."
7576
link="/developers/build/connectors/olap/pinot"
7677
linkLabel="Learn more"
7778
referenceLink="pinot"
7879
/>
79-
80+
81+
<ConnectorIcon
82+
icon={<img src="/img/build/connectors/icons/Logo-Snowflake.svg" alt="Snowflake" />}
83+
header="Snowflake"
84+
content="Cloud data warehouse with native support for metrics views as a live connector."
85+
link="/developers/build/connectors/olap/snowflake"
86+
linkLabel="Learn more"
87+
referenceLink="snowflake"
88+
/>
89+
8090
<ConnectorIcon
8191
icon={<img src="/img/build/connectors/icons/Logo-StarRocks.svg" alt="StarRocks" className="starrocks-icon"/>}
8292
content="Distributed OLAP datastore for real-time analytics and business intelligence."

docs/docs/developers/build/connectors/olap/olap.md

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,15 @@ When setting the OLAP Engine via the UI, the `olap_connector` key will automatic
3636

3737
Rill supports the use of several different OLAP engines to power your dashboards, including:
3838

39-
### DuckDB
4039
### ClickHouse
41-
### MotherDuck
4240
### Druid
41+
### DuckDB
42+
### MotherDuck
4343
### Pinot
44+
### Snowflake
4445
### StarRocks
4546

4647
<div className="connector-icon-grid">
47-
<ConnectorIcon
48-
icon={<img src="/img/build/connectors/icons/Logo-DuckDB.svg" alt="DuckDB" />}
49-
content="Add extra parameters to Rill's embedded DuckDB or connect your own."
50-
link="/developers/build/connectors/olap/duckdb"
51-
linkLabel="Learn more"
52-
referenceLink="duckdb"
53-
/>
54-
5548
<ConnectorIcon
5649
icon={<img src="/img/build/connectors/icons/Logo-ClickHouse.svg" alt="ClickHouse" />}
5750
content="High-performance columnar database for real-time analytics and data warehousing."
@@ -60,14 +53,6 @@ Rill supports the use of several different OLAP engines to power your dashboards
6053
referenceLink="clickhouse"
6154
/>
6255

63-
<ConnectorIcon
64-
icon={<img src="/img/build/connectors/icons/Logo-MotherDuck.svg" alt="MotherDuck" />}
65-
content="Cloud-native DuckDB service for scalable analytics and data processing."
66-
link="/developers/build/connectors/olap/motherduck"
67-
linkLabel="Learn more"
68-
referenceLink="motherduck"
69-
/>
70-
7156
<ConnectorIcon
7257
icon={<img src="/img/build/connectors/icons/Logo-Druid.svg" alt="Druid" />}
7358
content="Real-time analytics database designed for high-performance OLAP queries."
@@ -76,13 +61,38 @@ Rill supports the use of several different OLAP engines to power your dashboards
7661
referenceLink="druid"
7762
/>
7863

64+
<ConnectorIcon
65+
icon={<img src="/img/build/connectors/icons/Logo-DuckDB.svg" alt="DuckDB" />}
66+
content="Add extra parameters to Rill's embedded DuckDB or connect your own."
67+
link="/developers/build/connectors/olap/duckdb"
68+
linkLabel="Learn more"
69+
referenceLink="duckdb"
70+
/>
71+
72+
<ConnectorIcon
73+
icon={<img src="/img/build/connectors/icons/Logo-MotherDuck.svg" alt="MotherDuck" />}
74+
content="Cloud-native DuckDB service for scalable analytics and data processing."
75+
link="/developers/build/connectors/olap/motherduck"
76+
linkLabel="Learn more"
77+
referenceLink="motherduck"
78+
/>
79+
7980
<ConnectorIcon
8081
icon={<img src="/img/build/connectors/icons/Logo-Pinot.svg" alt="Pinot" />}
8182
content="Distributed OLAP datastore for real-time analytics and business intelligence."
8283
link="/developers/build/connectors/olap/pinot"
8384
linkLabel="Learn more"
8485
referenceLink="pinot"
8586
/>
87+
88+
<ConnectorIcon
89+
icon={<img src="/img/build/connectors/icons/Logo-Snowflake.svg" alt="Snowflake" />}
90+
content="Cloud data warehouse with native support for metrics views as a live connector."
91+
link="/developers/build/connectors/olap/snowflake"
92+
linkLabel="Learn more"
93+
referenceLink="snowflake"
94+
/>
95+
8696
<ConnectorIcon
8797
icon={<img src="/img/build/connectors/icons/Logo-StarRocks.svg" alt="StarRocks" className="starrocks-icon" />}
8898
content="Distributed OLAP datastore for real-time analytics and business intelligence."
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
---
2+
title: Snowflake
3+
description: Power Rill dashboards using Snowflake
4+
sidebar_label: Snowflake
5+
sidebar_position: 24
6+
---
7+
8+
[Snowflake](https://docs.snowflake.com) is a cloud data platform known for its scalability, ease of use, and separation of storage and compute. Rill supports connecting to Snowflake as a live connector, allowing you to build metrics views and dashboards directly on top of existing Snowflake tables — no data movement required.
9+
10+
:::tip Snowflake as a Live Connector vs. Data Source Connector
11+
Rill supports Snowflake in two distinct modes:
12+
13+
- **OLAP (Live Connector)** — Rill queries Snowflake directly at dashboard load time. No data is ingested into Rill. Use this when your data is already modeled and optimized in Snowflake and you want Rill as a visual layer on top. Set `olap_connector: snowflake` in `rill.yaml`.
14+
15+
- **Data Source Connector** — Rill extracts data from Snowflake and ingests it into its embedded engine (DuckDB or ClickHouse). Use this when you want Rill to manage the data pipeline, apply transformations via SQL models, or combine Snowflake data with other sources. See the [Snowflake data source docs](/developers/build/connectors/data-source/snowflake).
16+
17+
In general, use the live connector if your Snowflake tables are already production-ready and large. Use data source ingestion if you need to transform, join, or enrich the data before building dashboards.
18+
:::
19+
20+
## Connect to Snowflake
21+
22+
After selecting "Add Data", select Snowflake and fill in your connection parameters. This will automatically create the `snowflake.yaml` file in your `connectors` directory and populate the `.env` file with your credentials.
23+
24+
For more information on supported parameters, see our [Snowflake connector YAML reference docs](/reference/project-files/connectors#snowflake).
25+
26+
```yaml
27+
type: connector
28+
driver: snowflake
29+
30+
dsn: "{{ .env.SNOWFLAKE_DSN }}"
31+
```
32+
33+
:::tip Finding your account identifier
34+
Your account identifier appears in your Snowflake URL — it's everything before `.snowflakecomputing.com`. For example, if your URL is `https://xy12345.us-east-1.snowflakecomputing.com`, your account identifier is `xy12345.us-east-1`.
35+
:::
36+
37+
### Key-Pair Authentication (Recommended)
38+
39+
For production use, Snowflake recommends key-pair authentication over passwords. Generate an unencrypted PKCS#8 private key and base64-encode it:
40+
41+
```bash
42+
# Generate a 2048-bit unencrypted PKCS#8 private key
43+
openssl genrsa 2048 | openssl pkcs8 -topk8 -nocrypt -out rsa_key.p8
44+
45+
# Base64 URL-encode for use in Rill
46+
base64 -w 0 rsa_key.p8
47+
```
48+
49+
Then set the encoded key in your connector:
50+
51+
```yaml
52+
type: connector
53+
driver: snowflake
54+
55+
account: "<ACCOUNT_IDENTIFIER>"
56+
user: "<USERNAME>"
57+
private_key: "{{ .env.SNOWFLAKE_PRIVATE_KEY }}"
58+
```
59+
60+
See [Snowflake's key-pair authentication docs](https://docs.snowflake.com/en/guide/key-pair-auth) for full setup instructions.
61+
62+
## Build a Metrics View on Snowflake
63+
64+
Once connected, set Snowflake as the OLAP connector in your `rill.yaml`:
65+
66+
```yaml
67+
olap_connector: snowflake
68+
```
69+
70+
Then create a metrics view that references a Snowflake table:
71+
72+
```yaml
73+
type: metrics_view
74+
75+
connector: snowflake
76+
database: MY_DATABASE
77+
database_schema: MY_SCHEMA
78+
model: MY_TABLE
79+
80+
timeseries: created_at
81+
dimensions:
82+
- column: region
83+
- column: category
84+
measures:
85+
- name: total_revenue
86+
expression: SUM(revenue)
87+
```
88+
89+
:::note
90+
Rill supports metrics views directly on Snowflake as a live connector. Incremental models and partitioned ingestion are not supported in live connector mode.
91+
:::

docs/docs/developers/build/models/partitioned-models.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,6 +224,39 @@ sql: SELECT * FROM read_parquet('{{ .partition.uri }}')
224224
```
225225
:::
226226

227+
### Windowed Glob Partitions
228+
229+
Use `start` and `end` to filter which partitions are processed based on their path — useful for backfills, time-bounded ingestion, or limiting how much data is reprocessed.
230+
231+
- **`start`** — lower bound (inclusive): only partitions with paths ≥ this value are included.
232+
- **`end`** — upper bound (exclusive): only partitions with paths < this value are included.
233+
- **`last`** — process only the last N successfully ingested partitions (by lexicographic path order). Useful for rolling windows.
234+
235+
```yaml
236+
# Fixed window: only process a specific month
237+
partitions:
238+
glob:
239+
path: s3://bucket/year=*/month=*/day=*
240+
partition: directory
241+
start: s3://bucket/year=2026/month=03
242+
end: s3://bucket/year=2026/month=04
243+
sql: SELECT * FROM read_parquet('{{ .partition.uri }}/*.parquet')
244+
```
245+
246+
```yaml
247+
# Rolling window: reprocess last 30 days
248+
partitions:
249+
glob:
250+
path: s3://bucket/year=*/month=*/day=*
251+
partition: directory
252+
last: 30
253+
sql: SELECT * FROM read_parquet('{{ .partition.uri }}/*.parquet')
254+
```
255+
256+
:::note
257+
`start`, `end`, and `last` are not compatible with `transform_sql`.
258+
:::
259+
227260
### Viewing Partitions in Rill Developer
228261

229262
Once `partitions:` is defined in your model, a new button will appear in the right-hand panel: `View Partitions`. When selecting this, a new UI will appear with all of your partitions and more information on each. Note that these can be sorted by all, pending, and errors.

0 commit comments

Comments
 (0)