Skip to content

Commit 6c1be9c

Browse files
authored
Merge branch 'master' into depr/node-v20-depr
2 parents d3e408d + c1e5128 commit 6c1be9c

File tree

198 files changed

+5032
-1581
lines changed

Some content is hidden

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

198 files changed

+5032
-1581
lines changed

.github/workflows/rust-cubestore.yml

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,14 @@ jobs:
2727
fail-fast: false
2828
matrix:
2929
rust: [nightly-2024-01-29]
30+
container:
31+
image: cubejs/rust-builder:bookworm-llvm-18
3032
env:
3133
RUST: ${{ matrix.rust }}
3234
steps:
33-
- name: Maximize build space (disk space limitations)
34-
run: |
35-
echo "Before"
36-
df -h
37-
sudo apt-get remove -y 'php.*'
38-
sudo apt-get remove -y '^mongodb-.*'
39-
sudo apt-get remove -y '^mysql-.*'
40-
sudo apt-get autoremove -y
41-
sudo apt-get clean
42-
43-
sudo rm -rf /usr/share/dotnet
44-
sudo rm -rf /usr/local/lib/android
45-
sudo rm -rf /opt/ghc
46-
sudo rm -rf /opt/hostedtoolcache/CodeQL
47-
echo "After"
48-
df -h
35+
- name: Prepare directories
36+
# See TMPDIR comment below
37+
run: mkdir /__w/tmp
4938
- name: Checkout
5039
uses: actions/checkout@v4
5140
- name: Install Rust
@@ -69,10 +58,15 @@ jobs:
6958
cargo fmt --manifest-path rust/cubestore/cubehll/Cargo.toml -- --check
7059
- name: Run cargo build
7160
run: |
72-
cargo build --manifest-path rust/cubestore/Cargo.toml -j 4
61+
cargo build --manifest-path rust/cubestore/Cargo.toml
7362
- name: Run cargo test
63+
env:
64+
# LocalDirRemoteFs expect that std::env::temp_dir and its local dir is on same FS, to use `rename`
65+
# On Unix it's controlled by TMPDIR
66+
# When using `container` in GHA checkout will be located in `/__w`, and that's a separate mount from `/tmp`
67+
TMPDIR: /__w/tmp
7468
run: |
75-
cargo test --manifest-path rust/cubestore/Cargo.toml -j 1
69+
cargo test --manifest-path rust/cubestore/Cargo.toml
7670
7771
docker-image-latest:
7872
name: Build only :latest image

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,42 @@
33
All notable changes to this project will be documented in this file.
44
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
55

