USQL - Как извлечь значение атрибута из файла XML с помощью экстрактора XML - PullRequest
0 голосов
/ 14 июня 2019

Как извлечь значение атрибута из файла XML с помощью пользовательского экстрактора с помощью задания U-SQL.Я могу извлечь значения подэлемента из файла 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>

Я могу извлечь имя и фамилию, используя приведенный ниже код. Как я могу получить значение идентификатора как часть файла 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();

1 Ответ

1 голос
/ 21 июня 2019

Вы можете легко сделать это в 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();

Мои результаты:

My results

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...