Azure数据资源管理器更新记录



我是Azure数据浏览器的新手,我想知道如何使用C#中的microsoft.NET SDK在Azure数据浏览器中更新记录?

微软文档的真的很差

我们可以更新还是只替换一行?

您可以使用软删除来删除原始记录,然后附加/接收更新的记录。

请注意,这不是原子性的,这意味着如果有人在软删除和追加操作之间查询表,他们既看不到旧记录,也看不到更新的记录。

没有记录"更新";Azure Data Explorer中的机制,甚至"软删除"也会删除和替换该行。这对于一次性场景很有用,并且可能不值得用另一种语言实现,因为它不应该频繁使用。正如软删除文档所说,如果你计划经常更新数据,那么物化可能是一个更好的选择。

如果您有一个非常大的表,它依赖于元数据信息(如intraction_time(来理解记录,那么物化是一项更为抽象的工作,通常是值得的。

对于较小的表(比如说,小于一个gig(,我建议使用一种简单的方法,即用更新后的表替换表(只需确保如果您确实依赖于像intensition_time这样的字段,则更新模式并将数据扩展为字段以备日后使用(。

您需要查询整个表,实现只隔离感兴趣的行(同时保留所有其他行(的逻辑,并执行扩展函数来修改该值。然后,替换(不要追加(整个表。

例如:.set或replace MyTable1<MyTable1|extend IncorrectColumn=iif(错误列=="错误值","正确值",错误列(

或者,您可以将不变的相关数据和更新的数据放在两个表格结果中,并对它们执行并集以形成最终表。

.set或replace MyTable1<让updatedRows=MyTable1|其中第1列="0";不正确的值";|扩展第1列=";CorrectValue";;let nonUpdatedRows=MyTable1|其中第1列="0";CorrectValue";;更新的行|union nonUpdatedRows

我更喜欢写入临时表,仔细检查数据质量,然后替换最终表。如果你正在批量工作,并且希望在批量进行到一半时出现故障,将数据丢失的风险降至最低,这一点尤其有用

最新更新