Skip to content

Commit 4543ede

Browse files
authored
feat: Support string, time and boolean measures (#5842)
1 parent ce5f5c2 commit 4543ede

File tree

10 files changed

+164
-51
lines changed

10 files changed

+164
-51
lines changed

packages/cubejs-backend-native/Cargo.lock

Lines changed: 37 additions & 35 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

packages/cubejs-schema-compiler/src/adapter/BaseQuery.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1991,12 +1991,16 @@ class BaseQuery {
19911991
return this.primaryKeyCount(cubeName, true);
19921992
}
19931993
}
1994-
if (symbol.type === 'number') {
1994+
if (BaseQuery.isCalculatedMeasureType(symbol.type)) {
19951995
return evaluateSql;
19961996
}
19971997
return `${symbol.type}(${evaluateSql})`;
19981998
}
19991999

2000+
static isCalculatedMeasureType(type) {
2001+
return type === 'number' || type === 'string' || type === 'time' || type === 'boolean';
2002+
}
2003+
20002004
aggregateOnGroupedColumn(symbol, evaluateSql, topLevelMerge, measurePath) {
20012005
const cumulativeMeasureFilters = (this.safeEvaluateSymbolContext().cumulativeMeasureFilters || {})[measurePath];
20022006
if (cumulativeMeasureFilters) {

packages/cubejs-schema-compiler/src/compiler/CubeToMetaTransformer.js

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import R from 'ramda';
33
import camelCase from 'camelcase';
44

55
import { UserError } from './UserError';
6-
import { BaseMeasure } from '../adapter';
6+
import { BaseMeasure, BaseQuery } from '../adapter';
77

88
export class CubeToMetaTransformer {
99
constructor(cubeValidator, cubeEvaluator, contextEvaluator, joinGraph) {
@@ -106,6 +106,9 @@ export class CubeToMetaTransformer {
106106
cubeName, drillMembers, { originalSorting: true }
107107
)) || [];
108108

109+
// TODO support type qualifiers on min and max
110+
const type = BaseQuery.isCalculatedMeasureType(nameToMetric[1].type) ? nameToMetric[1].type : 'number';
111+
109112
return {
110113
name,
111114
title: this.title(cubeTitle, nameToMetric),
@@ -114,7 +117,7 @@ export class CubeToMetaTransformer {
114117
format: nameToMetric[1].format,
115118
cumulativeTotal: nameToMetric[1].cumulative || BaseMeasure.isCumulative(nameToMetric[1]),
116119
cumulative: nameToMetric[1].cumulative || BaseMeasure.isCumulative(nameToMetric[1]),
117-
type: 'number', // TODO
120+
type,
118121
aggType: nameToMetric[1].type,
119122
drillMembers: drillMembersArray,
120123
drillMembersGrouped: {

0 commit comments

Comments
 (0)