我有一个 kusto 表,其中包含 id:int 和 name:string 字段,其中包含数据。我正在尝试将 id:int 的表架构类型更改为 id:long。我尝试了以下但它抛出了以下错误。我也试过 .alter 而不是 .alter-merge 但没有运气。使用数据更新现有表的 Kusto 表列类型而不干扰当前数据的过程是什么?
.alter-merge table mytable
(Id: long, Name: string)
错误: 'Alter table 不支持现有列 (Id) 的列数据类型更改。当前类型=I32,请求类型=I64'。
最佳答案
以下是实现您想要的目标应遵循的过程:
- 使用更新后的模式创建一个名为
OldTable
的新表 - 创建一个名为
Table
的函数(应该与原始表的名称完全相同),它将返回union (OldTable | project id = tolong(id), name), (Table | project id = tolong(id), name)
- 这样,每当有人编写Table
时,他都会调用函数,以正确的模式从两个表中返回数据 - 交换
Table
和OldTable
- 当
OldTable
表中的数据老化(在保留期结束时)时,它将变为空,您必须先删除Table
函数,然后是OldTable
表
关于azure-data-explorer - Kusto 查询更新表列类型而不影响数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65915915/