USQL - 如何使用 xml 提取器从 xml 文件中提取属性值
USQL - How to extract the attribute value from xml file using xml extractor
如何使用使用 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>
<User ID="002">
<FirstName>xyz</FirstName>
<LastName>abc</LastName>
</User>
</Users>
我可以使用下面的方法提取名字和姓氏 code.How 我可以获取 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();
您可以在 Databricks 中轻松完成此操作,例如
%sql
CREATE TABLE User
USING com.databricks.spark.xml
OPTIONS (path "/FileStore/tables/input42.xml", rowTag "User")
然后阅读 table:
%sql
SELECT *
FROM User;
如果你必须用 U-SQL 来做,那么使用 Formats assembly 中的 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();
我的结果:
如何使用使用 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>
<User ID="002">
<FirstName>xyz</FirstName>
<LastName>abc</LastName>
</User>
</Users>
我可以使用下面的方法提取名字和姓氏 code.How 我可以获取 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();
您可以在 Databricks 中轻松完成此操作,例如
%sql
CREATE TABLE User
USING com.databricks.spark.xml
OPTIONS (path "/FileStore/tables/input42.xml", rowTag "User")
然后阅读 table:
%sql
SELECT *
FROM User;
如果你必须用 U-SQL 来做,那么使用 Formats assembly 中的 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();
我的结果: