Kusto中如何为已有物化视图添加列?解决ALTER操作报错问题
解决Kusto物化视图添加列的问题
问题原因
你遇到的报错是因为.alter materialized-view不支持修改分组(by子句)表达式。你原来的视图分组键是myid, mydate,现在修改为myid, mydate, myval,属于变更分组逻辑,这是alter操作不允许的。
正确方案分两种情况:
情况1:仅在视图结果中添加myval列(不改变分组逻辑)
如果你的需求是保留原有的分组规则(按myid和mydate分组),只是在结果中新增myval列(比如取每个分组内任意一条记录的myval值),不需要修改by子句,只需在summarize的take_any函数中加入myval即可:
.alter materialized-view with (lookback=time(5.00:00:00),docString='test') test_view2 on table test2 { test2 | summarize take_any(1, myval) by myid, mydate }
这种操作属于修改聚合输出列,是.alter materialized-view支持的范围,不会报错。
情况2:需要将myval作为新的分组键(改变分组逻辑)
如果确实需要按myid, mydate, myval三者分组,由于分组键发生了根本性变化,无法通过.alter操作实现,必须先删除原有视图,再重新创建:
// 第一步:删除现有物化视图 .drop materialized-view test_view2 // 第二步:重新创建包含新分组键的视图 .create materialized-view with (lookback=time(5.00:00:00),docString='test') test_view2 on table test2 { test2 | summarize take_any(1) by myid, mydate, myval }
注意:删除视图会丢失已物化的数据,重新创建后需要重新回溯数据进行构建,耗时取决于数据量和lookback设置。
内容的提问来源于stack exchange,提问作者Werner
相关产品推荐
相关产品推荐

