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

U-SQL提取XML元素异常:仅输出最后一个Disposition值求助

解决U-SQL提取XML多个Disposition元素的问题

看起来你遇到的问题是因为没有正确配置XML提取器的行路径,导致只抓取到了最后一个Disposition节点的值。别担心,这是新手处理XML时常犯的小问题,我来帮你修正。

问题根源

你的XML结构是多个Disposition节点嵌套在Dispositions父节点下,如果你的XmlExtractor没有指定正确的rowPath参数,它会把整个Dispositions节点当作一行来处理,这时候提取Disposition字段只会返回最后一个节点的值(也就是"test 2")。

正确的解决方案

你需要让XmlExtractor遍历每个Disposition节点,把每个节点作为单独的一行来提取。只需要在XmlExtractor里指定rowPath: "/Dispositions/Disposition"即可。

完整的代码示例如下:

DECLARE @testFile string = "Marlboro20180301000000_child.xml";

@xmlExtracted =
    EXTRACT Disposition string
    FROM @testFile
    USING new Microsoft.Analytics.Samples.Formats.Xml.XmlExtractor(rowPath: "/Dispositions/Disposition");

-- 输出结果到文件,你可以根据需求调整输出格式和路径
OUTPUT @xmlExtracted
TO "/output/dispositions_results.csv"
USING Outputters.Csv(quoting: false);

关键说明

  • rowPath参数的作用是告诉提取器:以哪个XML节点作为数据行的单位。这里指定/Dispositions/Disposition后,每个Disposition节点都会被解析成一行数据,这样就能得到所有的"test 1"和"test 2"了。
  • 如果你的XML带有命名空间,还需要额外添加namespaces参数,但你的示例XML没有命名空间,所以不需要这一步。

运行这段代码后,输出就会包含两个Disposition值,分别对应两行数据啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:48:25