Skip to content
This repository was archived by the owner on Dec 11, 2022. It is now read-only.

Commit 887a8de

Browse files
authored
Merge pull request #96 from doitintl/issue87
Fixes #87
2 parents 0b3320e + 393453a commit 887a8de

File tree

4 files changed

+59
-48
lines changed

4 files changed

+59
-48
lines changed

dist/module.js

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51267,6 +51267,10 @@ function () {
5126751267
return String(value).replace(/'/g, "''");
5126851268
};
5126951269

51270+
BigQueryQuery.quoteFiledName = function (value) {
51271+
return "`" + String(value) + "`";
51272+
};
51273+
5127051274
BigQueryQuery.formatDateToString = function (date, separator, addtime) {
5127151275
if (separator === void 0) {
5127251276
separator = "";
@@ -51330,11 +51334,11 @@ function () {
5133051334
};
5133151335

5133251336
BigQueryQuery._getIntervalStr = function (interval, timeColumn) {
51333-
var IntervalStr = "TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(" + timeColumn + "), ";
51337+
var IntervalStr = "TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(" + BigQueryQuery.quoteFiledName(timeColumn) + "), ";
5133451338
var unixSeconds = BigQueryQuery.getUnixSecondsFromString(interval);
5133551339

5133651340
if (interval === "1m") {
51337-
IntervalStr = "TIMESTAMP(" + " (" + 'PARSE_DATE( "%Y-%m-%d",CONCAT( CAST((EXTRACT(YEAR FROM ' + timeColumn + ")) AS STRING),'-',CAST((EXTRACT(MONTH FROM " + timeColumn + ")) AS STRING)," + "'-','01'" + ")" + ")" + ")" + ")";
51341+
IntervalStr = "TIMESTAMP(" + " (" + 'PARSE_DATE( "%Y-%m-%d",CONCAT( CAST((EXTRACT(YEAR FROM ' + BigQueryQuery.quoteFiledName(timeColumn) + ")) AS STRING),'-',CAST((EXTRACT(MONTH FROM " + BigQueryQuery.quoteFiledName(timeColumn) + ")) AS STRING)," + "'-','01'" + ")" + ")" + ")" + ")";
5133851342
} else {
5133951343
IntervalStr += unixSeconds + ") * " + unixSeconds + ")";
5134051344
}
@@ -51423,7 +51427,7 @@ function () {
5142351427
if (timeGroup) {
5142451428
query = this._buildTimeColumntimeGroup(alias, timeGroup);
5142551429
} else {
51426-
query = this.target.timeColumn;
51430+
query = BigQueryQuery.quoteFiledName(this.target.timeColumn);
5142751431

5142851432
if (alias) {
5142951433
query += " AS time";
@@ -51435,7 +51439,7 @@ function () {
5143551439

5143651440
BigQueryQuery.prototype.buildMetricColumn = function () {
5143751441
if (this.hasMetricColumn()) {
51438-
return this.target.metricColumn + " AS metric";
51442+
return BigQueryQuery.quoteFiledName(this.target.metricColumn) + " AS metric";
5143951443
}
5144051444

5144151445
return "";
@@ -51475,7 +51479,7 @@ function () {
5147551479
return g.type === "column";
5147651480
});
5147751481

51478-
var query = columnName.params[0];
51482+
var query = BigQueryQuery.quoteFiledName(columnName.params[0]);
5147951483

5148051484
var aggregate = _lodash2.default.find(column, function (g) {
5148151485
return g.type === "aggregate" || g.type === "percentile";
@@ -51703,7 +51707,7 @@ function () {
5170351707
this.target.timeColumn = myRegexp.exec(q)[1];
5170451708
}
5170551709

51706-
var range = this.target.timeColumn + " BETWEEN " + from + " AND " + to;
51710+
var range = BigQueryQuery.quoteFiledName(this.target.timeColumn) + " BETWEEN " + from + " AND " + to;
5170751711
return q.replace(/\$__timeFilter\(([\w_.]+)\)/g, range);
5170851712
};
5170951713

dist/module.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/bigquery_query.ts

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ export default class BigQueryQuery {
99
return String(value).replace(/'/g, "''");
1010
}
1111

12+
public static quoteFiledName(value) {
13+
return "`" + String(value) + "`";
14+
}
1215
public static formatDateToString(date, separator = "", addtime = false) {
1316
// 01, 02, 03, ... 29, 30, 31
1417
const DD = (date.getDate() < 10 ? "0" : "") + date.getDate();
@@ -55,16 +58,18 @@ export default class BigQueryQuery {
5558
}
5659
public static _getIntervalStr(interval: string, timeColumn: string) {
5760
let IntervalStr =
58-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(" + timeColumn + "), ";
61+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(" +
62+
BigQueryQuery.quoteFiledName(timeColumn) +
63+
"), ";
5964
const unixSeconds = BigQueryQuery.getUnixSecondsFromString(interval);
6065
if (interval === "1m") {
6166
IntervalStr =
6267
"TIMESTAMP(" +
6368
" (" +
6469
'PARSE_DATE( "%Y-%m-%d",CONCAT( CAST((EXTRACT(YEAR FROM ' +
65-
timeColumn +
70+
BigQueryQuery.quoteFiledName(timeColumn) +
6671
")) AS STRING),'-',CAST((EXTRACT(MONTH FROM " +
67-
timeColumn +
72+
BigQueryQuery.quoteFiledName(timeColumn) +
6873
")) AS STRING)," +
6974
"'-','01'" +
7075
")" +
@@ -185,7 +190,7 @@ export default class BigQueryQuery {
185190
if (timeGroup) {
186191
query = this._buildTimeColumntimeGroup(alias, timeGroup);
187192
} else {
188-
query = this.target.timeColumn;
193+
query = BigQueryQuery.quoteFiledName(this.target.timeColumn);
189194
if (alias) {
190195
query += " AS time";
191196
}
@@ -195,7 +200,9 @@ export default class BigQueryQuery {
195200

196201
public buildMetricColumn() {
197202
if (this.hasMetricColumn()) {
198-
return this.target.metricColumn + " AS metric";
203+
return (
204+
BigQueryQuery.quoteFiledName(this.target.metricColumn) + " AS metric"
205+
);
199206
}
200207

201208
return "";
@@ -236,7 +243,7 @@ export default class BigQueryQuery {
236243

237244
public buildValueColumn(column) {
238245
const columnName = _.find(column, (g: any) => g.type === "column");
239-
let query = columnName.params[0];
246+
let query = BigQueryQuery.quoteFiledName(columnName.params[0]);
240247
const aggregate = _.find(
241248
column,
242249
(g: any) => g.type === "aggregate" || g.type === "percentile"
@@ -508,7 +515,7 @@ export default class BigQueryQuery {
508515
const myRegexp = /\$__timeFilter\(([\w_.]+)\)/g;
509516
this.target.timeColumn = myRegexp.exec(q)[1];
510517
}
511-
const range = this.target.timeColumn + " BETWEEN " + from + " AND " + to;
518+
const range = BigQueryQuery.quoteFiledName(this.target.timeColumn) + " BETWEEN " + from + " AND " + to;
512519
return q.replace(/\$__timeFilter\(([\w_.]+)\)/g, range);
513520
}
514521

src/specs/bigquery_query.test.ts

Lines changed: 34 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ describe("BigQueryQuery", () => {
2020
const query = new BigQueryQuery({}, templateSrv);
2121

2222
query.target.timeColumn = "time";
23-
expect(query.buildTimeColumn()).toBe("time AS time");
23+
expect(query.buildTimeColumn()).toBe("`time` AS time");
2424
query.target.timeColumn = '"time"';
25-
expect(query.buildTimeColumn()).toBe('"time" AS time');
25+
expect(query.buildTimeColumn()).toBe( "`\"time\"` AS time");
2626
});
2727

2828
describe("When generating time column SQL with group by time", () => {
@@ -53,35 +53,35 @@ describe("BigQueryQuery", () => {
5353
const query = new BigQueryQuery({}, templateSrv);
5454
expect(query.buildMetricColumn()).toBe("");
5555
query.target.metricColumn = "host";
56-
expect(query.buildMetricColumn()).toBe("host AS metric");
56+
expect(query.buildMetricColumn()).toBe("`host` AS metric");
5757
query.target.metricColumn = '"host"';
58-
expect(query.buildMetricColumn()).toBe('"host" AS metric');
58+
expect(query.buildMetricColumn()).toBe( "`\"host\"` AS metric");
5959
});
6060

6161
describe("When generating value column SQL", () => {
6262
const query = new BigQueryQuery({}, templateSrv);
6363
let column = [{ type: "column", params: ["value"] }];
64-
expect(query.buildValueColumn(column)).toBe("value");
64+
expect(query.buildValueColumn(column)).toBe("`value`");
6565
column = [
6666
{ type: "column", params: ["value"] },
6767
{ type: "alias", params: ["alias"] }
6868
];
69-
expect(query.buildValueColumn(column)).toBe("value AS alias");
69+
expect(query.buildValueColumn(column)).toBe("`value` AS alias");
7070
column = [
7171
{ type: "column", params: ["v"] },
7272
{ type: "alias", params: ["a"] },
7373
{ type: "aggregate", params: ["max"] }
7474
];
75-
expect(query.buildValueColumn(column)).toBe("max(v) AS a");
75+
expect(query.buildValueColumn(column)).toBe("max(`v`) AS a");
7676
column = [
7777
{ type: "column", params: ["v"] },
7878
{ type: "alias", params: ["a"] },
7979
{ type: "window", params: ["increase"] }
8080
];
8181
expect(query.buildValueColumn(column)).toBe(
82-
"v as tmpv, (CASE WHEN v >= lag(v) OVER (PARTITION BY -- time -- ORDER BY -- time --) " +
83-
"THEN v - lag(v) OVER (PARTITION BY -- time -- ORDER BY -- time --) " +
84-
"WHEN lag(v) OVER (PARTITION BY -- time -- ORDER BY -- time --) IS NULL THEN NULL ELSE v END) AS a"
82+
"`v` as tmpv, (CASE WHEN `v` >= lag(`v`) OVER (PARTITION BY -- time -- ORDER BY `-- time --`) " +
83+
"THEN `v` - lag(`v`) OVER (PARTITION BY -- time -- ORDER BY `-- time --`) " +
84+
"WHEN lag(`v`) OVER (PARTITION BY -- time -- ORDER BY `-- time --`) IS NULL THEN NULL ELSE `v` END) AS a"
8585
);
8686

8787
column = [
@@ -90,7 +90,7 @@ describe("BigQueryQuery", () => {
9090
{ type: "window", params: ["delta"] }
9191
];
9292
expect(query.buildValueColumn(column)).toBe(
93-
"v as tmpv, v - lag(v) OVER (PARTITION BY -- time -- ORDER BY -- time --) AS a"
93+
"`v` as tmpv, `v` - lag(`v`) OVER (PARTITION BY -- time -- ORDER BY `-- time --`) AS a"
9494
);
9595
column = [
9696
{ type: "column", params: ["v"] },
@@ -99,7 +99,7 @@ describe("BigQueryQuery", () => {
9999
];
100100
query.target.timeColumn = "timC";
101101
expect(query.buildValueColumn(column)).toBe(
102-
"v as tmpv, (CASE WHEN v >= lag(v) OVER (PARTITION BY timC ORDER BY timC) THEN v - lag(v) OVER (PARTITION BY timC ORDER BY timC) WHEN lag(v) OVER (PARTITION BY timC ORDER BY timC) IS NULL THEN NULL ELSE v END)/(UNIX_SECONDS(timC) -UNIX_SECONDS( lag(timC) OVER (PARTITION BY timC ORDER BY timC))) AS a"
102+
"`v` as tmpv, (CASE WHEN `v` >= lag(`v`) OVER (PARTITION BY timC ORDER BY `timC`) THEN `v` - lag(`v`) OVER (PARTITION BY timC ORDER BY `timC`) WHEN lag(`v`) OVER (PARTITION BY timC ORDER BY `timC`) IS NULL THEN NULL ELSE `v` END)/(UNIX_SECONDS(timC) -UNIX_SECONDS( lag(timC) OVER (PARTITION BY timC ORDER BY `timC`))) AS a"
103103
);
104104
column = [
105105
{ type: "column", params: ["v"] },
@@ -109,7 +109,7 @@ describe("BigQueryQuery", () => {
109109
];
110110
query.target.timeColumn = "timC";
111111
expect(query.buildValueColumn(column)).toBe(
112-
"first(v,timC) as tmpv, (CASE WHEN first(v,timC) >= lag(first(v,timC)) OVER (PARTITION BY timC ORDER BY timC) THEN first(v,timC) - lag(first(v,timC)) OVER (PARTITION BY timC ORDER BY timC) WHEN lag(first(v,timC)) OVER (PARTITION BY timC ORDER BY timC) IS NULL THEN NULL ELSE first(v,timC) END)/(UNIX_SECONDS(min(timC)) -UNIX_SECONDS( lag(min(timC)) OVER (PARTITION BY timC ORDER BY timC))) AS a"
112+
"first(`v`,timC) as tmpv, (CASE WHEN first(`v`,timC) >= lag(first(`v`,timC)) OVER (PARTITION BY timC ORDER BY `timC`) THEN first(`v`,timC) - lag(first(`v`,timC)) OVER (PARTITION BY timC ORDER BY `timC`) WHEN lag(first(`v`,timC)) OVER (PARTITION BY timC ORDER BY `timC`) IS NULL THEN NULL ELSE first(`v`,timC) END)/(UNIX_SECONDS(min(timC)) -UNIX_SECONDS( lag(min(timC)) OVER (PARTITION BY timC ORDER BY `timC`))) AS a"
113113
);
114114
column = [
115115
{ type: "column", params: ["v"] },
@@ -119,7 +119,7 @@ describe("BigQueryQuery", () => {
119119
];
120120
query.target.timeColumn = "timC";
121121
expect(query.buildValueColumn(column)).toBe(
122-
"p1(p2) WITHIN GROUP (ORDER BY v) as tmpv, (CASE WHEN p1(p2) WITHIN GROUP (ORDER BY v) >= lag(p1(p2) WITHIN GROUP (ORDER BY v)) OVER (PARTITION BY timC ORDER BY timC) THEN p1(p2) WITHIN GROUP (ORDER BY v) - lag(p1(p2) WITHIN GROUP (ORDER BY v)) OVER (PARTITION BY timC ORDER BY timC) WHEN lag(p1(p2) WITHIN GROUP (ORDER BY v)) OVER (PARTITION BY timC ORDER BY timC) IS NULL THEN NULL ELSE p1(p2) WITHIN GROUP (ORDER BY v) END)/(UNIX_SECONDS(min(timC)) -UNIX_SECONDS( lag(min(timC)) OVER (PARTITION BY timC ORDER BY timC))) AS a"
122+
"p1(p2) WITHIN GROUP (ORDER BY `v`) as tmpv, (CASE WHEN p1(p2) WITHIN GROUP (ORDER BY `v`) >= lag(p1(p2) WITHIN GROUP (ORDER BY `v`)) OVER (PARTITION BY timC ORDER BY `timC`) THEN p1(p2) WITHIN GROUP (ORDER BY `v`) - lag(p1(p2) WITHIN GROUP (ORDER BY `v`)) OVER (PARTITION BY timC ORDER BY `timC`) WHEN lag(p1(p2) WITHIN GROUP (ORDER BY `v`)) OVER (PARTITION BY timC ORDER BY `timC`) IS NULL THEN NULL ELSE p1(p2) WITHIN GROUP (ORDER BY `v`) END)/(UNIX_SECONDS(min(timC)) -UNIX_SECONDS( lag(min(timC)) OVER (PARTITION BY timC ORDER BY `timC`))) AS a"
123123
);
124124

125125
column = [
@@ -128,7 +128,7 @@ describe("BigQueryQuery", () => {
128128
{ type: "moving_window", params: ["moving_window"] }
129129
];
130130
expect(query.buildValueColumn(column)).toBe(
131-
"v as tmpv, v as tmpv, moving_window(v) OVER (PARTITION BY timC ORDER BY timC ROWS undefined PRECEDING) AS a"
131+
"`v` as tmpv, `v` as tmp`v`, moving_window(`v`) OVER (PARTITION BY timC ORDER BY `timC` ROWS undefined PRECEDING) AS a"
132132
);
133133
column = [
134134
{ type: "column", params: ["v"] },
@@ -137,7 +137,7 @@ describe("BigQueryQuery", () => {
137137
{ type: "timeshift", params: ["zz"] }
138138
];
139139
expect(query.buildValueColumn(column)).toBe(
140-
"v as tmpv, v as tmpv, moving_window(v) OVER (PARTITION BY timC ORDER BY timC ROWS undefined PRECEDING) AS a $__timeShifting(zz)"
140+
"`v` as tmpv, `v` as tmp`v`, moving_window(`v`) OVER (PARTITION BY timC ORDER BY `timC` ROWS undefined PRECEDING) AS a $__timeShifting(zz)"
141141
);
142142
});
143143

@@ -146,25 +146,25 @@ describe("BigQueryQuery", () => {
146146
query.target.metricColumn = "host";
147147

148148
let column = [{ type: "column", params: ["value"] }];
149-
expect(query.buildValueColumn(column)).toBe("value");
149+
expect(query.buildValueColumn(column)).toBe("`value`");
150150
column = [
151151
{ type: "column", params: ["value"] },
152152
{ type: "alias", params: ["alias"] }
153153
];
154-
expect(query.buildValueColumn(column)).toBe("value AS alias");
154+
expect(query.buildValueColumn(column)).toBe("`value` AS alias");
155155
column = [
156156
{ type: "column", params: ["v"] },
157157
{ type: "alias", params: ["a"] },
158158
{ type: "aggregate", params: ["max"] }
159159
];
160-
expect(query.buildValueColumn(column)).toBe("max(v) AS a");
160+
expect(query.buildValueColumn(column)).toBe("max(`v`) AS a");
161161
column = [
162162
{ type: "column", params: ["v"] },
163163
{ type: "alias", params: ["a"] },
164164
{ type: "window", params: ["increase"] }
165165
];
166166
expect(query.buildValueColumn(column)).toBe(
167-
"v as tmpv, (CASE WHEN v >= lag(v) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) THEN v - lag(v) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) WHEN lag(v) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) IS NULL THEN NULL ELSE v END) AS a"
167+
"`v` as tmpv, (CASE WHEN `v` >= lag(`v`) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) THEN `v` - lag(`v`) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) WHEN lag(`v`) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) IS NULL THEN NULL ELSE `v` END) AS a"
168168
);
169169
column = [
170170
{ type: "column", params: ["v"] },
@@ -173,7 +173,7 @@ describe("BigQueryQuery", () => {
173173
{ type: "window", params: ["increase"] }
174174
];
175175
expect(query.buildValueColumn(column)).toBe(
176-
"max(v) as tmpv, (CASE WHEN max(v) >= lag(max(v)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) THEN max(v) - lag(max(v)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) WHEN lag(max(v)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY -- time --) IS NULL THEN NULL ELSE max(v) END) AS a"
176+
"max(`v`) as tmpv, (CASE WHEN max(`v`) >= lag(max(`v`)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) THEN max(`v`) - lag(max(`v`)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) WHEN lag(max(`v`)) OVER (PARTITION BY -- time -- host PARTITION BY -- time -- ORDER BY `-- time --`) IS NULL THEN NULL ELSE max(`v`) END) AS a"
177177
);
178178
});
179179

@@ -219,14 +219,14 @@ describe("BigQueryQuery", () => {
219219
where: []
220220
};
221221
let result =
222-
"#standardSQL\nSELECT\n t AS time,\n value\nFROM `undefined.undefined.table`\nORDER BY 1";
222+
"#standardSQL\nSELECT\n `t` AS time,\n `value`\nFROM `undefined.undefined.table`\nORDER BY 1";
223223
const query = new BigQueryQuery(target, templateSrv);
224224

225225
expect(query.buildQuery()).toBe(result);
226226

227227
query.target.metricColumn = "m";
228228
result =
229-
"#standardSQL\nSELECT\n t AS time,\n m AS metric,\n value\nFROM `undefined.undefined.table`\nORDER BY 1,2";
229+
"#standardSQL\nSELECT\n `t` AS time,\n `m` AS metric,\n `value`\nFROM `undefined.undefined.table`\nORDER BY 1,2";
230230
expect(query.buildQuery()).toBe(result);
231231
});
232232

@@ -290,22 +290,22 @@ describe("BigQueryQuery", () => {
290290
};
291291
it("Check macros", () => {
292292
expect(query.expend_macros(options)).toBe(
293-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 86400) * 86400), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 60) * 60) WHERE t BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
293+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 86400) * 86400), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 60) * 60) WHERE `t` BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
294294
);
295295
target.rawSql =
296296
"$__timeGroupAlias(start_date,1min), $__timeGroup(start_date,1min) WHERE $__timeFilter(start_date)";
297297
expect(query.expend_macros(options)).toBe(
298-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 60) * 60), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 60) * 60) WHERE t BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
298+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 60) * 60), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 60) * 60) WHERE `t` BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
299299
);
300300
target.rawSql =
301301
"$__timeGroupAlias(start_date,1w), $__timeGroup(start_date,1w) WHERE $__timeFilter(start_date)";
302302
expect(query.expend_macros(options)).toBe(
303-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 604800) * 604800), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 604800) * 604800) WHERE t BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
303+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 604800) * 604800), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 604800) * 604800) WHERE `t` BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
304304
);
305305
target.rawSql =
306306
"$__timeGroupAlias(start_date,1h), $__timeGroup(start_date,1h) WHERE $__timeFilter(start_date)";
307307
expect(query.expend_macros(options)).toBe(
308-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 3600) * 3600), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(t), 3600) * 3600) WHERE t BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
308+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 3600) * 3600), TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`t`), 3600) * 3600) WHERE `t` BETWEEN TIMESTAMP_MILLIS (2017-03-24T07:20:12.788Z) AND TIMESTAMP_MILLIS (2019-03-24T08:20:12.788Z)"
309309
);
310310
});
311311
});
@@ -319,25 +319,25 @@ describe("BigQueryQuery", () => {
319319

320320
describe("_getIntervalStr", () => {
321321
expect(BigQueryQuery._getIntervalStr("1s", "my_data")).toBe(
322-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 1) * 1)"
322+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 1) * 1)"
323323
);
324324
expect(BigQueryQuery._getIntervalStr("1min", "my_data")).toBe(
325-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 60) * 60)"
325+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 60) * 60)"
326326
);
327327
expect(BigQueryQuery._getIntervalStr("1h", "my_data")).toBe(
328-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 3600) * 3600)"
328+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 3600) * 3600)"
329329
);
330330
expect(BigQueryQuery._getIntervalStr("1d", "my_data")).toBe(
331-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 86400) * 86400)"
331+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 86400) * 86400)"
332332
);
333333
expect(BigQueryQuery._getIntervalStr("1w", "my_data")).toBe(
334-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 604800) * 604800)"
334+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 604800) * 604800)"
335335
);
336336
expect(BigQueryQuery._getIntervalStr("1m", "my_data")).toBe(
337-
"TIMESTAMP( (PARSE_DATE( \"%Y-%m-%d\",CONCAT( CAST((EXTRACT(YEAR FROM my_data)) AS STRING),'-',CAST((EXTRACT(MONTH FROM my_data)) AS STRING),'-','01'))))"
337+
"TIMESTAMP( (PARSE_DATE( \"%Y-%m-%d\",CONCAT( CAST((EXTRACT(YEAR FROM `my_data`)) AS STRING),'-',CAST((EXTRACT(MONTH FROM `my_data`)) AS STRING),'-','01'))))"
338338
);
339339
expect(BigQueryQuery._getIntervalStr("1y", "my_data")).toBe(
340-
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(my_data), 31536000) * 31536000)"
340+
"TIMESTAMP_SECONDS(DIV(UNIX_SECONDS(`my_data`), 31536000) * 31536000)"
341341
);
342342
});
343343

0 commit comments

Comments
 (0)