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

嵌套JSON在Azure Data Lake中通过U-SQL提取转CSV遇异常

解决U-SQL提取嵌套JSON转CSV空文件/仅表头问题

我太懂你这种折腾半天出空文件的崩溃感了!你的JSON是典型的嵌套结构,真正要提取的uri和date_dt都藏在response.docs这个数组里,之前没拿到数据大概率是没精准定位到这个层级。下面直接给你能用的解决方案,我会把关键坑点说清楚:

// 先引用MultiLevelJsonExtractor依赖的程序集,缺一不可
REFERENCE ASSEMBLY [Newtonsoft.Json];
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];

// 替换成你的实际文件路径
DECLARE @inputFile string = "/input/your-source.json";
DECLARE @outputFile string = "/output/result.csv";

@extractedData =
    EXTRACT 
        uri string,
        date_dt string
    FROM @inputFile
    USING new Microsoft.Analytics.Samples.Formats.Json.MultiLevelJsonExtractor(
        rowPath: "$.response.docs", // 核心!指定要遍历的数组路径
        flattenArrays: true // 开启数组扁平化,把数组里每个对象转成一行数据
    );

// 输出到CSV,header:true保留表头
OUTPUT @extractedData
TO @outputFile
USING Outputters.Csv(quoting: false, header: true);

必须注意的几个坑:

  • 路径精准性:rowPath: "$.response.docs"是重中之重,告诉提取器要从response下的docs数组里取数据,之前没拿到数据基本都是路径写错了。
  • 字段大小写:U-SQL是区分大小写的,要确保uri、date_dt和JSON里的字段名完全一致,多一个大写字母都不行。
  • JSON格式检查:先确认源JSON没有语法错误(比如缺失括号、未闭合的引号),格式错误会直接导致提取器读不到任何数据。
  • 权限与路径:要保证U-SQL作业有权限读取输入文件、写入输出路径,权限不足也会生成空文件。
  • 空数组排查:如果源JSON里的docs数组本身是空的,那输出自然只有表头,先检查源文件里有没有实际数据。

如果还是有问题,可以先加一句SELECT * FROM @extractedData;预览提取结果,看看是不是字段名或者路径还有问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:42:35