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

如何解决USQL中Newtonsoft JsonExtractor无法读取换行JSON后续行的问题

问题根因
  • 输入为行分隔JSON(JSON Lines)格式,默认JsonExtractor会将整个文件作为单个JSON文档解析,因此仅能读取第一行的JSON对象,忽略后续所有行。
  • 单行数据超过4MB,默认提取器的行大小限制会导致截断或解析失败,需要调整行大小阈值。
解决方案

使用示例库中专门适配行分隔JSON格式的JsonLinesExtractor替换原有提取器,同步调整行大小上限,补充嵌套字段提取逻辑即可,完整实现代码如下:

CREATE ASSEMBLY IF NOT EXISTS [Microsoft.Analytics.Samples.Formats] FROM @"Microsoft.Analytics.Samples.Formats.dll";
CREATE ASSEMBLY IF NOT EXISTS [Newtonsoft.Json] FROM @"Newtonsoft.Json.dll";

REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
REFERENCE ASSEMBLY [Newtonsoft.Json];

USING Microsoft.Analytics.Samples.Formats.Json;
USING Newtonsoft.Json.Linq;

DECLARE @DATA_SOURCE string = "Input.data" ;

// 逐行解析每个JSON对象,展开results数组,设置最大单行大小为10MB
@raw =
    EXTRACT resultItem JObject
    FROM @DATA_SOURCE
    USING new JsonLinesExtractor("$.d.results[*]", 10 * 1024 * 1024);

// 提取嵌套字段输出
@result =
    SELECT
        resultItem["data"]["Field_1"].ToString() AS Field_1,
        resultItem["data"]["Field_2"].ToString() AS Field_2,
        resultItem["Field_3"].ToString() AS Field_3,
        resultItem["Field_4"].ToString() AS Field_4
    FROM @raw;

// 输出为竖线分隔带表头的文件
OUTPUT @result
TO "your_output_path.csv"
USING Outputters.Text(delimiter: '|', outputHeader: true, quoting: false);
注意事项
  • 代码中10 * 1024 * 1024代表最大单行大小为10MB,可根据实际单行数据的最大值调整参数。
  • 若字段可能为空,建议添加空值判断逻辑,避免运行时空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:51:03