如何在 KUSTO ADX 中的引入失败时获取源数据


  1. 我在 ADX Kusto DB 中有一个base表。

.create table base (info:dynamic)

  1. 我编写了一个函数,该函数解析(dynamic列(base表并 grep 几列,并在base表获取数据(从 EventHub(时将其存储在另一个表中。以下函数及其更新策略

.create function extractBase() { base | evaluate bag_unpack(info) | project tostring(column1), toreal(column2), toint(column3), todynamic(column4) } .alter table target_table policy update @'[{"IsEnabled": true, "Source": "base", "Query": "extractBase()", "IsTransactional": false, "PropagateIngestionProperties": true}]'

假设如果base表不包含预期的列,则会发生引入错误。 如何获取失败的源(行(? 使用.show ingestion failures时,它会显示失败消息。有一列叫做IngestionSourcePath.当我浏览 URL 时,收到异常作为Resource Not Found.

如果发生摄取失败,我需要将base表的特定行存储到IngestionFailure表中。 用于进一步调查

在这种情况下,源数据不能"没有"由其架构定义的列。 如果未为某行中的某些列引入任何值,则此处将出现 null 值,并且更新策略不会失败。

在这里,如果原始表行不包含足够的列,更新策略将中断。目前,此类错误的源数据不会作为失败消息的一部分发出。

通常,源 URI 仅在从 Blob 引入数据时才有用。在其他情况下,失败的引入信息中显示的 URI 是动态创建的内部 Blob 上的 URI,没有人有权访问。

但是,文档中缺少一个命令(我们将确保对其进行更新(,该命令允许您将下一次失败引入的源数据复制到(转储到您提供的存储容器(到特定表中。

语法为: .dup-next-failed-ingest to TableName to h@'Path to Azure blob container'

此处,Azure Blob 容器的路径必须包含可写 SAS。 运行此命令所需的权限是数据库管理员。

最新更新