我是U-Sql的新手并编写用于提取xml元素的代码。这是我的XML代码。
<Dispositions>
<Disposition>test 1</Disposition>
<Disposition> test 2</Disposition>
</Dispositions>
我试图展示所有&#34; Disposition&#34;值。但最终输出显示&#34;测试2&#34;只要。 我的代码如下。
DECLARE @testFile string ="Marlboro20180301000000_child.xml";
@xmlElementRowPath= EXTRACT Disposition string
FROM @testFile
USING new Microsoft.Analytics.Samples.Formats.Xml.XmlExtractor("Dispositions",
new SQL.MAP<string,string>{
{"Disposition","Disposition"}
}
);
@words =
SELECT Ar.word, COUNT(*) AS count
FROM @xmlElementRowPath
CROSS APPLY
EXPLODE(new SQL.ARRAY<String>( Disposition.Split(','))) AS Ar(word)
GROUP BY Ar.word;
//ORDER BY count DESC;
OUTPUT @words
TO "test.csv"
USING Outputters.Csv();
我一直期待输出为
Test 1
Test 2
但仅接收Test 2
作为输出
答案 0 :(得分:1)
我使用XmlDomExtractor
让这个工作。一些示例代码:
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
// Get the xml using sample extractor
@input = EXTRACT Disposition string
FROM "/input/yourXML.xml"
USING new Microsoft.Analytics.Samples.Formats.Xml.XmlDomExtractor(rowPath:"Disposition",
columnPaths:new SQL.MAP<string, string> { {".", "Disposition"} } );
// Do some processing here
@output = SELECT * FROM @input;
// Output
OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();
我的结果:
我不确定为什么需要Split
方法 - xml Disposition
节点是否包含需要通过某个分隔符拆分的文本?如果是这样,请发布更实际的样本数据。