@cubejs-backend/schema-compiler 0.30.43 → 0.30.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/dist/src/adapter/AWSElasticSearchQuery.d.ts.map +1 -1
  3. package/dist/src/adapter/BaseQuery.d.ts +47 -9
  4. package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
  5. package/dist/src/adapter/BaseQuery.js +98 -10
  6. package/dist/src/adapter/BaseQuery.js.map +1 -1
  7. package/dist/src/adapter/BigqueryQuery.d.ts.map +1 -1
  8. package/dist/src/adapter/ClickHouseQuery.d.ts.map +1 -1
  9. package/dist/src/adapter/CrateQuery.d.ts +5 -0
  10. package/dist/src/adapter/CrateQuery.d.ts.map +1 -0
  11. package/dist/src/adapter/CrateQuery.js +19 -0
  12. package/dist/src/adapter/CrateQuery.js.map +1 -0
  13. package/dist/src/adapter/ElasticSearchQuery.d.ts.map +1 -1
  14. package/dist/src/adapter/HiveQuery.d.ts.map +1 -1
  15. package/dist/src/adapter/MongoBiQuery.d.ts.map +1 -1
  16. package/dist/src/adapter/MssqlQuery.d.ts.map +1 -1
  17. package/dist/src/adapter/MssqlQuery.js +19 -2
  18. package/dist/src/adapter/MssqlQuery.js.map +1 -1
  19. package/dist/src/adapter/MysqlQuery.d.ts.map +1 -1
  20. package/dist/src/adapter/OracleQuery.d.ts.map +1 -1
  21. package/dist/src/adapter/PostgresQuery.d.ts.map +1 -1
  22. package/dist/src/adapter/PreAggregations.d.ts +3 -0
  23. package/dist/src/adapter/PreAggregations.d.ts.map +1 -1
  24. package/dist/src/adapter/PreAggregations.js +7 -2
  25. package/dist/src/adapter/PreAggregations.js.map +1 -1
  26. package/dist/src/adapter/PrestodbQuery.d.ts.map +1 -1
  27. package/dist/src/adapter/QueryBuilder.d.ts.map +1 -1
  28. package/dist/src/adapter/QueryBuilder.js +2 -0
  29. package/dist/src/adapter/QueryBuilder.js.map +1 -1
  30. package/dist/src/adapter/RedshiftQuery.d.ts.map +1 -1
  31. package/dist/src/adapter/SnowflakeQuery.d.ts.map +1 -1
  32. package/dist/src/adapter/SqliteQuery.d.ts.map +1 -1
  33. package/dist/src/adapter/VerticaQuery.d.ts.map +1 -1
  34. package/dist/src/compiler/CubeValidator.d.ts.map +1 -1
  35. package/dist/src/compiler/CubeValidator.js +1 -0
  36. package/dist/src/compiler/CubeValidator.js.map +1 -1
  37. package/package.json +5 -5
