Skip to content

Commit 8488070

Browse files
authored
Merge branch 'master' into feat/duckdb-driver-upgrade-version-to-1.2
2 parents 479d0b6 + 8ff25d0 commit 8488070

File tree

211 files changed

+9848
-1851
lines changed

Some content is hidden

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

211 files changed

+9848
-1851
lines changed

.github/workflows/push.yml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ on:
1313
- 'rust/cubeorchestrator/**'
1414
- 'rust/cubeshared/**'
1515
- 'rust/cubesqlplanner/**'
16+
- 'rust/cubetranspilers/**'
1617
- '.eslintrc.js'
1718
- '.prettierrc'
1819
- 'package.json'
@@ -32,6 +33,7 @@ on:
3233
- 'rust/cubeorchestrator/**'
3334
- 'rust/cubeshared/**'
3435
- 'rust/cubesqlplanner/**'
36+
- 'rust/cubetranspilers/**'
3537
- '.eslintrc.js'
3638
- '.prettierrc'
3739
- 'package.json'
@@ -55,10 +57,15 @@ jobs:
5557
node-version: [20.x, 22.x]
5658
python-version: [3.11]
5759
transpile-worker-threads: [false, true]
60+
transpile-native: [false, true]
61+
exclude:
62+
- transpile-worker-threads: true
63+
transpile-native: true
5864
fail-fast: false
5965

6066
env:
6167
CUBEJS_TRANSPILATION_WORKER_THREADS: ${{ matrix.transpile-worker-threads }}
68+
CUBEJS_TRANSPILATION_NATIVE: ${{ matrix.transpile-native }}
6269
steps:
6370
- id: get-tag-out
6471
run: echo "$OUT"
@@ -133,6 +140,9 @@ jobs:
133140
- name: Cargo test cubeshared
134141
run: |
135142
cargo test --manifest-path rust/cubeshared/Cargo.toml -j 1
143+
- name: Cargo test cubetranspilers
144+
run: |
145+
cargo test --manifest-path rust/cubetranspilers/Cargo.toml -j 1
136146
# - name: Cargo test cubesql
137147
# run: |
138148
# cargo test --manifest-path rust/cubesql/Cargo.toml -j 1
@@ -196,6 +206,9 @@ jobs:
196206
- name: Cargo fmt cubeshared
197207
run: |
198208
cargo fmt --manifest-path rust/cubeshared/Cargo.toml -- --check
209+
- name: Cargo fmt cubetranspilers
210+
run: |
211+
cargo fmt --manifest-path rust/cubetranspilers/Cargo.toml -- --check
199212
# - name: Cargo fmt cubesql
200213
# run: |
201214
# cargo fmt --manifest-path rust/cubesql/Cargo.toml -- --check
@@ -263,6 +276,9 @@ jobs:
263276
- name: Cargo build cubeshared
264277
run: |
265278
cargo build --manifest-path rust/cubeshared/Cargo.toml -j 4
279+
- name: Cargo build cubetranspilers
280+
run: |
281+
cargo build --manifest-path rust/cubetranspilers/Cargo.toml -j 4
266282
# - name: Cargo build cubesql
267283
# run: |
268284
# cargo build --manifest-path rust/cubesql/Cargo.toml -j 4

