我正在运行 .set-or-append 命令以将 1 个表摄取到另一个表中。我知道来自源表的查询很好,目标表(如果存在)应该具有相同的查询,但如果不存在,则命令应该创建它。最初我没有遇到这个问题。但是我的一些 .set-or-append 查询出现了这个错误:
Invalid query for distributed set / append / replace operation. Error: Query schema does not match table schema. QuerySchema=('long'), TableSchema=('datetime,string,string,string,string,dynamic,dynamic,dynamic'). Query:...'
我知道模式匹配的事实。我一次又一次地运行相同的命令,大约在第三次尝试调用成功。这对我来说是 0 意义。那么上面的错误是什么,为什么在没有对查询进行任何更改的情况下失败后相同的命令仍然有效?
我正在运行的查询/命令基本上如下:
.set-or-append async TargetTable <|
SourceTable
| where __id in ("...", "....", ........) // is aproximately 250 distinct ids in "in" operator
您正在使用的查询似乎正在使用额外的列扩展数据:extend hashBucket = hash(row_number(), ...) | where hashBucket == ...
- 因此您会遇到架构不匹配。
也许,您的意图是基于 hashBucket 进行过滤,在这种情况下,您可以只使用过滤而无需扩展: where hash(row_number(), ...) == ...
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句