@cubejs-backend/schema-compiler 1.7.30 → 1.7.32
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.
- package/dist/src/adapter/BaseQuery.d.ts +27 -0
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +85 -17
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/Granularity.d.ts.map +1 -1
- package/dist/src/adapter/Granularity.js +6 -0
- package/dist/src/adapter/Granularity.js.map +1 -1
- package/dist/src/adapter/MongoBiQuery.d.ts +1 -0
- package/dist/src/adapter/MongoBiQuery.d.ts.map +1 -1
- package/dist/src/adapter/MongoBiQuery.js +18 -0
- package/dist/src/adapter/MongoBiQuery.js.map +1 -1
- package/dist/src/adapter/MssqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MssqlQuery.js +2 -0
- package/dist/src/adapter/MssqlQuery.js.map +1 -1
- package/dist/src/adapter/PrestodbQuery.d.ts.map +1 -1
- package/dist/src/adapter/PrestodbQuery.js +5 -0
- package/dist/src/adapter/PrestodbQuery.js.map +1 -1
- package/dist/src/compiler/CubeEvaluator.d.ts +2 -1
- package/dist/src/compiler/CubeEvaluator.d.ts.map +1 -1
- package/dist/src/compiler/CubeEvaluator.js.map +1 -1
- package/dist/src/compiler/CubeValidator.d.ts +1 -0
- package/dist/src/compiler/CubeValidator.d.ts.map +1 -1
- package/dist/src/compiler/CubeValidator.js +24 -1
- package/dist/src/compiler/CubeValidator.js.map +1 -1
- package/package.json +7 -7
|
@@ -130,6 +130,7 @@ export class BaseQuery {
|
|
|
130
130
|
}[] | undefined;
|
|
131
131
|
useNativeSqlPlanner: any;
|
|
132
132
|
canUseNativeSqlPlannerPreAggregation: any;
|
|
133
|
+
localRefreshKey: any;
|
|
133
134
|
queryLevelJoinHints: any;
|
|
134
135
|
cubeAliasPrefix: any;
|
|
135
136
|
preAggregationsSchemaOption: any;
|
|
@@ -803,6 +804,32 @@ export class BaseQuery {
|
|
|
803
804
|
interval: number;
|
|
804
805
|
dayOffset: number;
|
|
805
806
|
};
|
|
807
|
+
/**
|
|
808
|
+
* Both the rendered SQL and the descriptor handed to the orchestrator for local
|
|
809
|
+
* evaluation derive from this, so they cannot disagree on the formula.
|
|
810
|
+
*
|
|
811
|
+
* @return {{ utcOffset: number, interval: number, dayOffset: number, cron: boolean }}
|
|
812
|
+
*/
|
|
813
|
+
everyRefreshKeyParts(refreshKey: any): {
|
|
814
|
+
utcOffset: number;
|
|
815
|
+
interval: number;
|
|
816
|
+
dayOffset: number;
|
|
817
|
+
cron: boolean;
|
|
818
|
+
};
|
|
819
|
+
/**
|
|
820
|
+
* @protected
|
|
821
|
+
* @param {BaseQuery} [query] the instance that rendered the SQL, when it differs from `this`
|
|
822
|
+
*/
|
|
823
|
+
protected localRefreshKeyOptions(refreshKey: any, query?: BaseQuery | undefined): {
|
|
824
|
+
localRefreshKey: {
|
|
825
|
+
utcOffset: number;
|
|
826
|
+
interval: number;
|
|
827
|
+
dayOffset: number;
|
|
828
|
+
cron: boolean;
|
|
829
|
+
};
|
|
830
|
+
} | {
|
|
831
|
+
localRefreshKey?: undefined;
|
|
832
|
+
};
|
|
806
833
|
everyRefreshKeySql(refreshKey: any, external?: boolean): any;
|
|
807
834
|
granularityFor(momentDate: any): "hour" | "day" | "week" | "month" | "year" | "minute" | "second";
|
|
808
835
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"AA8DA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AAEH;;;;;GAKG;AAEH;;GAEG;AAEH;;;;;;;;;;;;GAYG;AACH;
|
|
1
|
+
{"version":3,"file":"BaseQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/BaseQuery.js"],"names":[],"mappings":"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"}
|
|
@@ -256,6 +256,7 @@ class BaseQuery {
|
|
|
256
256
|
memberToAlias: this.options.memberToAlias,
|
|
257
257
|
expressionParams: this.options.expressionParams,
|
|
258
258
|
convertTzForRawTimeDimension: this.options.convertTzForRawTimeDimension,
|
|
259
|
+
localRefreshKey: this.options.localRefreshKey,
|
|
259
260
|
from: this.options.from,
|
|
260
261
|
multiStageQuery: this.options.multiStageQuery,
|
|
261
262
|
multiStageDimensions: this.options.multiStageDimensions,
|
|
@@ -325,6 +326,9 @@ class BaseQuery {
|
|
|
325
326
|
// toggled independently. The neverUseSqlPlannerPreaggregation() guard still opts
|
|
326
327
|
// specific query types (e.g. CubeStoreQuery) out for correctness.
|
|
327
328
|
this.canUseNativeSqlPlannerPreAggregation = this.useNativeSqlPlanner && !this.neverUseSqlPlannerPreaggregation();
|
|
329
|
+
// Gated at emit time so that with the flag off the refresh key tuples stay
|
|
330
|
+
// byte-identical and nothing downstream re-hashes to a new cache key.
|
|
331
|
+
this.localRefreshKey = this.options.localRefreshKey ?? (0, shared_1.getEnv)('refreshKeyLocalTime');
|
|
328
332
|
this.queryLevelJoinHints = this.options.joinHints ?? [];
|
|
329
333
|
this.prebuildJoin();
|
|
330
334
|
this.cubeAliasPrefix = this.options.cubeAliasPrefix;
|
|
@@ -1529,11 +1533,20 @@ class BaseQuery {
|
|
|
1529
1533
|
// If we have custom granularities in time dimension
|
|
1530
1534
|
if (td.granularities) {
|
|
1531
1535
|
for (const granularityName of Object.keys(td.granularities)) {
|
|
1532
|
-
const
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1536
|
+
const granularity = this.cubeEvaluator.resolveGranularity([cube, tdName, 'granularities', granularityName]);
|
|
1537
|
+
// A granularity that only overrides the SQL of its time dimension has no
|
|
1538
|
+
// interval to derive a hierarchy from. Such a granularity can only be
|
|
1539
|
+
// matched by a rollup declaring it by name, which is what a missing
|
|
1540
|
+
// hierarchy entry already means.
|
|
1541
|
+
// An unresolvable granularity is a different matter and keeps
|
|
1542
|
+
// reporting itself from the constructor below.
|
|
1543
|
+
if (!granularity || granularity.interval) {
|
|
1544
|
+
const grObj = new Granularity_1.Granularity(this, { dimension: dimensionKey, granularity: granularityName });
|
|
1545
|
+
hierarchies[`${dimensionKey}.${granularityName}`] = [
|
|
1546
|
+
granularityName,
|
|
1547
|
+
...standardGranularitiesParents[grObj.minGranularity()],
|
|
1548
|
+
];
|
|
1549
|
+
}
|
|
1537
1550
|
}
|
|
1538
1551
|
}
|
|
1539
1552
|
}
|
|
@@ -3398,6 +3411,7 @@ class BaseQuery {
|
|
|
3398
3411
|
externalQueryClass: this.options.externalQueryClass,
|
|
3399
3412
|
queryFactory: this.options.queryFactory,
|
|
3400
3413
|
useNativeSqlPlanner: this.options.useNativeSqlPlanner,
|
|
3414
|
+
localRefreshKey: this.options.localRefreshKey,
|
|
3401
3415
|
...options,
|
|
3402
3416
|
};
|
|
3403
3417
|
}
|
|
@@ -3432,18 +3446,21 @@ class BaseQuery {
|
|
|
3432
3446
|
this.refreshKeySelect(sql),
|
|
3433
3447
|
{
|
|
3434
3448
|
external,
|
|
3435
|
-
renewalThreshold: this.refreshKeyRenewalThresholdForInterval(cubeFromPath.refreshKey)
|
|
3449
|
+
renewalThreshold: this.refreshKeyRenewalThresholdForInterval(cubeFromPath.refreshKey),
|
|
3450
|
+
...this.localRefreshKeyOptions(cubeFromPath.refreshKey, query)
|
|
3436
3451
|
},
|
|
3437
3452
|
query
|
|
3438
3453
|
];
|
|
3439
3454
|
}
|
|
3440
3455
|
}
|
|
3441
|
-
const
|
|
3456
|
+
const defaultEveryRefreshKey = this.defaultEveryRefreshKey();
|
|
3457
|
+
const [sql, external, query] = this.everyRefreshKeySql(defaultEveryRefreshKey);
|
|
3442
3458
|
return [
|
|
3443
3459
|
this.refreshKeySelect(sql),
|
|
3444
3460
|
{
|
|
3445
3461
|
external,
|
|
3446
|
-
renewalThreshold: this.defaultRefreshKeyRenewalThreshold()
|
|
3462
|
+
renewalThreshold: this.defaultRefreshKeyRenewalThreshold(),
|
|
3463
|
+
...this.localRefreshKeyOptions(defaultEveryRefreshKey, query)
|
|
3447
3464
|
},
|
|
3448
3465
|
query
|
|
3449
3466
|
];
|
|
@@ -3640,8 +3657,27 @@ class BaseQuery {
|
|
|
3640
3657
|
FLOOR: 'FLOOR({{ args_concat }})',
|
|
3641
3658
|
CEIL: 'CEIL({{ args_concat }})',
|
|
3642
3659
|
TRUNC: 'TRUNC({{ args_concat }})',
|
|
3660
|
+
// Window functions. The SQL API resolves a window function to `functions/<NAME>`
|
|
3661
|
+
// just like any other function, so a built-in without an entry here is never
|
|
3662
|
+
// pushed down: the window, and everything computed on top of it, is left to
|
|
3663
|
+
// post processing over a row-capped result. These are the SQL:2003 window
|
|
3664
|
+
// functions, supported by every dialect that supports windowing at all, so they
|
|
3665
|
+
// live in the base and a dialect missing one deletes it.
|
|
3643
3666
|
LAG: 'LAG({{ args_concat }})',
|
|
3644
3667
|
LEAD: 'LEAD({{ args_concat }})',
|
|
3668
|
+
ROW_NUMBER: 'ROW_NUMBER({{ args_concat }})',
|
|
3669
|
+
RANK: 'RANK({{ args_concat }})',
|
|
3670
|
+
DENSE_RANK: 'DENSE_RANK({{ args_concat }})',
|
|
3671
|
+
PERCENT_RANK: 'PERCENT_RANK({{ args_concat }})',
|
|
3672
|
+
CUME_DIST: 'CUME_DIST({{ args_concat }})',
|
|
3673
|
+
// Unreachable from the SQL API until CORE-831: DataFusion types NTILE's argument
|
|
3674
|
+
// `Exact([UInt64])` and will not coerce an integer literal to it, so the query
|
|
3675
|
+
// fails to plan. Kept because the template itself is right - once the fork's
|
|
3676
|
+
// signature is relaxed, NTILE pushes down with no change here.
|
|
3677
|
+
NTILE: 'NTILE({{ args_concat }})',
|
|
3678
|
+
FIRST_VALUE: 'FIRST_VALUE({{ args_concat }})',
|
|
3679
|
+
LAST_VALUE: 'LAST_VALUE({{ args_concat }})',
|
|
3680
|
+
NTH_VALUE: 'NTH_VALUE({{ args_concat }})',
|
|
3645
3681
|
// There is a difference in behaviour of these function processing in different DBs and DWHs.
|
|
3646
3682
|
// The SQL standard requires greatest and least to return null in case one argument is null.
|
|
3647
3683
|
// However, many DBMS ignore NULL values (mostly because greatest and least were often supported
|
|
@@ -3933,17 +3969,42 @@ class BaseQuery {
|
|
|
3933
3969
|
dayOffset,
|
|
3934
3970
|
};
|
|
3935
3971
|
}
|
|
3972
|
+
/**
|
|
3973
|
+
* Both the rendered SQL and the descriptor handed to the orchestrator for local
|
|
3974
|
+
* evaluation derive from this, so they cannot disagree on the formula.
|
|
3975
|
+
*
|
|
3976
|
+
* @return {{ utcOffset: number, interval: number, dayOffset: number, cron: boolean }}
|
|
3977
|
+
*/
|
|
3978
|
+
everyRefreshKeyParts(refreshKey) {
|
|
3979
|
+
const every = refreshKey.every || '1 hour';
|
|
3980
|
+
if (/^(\d+) (second|minute|hour|day|week)s?$/.test(every)) {
|
|
3981
|
+
return {
|
|
3982
|
+
utcOffset: this.timezone ? moment_timezone_1.default.tz(this.timezone).utcOffset() * 60 : 0,
|
|
3983
|
+
interval: this.parseSecondDuration(every),
|
|
3984
|
+
dayOffset: 0,
|
|
3985
|
+
cron: false,
|
|
3986
|
+
};
|
|
3987
|
+
}
|
|
3988
|
+
return { ...this.calcIntervalForCronString(refreshKey), cron: true };
|
|
3989
|
+
}
|
|
3990
|
+
/**
|
|
3991
|
+
* @protected
|
|
3992
|
+
* @param {BaseQuery} [query] the instance that rendered the SQL, when it differs from `this`
|
|
3993
|
+
*/
|
|
3994
|
+
localRefreshKeyOptions(refreshKey, query) {
|
|
3995
|
+
return this.localRefreshKey
|
|
3996
|
+
? { localRefreshKey: (query || this).everyRefreshKeyParts(refreshKey) }
|
|
3997
|
+
: {};
|
|
3998
|
+
}
|
|
3936
3999
|
everyRefreshKeySql(refreshKey, external = false) {
|
|
3937
4000
|
if (this.externalQueryClass) {
|
|
3938
4001
|
return this.externalQuery().everyRefreshKeySql(refreshKey, true);
|
|
3939
4002
|
}
|
|
3940
|
-
const
|
|
3941
|
-
if (
|
|
3942
|
-
const utcOffset = this.timezone ? moment_timezone_1.default.tz(this.timezone).utcOffset() * 60 : 0;
|
|
4003
|
+
const { utcOffset, interval, dayOffset, cron } = this.everyRefreshKeyParts(refreshKey);
|
|
4004
|
+
if (!cron) {
|
|
3943
4005
|
const utcOffsetPrefix = utcOffset ? `${utcOffset} + ` : '';
|
|
3944
|
-
return [this.floorSql(`(${utcOffsetPrefix}${this.unixTimestampSql()}) / ${
|
|
4006
|
+
return [this.floorSql(`(${utcOffsetPrefix}${this.unixTimestampSql()}) / ${interval}`), external, this];
|
|
3945
4007
|
}
|
|
3946
|
-
const { dayOffset, utcOffset, interval } = this.calcIntervalForCronString(refreshKey);
|
|
3947
4008
|
/**
|
|
3948
4009
|
* Small explanation how it works for every `0 8 * * *`
|
|
3949
4010
|
* 28800 is a $dayOffset
|
|
@@ -4098,6 +4159,12 @@ class BaseQuery {
|
|
|
4098
4159
|
}
|
|
4099
4160
|
}
|
|
4100
4161
|
if (preAggregation.refreshKey.every || preAggregation.refreshKey.incremental) {
|
|
4162
|
+
// An incremental key is wrapped into `CASE WHEN NOW() < <dateTo + updateWindow>`
|
|
4163
|
+
// against an allocated partition range param, so it is not reproducible from
|
|
4164
|
+
// a time interval alone.
|
|
4165
|
+
const localRefreshKeyOptions = preAggregation.refreshKey.incremental
|
|
4166
|
+
? {}
|
|
4167
|
+
: this.localRefreshKeyOptions(preAggregation.refreshKey, refreshKeyQuery);
|
|
4101
4168
|
return [
|
|
4102
4169
|
refreshKeyQuery.paramAllocator.buildSqlAndParams(this.refreshKeySelect(refreshKey)).concat({
|
|
4103
4170
|
external: refreshKeyExternal,
|
|
@@ -4106,7 +4173,8 @@ class BaseQuery {
|
|
|
4106
4173
|
updateWindowSeconds: preAggregation.refreshKey.updateWindow &&
|
|
4107
4174
|
this.parseSecondDuration(preAggregation.refreshKey.updateWindow),
|
|
4108
4175
|
renewalThresholdOutsideUpdateWindow: preAggregation.refreshKey.incremental &&
|
|
4109
|
-
24 * 60 * 60
|
|
4176
|
+
24 * 60 * 60,
|
|
4177
|
+
...localRefreshKeyOptions
|
|
4110
4178
|
})
|
|
4111
4179
|
];
|
|
4112
4180
|
}
|
|
@@ -4121,14 +4189,14 @@ class BaseQuery {
|
|
|
4121
4189
|
const cubeFromPath = this.cubeEvaluator.cubeFromPath(cube);
|
|
4122
4190
|
return preAggregationQueryForSql.evaluateSymbolSqlWithContext(() => preAggregationQueryForSql.cacheKeyQueries((refreshKeyCube, [refreshKeySQL, refreshKeyQueryOptions, refreshKeyQuery]) => {
|
|
4123
4191
|
if (!cubeFromPath.refreshKey) {
|
|
4124
|
-
const
|
|
4125
|
-
|
|
4126
|
-
});
|
|
4192
|
+
const hourlyRefreshKey = { every: '1 hour' };
|
|
4193
|
+
const [sql, external, query] = this.everyRefreshKeySql(hourlyRefreshKey);
|
|
4127
4194
|
return [
|
|
4128
4195
|
this.refreshKeySelect(sql),
|
|
4129
4196
|
{
|
|
4130
4197
|
external,
|
|
4131
4198
|
renewalThreshold: this.defaultRefreshKeyRenewalThreshold(),
|
|
4199
|
+
...this.localRefreshKeyOptions(hourlyRefreshKey, query)
|
|
4132
4200
|
},
|
|
4133
4201
|
query
|
|
4134
4202
|
];
|