繁体   English   中英

在KUSTO ADX中提取失败时如何获取源数据

[英]How to get the Source Data When Ingestion Failure in KUSTO ADX

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

.create table base (info:dynamic)

  1. 我编写了一个函数,该函数解析( dynamic列) base表并抓取几列,并在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表中。 有待进一步调查

在这种情况下,您的源数据不能“不具有”由其架构定义的列。 如果某行中某列未提取任何值,则此处将存在空值,并且更新策略不会失败。

如果原始表行没有足够的列,则更新策略将中断。 当前,此类错误的源数据未作为故障消息的一部分发出。

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

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

语法为:.dup-next-failed-ingest到TableName中以h @'Azure blob容器的路径'

此处,Azure Blob容器的路径必须包含可写的SAS。 运行此命令所需的权限是DB admin。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM