@cubejs-client/core 1.3.15 → 1.3.16

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 (100) hide show
  1. package/dist/{cubejs-client-core.js → cubejs-client-core.cjs.js} +1016 -411
  2. package/dist/cubejs-client-core.cjs.js.map +1 -0
  3. package/dist/cubejs-client-core.umd.js +2901 -12088
  4. package/dist/cubejs-client-core.umd.js.map +1 -1
  5. package/dist/src/HttpTransport.d.ts +54 -0
  6. package/dist/src/HttpTransport.d.ts.map +1 -0
  7. package/dist/src/HttpTransport.js +55 -0
  8. package/dist/src/Meta.d.ts +62 -0
  9. package/dist/src/Meta.d.ts.map +1 -0
  10. package/dist/src/Meta.js +150 -0
  11. package/dist/src/ProgressResult.d.ts +8 -0
  12. package/dist/src/ProgressResult.d.ts.map +1 -0
  13. package/dist/src/ProgressResult.js +11 -0
  14. package/dist/src/RequestError.d.ts +6 -0
  15. package/dist/src/RequestError.d.ts.map +1 -0
  16. package/dist/src/RequestError.js +7 -0
  17. package/dist/src/ResultSet.d.ts +430 -0
  18. package/dist/src/ResultSet.d.ts.map +1 -0
  19. package/dist/src/ResultSet.js +952 -0
  20. package/dist/src/SqlQuery.d.ts +17 -0
  21. package/dist/src/SqlQuery.d.ts.map +1 -0
  22. package/dist/src/SqlQuery.js +11 -0
  23. package/dist/src/index.d.ts +194 -0
  24. package/dist/src/index.d.ts.map +1 -0
  25. package/dist/src/index.js +411 -0
  26. package/dist/src/index.umd.d.ts +3 -0
  27. package/dist/src/index.umd.d.ts.map +1 -0
  28. package/dist/src/index.umd.js +6 -0
  29. package/dist/src/time.d.ts +70 -0
  30. package/dist/src/time.d.ts.map +1 -0
  31. package/dist/src/time.js +249 -0
  32. package/dist/src/types.d.ts +424 -0
  33. package/dist/src/types.d.ts.map +1 -0
  34. package/dist/src/types.js +1 -0
  35. package/dist/src/utils.d.ts +19 -0
  36. package/dist/src/utils.d.ts.map +1 -0
  37. package/dist/src/utils.js +294 -0
  38. package/dist/test/CubeApi.test.d.ts +7 -0
  39. package/dist/test/CubeApi.test.d.ts.map +1 -0
  40. package/dist/test/CubeApi.test.js +279 -0
  41. package/dist/test/HttpTransport.test.d.ts +2 -0
  42. package/dist/test/HttpTransport.test.d.ts.map +1 -0
  43. package/dist/test/HttpTransport.test.js +244 -0
  44. package/dist/test/ResultSet.test.d.ts +7 -0
  45. package/dist/test/ResultSet.test.d.ts.map +1 -0
  46. package/dist/test/ResultSet.test.js +1725 -0
  47. package/dist/test/compare-date-range.test.d.ts +2 -0
  48. package/dist/test/compare-date-range.test.d.ts.map +1 -0
  49. package/dist/test/compare-date-range.test.js +742 -0
  50. package/dist/test/data-blending.test.d.ts +2 -0
  51. package/dist/test/data-blending.test.d.ts.map +1 -0
  52. package/dist/test/data-blending.test.js +423 -0
  53. package/dist/test/default-heuristics.test.d.ts +2 -0
  54. package/dist/test/default-heuristics.test.d.ts.map +1 -0
  55. package/dist/test/default-heuristics.test.js +108 -0
  56. package/dist/test/drill-down.test.d.ts +2 -0
  57. package/dist/test/drill-down.test.d.ts.map +1 -0
  58. package/dist/test/drill-down.test.js +373 -0
  59. package/dist/test/fixtures/datablending/load-responses.json +261 -0
  60. package/dist/test/granularity.test.d.ts +2 -0
  61. package/dist/test/granularity.test.d.ts.map +1 -0
  62. package/dist/test/granularity.test.js +218 -0
  63. package/dist/test/helpers.d.ts +283 -0
  64. package/dist/test/helpers.d.ts.map +1 -0
  65. package/dist/test/helpers.js +974 -0
  66. package/dist/test/index.test.d.ts +7 -0
  67. package/dist/test/index.test.d.ts.map +1 -0
  68. package/dist/test/index.test.js +370 -0
  69. package/dist/test/table.test.d.ts +2 -0
  70. package/dist/test/table.test.d.ts.map +1 -0
  71. package/dist/test/table.test.js +757 -0
  72. package/dist/test/utils.test.d.ts +2 -0
  73. package/dist/test/utils.test.d.ts.map +1 -0
  74. package/dist/test/utils.test.js +32 -0
  75. package/package.json +26 -21
  76. package/dist/cubejs-client-core.esm.js +0 -1639
  77. package/dist/cubejs-client-core.esm.js.map +0 -1
  78. package/dist/cubejs-client-core.js.map +0 -1
  79. package/index.d.ts +0 -1338
  80. package/src/HttpTransport.js +0 -60
  81. package/src/HttpTransport.test.js +0 -117
  82. package/src/Meta.js +0 -142
  83. package/src/ProgressResult.js +0 -13
  84. package/src/RequestError.js +0 -7
  85. package/src/ResultSet.js +0 -746
  86. package/src/SqlQuery.js +0 -13
  87. package/src/index.js +0 -398
  88. package/src/index.test.js +0 -454
  89. package/src/index.umd.js +0 -8
  90. package/src/tests/ResultSet.test.js +0 -1655
  91. package/src/tests/compare-date-range.test.js +0 -753
  92. package/src/tests/data-blending.test.js +0 -432
  93. package/src/tests/default-heuristics.test.js +0 -118
  94. package/src/tests/drill-down.test.js +0 -402
  95. package/src/tests/fixtures/datablending/load-responses.json +0 -261
  96. package/src/tests/granularity.test.js +0 -225
  97. package/src/tests/table.test.js +0 -791
  98. package/src/tests/utils.test.js +0 -35
  99. package/src/time.js +0 -296
  100. package/src/utils.js +0 -368