package/CHANGELOG.md CHANGED
@@ -3,6 +3,37 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.30.47](https://github.com/cube-js/cube.js/compare/v0.30.46...v0.30.47) (2022-08-12)
7
+
8
+
9
+ ### Features
10
+
11
+ * **cubejs:** LambdaView: hybrid query of source tables and pre-aggregation tables. ([#4718](https://github.com/cube-js/cube.js/issues/4718)) ([4ae826b](https://github.com/cube-js/cube.js/commit/4ae826b4d27afbfce366830150e130f29c7fcbbf))
12
+
13
+
14
+
15
+
16
+
17
+ ## [0.30.46](https://github.com/cube-js/cube.js/compare/v0.30.45...v0.30.46) (2022-08-10)
18
+
19
+
20
+ ### Features
21
+
22
+ * **drivers:** Bootstraps CrateDB driver ([#4929](https://github.com/cube-js/cube.js/issues/4929)) ([db87b8f](https://github.com/cube-js/cube.js/commit/db87b8f18686607498467c6ff0f71abcd1e38c5d))
23
+ * **schema-compiler:** aggregated sub query group by clause ([#5078](https://github.com/cube-js/cube.js/issues/5078)) ([473398d](https://github.com/cube-js/cube.js/commit/473398d0a4a983730aba115766afc53f2dd829a6))
24
+
25
+
26
+
27
+
28
+
29
+ ## [0.30.45](https://github.com/cube-js/cube.js/compare/v0.30.44...v0.30.45) (2022-08-05)
30
+
31
+ **Note:** Version bump only for package @cubejs-backend/schema-compiler
32
+
33
+
34
+
35
+
36
+
6
37
  ## [0.30.43](https://github.com/cube-js/cube.js/compare/v0.30.42...v0.30.43) (2022-07-28)
7
38
 
8
39
  **Note:** Version bump only for package @cubejs-backend/schema-compiler
@@ -1 +1 @@
1
- {"version":3,"file":"AWSElasticSearchQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/AWSElasticSearchQuery.js"],"names":[],"mappings":"AAuBA;IAwDW,0CAiBC;IAnBV,4BAoBC;CAKF"}
1
+ {"version":3,"file":"AWSElasticSearchQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/AWSElasticSearchQuery.js"],"names":[],"mappings":"AAuBA;IAwDwD,0CAqBjD;IAvBL,4BAoBC;CAKF"}
@@ -80,9 +80,11 @@ export class BaseQuery {
80
80
  newParamAllocator(): ParamAllocator;
81
81
  newPreAggregations(): PreAggregations;
82
82
  /**
83
- * Wrap cpecified column with the double quote.
83
+ * Wrap specified column/table name with the double quote.
84
+ * @param {string} name
85
+ * @returns {string}
84
86
  */
85
- escapeColumnName(name: any): string;
87
+ escapeColumnName(name: string): string;
86
88
  /**
87
89
  * Returns SQL query string.
88
90
  * @returns {string}
@@ -102,6 +104,11 @@ export class BaseQuery {
102
104
  * @returns {Array<string>}
103
105
  */
104
106
  buildSqlAndParams(): Array<string>;
107
+ /**
108
+ * Returns a dictionary mapping each preagregation to its corresponding query fragment.
109
+ * @returns {Record<string, Array<string>>}
110
+ */
111
+ buildLambdaQuery(): Record<string, Array<string>>;
105
112
  externalQuery(): any;
106
113
  runningTotalDateJoinCondition(): any;
107
114
  rollingWindowDateJoinCondition(trailingInterval: any, leadingInterval: any, offset: any): any;
@@ -172,14 +179,21 @@ export class BaseQuery {
172
179
  };
173
180
  subQueryName(cubeName: any, name: any): string;
174
181
  regularMeasuresSubQuery(measures: any, filters: any): string;
175
- aggregateSubQuery(keyCubeName: any, measures: any, filters: any): string;
182
+ /**
183
+ * Returns SQL query for the "aggregating on top of sub-queries" uses cases.
184
+ * @param {string} keyCubeName
185
+ * @param {Array<BaseMeasure>} measures
186
+ * @param {Array<BaseFilter>} filters
187
+ * @returns {string}
188
+ */
189
+ aggregateSubQuery(keyCubeName: string, measures: Array<BaseMeasure>, filters: Array<BaseFilter>): string;
176
190
  checkShouldBuildJoinForMeasureSelect(measures: any, keyCubeName: any): any;
177
191
  aggregateSubQueryMeasureJoin(keyCubeName: any, measures: any, measuresJoin: any, primaryKeyDimensions: any, measureSubQueryDimensions: any): any;
178
192
  groupedUngroupedSelect(select: any, ungrouped: any, granularityOverride: any): any;
179
193
  ungroupedMeasureSelect(select: any): any;
180
194
  keysQuery(primaryKeyDimensions: any, filters: any): string;
181
195
  keysSelect(primaryKeyDimensions: any): string;
182
- keyDimensions(primaryKeyDimensions: any): any[];
196
+ keyDimensions(primaryKeyDimensions: any): BaseDimension[];
183
197
  cubeSql(cube: any): any;
184
198
  traverseSymbol(s: any): any;
185
199
  collectCubeNames(excludeTimeDimensions: any): any;
@@ -187,17 +201,41 @@ export class BaseQuery {
187
201
  collectFrom(membersToCollectFrom: any, fn: any, methodName: any, cache: any): any[];
188
202
  collectSubQueryDimensionsFor(fn: any): never[];
189
203
  rewriteInlineWhere(fn: any, inlineWhereConditions: any): any;
204
+ /**
205
+ * Returns `GROUP BY` clause for the "aggregating on top of sub-queries" uses
206
+ * cases. By the default returns the result of the `groupByClause` method.
207
+ * @returns {string}
208
+ */
209
+ aggregateSubQueryGroupByClause(): string;
210
+ /**
211
+ * Returns `GROUP BY` clause for the basic uses cases.
212
+ * @returns {string}
213
+ */
190
214
  groupByClause(): string;
191
215
  getFieldIndex(id: any): any;
192
216
  orderBy(): string;
193
- dimensionAliasNames(): any[];
194
- dimensionColumns(cubeAlias: any): string[];
217
+ /**
218
+ * Returns a complete list of the aliased dimensions, including time
219
+ * dimensions.
220
+ * @returns {Array<string>}
221
+ */
222
+ dimensionAliasNames(): Array<string>;
223
+ /**
224
+ * Returns an array of column names correlated to the specified cube dimensions.
225
+ * @param {string} cubeAlias
226
+ * @returns {Array<string>}
227
+ */
228
+ dimensionColumns(cubeAlias: string): Array<string>;
195
229
  groupByDimensionLimit(): string;
196
230
  topLimit(): string;
197
231
  baseSelect(): string;
198
232
  selectAllDimensionsAndMeasures(measures: any): string;
199
- forSelect(): any;
200
- dimensionsForSelect(): any;
233
+ forSelect(): BaseDimension[];
234
+ /**
235
+ * Returns a complete list of the dimensions, including time dimensions.
236
+ * @returns {Array<BaseDimension>}
237
+ */
238
+ dimensionsForSelect(): Array<BaseDimension>;
201
239
  dimensionSql(dimension: any): any;
202
240
  segmentSql(segment: any): any;
203
241
  measureSql(measure: any): any;
@@ -284,7 +322,7 @@ export class BaseQuery {
284
322
  evaluateIndexColumns(cube: any, index: any): any;
285
323
  createIndexSql(indexName: any, tableName: any, escapedColumns: any): string;
286
324
  preAggregationSql(cube: any, preAggregation: any): any;
287
- preAggregationReadOnly(cube: any, preAggregation: any): boolean;
325
+ preAggregationReadOnly(_cube: any, _preAggregation: any): boolean;
288
326
  preAggregationQueryForSqlEvaluation(cube: any, preAggregation: any): any;
289
327
  parseCronSyntax(every: any): {
290
328
  start: cronParser.CronDate;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
@@ -364,7 +364,9 @@ class BaseQuery {
364
364
  return new PreAggregations_1.PreAggregations(this, this.options.historyQueries || [], this.options.cubeLatticeCache);
365
365
  }
366
366
  /**
367
- * Wrap cpecified column with the double quote.
367
+ * Wrap specified column/table name with the double quote.
368
+ * @param {string} name
369
+ * @returns {string}
368
370
  */
369
371
  escapeColumnName(name) {
370
372
  return `"${name}"`;
@@ -437,6 +439,44 @@ class BaseQuery {
437
439
  }
438
440
  return this.compilers.compiler.withQuery(this, () => this.cacheValue(['buildSqlAndParams'], () => this.paramAllocator.buildSqlAndParams(this.buildParamAnnotatedSql()), { cache: this.queryCache }));
439
441
  }
442
+ /**
443
+ * Returns a dictionary mapping each preagregation to its corresponding query fragment.
444
+ * @returns {Record<string, Array<string>>}
445
+ */
446
+ buildLambdaQuery() {
447
+ var _a;
448
+ const preAggForQuery = this.preAggregations.findPreAggregationForQuery();
449
+ const result = {};
450
+ if (preAggForQuery && preAggForQuery.preAggregation.unionWithSourceData) {
451
+ // TODO(cristipp) Use source query instead of preaggregation references.
452
+ const references = this.cubeEvaluator.evaluatePreAggregationReferences(preAggForQuery.cube, preAggForQuery.preAggregation);
453
+ const lambdaQuery = this.newSubQuery({
454
+ measures: references.measures,
455
+ dimensions: references.dimensions,
456
+ timeDimensions: references.timeDimensions,
457
+ filters: [
458
+ ...(_a = this.options.filters) !== null && _a !== void 0 ? _a : [],
459
+ references.timeDimensions.length > 0
460
+ ? {
461
+ member: references.timeDimensions[0].dimension,
462
+ operator: 'afterDate',
463
+ values: [shared_1.FROM_PARTITION_RANGE]
464
+ }
465
+ : [],
466
+ ],
467
+ segments: this.options.segments,
468
+ order: [],
469
+ limit: undefined,
470
+ offset: undefined,
471
+ rowLimit: shared_1.MAX_SOURCE_ROW_LIMIT,
472
+ preAggregationQuery: true,
473
+ });
474
+ const sqlAndParams = lambdaQuery.buildSqlAndParams();
475
+ const cacheKeyQueries = this.evaluateSymbolSqlWithContext(() => this.cacheKeyQueries(), { preAggregationQuery: true });
476
+ result[this.preAggregations.preAggregationId(preAggForQuery)] = { sqlAndParams, cacheKeyQueries };
477
+ }
478
+ return result;
479
+ }
440
480
  externalQuery() {
441
481
  const ExternalQuery = this.externalQueryClass;
442
482
  return new ExternalQuery(this.compilers, {
@@ -821,6 +861,13 @@ class BaseQuery {
821
861
  return `SELECT ${this.selectAllDimensionsAndMeasures(measures)} FROM ${query} ${this.baseWhere(filters.concat(inlineWhereConditions))}` +
822
862
  (!this.safeEvaluateSymbolContext().ungrouped && this.groupByClause() || '');
823
863
  }
864
+ /**
865
+ * Returns SQL query for the "aggregating on top of sub-queries" uses cases.
866
+ * @param {string} keyCubeName
867
+ * @param {Array<BaseMeasure>} measures
868
+ * @param {Array<BaseFilter>} filters
869
+ * @returns {string}
870
+ */
824
871
  aggregateSubQuery(keyCubeName, measures, filters) {
825
872
  filters = filters || this.allFilters;
826
873
  const primaryKeyDimensions = this.primaryKeyNames(keyCubeName).map((k) => this.newDimension(k));
@@ -845,23 +892,30 @@ class BaseQuery {
845
892
  const selectedMeasures = shouldBuildJoinForMeasureSelect ? this.evaluateSymbolSqlWithContext(measureSelectFn, {
846
893
  ungroupedAliases: ramda_1.default.fromPairs(measures.map(m => [m.measure, m.aliasName()]))
847
894
  }) : measureSelectFn();
848
- const columnsForSelect = this.dimensionColumns(this.escapeColumnName('keys')).concat(selectedMeasures).filter(s => !!s).join(', ');
849
- const primaryKeyJoinConditions = primaryKeyDimensions.map((pkd) => `${this.escapeColumnName('keys')}.${pkd.aliasName()} = ${shouldBuildJoinForMeasureSelect ?
850
- `${this.cubeAlias(keyCubeName)}.${pkd.aliasName()}` :
851
- this.dimensionSql(pkd)}`).join(' AND ');
895
+ const columnsForSelect = this
896
+ .dimensionColumns(this.escapeColumnName(shared_1.QueryAlias.AGG_SUB_QUERY_KEYS))
897
+ .concat(selectedMeasures)
898
+ .filter(s => !!s)
899
+ .join(', ');
900
+ const primaryKeyJoinConditions = primaryKeyDimensions.map((pkd) => (`${this.escapeColumnName(shared_1.QueryAlias.AGG_SUB_QUERY_KEYS)}.${pkd.aliasName()} = ${shouldBuildJoinForMeasureSelect
901
+ ? `${this.cubeAlias(keyCubeName)}.${pkd.aliasName()}`
902
+ : this.dimensionSql(pkd)}`)).join(' AND ');
852
903
  const subQueryJoins = shouldBuildJoinForMeasureSelect ? [] : measureSubQueryDimensions.map(d => this.subQueryJoin(d));
853
904
  const joinSql = this.joinSql([
854
- { sql: `(${this.keysQuery(primaryKeyDimensions, filters)})`, alias: this.escapeColumnName('keys') },
905
+ {
906
+ sql: `(${this.keysQuery(primaryKeyDimensions, filters)})`,
907
+ alias: this.escapeColumnName(shared_1.QueryAlias.AGG_SUB_QUERY_KEYS),
908
+ },
855
909
  {
856
910
  sql: keyCubeSql,
857
911
  alias: keyCubeAlias,
858
912
  on: `${primaryKeyJoinConditions}
859
- ${keyCubeInlineLeftJoinConditions ? ` AND (${keyCubeInlineLeftJoinConditions})` : ''}`
913
+ ${keyCubeInlineLeftJoinConditions ? ` AND (${keyCubeInlineLeftJoinConditions})` : ''}`,
860
914
  },
861
915
  ...subQueryJoins
862
916
  ]);
863
917
  return `SELECT ${columnsForSelect} FROM ${joinSql}` +
864
- (!this.safeEvaluateSymbolContext().ungrouped && this.groupByClause() || '');
918
+ (!this.safeEvaluateSymbolContext().ungrouped && this.aggregateSubQueryGroupByClause() || '');
865
919
  }
866
920
  checkShouldBuildJoinForMeasureSelect(measures, keyCubeName) {
867
921
  return measures.map(measure => {
@@ -955,6 +1009,18 @@ class BaseQuery {
955
1009
  const context = { inlineWhereConditions };
956
1010
  return this.evaluateSymbolSqlWithContext(fn, context);
957
1011
  }
1012
+ /**
1013
+ * Returns `GROUP BY` clause for the "aggregating on top of sub-queries" uses
1014
+ * cases. By the default returns the result of the `groupByClause` method.
1015
+ * @returns {string}
1016
+ */
1017
+ aggregateSubQueryGroupByClause() {
1018
+ return this.groupByClause();
1019
+ }
1020
+ /**
1021
+ * Returns `GROUP BY` clause for the basic uses cases.
1022
+ * @returns {string}
1023
+ */
958
1024
  groupByClause() {
959
1025
  if (this.ungrouped) {
960
1026
  return '';
@@ -997,14 +1063,32 @@ class BaseQuery {
997
1063
  }
998
1064
  return ` ORDER BY ${orderByString}`;
999
1065
  }
1066
+ /**
1067
+ * Returns a complete list of the aliased dimensions, including time
1068
+ * dimensions.
1069
+ * @returns {Array<string>}
1070
+ */
1000
1071
  dimensionAliasNames() {
1001
1072
  return ramda_1.default.flatten(this.dimensionsForSelect().map(d => d.aliasName()).filter(d => !!d));
1002
1073
  }
1074
+ /**
1075
+ * Returns an array of column names correlated to the specified cube dimensions.
1076
+ * @param {string} cubeAlias
1077
+ * @returns {Array<string>}
1078
+ */
1003
1079
  dimensionColumns(cubeAlias) {
1004
1080
  return this.dimensionAliasNames().map(alias => `${cubeAlias && `${cubeAlias}.` || ''}${alias}`);
1005
1081
  }
1006
1082
  groupByDimensionLimit() {
1007
- const limitClause = this.rowLimit === null ? '' : ` LIMIT ${this.rowLimit && parseInt(this.rowLimit, 10) || 10000}`;
1083
+ let limitClause = '';
1084
+ if (this.rowLimit !== null) {
1085
+ if (this.rowLimit === shared_1.MAX_SOURCE_ROW_LIMIT) {
1086
+ limitClause = ` LIMIT ${this.paramAllocator.allocateParam(shared_1.MAX_SOURCE_ROW_LIMIT)}`;
1087
+ }
1088
+ else {
1089
+ limitClause = ` LIMIT ${this.rowLimit && parseInt(this.rowLimit, 10) || 10000}`;
1090
+ }
1091
+ }
1008
1092
  const offsetClause = this.offset ? ` OFFSET ${parseInt(this.offset, 10)}` : '';
1009
1093
  return `${limitClause}${offsetClause}`;
1010
1094
  }
@@ -1020,6 +1104,10 @@ class BaseQuery {
1020
1104
  forSelect() {
1021
1105
  return this.dimensionsForSelect().concat(this.measures);
1022
1106
  }
1107
+ /**
1108
+ * Returns a complete list of the dimensions, including time dimensions.
1109
+ * @returns {Array<BaseDimension>}
1110
+ */
1023
1111
  dimensionsForSelect() {
1024
1112
  return this.dimensions.concat(this.timeDimensions);
1025
1113
  }
@@ -1573,7 +1661,7 @@ class BaseQuery {
1573
1661
  throw new UserError_1.UserError(`Unknown pre-aggregation type '${preAggregation.type}' in '${cube}'`);
1574
1662
  }, { inputProps: { collectOriginalSqlPreAggregations: [] }, cache: this.queryCache });
1575
1663
  }
1576
- preAggregationReadOnly(cube, preAggregation) {
1664
+ preAggregationReadOnly(_cube, _preAggregation) {
1577
1665
  return false;
1578
1666
  }
1579
1667
  // eslint-disable-next-line consistent-return