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

时间:2019-08-21 08:55:13

标签: azure kusto azure-data-explorer

  1. 我在ADX Kusto数据库中有一个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 表中。进一步调查

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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