@cubejs-client/core 0.28.45 → 0.28.52
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/CHANGELOG.md +11 -0
- package/dist/cubejs-client-core.esm.js +15 -10
- package/dist/cubejs-client-core.esm.js.map +1 -1
- package/dist/cubejs-client-core.js +15 -10
- package/dist/cubejs-client-core.js.map +1 -1
- package/dist/cubejs-client-core.umd.js +15 -10
- package/dist/cubejs-client-core.umd.js.map +1 -1
- package/package.json +2 -2
- package/src/ResultSet.js +10 -10
- package/src/tests/granularity.test.js +110 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cubejs-client/core",
|
|
3
|
-
"version": "0.28.
|
|
3
|
+
"version": "0.28.52",
|
|
4
4
|
"engines": {},
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"eslint-plugin-node": "^5.2.1",
|
|
46
46
|
"jest": "^26.0.1"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "22f1fcf3dc77d5784eda6b8eff8bcd430652cc69"
|
|
49
49
|
}
|
package/src/ResultSet.js
CHANGED
|
@@ -9,12 +9,12 @@ import {
|
|
|
9
9
|
|
|
10
10
|
import { aliasSeries } from './utils';
|
|
11
11
|
|
|
12
|
-
dayjs.locale({
|
|
13
|
-
...en,
|
|
14
|
-
weekStart: 1,
|
|
15
|
-
});
|
|
16
12
|
dayjs.extend(quarterOfYear);
|
|
17
13
|
|
|
14
|
+
// When granularity is week, weekStart Value must be 1. However, since the client can change it globally (https://day.js.org/docs/en/i18n/changing-locale)
|
|
15
|
+
// So the function below has been added.
|
|
16
|
+
const internalDayjs = (...args) => dayjs(...args).locale({ ...en, weekStart: 1 });
|
|
17
|
+
|
|
18
18
|
export const TIME_SERIES = {
|
|
19
19
|
day: (range) => range.by('d').map(d => d.format('YYYY-MM-DDT00:00:00.000')),
|
|
20
20
|
month: (range) => range.snapTo('month').by('M').map(d => d.format('YYYY-MM-01T00:00:00.000')),
|
|
@@ -60,8 +60,8 @@ export const dayRange = (from, to) => ({
|
|
|
60
60
|
by: (value) => {
|
|
61
61
|
const results = [];
|
|
62
62
|
|
|
63
|
-
let start =
|
|
64
|
-
const end =
|
|
63
|
+
let start = internalDayjs(from);
|
|
64
|
+
const end = internalDayjs(to);
|
|
65
65
|
|
|
66
66
|
while (start.isBefore(end) || start.isSame(end)) {
|
|
67
67
|
results.push(start);
|
|
@@ -70,9 +70,9 @@ export const dayRange = (from, to) => ({
|
|
|
70
70
|
|
|
71
71
|
return results;
|
|
72
72
|
},
|
|
73
|
-
snapTo: (value) => dayRange(
|
|
74
|
-
start:
|
|
75
|
-
end:
|
|
73
|
+
snapTo: (value) => dayRange(internalDayjs(from).startOf(value), internalDayjs(to).endOf(value)),
|
|
74
|
+
start: internalDayjs(from),
|
|
75
|
+
end: internalDayjs(to),
|
|
76
76
|
});
|
|
77
77
|
|
|
78
78
|
export const QUERY_TYPE = {
|
|
@@ -318,7 +318,7 @@ class ResultSet {
|
|
|
318
318
|
if (!dateRange) {
|
|
319
319
|
const member = ResultSet.timeDimensionMember(timeDimension);
|
|
320
320
|
const dates = pipe(
|
|
321
|
-
map(row => row[member] &&
|
|
321
|
+
map(row => row[member] && internalDayjs(row[member])),
|
|
322
322
|
filter(Boolean)
|
|
323
323
|
)(this.timeDimensionBackwardCompatibleData(resultIndex));
|
|
324
324
|
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import 'jest';
|
|
2
|
-
|
|
2
|
+
import dayjs from 'dayjs';
|
|
3
|
+
import ko from 'dayjs/locale/ko';
|
|
3
4
|
import ResultSet from '../ResultSet';
|
|
4
5
|
|
|
5
6
|
describe('ResultSet Granularity', () => {
|
|
@@ -110,5 +111,113 @@ describe('ResultSet Granularity', () => {
|
|
|
110
111
|
},
|
|
111
112
|
]);
|
|
112
113
|
});
|
|
114
|
+
|
|
115
|
+
test('week granularity in other locale', () => {
|
|
116
|
+
dayjs.locale(ko);
|
|
117
|
+
const result = new ResultSet({
|
|
118
|
+
queryType: 'regularQuery',
|
|
119
|
+
results: [
|
|
120
|
+
{
|
|
121
|
+
query: {
|
|
122
|
+
measures: ['LineItems.count'],
|
|
123
|
+
timeDimensions: [
|
|
124
|
+
{
|
|
125
|
+
dimension: 'LineItems.createdAt',
|
|
126
|
+
granularity: 'week',
|
|
127
|
+
dateRange: ['2019-01-08T00:00:00.000', '2019-01-18T00:00:00.000'],
|
|
128
|
+
},
|
|
129
|
+
],
|
|
130
|
+
filters: [
|
|
131
|
+
{
|
|
132
|
+
operator: 'equals',
|
|
133
|
+
values: ['us-ut'],
|
|
134
|
+
member: 'Users.state',
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
limit: 2,
|
|
138
|
+
rowLimit: 2,
|
|
139
|
+
timezone: 'UTC',
|
|
140
|
+
order: [],
|
|
141
|
+
dimensions: [],
|
|
142
|
+
queryType: 'regularQuery',
|
|
143
|
+
},
|
|
144
|
+
data: [
|
|
145
|
+
{
|
|
146
|
+
'LineItems.createdAt.week': '2019-01-07T00:00:00.000',
|
|
147
|
+
'LineItems.createdAt': '2019-01-07T00:00:00.000',
|
|
148
|
+
'LineItems.count': '2',
|
|
149
|
+
},
|
|
150
|
+
],
|
|
151
|
+
lastRefreshTime: '2021-07-07T14:31:30.458Z',
|
|
152
|
+
annotation: {
|
|
153
|
+
measures: {
|
|
154
|
+
'LineItems.count': {
|
|
155
|
+
title: 'Line Items Count',
|
|
156
|
+
shortTitle: 'Count',
|
|
157
|
+
type: 'number',
|
|
158
|
+
drillMembers: ['LineItems.id', 'LineItems.createdAt'],
|
|
159
|
+
drillMembersGrouped: {
|
|
160
|
+
measures: [],
|
|
161
|
+
dimensions: ['LineItems.id', 'LineItems.createdAt'],
|
|
162
|
+
},
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
dimensions: {},
|
|
166
|
+
segments: {},
|
|
167
|
+
timeDimensions: {
|
|
168
|
+
'LineItems.createdAt.week': {
|
|
169
|
+
title: 'Line Items Created at',
|
|
170
|
+
shortTitle: 'Created at',
|
|
171
|
+
type: 'time',
|
|
172
|
+
},
|
|
173
|
+
'LineItems.createdAt': {
|
|
174
|
+
title: 'Line Items Created at',
|
|
175
|
+
shortTitle: 'Created at',
|
|
176
|
+
type: 'time',
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
},
|
|
180
|
+
slowQuery: false,
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
pivotQuery: {
|
|
184
|
+
measures: ['LineItems.count'],
|
|
185
|
+
timeDimensions: [
|
|
186
|
+
{
|
|
187
|
+
dimension: 'LineItems.createdAt',
|
|
188
|
+
granularity: 'week',
|
|
189
|
+
dateRange: ['2019-01-08T00:00:00.000', '2019-01-18T00:00:00.000'],
|
|
190
|
+
},
|
|
191
|
+
],
|
|
192
|
+
filters: [
|
|
193
|
+
{
|
|
194
|
+
operator: 'equals',
|
|
195
|
+
values: ['us-ut'],
|
|
196
|
+
member: 'Users.state',
|
|
197
|
+
},
|
|
198
|
+
],
|
|
199
|
+
limit: 2,
|
|
200
|
+
rowLimit: 2,
|
|
201
|
+
timezone: 'UTC',
|
|
202
|
+
order: [],
|
|
203
|
+
dimensions: [],
|
|
204
|
+
queryType: 'regularQuery',
|
|
205
|
+
},
|
|
206
|
+
slowQuery: false,
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
expect(result.chartPivot()).toStrictEqual([
|
|
210
|
+
{
|
|
211
|
+
x: '2019-01-07T00:00:00.000',
|
|
212
|
+
xValues: ['2019-01-07T00:00:00.000'],
|
|
213
|
+
'LineItems.count': 2,
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
x: '2019-01-14T00:00:00.000',
|
|
217
|
+
xValues: ['2019-01-14T00:00:00.000'],
|
|
218
|
+
'LineItems.count': 0,
|
|
219
|
+
},
|
|
220
|
+
]);
|
|
221
|
+
});
|
|
113
222
|
});
|
|
114
223
|
});
|