USQL-如何使用xml提取器从xml文件中提取属性值
如何使用U-SQL作业使用自定义提取器从XML文件中提取属性值。我可以从XML文件中提取子元素值USQL-如何使用xml提取器从xml文件中提取属性值,xml,u-sql,Xml,U Sql,如何使用U-SQL作业使用自定义提取器从XML文件中提取属性值。我可以从XML文件中提取子元素值 sample Xml File: <?xml version="1.0" encoding="UTF-8"?> <Users> <User ID="001"> <FirstName>david</FirstName> <LastName>bacham</LastName> </User>
sample Xml File:
<?xml version="1.0" encoding="UTF-8"?>
<Users>
<User ID="001">
<FirstName>david</FirstName>
<LastName>bacham</LastName>
</User>
<User ID="002">
<FirstName>xyz</FirstName>
<LastName>abc</LastName>
</User>
</Users>
示例Xml文件:
大卫
巴查姆
xyz
abc
我可以使用下面的代码提取Firstname和lastname。如何将ID值作为csv文件的一部分
示例U sql作业:
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
@input = EXTRACT
FirstName string,
LastName string
FROM @"/USERS.xml"
USING new Microsoft.Analytics.Samples.Formats.Xml.XmlExtractor("User",
new SQL.MAP<string, string> {
{"FirstName","FirstName"},
{"LastName","LastName"}
);
@output = SELECT * FROM @input;
OUTPUT @output
TO "/USERS.csv"
USING Outputters.Csv();
引用程序集[Microsoft.Analytics.Samples.Formats];
@输入=提取
名字字符串,
姓氏字符串
来自@“/USERS.xml”
使用新的Microsoft.Analytics.Samples.Formats.Xml.XmlExtractor(“用户”,
新建SQL.MAP{
{“名字”,“名字”},
{“LastName”,“LastName”}
);
@输出=从@input中选择*;
输出@输出
至“/USERS.csv”
使用Outputters.Csv();
您可以在Databricks中轻松完成此操作,例如
%sql
CREATE TABLE User
USING com.databricks.spark.xml
OPTIONS (path "/FileStore/tables/input42.xml", rowTag "User")
然后阅读表格:
%sql
SELECT *
FROM User;
如果必须使用U-SQL,请使用“为我工作”中的XmlDomExtractor
:
REFERENCE ASSEMBLY [Microsoft.Analytics.Samples.Formats];
DECLARE @inputFile string = "/input/input40.xml";
@input =
EXTRACT
id string,
firstName string,
lastName string
FROM @inputFile
USING new Microsoft.Analytics.Samples.Formats.Xml.XmlDomExtractor(rowPath : "/Users/User",
columnPaths : new SQL.MAP<string, string>{
{ "@ID", "id" },
{ "FirstName", "firstName" },
{ "LastName", "lastName" }
}
);
@output =
SELECT *
FROM @input;
OUTPUT @output
TO "/output/output.csv"
USING Outputters.Csv();
引用程序集[Microsoft.Analytics.Samples.Formats];
声明@inputFile string=“/input/input40.xml”;
@输入=
摘录
id字符串,
名字字符串,
姓氏字符串
来自@inputFile
使用新的Microsoft.Analytics.Samples.Formats.Xml.XmlDomExtractor(行路径:“/Users/User”,
columnPaths:new SQL.MAP{
{@ID”,“ID},
{“名字”,“名字”},
{“LastName”,“LastName”}
}
);
@输出=
挑选*
来自@input;
输出@输出
至“/output/output.csv”
使用Outputters.Csv();
我的结果:
我认为,如果您可以更新XML并将Id值作为属性(如FirstName或LastName)传递,效果会更好。