KQL更新策略的数据摄取问题;查询模式与表模式不匹配



我正在编写一个函数,它接受原始数据表(包含multijson遥测数据)并将其重新格式化为多个cols。我使用.set MyTable <| myfunction|limit 0基于函数创建我的目标表,并使用更新策略提醒我的目标表。

代码如下:

.set-or-append MyTargetTable <| 
myfunction
| limit 0
.alter table MyTargetTable policy update 
@'[{ "IsEnabled": true, "Source": "raw", "Query": "myfunction()", "IsTransactional": false, "PropagateIngestionProperties": false}]'

但是我得到了摄取失败:这是摄取失败的消息:

调用更新策略失败。目标表= 'MyTargetTable',查询= '

let raw = __table("raw", 'All', 'AllButRowStore') 
| where extent_id() in (guid(659e3b3c-6859-426d-9c37-003623834455));
myfunction()': Query schema does not match table schema 

我仔细检查了查询模式和目标表;它们是一样的。我不确定这个错误是什么意思。此外,我对原始表和目标表都进行了计数;存在相对较大的差异(My target为400行,而原始表为2000行)。

如有任何建议,不胜感激。

一般来说,要找到模式之间不匹配的根源,您可以沿着以下几行运行,并过滤差异:

myfunction
| getschema 
| join kind=leftouter (
table('MyTargetTable')
| getschema 
) on ColumnOrdinal, ColumnType

另外,你应该确保你在更新策略中使用的函数的输出模式是"稳定的",即不受输入数据的影响

  • pivot()bag_unpack()等查询插件的输出模式依赖于输入数据,因此不建议在更新策略中使用。

最新更新