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

Azure data explorer update record

我是 Azure 数据资源管理器的新手,我想知道如何使用 C# 中的 Microsoft .NET SDK 更新 Azure 数据资源管理器中的记录?

Microsoft documentation真可怜

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

您可以使用soft-delete删除原来的记录,然后append/ingest更新的记录。

请注意,这不是原子的,这意味着如果有人在 soft-delete 和追加操作之间查询 table,他们既不会看到旧记录,也不会看到更新后的记录记录.

Azure 数据资源管理器中没有记录“更新”机制,甚至 'soft delete' 删除并替换行。这对 one-off 场景很有用,可能不值得用另一种语言实现,因为它不应该经常使用。正如软删除文档所说,如果您打算经常更新数据,物化可能是更好的选择。

materialize 需要更多的工作和抽象,如果您有一个非常大的 table 并且依赖 ingestion_time 等元数据信息来理解记录,那么通常值得付出努力。

在更小的 table 中(比方说,不到演出)我推荐用更新版本的自身替换 table 的简单方法(只要确保如果你确实依赖ingestion_time 之类的字段,您更新架构并将该数据扩展为字段供以后使用。

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

例如: .set-or-replace MyTable1 <| 我的表1 |扩展 IncorrectColumn = iif(IncorrectColumn == "incorrectValue", "CorrectValue", IncorrectColumn)

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

.set-or-replace MyTable1 <| 让 updatedRows = 我的表1 |其中 Column1 = "IncorrectValue" |扩展 Column1 = "CorrectValue"; 让 nonUpdatedRows = 我的表1 |其中 Column1 = “正确值”; 更新的行 | union nonUpdatedRows

我更喜欢写入临时文件 table,仔细检查数据质量,然后替换最终的 table。如果您正在分批工作并且希望在批处理中途出现故障时将数据丢失的风险降至最低,这将特别有用