6+
## [1.2.30](https://github.com/cube-js/cube/compare/v1.2.29...v1.2.30) (2025-04-04)
7+
8+
### Bug Fixes
9+
10+
- **tesseract:** Fix for multi fact queries ([#9421](https://github.com/cube-js/cube/issues/9421)) ([5547f50](https://github.com/cube-js/cube/commit/5547f5046c961966b582f76faf1377393ec8557a))
11+
12+
### Features
13+
14+
- **schema-compiler:** generate join sql using dimension refs when po… ([#9413](https://github.com/cube-js/cube/issues/9413)) ([8fc4f7c](https://github.com/cube-js/cube/commit/8fc4f7c4125889fcc24306256665d61ac30198c3))
15+
16+
## [1.2.29](https://github.com/cube-js/cube/compare/v1.2.28...v1.2.29) (2025-04-02)
17+
18+
### Bug Fixes
19+
20+
- **cubesql:** Penalize CrossJoins in favor of wrapper ([#9414](https://github.com/cube-js/cube/issues/9414)) ([a48963d](https://github.com/cube-js/cube/commit/a48963d03cb16e0dc3d110ae398fe3b05447209d))
21+
- **schema-compiler:** Respect ungrouped alias in measures ([#9411](https://github.com/cube-js/cube/issues/9411)) ([f0829d7](https://github.com/cube-js/cube/commit/f0829d730c284a1e53c833cd53ccf8d37b08e095))
22+
- **schema-compiler:** Use segments as-is in rollupPreAggregation ([#9391](https://github.com/cube-js/cube/issues/9391)) ([cb7b643](https://github.com/cube-js/cube/commit/cb7b6438da199daf0b07fb2dd6f5087ed259f71f))
23+
24+
## [1.2.28](https://github.com/cube-js/cube/compare/v1.2.27...v1.2.28) (2025-04-01)
25+
26+
### Bug Fixes
27+
28+
- **cubesql:** Allow more filters in CubeScan before aggregation pushdown ([#9409](https://github.com/cube-js/cube/issues/9409)) ([351ac7a](https://github.com/cube-js/cube/commit/351ac7aece72e7795f570f5582250206e3c0124e))
29+
- **schema-compiler:** Fix BigQuery DATETIME_TRUNC() week processing ([#9380](https://github.com/cube-js/cube/issues/9380)) ([6c8564f](https://github.com/cube-js/cube/commit/6c8564ffc15e5e930fa2160be642ea3f3cb7b888))
30+
- **schema-compiler:** Fix date alignment for week-based custom granularities ([#9405](https://github.com/cube-js/cube/issues/9405)) ([8b6c490](https://github.com/cube-js/cube/commit/8b6c4906e2c49fb2c04abc381f6fdb3105309eaf))
31+
- **schema-compiler:** Fix model validation for aliased included members for views ([#9398](https://github.com/cube-js/cube/issues/9398)) ([f5e69f7](https://github.com/cube-js/cube/commit/f5e69f76e7268812aa776a20588875d85077b3bf))
32+
- **schema-compiler:** Skip syntax check for transpiled files ([#9395](https://github.com/cube-js/cube/issues/9395)) ([c624e88](https://github.com/cube-js/cube/commit/c624e88d4793c917bb43c3099a7c9d128b517b8a))
33+
- **tesseract:** Support rolling window with multiple granularities ([#9382](https://github.com/cube-js/cube/issues/9382)) ([6ff9331](https://github.com/cube-js/cube/commit/6ff9331729af59e45385608057fa0e99688cfcbe))
34+
35+
### Features
36+
37+
- **clickhouse-driver:** Allow to enable compression, thanks @Graphmaxer ([#9341](https://github.com/cube-js/cube/issues/9341)) ([78ac7b2](https://github.com/cube-js/cube/commit/78ac7b2d93896bae0903ba5f8e4f055165791962))
38+
- **databricks-jdbc-driver:** Switch to the latest OSS Databricks JDBC driver ([#9376](https://github.com/cube-js/cube/issues/9376)) ([29fdd61](https://github.com/cube-js/cube/commit/29fdd615f7eb70690f5fc85897e0c93a5a0cc29a))
39+
- **tesseract:** Custom granularities support ([#9400](https://github.com/cube-js/cube/issues/9400)) ([dc93e40](https://github.com/cube-js/cube/commit/dc93e4022d4c2741d0aafcdb1007a69c6181f232))
40+
- **tesseract:** Support for rolling window without date range ([#9364](https://github.com/cube-js/cube/issues/9364)) ([fd94b02](https://github.com/cube-js/cube/commit/fd94b02b8bba286a67264057f9259769215239a9))
41+
642
## [1.2.27](https://github.com/cube-js/cube/compare/v1.2.26...v1.2.27) (2025-03-25)
743

844
### Features

README.md

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
</p>
44
<br/>
55

6-
[Website](https://cube.dev?ref=github-readme)[Getting Started](https://cube.dev/docs/getting-started?ref=github-readme)[Docs](https://cube.dev/docs?ref=github-readme)[Examples](https://cube.dev/docs/examples?ref=github-readme)[Blog](https://cube.dev/blog?ref=github-readme)[Slack](https://slack.cube.dev?ref=github-readme)[Twitter](https://twitter.com/the_cube_dev)
6+
[Website](https://cube.dev?ref=github-readme)[Getting Started](https://cube.dev/docs/getting-started?ref=github-readme)[Docs](https://cube.dev/docs?ref=github-readme)[Examples](https://cube.dev/docs/examples?ref=github-readme)[Blog](https://cube.dev/blog?ref=github-readme)[Slack](https://slack.cube.dev?ref=github-readme)[X](https://twitter.com/the_cube_dev)
77

88
[![npm version](https://badge.fury.io/js/%40cubejs-backend%2Fserver.svg)](https://badge.fury.io/js/%40cubejs-backend%2Fserver)
99
[![GitHub Actions](https://github.com/cube-js/cube/workflows/Build/badge.svg)](https://github.com/cube-js/cube/actions?query=workflow%3ABuild+branch%3Amaster)
1010
[![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Fcube-js%2Fcube.js.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Fcube-js%2Fcube.js?ref=badge_shield)
1111

12-
__Cube is the semantic layer for building data applications.__ It helps data engineers and application developers access data from modern data stores, organize it into consistent definitions, and deliver it to every application.
12+
__Cube is the universal semantic layer for modern data applications.__ Born in the cloud era, Cube represents the next evolution of OLAP technology, helping data engineers and application developers access data from modern data stores, organize it into consistent definitions, and deliver it to every application.
1313

1414
<img
1515
src="https://ucarecdn.com/8d945f29-e9eb-4e7f-9e9e-29ae7074e195/"
@@ -27,13 +27,17 @@ For more details, see the [introduction](https://cube.dev/docs/cubejs-introducti
2727

2828
## Why Cube?
2929

30-
If you are building a data application—such as a business intelligence tool or a customer-facing analytics feature—you’ll probably face the following problems:
30+
As data infrastructure evolved from traditional relational databases to cloud data platforms, OLAP capabilities that once lived in specialized servers like SQL Server Analysis Services and Oracle Essbase were left behind. Today's organizations face several challenges:
3131

32-
1. __SQL code organization.__ Sooner or later, modeling even a dozen metrics with a dozen dimensions using pure SQL queries becomes a maintenance nightmare, which leads to building a modeling framework.
33-
2. __Performance.__ Most of the time and effort in modern analytics software development is spent providing adequate time to insight. In a world where every company’s data is big data, writing just SQL queries to get insight isn’t enough anymore.
34-
3. __Access Control.__ It is important to secure and govern access to data for all downstream data consuming applications.
32+
1. __Analytics Modeling and Multidimensionality.__ Modern cloud data platforms excel at processing large volumes of data but lack native support for multidimensional analysis and modeling. Cube brings OLAP-style analytics to these platforms, enabling consistent metric definitions and multidimensional analysis.
3533

36-
Cube has the necessary infrastructure and features to implement efficient data modeling, access control, and performance optimizations so that every application—like embedded analytics, dashboarding and reporting tools, data notebooks, and other tools—can access consistent data via REST, SQL, and GraphQL APIs.
34+
2. __Performance Optimization.__ While cloud data warehouses have improved query performance through column-oriented storage and distributed processing, they still struggle with complex analytical workloads. Cube provides intelligent caching and pre-aggregation strategies that dramatically improve query response times.
35+
36+
3. __Access Control and Governance.__ Securing and governing access to data across all consuming applications remains critical. Cube offers robust access control to ensure consistent security across your entire data ecosystem.
37+
38+
4. __API Flexibility.__ Legacy OLAP tools were limited in how they exposed data. Cube provides modern REST, GraphQL, and SQL APIs along with support for traditional MDX and DAX interfaces, making it a truly universal semantic layer.
39+
40+
Cube is the missing OLAP engine for the cloud data platform era that provides the necessary infrastructure and features to implement efficient data modeling, access control, and performance optimizations without duplicating analytics modeling, data, or security permissions across different tools.
3741

3842
![](https://raw.githubusercontent.com/cube-js/cube.js/master/docs/content/old-was-vs-cubejs-way.png)
3943

@@ -76,7 +80,7 @@ For a step-by-step guide on Docker, [see the docs](https://cube.dev/docs/getting
7680

7781
There are many ways you can contribute to Cube! Here are a few possibilities:
7882

79-
* Star this repo and follow us on [Twitter](https://twitter.com/the_cube_dev).
83+
* Star this repo and follow us on [X](https://twitter.com/the_cube_dev).
8084
* Add Cube to your stack on [Stackshare](https://stackshare.io/cube-js).
8185
* Upvote issues with 👍 reaction so we know what's the demand for particular issue to prioritize it within road map.
8286
* Create issues every time you feel something is missing or goes wrong.

docs/pages/product/apis-integrations/ai-api.mdx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ deployment.
246246
- `mistral`
247247
- `openai`
248248
- `openai-compatible` (any provider with an OpenAI-compatible API; support may vary)
249+
- `snowflake`
249250
- `together-ai`
250251
- `x-ai`
251252

@@ -340,6 +341,26 @@ See below for required variables by provider (required unless noted):
340341
- `CUBE_CLOUD_AI_OPENAI_COMPATIBLE_API_KEY`
341342
- `CUBE_CLOUD_AI_OPENAI_COMPATIBLE_BASE_URL`
342343

344+
#### Snowflake Cortex
345+
346+
<WarningBox>
347+
We recommend using `claude-3-5-sonnet` (or any newer Claude models available)
348+
on Snowflake Cortex with the Cube AI API. Other models may work but are not fully tested or supported.
349+
</WarningBox>
350+
351+
<InfoBox>
352+
The Snowflake Cortex LLM REST API uses key pair authentication.
353+
Please follow the steps in [Snowflake's documentation](https://docs.snowflake.com/en/user-guide/key-pair-auth#configuring-key-pair-authentication) to generate
354+
a key and assign it to a Snowflake user.
355+
356+
We recommend creating a separate Snowflake user with limited permissions for
357+
use with the Cube AI API.
358+
</InfoBox>
359+
360+
- `CUBE_CLOUD_AI_SNOWFLAKE_ACCOUNT`
361+
- `CUBE_CLOUD_AI_SNOWFLAKE_USERNAME`
362+
- `CUBE_CLOUD_AI_SNOWFLAKE_PRIVATE_KEY`
363+
343364
#### Together AI
344365

345366
- `CUBE_CLOUD_AI_TOGETHER_API_KEY`

docs/pages/product/deployment/cloud/pricing.mdx

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -223,10 +223,9 @@ under the following tiers:
223223
## Total cost examples
224224

225225
The following examples provide insight into the total cost to use Cube Cloud:
226-
- [Small-scale deployment](#small-scale-deployment) (production cluster, Premium product tier).
227-
- [Medium-scale deployment](#medium-scale-deployment) (production cluster with auto-scaling, Enterprise product tier).
228-
- [Large-scale deployment](#large-scale-deployment) (production multi-cluster
229-
with dedicated infrastructure, Enterprise product tier).
226+
- [Small-scale deployment](#small-scale-deployment) (production cluster, Premium product tier, S deployment tier).
227+
- [Medium-scale deployment](#medium-scale-deployment) (production cluster with auto-scaling, Enterprise product tier, S deployment tier).
228+
- [Large-scale deployment](#large-scale-deployment) (production multi-cluster with dedicated infrastructure, Enterprise product tier, M deployment tier).
230229

231230
### Small-scale deployment
232231

@@ -235,7 +234,7 @@ a couple of teams in Eastern and Pacific time zones.
235234

236235
This organization:
237236
* Uses the Premium product tier of Cube Cloud.
238-
* Runs a single Production Cluster that is active 24/7 but never has to auto-scale
237+
* Runs a single Production Cluster (S tier) that is active 24/7 but never has to auto-scale
239238
its API instances because the usage is spread evenly with no bursts.
240239
* Operates on a small volume of data that requires the usage of just 2 Cube Store
241240
Workers to run queries and refresh pre-aggregations mostly during working hours,
@@ -261,12 +260,12 @@ analytics in its SaaS platform that caters to a vast worldwide customer base.
261260

262261
This organization:
263262
* Uses the Enterprise product tier of Cube Cloud.
264-
* Runs two Production Clusters that are active 24/7 and auto-scale up to 8 API instances
263+
* Runs two Production Clusters (S tier) that are active 24/7 and auto-scale up to 8 API instances
265264
during a peak hour every day.
266265
* Operates on a moderate volume of data that requires the usage of 4 Cube Store
267266
Workers by both Production Clusters to run queries and refresh pre-aggregations 24/7,
268267
being active approximately 50% of the time.
269-
* Uses a dedicated Development Instance for testing purposes that is active 12 hours a day.
268+
* Uses a dedicated Development Instance (S tier) for testing purposes that is active 12 hours a day.
270269
* Has a team of 5 data engineers who frequently update the data model, with each data engineer
271270
spending about 4 hours a day in the development mode of the dedicated Development Instance.
272271

@@ -287,11 +286,11 @@ its globally distributed workforce, customer base, and (or) partners to operate
287286
This organization:
288287
* Uses the Enterprise product tier of Cube Cloud.
289288
* Uses [dedicated infrastructure][ref-dedicated-infra].
290-
* Runs a Production Multi-Cluster that is active 24/7, includes 3 Production Clusters, with each
289+
* Runs a Production Multi-Cluster that is active 24/7, includes 3 Production Clusters (M tier), with each
291290
Production Cluster auto-scaling up to 10 API instances during a few peak hours every day.
292291
* Operates on a large volume of data that requires the usage of 16 Cube Store Workers to run
293292
queries and refresh pre-aggregations 24/7, being active approximately 50% of the time.
294-
* Uses a dedicated Development Instance for testing purposes that is active 24 hours a day.
293+
* Uses a dedicated Development Instance (M tier) for testing purposes that is active 24 hours a day.
295294
* Has a team of 10 data engineers who frequently update the data model, with each data engineer
296295
spending about 4 hours a day in the development mode of the dedicated Development Instance.
297296
* Uses a [Query History tier](#query-history-tiers) with 14-day data retention to inform the work
@@ -300,13 +299,13 @@ of data engineers.
300299
| Resource | Usage per month | CCU per month |
301300
| ----------------------------------------------- | ------------------------------------------------------------------------------------------- | ---------------------------------------------------- |
302301
| Dedicated infrastructure | 1 region ×<br/>24 hours per day ×<br/>30 days | 720 hours ×<br/>3 CCUs per hour =<br/>**2160 CCUs** |
303-
| Production Multi-Cluster | 3 Production Clusters ×<br/>24 hours per day ×<br/>30 days | 2160 hours ×<br/>4 CCUs per hour =<br/>**8640 CCUs** |
304-
| Additional Cube API Instance | 3 Production Clusters ×<br/>(10 – 2) API Instances ×<br/>4 hours per day ×<br/>30 days | 2880 hours ×<br/>1 CCU per hour =<br/>**2880 CCUs** |
302+
| Production Multi-Cluster | 3 Production Clusters ×<br/>24 hours per day ×<br/>30 days | 2160 hours ×<br/>8 CCUs per hour =<br/>**17280 CCUs** |
303+
| Additional Cube API Instance | 3 Production Clusters ×<br/>(10 – 2) API Instances ×<br/>4 hours per day ×<br/>30 days | 2880 hours ×<br/>2 CCU per hour =<br/>**5760 CCUs** |
305304
| Cube Store Worker | 1 Production Multi-Cluster ×<br/>16 Cube Store Workers ×<br/>12 hours per day ×<br/>30 days | 5760 hours ×<br/>1 CCU per hour =<br/>**5760 CCUs** |
306-
| Development Instance | 1 Development Instance ×<br/>24 hours per day ×<br/>30 days | 720 hours ×<br/>1 CCU per hour =<br/>**720 CCUs** |
307-
| Development Instance<br/>(for development mode) | 10 users ×<br/>4 hours per day ×<br/>30 days | 1200 hours ×<br/>1 CCU per hour =<br/>**1200 CCUs** |
305+
| Development Instance | 1 Development Instance ×<br/>24 hours per day ×<br/>30 days | 720 hours ×<br/>2 CCU per hour =<br/>**1440 CCUs** |
306+
| Development Instance<br/>(for development mode) | 10 users ×<br/>4 hours per day ×<br/>30 days | 1200 hours ×<br/>2 CCU per hour =<br/>**2400 CCUs** |
308307
| Query History (M tier) | 24 hours per day ×<br/>30 days | 720 hours ×<br/>5 CCUs per hour =<br/>**3600 CCUs** |
309-
| **Total** | | **24960 CCUs** |
308+
| **Total** | | **38400 CCUs** |
310309

311310
## Payment terms
312311

docs/pages/product/getting-started/cloud/query-from-react-app.mdx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,12 +80,5 @@ const { resultSet, isLoading, error, progress } = useCubeQuery({
8080
});
8181
```
8282

83-
For more information on the Cube JavaScript frontend package and integration
84-
with React, please refer to the documentation.
85-
86-
You can also explore example applications built with React on top of the Cube
87-
REST API, along with their source code.
88-
89-
- [React with Highcharts](https://highcharts-demo.cube.dev/#/)
90-
- [React with AG Grid](https://react-pivot-table-demo.cube.dev/#/)
91-
- [React query builder](https://react-dashboard-demo.cube.dev/#/)
83+
For more information on the JavaScript SDK and integration
84+
with React, please refer to the documentation.

0 commit comments

Comments
 (0)