@@ -0,0 +1,373 @@
1
+ /* globals jest, describe, expect, it */
2
+ import 'jest';
3
+ import ResultSet from '../src/ResultSet';
4
+ jest.mock('moment-range', () => {
5
+ const Moment = jest.requireActual('moment');
6
+ const MomentRange = jest.requireActual('moment-range');
7
+ const moment = MomentRange.extendMoment(Moment);
8
+ return {
9
+ extendMoment: () => moment,
10
+ };
11
+ });
12
+ const loadResponse = (query = {}) => ({
13
+ queryType: 'regularQuery',
14
+ results: [
15
+ {
16
+ query: {
17
+ measures: ['Orders.count'],
18
+ timeDimensions: [
19
+ {
20
+ dimension: 'Orders.ts',
21
+ granularity: 'day',
22
+ dateRange: ['2020-08-01T00:00:00.000', '2020-08-07T23:59:59.999'],
23
+ },
24
+ ],
25
+ filters: [],
26
+ timezone: 'UTC',
27
+ order: [],
28
+ dimensions: [],
29
+ ...query,
30
+ },
31
+ data: [
32
+ {
33
+ 'Orders.ts.day': '2020-08-01T00:00:00.000',
34
+ 'Orders.ts': '2020-08-01T00:00:00.000',
35
+ 'Orders.count': 1,
36
+ },
37
+ {
38
+ 'Orders.ts.day': '2020-08-02T00:00:00.000',
39
+ 'Orders.ts': '2020-08-02T00:00:00.000',
40
+ 'Orders.count': 2,
41
+ },
42
+ ],
43
+ annotation: {
44
+ measures: {
45
+ 'Orders.count': {
46
+ title: 'Orders Count',
47
+ shortTitle: 'Count',
48
+ type: 'number',
49
+ drillMembers: ['Orders.id', 'Orders.title'],
50
+ drillMembersGrouped: {
51
+ measures: [],
52
+ dimensions: ['Orders.id', 'Orders.title'],
53
+ },
54
+ },
55
+ },
56
+ dimensions: {},
57
+ segments: {},
58
+ timeDimensions: {
59
+ 'Orders.ts.day': {
60
+ title: 'Orders Ts',
61
+ shortTitle: 'Ts',
62
+ type: 'time',
63
+ },
64
+ 'Orders.ts': { title: 'Orders Ts', shortTitle: 'Ts', type: 'time' },
65
+ },
66
+ },
67
+ },
68
+ ],
69
+ pivotQuery: {
70
+ measures: ['Orders.count'],
71
+ timeDimensions: [
72
+ {
73
+ dimension: 'Orders.ts',
74
+ granularity: 'day',
75
+ dateRange: ['2020-08-01T00:00:00.000', '2020-08-07T23:59:59.999'],
76
+ },
77
+ ],
78
+ filters: [],
79
+ timezone: 'UTC',
80
+ order: [],
81
+ dimensions: [],
82
+ ...query,
83
+ },
84
+ });
85
+ const loadResponse2 = {
86
+ queryType: 'regularQuery',
87
+ results: [
88
+ {
89
+ query: {
90
+ measures: ['Orders.count'],
91
+ timeDimensions: [
92
+ {
93
+ dimension: 'Orders.createdAt',
94
+ granularity: 'week',
95
+ dateRange: ['2023-05-10T00:00:00.000', '2023-05-14T23:59:59.999'],
96
+ },
97
+ ],
98
+ limit: 10000,
99
+ timezone: 'UTC',
100
+ order: [],
101
+ filters: [],
102
+ dimensions: [],
103
+ rowLimit: 10000,
104
+ queryType: 'regularQuery',
105
+ },
106
+ data: [
107
+ {
108
+ 'Orders.createdAt.week': '2023-05-08T00:00:00.000',
109
+ 'Orders.createdAt': '2023-05-08T00:00:00.000',
110
+ 'Orders.count': '21',
111
+ },
112
+ ],
113
+ lastRefreshTime: '2023-05-22T14:46:45.000Z',
114
+ usedPreAggregations: {
115
+ 'prod_pre_aggregations.orders_main': {
116
+ targetTableName: 'prod_pre_aggregations.orders_main20230508_instgodu_ehgypjtt_1i6n02l',
117
+ refreshKeyValues: [[]],
118
+ lastUpdatedAt: 1684766805000,
119
+ },
120
+ },
121
+ transformedQuery: {
122
+ sortedDimensions: [],
123
+ sortedTimeDimensions: [['Orders.createdAt', 'day']],
124
+ timeDimensions: [['Orders.createdAt', 'week']],
125
+ measures: ['Orders.count'],
126
+ leafMeasureAdditive: true,
127
+ leafMeasures: ['Orders.count'],
128
+ measureToLeafMeasures: {
129
+ 'Orders.count': [
130
+ { measure: 'Orders.count', additive: true, type: 'count' },
131
+ ],
132
+ },
133
+ hasNoTimeDimensionsWithoutGranularity: true,
134
+ allFiltersWithinSelectedDimensions: true,
135
+ isAdditive: true,
136
+ granularityHierarchies: {
137
+ year: [
138
+ 'year',
139
+ 'quarter',
140
+ 'month',
141
+ 'month',
142
+ 'day',
143
+ 'hour',
144
+ 'minute',
145
+ 'second',
146
+ ],
147
+ quarter: ['quarter', 'month', 'day', 'hour', 'minute', 'second'],
148
+ month: ['month', 'day', 'hour', 'minute', 'second'],
149
+ week: ['week', 'day', 'hour', 'minute', 'second'],
150
+ day: ['day', 'hour', 'minute', 'second'],
151
+ hour: ['hour', 'minute', 'second'],
152
+ minute: ['minute', 'second'],
153
+ second: ['second'],
154
+ },
155
+ hasMultipliedMeasures: false,
156
+ hasCumulativeMeasures: false,
157
+ windowGranularity: null,
158
+ filterDimensionsSingleValueEqual: {},
159
+ ownedDimensions: [],
160
+ ownedTimeDimensionsWithRollupGranularity: [['Orders.createdAt', 'day']],
161
+ ownedTimeDimensionsAsIs: [['Orders.createdAt', 'week']],
162
+ },
163
+ requestId: 'x',
164
+ annotation: {
165
+ measures: {
166
+ 'Orders.count': {
167
+ title: 'Orders Count',
168
+ shortTitle: 'Count',
169
+ type: 'number',
170
+ drillMembers: ['Orders.id', 'Orders.createdAt'],
171
+ drillMembersGrouped: {
172
+ measures: [],
173
+ dimensions: ['Orders.id', 'Orders.createdAt'],
174
+ },
175
+ },
176
+ },
177
+ dimensions: {},
178
+ segments: {},
179
+ timeDimensions: {
180
+ 'Orders.createdAt.week': {
181
+ title: 'Orders Created at',
182
+ shortTitle: 'Created at',
183
+ type: 'time',
184
+ },
185
+ 'Orders.createdAt': {
186
+ title: 'Orders Created at',
187
+ shortTitle: 'Created at',
188
+ type: 'time',
189
+ },
190
+ },
191
+ },
192
+ dataSource: 'default',
193
+ dbType: 'postgres',
194
+ extDbType: 'cubestore',
195
+ },
196
+ ],
197
+ pivotQuery: {
198
+ measures: ['Orders.count'],
199
+ timeDimensions: [
200
+ {
201
+ dimension: 'Orders.createdAt',
202
+ granularity: 'week',
203
+ dateRange: ['2023-05-10T00:00:00.000', '2023-05-14T23:59:59.999'],
204
+ },
205
+ ],
206
+ limit: 10000,
207
+ timezone: 'UTC',
208
+ order: [],
209
+ filters: [],
210
+ dimensions: [],
211
+ rowLimit: 10000,
212
+ queryType: 'regularQuery',
213
+ },
214
+ slowQuery: false,
215
+ };
216
+ describe('drill down query', () => {
217
+ const resultSet1 = new ResultSet(loadResponse());
218
+ const resultSet2 = new ResultSet(loadResponse({
219
+ timezone: 'America/Los_Angeles',
220
+ }));
221
+ const resultSet3 = new ResultSet(loadResponse({
222
+ filters: [
223
+ {
224
+ member: 'Users.country',
225
+ operator: 'equals',
226
+ values: ['Los Angeles'],
227
+ },
228
+ ],
229
+ }));
230
+ const resultSet4 = new ResultSet(loadResponse({
231
+ dimensions: ['Statuses.potential'],
232
+ timeDimensions: [],
233
+ }));
234
+ const resultSet5 = new ResultSet(loadResponse({
235
+ timeDimensions: [
236
+ {
237
+ dimension: 'Orders.ts',
238
+ granularity: 'week',
239
+ }
240
+ ]
241
+ }));
242
+ it('handles a query with a time dimension', () => {
243
+ expect(resultSet1.drillDown({
244
+ xValues: ['2020-08-01T00:00:00.000'],
245
+ })).toEqual({
246
+ measures: [],
247
+ segments: [],
248
+ dimensions: ['Orders.id', 'Orders.title'],
249
+ filters: [
250
+ {
251
+ member: 'Orders.count',
252
+ operator: 'measureFilter',
253
+ },
254
+ ],
255
+ timeDimensions: [
256
+ {
257
+ dimension: 'Orders.ts',
258
+ dateRange: ['2020-08-01T00:00:00.000', '2020-08-01T23:59:59.999'],
259
+ },
260
+ ],
261
+ timezone: 'UTC',
262
+ });
263
+ });
264
+ it('respects the time zone', () => {
265
+ expect(resultSet2.drillDown({
266
+ xValues: ['2020-08-01T00:00:00.000'],
267
+ })).toEqual({
268
+ measures: [],
269
+ segments: [],
270
+ dimensions: ['Orders.id', 'Orders.title'],
271
+ filters: [
272
+ {
273
+ member: 'Orders.count',
274
+ operator: 'measureFilter',
275
+ },
276
+ ],
277
+ timeDimensions: [
278
+ {
279
+ dimension: 'Orders.ts',
280
+ dateRange: ['2020-08-01T00:00:00.000', '2020-08-01T23:59:59.999'],
281
+ },
282
+ ],
283
+ timezone: 'America/Los_Angeles',
284
+ });
285
+ });
286
+ it('propagates parent filters', () => {
287
+ expect(resultSet3.drillDown({
288
+ xValues: ['2020-08-01T00:00:00.000'],
289
+ })).toEqual({
290
+ measures: [],
291
+ segments: [],
292
+ dimensions: ['Orders.id', 'Orders.title'],
293
+ filters: [
294
+ {
295
+ member: 'Orders.count',
296
+ operator: 'measureFilter',
297
+ },
298
+ {
299
+ member: 'Users.country',
300
+ operator: 'equals',
301
+ values: ['Los Angeles'],
302
+ },
303
+ ],
304
+ timeDimensions: [
305
+ {
306
+ dimension: 'Orders.ts',
307
+ dateRange: ['2020-08-01T00:00:00.000', '2020-08-01T23:59:59.999'],
308
+ },
309
+ ],
310
+ timezone: 'UTC',
311
+ });
312
+ });
313
+ it('handles null values', () => {
314
+ expect(resultSet4.drillDown({ xValues: [] })).toEqual({
315
+ measures: [],
316
+ segments: [],
317
+ dimensions: ['Orders.id', 'Orders.title'],
318
+ filters: [
319
+ {
320
+ member: 'Orders.count',
321
+ operator: 'measureFilter',
322
+ },
323
+ {
324
+ member: 'Statuses.potential',
325
+ operator: 'notSet',
326
+ },
327
+ ],
328
+ timeDimensions: [],
329
+ timezone: 'UTC',
330
+ });
331
+ });
332
+ it('respects the parent time dimension date range', () => {
333
+ const resultSet = new ResultSet(loadResponse2);
334
+ expect(resultSet.drillDown({ xValues: ['2023-05-08T00:00:00.000'] })).toEqual({
335
+ measures: [],
336
+ segments: [],
337
+ dimensions: ['Orders.id', 'Orders.createdAt'],
338
+ filters: [
339
+ {
340
+ operator: 'measureFilter',
341
+ member: 'Orders.count',
342
+ },
343
+ ],
344
+ timeDimensions: [
345
+ {
346
+ dimension: 'Orders.createdAt',
347
+ dateRange: ['2023-05-10T00:00:00.000', '2023-05-14T23:59:59.999'],
348
+ },
349
+ ],
350
+ timezone: 'UTC'
351
+ });
352
+ });
353
+ it('snap date range to granularity if the date range is not defined in the time dimension', () => {
354
+ expect(resultSet5.drillDown({ xValues: ['2020-08-01T00:00:00.000'] })).toEqual({
355
+ measures: [],
356
+ segments: [],
357
+ dimensions: ['Orders.id', 'Orders.title'],
358
+ filters: [
359
+ {
360
+ member: 'Orders.count',
361
+ operator: 'measureFilter',
362
+ },
363
+ ],
364
+ timeDimensions: [
365
+ {
366
+ dimension: 'Orders.ts',
367
+ dateRange: ['2020-07-27T00:00:00.000', '2020-08-02T23:59:59.999'],
368
+ },
369
+ ],
370
+ timezone: 'UTC',
371
+ });
372
+ });
373
+ });
@@ -0,0 +1,261 @@
1
+ {
2
+ "loadResponse": {
3
+ "queryType": "blendingQuery",
4
+ "results": [
5
+ {
6
+ "query": {
7
+ "measures": ["Orders.count"],
8
+ "timeDimensions": [
9
+ {
10
+ "dimension": "Orders.ts",
11
+ "granularity": "day",
12
+ "dateRange": ["2020-08-01T00:00:00.000", "2020-08-07T23:59:59.999"]
13
+ }
14
+ ],
15
+ "filters": [],
16
+ "timezone": "UTC",
17
+ "order": [],
18
+ "dimensions": []
19
+ },
20
+ "data": [
21
+ {
22
+ "Orders.ts.day": "2020-08-01T00:00:00.000",
23
+ "Orders.ts": "2020-08-01T00:00:00.000",
24
+ "Orders.count": 1,
25
+ "time.day": "2020-08-01T00:00:00.000"
26
+ },
27
+ {
28
+ "Orders.ts.day": "2020-08-02T00:00:00.000",
29
+ "Orders.ts": "2020-08-02T00:00:00.000",
30
+ "Orders.count": 2,
31
+ "time.day": "2020-08-02T00:00:00.000"
32
+ }
33
+ ],
34
+ "annotation": {
35
+ "measures": {
36
+ "Orders.count": {
37
+ "title": "Orders Count",
38
+ "shortTitle": "Count",
39
+ "type": "number",
40
+ "drillMembers": ["Orders.id", "Orders.title"],
41
+ "drillMembersGrouped": {
42
+ "measures": [],
43
+ "dimensions": ["Orders.id", "Orders.title"]
44
+ }
45
+ }
46
+ },
47
+ "dimensions": {},
48
+ "segments": {},
49
+ "timeDimensions": {
50
+ "Orders.ts.day": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" },
51
+ "Orders.ts": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" }
52
+ }
53
+ }
54
+ },
55
+ {
56
+ "query": {
57
+ "measures": ["Users.count"],
58
+ "timeDimensions": [
59
+ {
60
+ "dimension": "Users.ts",
61
+ "granularity": "day",
62
+ "dateRange": ["2020-08-01T00:00:00.000", "2020-08-07T23:59:59.999"]
63
+ }
64
+ ],
65
+ "filters": [],
66
+ "timezone": "UTC",
67
+ "order": [],
68
+ "dimensions": ["Users.country"]
69
+ },
70
+ "data": [
71
+ {
72
+ "Users.ts.day": "2020-08-01T00:00:00.000",
73
+ "Users.ts": "2020-08-01T00:00:00.000",
74
+ "Users.count": 20,
75
+ "Users.country": "Australia",
76
+ "time.day": "2020-08-01T00:00:00.000"
77
+ },
78
+ {
79
+ "Users.ts.day": "2020-08-05T00:00:00.000",
80
+ "Users.ts": "2020-08-05T00:00:00.000",
81
+ "Users.count": 34,
82
+ "Users.country": "Spain",
83
+ "time.day": "2020-08-05T00:00:00.000"
84
+ },
85
+ {
86
+ "Users.ts.day": "2020-08-05T00:00:00.000",
87
+ "Users.ts": "2020-08-05T00:00:00.000",
88
+ "Users.count": 18,
89
+ "Users.country": "Italy",
90
+ "time.day": "2020-08-05T00:00:00.000"
91
+ }
92
+ ],
93
+ "annotation": {
94
+ "measures": {
95
+ "Users.count": {
96
+ "title": "Users Count",
97
+ "shortTitle": "Count",
98
+ "type": "number",
99
+ "drillMembers": [],
100
+ "drillMembersGrouped": {
101
+ "measures": [],
102
+ "dimensions": []
103
+ }
104
+ }
105
+ },
106
+ "dimensions": {
107
+ "Users.country": {
108
+ "title": "Users Country",
109
+ "shortTitle": "Country",
110
+ "type": "string"
111
+ }
112
+ },
113
+ "segments": {},
114
+ "timeDimensions": {
115
+ "Users.ts.day": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" },
116
+ "Users.ts": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" }
117
+ }
118
+ }
119
+ }
120
+ ],
121
+ "pivotQuery": {
122
+ "measures": ["Orders.count", "Users.count"],
123
+ "timeDimensions": [
124
+ {
125
+ "dimension": "time",
126
+ "granularity": "day",
127
+ "dateRange": ["2020-08-01T00:00:00.000", "2020-08-07T23:59:59.999"]
128
+ }
129
+ ],
130
+ "dimensions": ["Users.country"]
131
+ }
132
+ },
133
+ "loadResponseWithoutDateRange": {
134
+ "queryType": "blendingQuery",
135
+ "results": [
136
+ {
137
+ "query": {
138
+ "measures": ["Orders.count"],
139
+ "timeDimensions": [
140
+ {
141
+ "dimension": "Orders.ts",
142
+ "granularity": "day"
143
+ }
144
+ ],
145
+ "filters": [],
146
+ "timezone": "UTC",
147
+ "order": [],
148
+ "dimensions": []
149
+ },
150
+ "data": [
151
+ {
152
+ "Orders.ts.day": "2020-08-01T00:00:00.000",
153
+ "Orders.ts": "2020-08-01T00:00:00.000",
154
+ "Orders.count": 1,
155
+ "time.day": "2020-08-01T00:00:00.000"
156
+ },
157
+ {
158
+ "Orders.ts.day": "2020-08-02T00:00:00.000",
159
+ "Orders.ts": "2020-08-02T00:00:00.000",
160
+ "Orders.count": 2,
161
+ "time.day": "2020-08-02T00:00:00.000"
162
+ }
163
+ ],
164
+ "annotation": {
165
+ "measures": {
166
+ "Orders.count": {
167
+ "title": "Orders Count",
168
+ "shortTitle": "Count",
169
+ "type": "number",
170
+ "drillMembers": ["Orders.id", "Orders.title"],
171
+ "drillMembersGrouped": {
172
+ "measures": [],
173
+ "dimensions": ["Orders.id", "Orders.title"]
174
+ }
175
+ }
176
+ },
177
+ "dimensions": {},
178
+ "segments": {},
179
+ "timeDimensions": {
180
+ "Orders.ts.day": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" },
181
+ "Orders.ts": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" }
182
+ }
183
+ }
184
+ },
185
+ {
186
+ "query": {
187
+ "measures": ["Users.count"],
188
+ "timeDimensions": [
189
+ {
190
+ "dimension": "Users.ts",
191
+ "granularity": "day"
192
+ }
193
+ ],
194
+ "filters": [],
195
+ "timezone": "UTC",
196
+ "order": [],
197
+ "dimensions": ["Users.country"]
198
+ },
199
+ "data": [
200
+ {
201
+ "Users.ts.day": "2020-08-01T00:00:00.000",
202
+ "Users.ts": "2020-08-01T00:00:00.000",
203
+ "Users.count": 20,
204
+ "Users.country": "Australia",
205
+ "time.day": "2020-08-01T00:00:00.000"
206
+ },
207
+ {
208
+ "Users.ts.day": "2020-08-05T00:00:00.000",
209
+ "Users.ts": "2020-08-05T00:00:00.000",
210
+ "Users.count": 34,
211
+ "Users.country": "Spain",
212
+ "time.day": "2020-08-05T00:00:00.000"
213
+ },
214
+ {
215
+ "Users.ts.day": "2020-08-05T00:00:00.000",
216
+ "Users.ts": "2020-08-05T00:00:00.000",
217
+ "Users.count": 18,
218
+ "Users.country": "Italy",
219
+ "time.day": "2020-08-05T00:00:00.000"
220
+ }
221
+ ],
222
+ "annotation": {
223
+ "measures": {
224
+ "Users.count": {
225
+ "title": "Users Count",
226
+ "shortTitle": "Count",
227
+ "type": "number",
228
+ "drillMembers": [],
229
+ "drillMembersGrouped": {
230
+ "measures": [],
231
+ "dimensions": []
232
+ }
233
+ }
234
+ },
235
+ "dimensions": {
236
+ "Users.country": {
237
+ "title": "Users Country",
238
+ "shortTitle": "Country",
239
+ "type": "string"
240
+ }
241
+ },
242
+ "segments": {},
243
+ "timeDimensions": {
244
+ "Users.ts.day": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" },
245
+ "Users.ts": { "title": "Orders Ts", "shortTitle": "Ts", "type": "time" }
246
+ }
247
+ }
248
+ }
249
+ ],
250
+ "pivotQuery": {
251
+ "measures": ["Orders.count", "Users.count"],
252
+ "timeDimensions": [
253
+ {
254
+ "dimension": "time",
255
+ "granularity": "day"
256
+ }
257
+ ],
258
+ "dimensions": ["Users.country"]
259
+ }
260
+ }
261
+ }
@@ -0,0 +1,2 @@
1
+ import 'jest';
2
+ //# sourceMappingURL=granularity.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"granularity.test.d.ts","sourceRoot":"","sources":["../../test/granularity.test.ts"],"names":[],"mappings":"AAEA,OAAO,MAAM,CAAC"}