Skip to content

Commit 36d6fe2

Browse files
authored
Merge pull request #391 from ClibMouse/Kusto-p3_fix_makeseries_zip
Kusto-phase3: fix make-series bug
2 parents bc8d583 + 8529feb commit 36d6fe2

File tree

4 files changed

+39
-14
lines changed

4 files changed

+39
-14
lines changed

src/Parsers/Kusto/ParserKQLMakeSeries.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ bool ParserKQLMakeSeries ::parseAggregationColumns(AggregationColumns & aggregat
160160
if (pos->type == TokenType::Comma && bracket_count.isZero())
161161
{
162162
parseSingleAggregationColumn(aggregation_columns, begin, pos, column_index);
163+
begin = pos;
163164
++begin;
164165
}
165166
if (String(pos->begin, pos->end) == "on" && bracket_count.isZero())
@@ -361,6 +362,10 @@ bool ParserKQLMakeSeries ::makeSeries(KQLMakeSeries & kql_make_series, ASTPtr &
361362
if (from_to_step.is_timespan)
362363
{
363364
axis_column_format = std::format("toFloat64(toDateTime64({}, 9, 'UTC'))", axis_column);
365+
if (!start_str.empty())
366+
{
367+
start_str = std::format("date_trunc('second', {})", start_str);
368+
}
364369
}
365370
else
366371
axis_column_format = std::format("toFloat64({})", axis_column);
@@ -442,20 +447,22 @@ bool ParserKQLMakeSeries ::makeSeries(KQLMakeSeries & kql_make_series, ASTPtr &
442447
auto axis_and_agg_alias_list = axis_column;
443448
auto final_axis_agg_alias_list = std::format("tupleElement(zipped,1) AS {}", axis_column);
444449
int idx = 2;
450+
int agg_count = 1;
445451
for (auto agg_column : aggregation_columns)
446452
{
447453
String agg_group_column = std::format(
448-
"arrayConcat(groupArray({}_ali) as ga, arrayMap(x -> ({}),range(0,toUInt32({} - length(ga) < 0 ? 0 : {} - length(ga)),1))) as "
449-
"{}",
454+
"arrayConcat(groupArray({0}_ali) as ga{3}, arrayMap(x -> ({1}),range(0,toUInt32({2} - length(ga{3}) < 0 ? 0 : {2} - length(ga{3})),1))) as "
455+
"{0}",
450456
agg_column.alias,
451457
agg_column.default_value,
452458
range_len,
453-
range_len,
454-
agg_column.alias);
459+
agg_count
460+
);
455461
main_query = main_query.empty() ? agg_group_column : main_query + ", " + agg_group_column;
456462

457463
axis_and_agg_alias_list += ", " + agg_column.alias;
458464
final_axis_agg_alias_list += std::format(", tupleElement(zipped,{}) AS {}", idx, agg_column.alias);
465+
++agg_count;
459466
}
460467

461468
if (from_to_step.is_timespan)

0 commit comments

Comments
 (0)