首页 > 解决方案 > 如何撤消 Azure 数据资源管理器 (Kusto) 中的引入?

问题描述

背景:我正在关注本指南:https ://docs.microsoft.com/en-us/azure/kusto/api/netfx/kusto-ingest-client-examples

我正在使用IngestFromStorageAsync- 我看到结果有一个IngestionSourceId(GUID) - 但我不知道该怎么做。(这不是范围 ID)

我假设您可以使用此 ID 删除所有导入的记录...

有谁知道如何撤消摄取?


目前,我正在使用.show cluster extents显示范围 ID,然后调用.drop extent [id]. 这是撤消摄取的正确方法吗?

标签: azure-data-explorer

解决方案


“撤消”摄取实质上是丢弃摄取的数据。

可以在范围(数据分片)的分辨率下删除数据,并且范围可以在任何给定时刻相互合并(例如,在数据被摄取后立即)。

如果您知道有可能想要删除刚刚摄取的数据(并且您无法修复导致那些“错误”(?)摄取的摄取管道),您可以遵循的一个方向是使用范围标签,以便能够识别作为摄取的一部分创建的范围,然后删除它们。

可以在此处找到更多信息:https ://docs.microsoft.com/en-us/azure/kusto/management/extents-overview 。如果您确实选择为此目的使用标签(并且无法避免需要“撤消”摄取的情况),请确保您阅读了该文档中的“性能说明”。


文档链接摘录:

'ingest-by:' 范围标签

以前缀开头的标签ingest-by:可用于确保数据仅被摄取一次。ingestIfNotExists如果已经存在具有此特定ingest-by:标签的范围,您可以发出一个属性命令来阻止数据被摄取。tags和的值ingestIfNotExists都是字符串数组,序列化为 JSON。

以下示例仅提取一次数据。第二和第三条命令什么都不做:

.ingest ... with (tags = '["ingest-by:2016-02-17"]')

.ingest ... with (ingestIfNotExists = '["2016-02-17"]')

.ingest ... with (ingestIfNotExists = '["2016-02-17"]', tags = '["ingest-by:2016-02-17"]')

[!NOTE] 通常,摄取命令可能同时包含ingest-by:标记和ingestIfNotExists属性,设置为相同的值,如上面的第三个命令所示。

[!警告]

  • ingest-by不建议过度使用标签。
  • 如果已知为 Kusto 提供数据的管道存在数据重复,我们建议您在将数据摄取到 Kusto 之前尽可能解决这些重复问题。
  • 尝试ingest-by为每个摄取调用设置唯一标签可能会对性能产生严重影响。
  • 如果在提取数据后的一段时间内不需要此类标签,我们建议您删除范围标签。
    • 要自动删除标签,您可以设置范围标签保留策略。

推荐阅读