You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KQL表列插入字符串数组?内联摄入遇截断问题

解决KQL内联摄入JSON数组到Dynamic列的问题

问题根源

你当前操作中,.ingest inline默认采用CSV格式解析,导致["AAA", "BBB", "CCC"]被逗号拆分为三个独立字段,但表仅定义了第一个列,因此只有["AAA"被存入,后续内容被丢弃。此外初始表的Data列类型为string,也不符合存储动态JSON数组的需求。

解决方案

1. 修正表结构(若未正确定义)

将Data列改为dynamic类型,同时保留其他可能为NULL的列:

// 新建表(若未创建)
.create table DynamicTable (Data: dynamic, OtherNullableColumn: string)

// 若已创建表,修改列类型
.alter table DynamicTable alter column Data dynamic

2. 正确摄入数据的三种方法

方法一:指定MultilineJSON格式(推荐)

直接将整个JSON数组作为单行JSON摄入,KQL会自动解析为dynamic类型,其他列自动填充为NULL:

.ingest inline into table DynamicTable with (format=multilinejson) <| ["AAA", "BBB", "CCC"]
方法二:用CSV格式并正确引用数组

将数组用双引号包裹(注意转义内部双引号),指定CSV解析时识别引号包裹的内容,同时为其他列留空(表示NULL):

.ingest inline into table DynamicTable with (format=csv, quoting=all) <| "[""AAA"", ""BBB"", ""CCC""]",
方法三:使用JSON摄入映射

创建映射规则,将整个JSON数组映射到Data列,其他列设置默认NULL:

// 创建映射
.create table DynamicTable ingestion json mapping "DynamicArrayMapping" '[{"column":"Data","path":"$"},{"column":"OtherNullableColumn","path":"$.unused","defaultValue":null}]'

// 摄入时指定映射
.ingest inline into table DynamicTable with (format=json, ingestionMappingReference="DynamicArrayMapping") <| ["AAA", "BBB", "CCC"]

验证结果

执行摄入后,查询表验证数据:

DynamicTable
| project Data, OtherNullableColumn

会返回一行数据:Data列是完整的["AAA", "BBB", "CCC"]数组,OtherNullableColumn为NULL。

内容的提问来源于stack exchange,提问作者Sachin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 19:56:04