@cubejs-backend/schema-compiler 1.6.68 → 1.7.1
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/BaseMeasure.d.ts.map +1 -1
- package/dist/src/adapter/BaseMeasure.js +1 -7
- package/dist/src/adapter/BaseMeasure.js.map +1 -1
- package/dist/src/adapter/BaseQuery.d.ts +0 -1
- package/dist/src/adapter/BaseQuery.d.ts.map +1 -1
- package/dist/src/adapter/BaseQuery.js +4 -15
- package/dist/src/adapter/BaseQuery.js.map +1 -1
- package/dist/src/adapter/BigqueryQuery.d.ts +0 -6
- package/dist/src/adapter/BigqueryQuery.d.ts.map +1 -1
- package/dist/src/adapter/BigqueryQuery.js +1 -12
- package/dist/src/adapter/BigqueryQuery.js.map +1 -1
- package/dist/src/adapter/ClickHouseQuery.d.ts.map +1 -1
- package/dist/src/adapter/ClickHouseQuery.js +1 -0
- package/dist/src/adapter/ClickHouseQuery.js.map +1 -1
- package/dist/src/adapter/MssqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MssqlQuery.js +1 -0
- package/dist/src/adapter/MssqlQuery.js.map +1 -1
- package/dist/src/adapter/MysqlQuery.d.ts.map +1 -1
- package/dist/src/adapter/MysqlQuery.js +1 -0
- package/dist/src/adapter/MysqlQuery.js.map +1 -1
- package/dist/src/adapter/OracleQuery.d.ts.map +1 -1
- package/dist/src/adapter/OracleQuery.js +1 -0
- package/dist/src/adapter/OracleQuery.js.map +1 -1
- package/dist/src/adapter/PostgresQuery.d.ts.map +1 -1
- package/dist/src/adapter/PostgresQuery.js +1 -0
- package/dist/src/adapter/PostgresQuery.js.map +1 -1
- package/dist/src/adapter/PrestodbQuery.d.ts.map +1 -1
- package/dist/src/adapter/PrestodbQuery.js +1 -0
- package/dist/src/adapter/PrestodbQuery.js.map +1 -1
- package/dist/src/adapter/QueryBuilder.d.ts.map +1 -1
- package/dist/src/adapter/QueryBuilder.js +0 -4
- package/dist/src/adapter/QueryBuilder.js.map +1 -1
- package/dist/src/adapter/RedshiftQuery.d.ts.map +1 -1
- package/dist/src/adapter/RedshiftQuery.js +3 -0
- package/dist/src/adapter/RedshiftQuery.js.map +1 -1
- package/dist/src/adapter/SnowflakeQuery.d.ts.map +1 -1
- package/dist/src/adapter/SnowflakeQuery.js +1 -0
- package/dist/src/adapter/SnowflakeQuery.js.map +1 -1
- package/dist/src/adapter/index.js +0 -2
- package/dist/src/adapter/index.js.map +1 -1
- package/dist/src/compiler/CubeSymbols.d.ts +0 -1
- package/dist/src/compiler/CubeSymbols.d.ts.map +1 -1
- package/dist/src/compiler/CubeSymbols.js.map +1 -1
- package/dist/src/compiler/CubeValidator.d.ts.map +1 -1
- package/dist/src/compiler/CubeValidator.js +6 -9
- package/dist/src/compiler/CubeValidator.js.map +1 -1
- package/package.json +9 -9
- package/dist/src/adapter/AWSElasticSearchQuery.d.ts +0 -9
- package/dist/src/adapter/AWSElasticSearchQuery.d.ts.map +0 -1
- package/dist/src/adapter/AWSElasticSearchQuery.js +0 -41
- package/dist/src/adapter/AWSElasticSearchQuery.js.map +0 -1
- package/dist/src/adapter/ElasticSearchQuery.d.ts +0 -23
- package/dist/src/adapter/ElasticSearchQuery.d.ts.map +0 -1
- package/dist/src/adapter/ElasticSearchQuery.js +0 -123
- package/dist/src/adapter/ElasticSearchQuery.js.map +0 -1
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { ElasticSearchQuery } from './ElasticSearchQuery';
|
|
2
|
-
export declare class AWSElasticSearchQuery extends ElasticSearchQuery {
|
|
3
|
-
newFilter(filter: any): any;
|
|
4
|
-
subtractInterval(date: any, interval: any): string;
|
|
5
|
-
addInterval(date: any, interval: any): string;
|
|
6
|
-
timeGroupedColumn(granularity: any, dimension: any): any;
|
|
7
|
-
unixTimestampSql(): string;
|
|
8
|
-
}
|
|
9
|
-
//# sourceMappingURL=AWSElasticSearchQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AWSElasticSearchQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/AWSElasticSearchQuery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAqB1D,qBAAa,qBAAsB,SAAQ,kBAAkB;IAC3C,SAAS,CAAC,MAAM,KAAA;IAIhB,gBAAgB,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAI/B,WAAW,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAI1B,iBAAiB,CAAC,WAAW,KAAA,EAAE,SAAS,KAAA;IAIxC,gBAAgB;CAGjC"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AWSElasticSearchQuery = void 0;
|
|
4
|
-
const BaseFilter_1 = require("./BaseFilter");
|
|
5
|
-
const ElasticSearchQuery_1 = require("./ElasticSearchQuery");
|
|
6
|
-
const GRANULARITY_TO_INTERVAL = {
|
|
7
|
-
day: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd 00:00:00.000')`,
|
|
8
|
-
// eslint-disable-next-line no-unused-vars,@typescript-eslint/no-unused-vars
|
|
9
|
-
week: (date) => { throw new Error('Week is unsupported'); },
|
|
10
|
-
hour: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:00:00.000')`,
|
|
11
|
-
minute: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:mm:00.000')`,
|
|
12
|
-
second: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-dd HH:mm:ss.000')`,
|
|
13
|
-
month: (date) => `DATE_FORMAT(${date}, 'yyyy-MM-01 00:00:00.000')`,
|
|
14
|
-
year: (date) => `DATE_FORMAT(${date}, 'yyyy-01-01 00:00:00.000')`
|
|
15
|
-
};
|
|
16
|
-
class AWSElasticSearchQueryFilter extends BaseFilter_1.BaseFilter {
|
|
17
|
-
likeIgnoreCase(column, not, param, type) {
|
|
18
|
-
const p = (!type || type === 'contains' || type === 'ends') ? '%' : '';
|
|
19
|
-
const s = (!type || type === 'contains' || type === 'starts') ? '%' : '';
|
|
20
|
-
return `${column}${not ? ' NOT' : ''} LIKE CONCAT('${p}', ${this.allocateParam(param)}, '${s}')`;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
class AWSElasticSearchQuery extends ElasticSearchQuery_1.ElasticSearchQuery {
|
|
24
|
-
newFilter(filter) {
|
|
25
|
-
return new AWSElasticSearchQueryFilter(this, filter);
|
|
26
|
-
}
|
|
27
|
-
subtractInterval(date, interval) {
|
|
28
|
-
return `DATE_SUB(${date}, INTERVAL ${interval})`;
|
|
29
|
-
}
|
|
30
|
-
addInterval(date, interval) {
|
|
31
|
-
return `DATE_ADD(${date}, INTERVAL ${interval})`;
|
|
32
|
-
}
|
|
33
|
-
timeGroupedColumn(granularity, dimension) {
|
|
34
|
-
return GRANULARITY_TO_INTERVAL[granularity](dimension);
|
|
35
|
-
}
|
|
36
|
-
unixTimestampSql() {
|
|
37
|
-
return 'EXTRACT(EPOCH FROM NOW())';
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
exports.AWSElasticSearchQuery = AWSElasticSearchQuery;
|
|
41
|
-
//# sourceMappingURL=AWSElasticSearchQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AWSElasticSearchQuery.js","sourceRoot":"","sources":["../../../src/adapter/AWSElasticSearchQuery.ts"],"names":[],"mappings":";;;AAAA,6CAA0C;AAC1C,6DAA0D;AAE1D,MAAM,uBAAuB,GAAG;IAC9B,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;IAChE,4EAA4E;IAC5E,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;IACjE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;IACnE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;IACnE,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;IAClE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,IAAI,8BAA8B;CAClE,CAAC;AAEF,MAAM,2BAA4B,SAAQ,uBAAU;IAC3C,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI;QAC5C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;IACnG,CAAC;CACF;AAED,MAAa,qBAAsB,SAAQ,uCAAkB;IAC3C,SAAS,CAAC,MAAM;QAC9B,OAAO,IAAI,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAEe,gBAAgB,CAAC,IAAI,EAAE,QAAQ;QAC7C,OAAO,YAAY,IAAI,cAAc,QAAQ,GAAG,CAAC;IACnD,CAAC;IAEe,WAAW,CAAC,IAAI,EAAE,QAAQ;QACxC,OAAO,YAAY,IAAI,cAAc,QAAQ,GAAG,CAAC;IACnD,CAAC;IAEe,iBAAiB,CAAC,WAAW,EAAE,SAAS;QACtD,OAAO,uBAAuB,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,CAAC;IACzD,CAAC;IAEe,gBAAgB;QAC9B,OAAO,2BAA2B,CAAC;IACrC,CAAC;CACF;AApBD,sDAoBC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import { BaseQuery } from './BaseQuery';
|
|
2
|
-
export declare class ElasticSearchQuery extends BaseQuery {
|
|
3
|
-
newFilter(filter: any): any;
|
|
4
|
-
convertTz(field: any): string;
|
|
5
|
-
timeStampCast(value: any): string;
|
|
6
|
-
dateTimeCast(value: any): string;
|
|
7
|
-
subtractInterval(date: any, interval: any): string;
|
|
8
|
-
addInterval(date: any, interval: any): string;
|
|
9
|
-
timeGroupedColumn(granularity: any, dimension: any): any;
|
|
10
|
-
unixTimestampSql(): string;
|
|
11
|
-
groupByClause(): string;
|
|
12
|
-
orderHashToString(hash: {
|
|
13
|
-
id: string;
|
|
14
|
-
desc: boolean;
|
|
15
|
-
}): string | null;
|
|
16
|
-
/**
|
|
17
|
-
* This implementation is a bit different from the one in BaseQuery
|
|
18
|
-
* as it uses dimensionSql() as ordering expression
|
|
19
|
-
*/
|
|
20
|
-
getFieldAlias(id: string): string | null;
|
|
21
|
-
escapeColumnName(name: any): string;
|
|
22
|
-
}
|
|
23
|
-
//# sourceMappingURL=ElasticSearchQuery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ElasticSearchQuery.d.ts","sourceRoot":"","sources":["../../../src/adapter/ElasticSearchQuery.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AA6BxC,qBAAa,kBAAmB,SAAQ,SAAS;IAC/B,SAAS,CAAC,MAAM,KAAA;IAIhB,SAAS,CAAC,KAAK,KAAA;IAIf,aAAa,CAAC,KAAK,KAAA;IAInB,YAAY,CAAC,KAAK,KAAA;IAIlB,gBAAgB,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAK/B,WAAW,CAAC,IAAI,KAAA,EAAE,QAAQ,KAAA;IAK1B,iBAAiB,CAAC,WAAW,KAAA,EAAE,SAAS,KAAA;IAIxC,gBAAgB;IAIhB,aAAa;IAYb,iBAAiB,CAAC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE;IAerE;;;OAGG;IACI,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAsD/B,gBAAgB,CAAC,IAAI,KAAA;CAGtC"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.ElasticSearchQuery = void 0;
|
|
7
|
-
/* eslint-disable max-classes-per-file */
|
|
8
|
-
const ramda_1 = __importDefault(require("ramda"));
|
|
9
|
-
const shared_1 = require("@cubejs-backend/shared");
|
|
10
|
-
const BaseQuery_1 = require("./BaseQuery");
|
|
11
|
-
const BaseFilter_1 = require("./BaseFilter");
|
|
12
|
-
const GRANULARITY_TO_INTERVAL = {
|
|
13
|
-
day: date => `DATE_TRUNC('day', ${date}::datetime)`,
|
|
14
|
-
week: date => `DATE_TRUNC('week', ${date}::datetime)`,
|
|
15
|
-
hour: date => `DATE_TRUNC('hour', ${date}::datetime)`,
|
|
16
|
-
minute: date => `DATE_TRUNC('minute', ${date}::datetime)`,
|
|
17
|
-
second: date => `DATE_TRUNC('second', ${date}::datetime)`,
|
|
18
|
-
month: date => `DATE_TRUNC('month', ${date}::datetime)`,
|
|
19
|
-
quarter: date => `DATE_TRUNC('quarter', ${date}::datetime)`,
|
|
20
|
-
year: date => `DATE_TRUNC('year', ${date}::datetime)`
|
|
21
|
-
};
|
|
22
|
-
class ElasticSearchQueryFilter extends BaseFilter_1.BaseFilter {
|
|
23
|
-
likeIgnoreCase(column, not, param, type) {
|
|
24
|
-
if (type === 'starts') {
|
|
25
|
-
return `${not ? ' NOT' : ''} WHERE ${column} LIKE ${this.allocateParam(param)}%`;
|
|
26
|
-
}
|
|
27
|
-
else if (type === 'ends') {
|
|
28
|
-
return `${not ? ' NOT' : ''} WHERE ${column} LIKE %${this.allocateParam(param)}`;
|
|
29
|
-
}
|
|
30
|
-
else {
|
|
31
|
-
return `${not ? ' NOT' : ''} MATCH(${column}, ${this.allocateParam(param)}, 'fuzziness=AUTO:1,5')`;
|
|
32
|
-
}
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
class ElasticSearchQuery extends BaseQuery_1.BaseQuery {
|
|
36
|
-
newFilter(filter) {
|
|
37
|
-
return new ElasticSearchQueryFilter(this, filter);
|
|
38
|
-
}
|
|
39
|
-
convertTz(field) {
|
|
40
|
-
return `${field}`; // TODO
|
|
41
|
-
}
|
|
42
|
-
timeStampCast(value) {
|
|
43
|
-
return `${value}`;
|
|
44
|
-
}
|
|
45
|
-
dateTimeCast(value) {
|
|
46
|
-
return `${value}`; // TODO
|
|
47
|
-
}
|
|
48
|
-
subtractInterval(date, interval) {
|
|
49
|
-
// TODO: Test this, note sure how value gets populated here
|
|
50
|
-
return `${date} - INTERVAL ${interval}`;
|
|
51
|
-
}
|
|
52
|
-
addInterval(date, interval) {
|
|
53
|
-
// TODO: Test this, note sure how value gets populated here
|
|
54
|
-
return `${date} + INTERVAL ${interval}`;
|
|
55
|
-
}
|
|
56
|
-
timeGroupedColumn(granularity, dimension) {
|
|
57
|
-
return GRANULARITY_TO_INTERVAL[granularity](dimension);
|
|
58
|
-
}
|
|
59
|
-
unixTimestampSql() {
|
|
60
|
-
return 'TIMESTAMP_DIFF(\'seconds\', \'1970-01-01T00:00:00.000Z\'::datetime, CURRENT_TIMESTAMP())';
|
|
61
|
-
}
|
|
62
|
-
groupByClause() {
|
|
63
|
-
if (this.ungrouped) {
|
|
64
|
-
return '';
|
|
65
|
-
}
|
|
66
|
-
const dimensionsForSelect = this.dimensionsForSelect();
|
|
67
|
-
const dimensionColumns = ramda_1.default.flatten(dimensionsForSelect.map(s => s.selectColumns() && s.dimensionSql())).filter(s => !!s);
|
|
68
|
-
return dimensionColumns.length ? ` GROUP BY ${dimensionColumns.join(', ')}` : '';
|
|
69
|
-
}
|
|
70
|
-
orderHashToString(hash) {
|
|
71
|
-
if (!hash || !hash.id) {
|
|
72
|
-
return null;
|
|
73
|
-
}
|
|
74
|
-
const fieldAlias = this.getFieldAlias(hash.id);
|
|
75
|
-
if (fieldAlias === null) {
|
|
76
|
-
return null;
|
|
77
|
-
}
|
|
78
|
-
const direction = hash.desc ? 'DESC' : 'ASC';
|
|
79
|
-
return `${fieldAlias} ${direction}`;
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* This implementation is a bit different from the one in BaseQuery
|
|
83
|
-
* as it uses dimensionSql() as ordering expression
|
|
84
|
-
*/
|
|
85
|
-
getFieldAlias(id) {
|
|
86
|
-
const equalIgnoreCase = (a, b) => (typeof a === 'string' && typeof b === 'string' && a.toUpperCase() === b.toUpperCase());
|
|
87
|
-
let field;
|
|
88
|
-
const path = id.split('.');
|
|
89
|
-
// Granularity is specified
|
|
90
|
-
if (path.length === 3) {
|
|
91
|
-
const memberName = path.slice(0, 2).join('.');
|
|
92
|
-
const granularity = path[2];
|
|
93
|
-
field = this.timeDimensions
|
|
94
|
-
// Not all time dimensions are used in select list, some are just filters,
|
|
95
|
-
// but they exist in this.timeDimensions, so need to filter them out
|
|
96
|
-
.filter(d => d.selectColumns())
|
|
97
|
-
.find(d => ((equalIgnoreCase(d.dimension, memberName) && (d.granularityObj?.granularity === granularity)) ||
|
|
98
|
-
equalIgnoreCase(d.expressionName, memberName)));
|
|
99
|
-
if (field) {
|
|
100
|
-
return field.dimensionSql();
|
|
101
|
-
}
|
|
102
|
-
return null;
|
|
103
|
-
}
|
|
104
|
-
const dimensionsForSelect = this.dimensionsForSelect()
|
|
105
|
-
// Not all time dimensions are used in select list, some are just filters,
|
|
106
|
-
// but they exist in this.timeDimensions, so need to filter them out
|
|
107
|
-
.filter(d => d.selectColumns());
|
|
108
|
-
const found = (0, shared_1.findMinGranularityDimension)(id, dimensionsForSelect);
|
|
109
|
-
if (found?.dimension) {
|
|
110
|
-
return found.dimension.dimensionSql();
|
|
111
|
-
}
|
|
112
|
-
field = this.measures.find(d => equalIgnoreCase(d.measure, id) || equalIgnoreCase(d.expressionName, id));
|
|
113
|
-
if (field) {
|
|
114
|
-
return field.aliasName(); // TODO isn't supported
|
|
115
|
-
}
|
|
116
|
-
return null;
|
|
117
|
-
}
|
|
118
|
-
escapeColumnName(name) {
|
|
119
|
-
return `${name}`;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
exports.ElasticSearchQuery = ElasticSearchQuery;
|
|
123
|
-
//# sourceMappingURL=ElasticSearchQuery.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ElasticSearchQuery.js","sourceRoot":"","sources":["../../../src/adapter/ElasticSearchQuery.ts"],"names":[],"mappings":"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"}
|