CHANGELOG.md

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,30 @@
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.5](https://github.com/cube-js/cube/compare/v1.2.4...v1.2.5) (2025-02-13)
7-
6+
## [1.2.6](https://github.com/cube-js/cube/compare/v1.2.5...v1.2.6) (2025-02-18)
87

98
### Bug Fixes
109

11-
* **cubesql:** Fix SELECT DISTINCT on pushdown ([#9144](https://github.com/cube-js/cube/issues/9144)) ([6483f66](https://github.com/cube-js/cube/commit/6483f66c826ad9a638af8770850219d923b3e7d9))
12-
10+
- **api-gateway:** Fix CompareDateRange queries native transformations ([#9232](https://github.com/cube-js/cube/issues/9232)) ([9c6153d](https://github.com/cube-js/cube/commit/9c6153d1e958e42162acb5af5964e9792a7f0433))
11+
- **schema-compiler:** Correct models transpilation in native in multitenant environments ([#9234](https://github.com/cube-js/cube/issues/9234)) ([84f90c0](https://github.com/cube-js/cube/commit/84f90c07ee3827e6f3652dd6c9fab0993ecc8150))
1312

1413
### Features
1514

16-
* Upgrade rust to 1.84.1 (stable) ([#9222](https://github.com/cube-js/cube/issues/9222)) ([cfc95b5](https://github.com/cube-js/cube/commit/cfc95b5e5601166d2a0aa388a211d4be66630cd8))
15+
- **schema-compiler:** Boost models transpilation 10-13x times (using SWC instead of Babel) ([#9225](https://github.com/cube-js/cube/issues/9225)) ([2dd9a4a](https://github.com/cube-js/cube/commit/2dd9a4a5ba0f178e304befc476609fc30ada8975))
16+
17+
### Performance Improvements
18+
19+
- **cubesql:** Avoid allocations in MetaContext methods ([#9228](https://github.com/cube-js/cube/issues/9228)) ([ba753d0](https://github.com/cube-js/cube/commit/ba753d0d43927b50d5cf8faf5f09de3e53bec3db))
1720

21+
## [1.2.5](https://github.com/cube-js/cube/compare/v1.2.4...v1.2.5) (2025-02-13)
1822

23+
### Bug Fixes
1924

25+
- **cubesql:** Fix SELECT DISTINCT on pushdown ([#9144](https://github.com/cube-js/cube/issues/9144)) ([6483f66](https://github.com/cube-js/cube/commit/6483f66c826ad9a638af8770850219d923b3e7d9))
26+
27+
### Features
2028

29+
- Upgrade rust to 1.84.1 (stable) ([#9222](https://github.com/cube-js/cube/issues/9222)) ([cfc95b5](https://github.com/cube-js/cube/commit/cfc95b5e5601166d2a0aa388a211d4be66630cd8))
2130

2231
## [1.2.4](https://github.com/cube-js/cube/compare/v1.2.3...v1.2.4) (2025-02-11)
2332

docs/pages/guides/recipes/auth/sql-api-ldap.mdx

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,13 @@ Here's a step-by-step breakdown of the authentication flow:
2626
* Cube verifies the credentials via the Secure LDAP service.
2727
* If credentials are correct, users get access to the dataset.
2828

29+
<InfoBox>
30+
31+
In this recipe, the SQL API is used to connect to [Power BI][ref-powerbi].
32+
Currently, it's recommended to use the [DAX API][ref-dax-api].
33+
34+
</InfoBox>
35+
2936
## Configuration
3037

3138
To verify the credentials, use the
@@ -177,4 +184,8 @@ module.exports = {
177184
}
178185
};
179186

180-
```
187+
```
188+
189+
190+
[ref-dax-api]: /product/apis-integrations/dax-api
191+
[ref-powerbi]: /product/configuration/visualization-tools/powerbi

docs/pages/product/apis-integrations.mdx

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,37 +9,36 @@ With a rich set of APIs, Cube can power and deliver data to all kinds of data
99
applications.
1010

1111
[Data APIs](#data-apis) are used to run queries against the data model.
12-
Despite using various transports and query formats, all data APIs share common
12+
Despite varying protocols and query formats, all data APIs share common
1313
[querying concepts][ref-queries].
1414

15-
<Diagram src="https://ucarecdn.com/023ca78a-aa96-493a-9799-95955a6d8948/" />
15+
<Diagram src="https://ucarecdn.com/4abc9729-66a3-489f-9d48-0bf27e728c87/" />
1616

1717
Also, there are [management APIs](#management-apis) to control Cube deployments
1818
externally.
1919

20-
<Diagram src="https://ucarecdn.com/8b9c0a27-c9bf-4f32-86b7-223c9fae8cc8/" />
20+
<Diagram src="https://ucarecdn.com/3ff02e30-a010-480d-b6d6-3b927baa0dfe/" />
2121

2222
## Data APIs
2323

2424
A few rules of thumb to help you choose an API:
2525

26-
* When implementing internal or self-serve [business intelligence][cube-issbi] use
27-
case, pick the [SQL API][ref-sql-api] and [Semantic Layer Sync][ref-sls]. The
28-
SQL API allows querying Cube with a Postgres-compatible [dialect of
29-
SQL][ref-sql-syntax], either by writing queries manually or generating them with
30-
BI tools.
26+
* To connect to [Microsoft Power BI][ref-powerbi], use the [DAX API][ref-dax-api].
3127

32-
* To connect to Microsoft Excel, use the [MDX API][ref-mdx-api]. To connect to
33-
Google Sheets, use [Cube Cloud for Sheets][ref-cube-cloud-for-sheets].
28+
* To connect to [Microsoft Excel][ref-excel], use either the [MDX API][ref-mdx-api]
29+
or [Cube Cloud for Excel][ref-cube-cloud-for-excel].
3430

35-
* When implementing [embedded analytics][cube-ea] and [real-time
36-
analytics][cube-rta] use cases, pick [REST API][ref-rest-api] or [GraphQL
37-
API][ref-graphql-api]. Also, the [JavaScript SDK][ref-js-sdk] will simplify
38-
integration with your front-end code. The REST API uses a [JSON-based query
39-
format][ref-json-syntax], and the GraphQL API accepts [GraphQL
40-
queries][ref-graphql-syntax].
31+
* To connect to [Google Sheets][ref-sheets], use [Cube Cloud for Sheets][ref-cube-cloud-for-sheets].
4132

42-
* For AI use cases, consider using the [AI API][ref-ai-api].
33+
* For internal or self-serve [business intelligence][cube-issbi], use
34+
[Semantic Layer Sync][ref-sls] in case it supports your BI tools.
35+
Otherwise, connect via the [SQL API][ref-sql-api] directly.
36+
37+
* For [embedded analytics][cube-ea] and [real-time analytics][cube-rta], use
38+
[REST API][ref-rest-api] or [GraphQL API][ref-graphql-api]. When using the REST API,
39+
the [JavaScript SDK][ref-js-sdk] can simplify integration with your front-end code.
40+
41+
* For AI use cases, use the [AI API][ref-ai-api].
4342

4443
<ReferenceBox>
4544

@@ -53,21 +52,21 @@ for an unofficial, community-maintained [client library for Python](https://gith
5352
Support for data modeling features differ across APIs, integrations, and [visualization
5453
tools][ref-viz-tools]. Some of the features with partial support are listed below:
5554

56-
| Feature | Supported in | Not supported in |
55+
| Feature | Supported in | Not supported in |
5756
| --- | --- | --- |
58-
| [Hierarchies][ref-hierarchies] | [Tableau][ref-tableau] via [Semantic Layer Sync][ref-sls]<br/>Cube Cloud for Excel<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets] | All other tools |
59-
| [Folders][ref-folders] | [Tableau][ref-tableau] via [Semantic Layer Sync][ref-sls]<br/>Cube Cloud for Excel<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets] | All other tools |
57+
| [Hierarchies][ref-hierarchies] | [Microsoft Power BI][ref-powerbi] via the [DAX API][ref-dax-api]<br/>[Cube Cloud for Excel][ref-cube-cloud-for-excel]<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets]<br/>[Tableau][ref-tableau] via [Semantic Layer Sync][ref-sls] | All other tools |
58+
| [Folders][ref-folders] | [Microsoft Power BI][ref-powerbi] via the [DAX API][ref-dax-api]<br/>[Cube Cloud for Excel][ref-cube-cloud-for-excel]<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets]<br/>[Tableau][ref-tableau] via [Semantic Layer Sync][ref-sls] | All other tools |
6059

6160
### Authentication methods
6261

6362
Support for authentication methods differ across APIs, integrations, and [visualization
6463
tools][ref-viz-tools]:
6564

66-
| Method | Supported in |
65+
| Method | Supported in |
6766
| --- | --- |
68-
| [User name and password][ref-auth-user-pass] | [SQL API][ref-sql-api] and [Semantic Layer Sync][ref-sls]<br/>[MDX API][ref-mdx-api] |
69-
| [Identity provider][ref-auth-idp] | Cube Cloud for Excel<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets] |
70-
| [Access token][ref-auth-tokens] | [REST API][ref-rest-api]<br/>[GraphQL API][ref-graphql-api]<br/>[AI API][ref-ai-api] |
67+
| [User name and password][ref-auth-user-pass] | [DAX API][ref-dax-api]<br/>[MDX API][ref-mdx-api]<br/>[Semantic Layer Sync][ref-sls]<br/>[SQL API][ref-sql-api] |
68+
| [Identity provider][ref-auth-idp] | [Cube Cloud for Excel][ref-cube-cloud-for-excel]<br/>[Cube Cloud for Sheets][ref-cube-cloud-for-sheets] |
69+
| [Access token][ref-auth-tokens] | [REST API][ref-rest-api]<br/>[GraphQL API][ref-graphql-api]<br/>[AI API][ref-ai-api] |
7170

7271
## Management APIs
7372

@@ -79,6 +78,7 @@ API][ref-orchestration-api].
7978
[cube-ea]: https://cube.dev/use-cases/embedded-analytics
8079
[cube-rta]: https://cube.dev/use-cases/real-time-analytics
8180
[ref-queries]: /product/apis-integrations/queries
81+
[ref-dax-api]: /product/apis-integrations/dax-api
8282
[ref-sql-api]: /product/apis-integrations/sql-api
8383
[ref-rest-api]: /product/apis-integrations/rest-api
8484
[ref-graphql-api]: /product/apis-integrations/graphql-api
@@ -87,13 +87,14 @@ API][ref-orchestration-api].
8787
[ref-orchestration-api]: /product/apis-integrations/orchestration-api
8888
[ref-sls]: /product/apis-integrations/semantic-layer-sync
8989
[ref-js-sdk]: /product/apis-integrations/javascript-sdk
90-
[ref-sql-syntax]: /product/apis-integrations/sql-api#querying-fundamentals
91-
[ref-json-syntax]: /product/apis-integrations/rest-api/query-format
92-
[ref-graphql-syntax]: /product/apis-integrations/graphql-api#getting-started
90+
[ref-cube-cloud-for-excel]: /product/apis-integrations/microsoft-excel
9391
[ref-cube-cloud-for-sheets]: /product/apis-integrations/google-sheets
9492
[ref-viz-tools]: /product/configuration/visualization-tools
9593
[ref-hierarchies]: /reference/data-model/hierarchies
9694
[ref-folders]: /reference/data-model/view#folders
95+
[ref-powerbi]: /product/configuration/visualization-tools/powerbi
96+
[ref-excel]: /product/configuration/visualization-tools/excel
97+
[ref-sheets]: /product/configuration/visualization-tools/google-sheets
9798
[ref-tableau]: /product/configuration/visualization-tools/tableau
9899
[ref-auth-user-pass]: /product/auth#user-name-and-password
99100
[ref-auth-idp]: /product/auth#identity-provider

docs/pages/product/apis-integrations/_meta.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
module.exports = {
22
"queries": "Queries",
3+
"dax-api": "DAX API",
4+
"mdx-api": "MDX API",
5+
"microsoft-excel": "Cube Cloud for Excel",
6+
"google-sheets": "Cube Cloud for Sheets",
37
"semantic-layer-sync": "Semantic Layer Sync",
48
"sql-api": "SQL API",
59
"rest-api": "REST API",
610
"graphql-api": "GraphQL API",
7-
"mdx-api": "MDX API",
8-
"google-sheets": "Cube Cloud for Sheets",
911
"ai-api": "AI API",
1012
"javascript-sdk": "JavaScript SDK",
1113
"orchestration-api": "Orchestration API",
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
# DAX API
2+
3+
The DAX API enables Cube to connect to [Microsoft Power BI][ref-powerbi].
4+
It derives its name from [data analysis expressions][link-dax], a query language
5+
for Power BI and SQL Server Analysis Services.
6+
7+
Unlike the [SQL API][ref-sql-api], it provides a native experience and superior
8+
support for Power BI features.
9+
10+
<SuccessBox>
11+
12+
The DAX API is available in Cube Cloud on [Enterprise and above](https://cube.dev/pricing) product tiers.
13+
It also requires the M [deployment tier](/product/deployment/cloud/pricing#deployment-tiers).
14+
15+
</SuccessBox>
16+
17+
<WarningBox>
18+
19+
The DAX API is currently in preview. Please [contact us](https://cube.dev/contact) to enable it for your account.
20+
21+
</WarningBox>
22+
23+
Read below about the DAX API [configuration](#configuration),
24+
[authentication](#authentication), and [using it](#using-dax-api-with-power-bi) with Power BI.
25+
26+
See the [DAX API reference][ref-ref-dax-api] for the list of supported DAX functions.
27+
28+
<YouTubeVideo
29+
url="https://www.youtube.com/embed/vgrFPOMuJJs"
30+
aspectRatio={8/5}
31+
/>
32+
33+
## Configuration
34+
35+
<WarningBox>
36+
37+
Please contact the customer success team in Cube Cloud so we can guide you
38+
through the configuration.
39+
40+
</WarningBox>
41+
42+
To enable or disable the DAX API on a specific deployment, go to <Btn>Settings</Btn>
43+
in the Cube Cloud sidebar, then <Btn>Configuration</Btn>, and then toggle the
44+
<Btn>Enable DAX API</Btn> option.
45+
46+
## Authentication
47+
48+
The DAX API supports the user name and password authentication method.
49+
50+
## Using DAX API with Power BI
51+
52+
<InfoBox>
53+
54+
The DAX API works only with [views][ref-views], not cubes.
55+
56+
</InfoBox>
57+
58+
{/*
59+
60+
TODO
61+
62+
*/}
63+
64+
### Connection methods
65+
66+
Power BI provides [three methods][link-powerbi-connection] to connect to data
67+
sources: _live connection_, _DirectQuery_, and _import mode_.
68+
69+
| | Live connection | DirectQuery | <nobr>Import mode</nobr> |
70+
| --- | --- | --- | --- |
71+
| Data location | 🟢 Data source | 🟢 Data source | 🟡 Power BI |
72+
| Data freshness | 🟢 Real-time data | 🟢 Real-time data | 🟡 Stale copy |
73+
| Semantic model | <nobr>🟢 Up-to-date model</nobr> | 🟡 Stale copy | 🟡 Stale copy |
74+
| Queries | <nobr>🟢 Composed in UI</nobr><br/><nobr>🔴 No custom queries</nobr> | <nobr>🟢 Composed in UI</nobr><br/><nobr>🟢 Custom queries</nobr> | <nobr>🟢 Composed in UI</nobr><br/><nobr>🟢 Custom queries</nobr> |
75+
76+
__It's recommended to use a _live connection_ whenever possible.__ Use _DirectQuery_
77+
if you need to write your own DAX queries, but be aware that you must manually
78+
synchronize semantic models as they evolve. _Import mode_ is not recommended, as
79+
it removes the benefits of using a semantic layer.
80+
81+
82+
[ref-powerbi]: /product/configuration/visualization-tools/powerbi
83+
[link-dax]: https://learn.microsoft.com/en-us/dax/
84+
[ref-sql-api]: /product/apis-integrations/sql-api
85+
[ref-ref-dax-api]: /product/apis-integrations/dax-api/reference
86+
[ref-views]: /product/data-modeling/concepts#views
87+
[link-powerbi-connection]: https://learn.microsoft.com/en-us/power-bi/connect-data/service-live-connect-dq-datasets
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = {
2+
"reference": "Reference"
3+
}

0 commit comments

Comments
 (0)