部分查询失败

“部分查询失败”是运行查询失败,只有在查询已经开始实际执行阶段之后才会被检测到。 到那时,Kusto 已经将 HTTP 状态行 200 OK 返回给客户端,并且无法“收回”,因此必须在将查询结果返回给客户端的结果流中指示失败。 (事实上,它可能已将一些结果数据返回给调用方。)

存在几种类型的部分查询失败:

  • 失控查询:占用过多资源的查询。
  • 结果截断:由于其结果集超出某种限制而被截断的查询。
  • 溢出:触发溢出错误的查询。
  • 其他运行时错误:例如,调用跨群集查询时的网络错误,或者从插件收到的错误等。

可通过以下两种方式之一将部分查询失败报告回客户端:

  • 默认情况下,包含故障信息的 JSON 属性包显示为结果数据的一部分,其中通常需要 JSON 数组。
  • 作为结果流中“QueryStatus”表的一部分。 若要防止失败信息显示为结果数据的一部分,请在请求的 properties 槽 (Kusto.Data.Common.ClientRequestProperties.OptionDeferPartialQueryFailures) 中设置 deferpartialqueryfailures 选项。 执行此操作的客户端负责使用服务的整个结果流查找 QueryStatus 结果,并确保该结果中没有任何记录的 Severity2 或更小。

警告

为了加快部分查询失败的传递,Kusto 在某些情况下可能会“刷新”结果流,从而产生不正确的结果。 因此,如果观察到部分查询失败,则使用者应忽略整个结果。