Преобразование XML файлов в JSON или CSV? - PullRequest
1 голос
/ 27 января 2020

У меня есть сложные XML файлы с вложенными элементами. Я построил процесс для обработки с использованием SSIS и T- SQL. Мы используем фабрику данных Azure, и я хотел бы изучить возможность преобразования файлов XML в JSON или CSV, поскольку они поддерживаются ADF, а XML - нет.

Похоже, логи c приложений является одним из вариантов. Кому-нибудь повезло с получением XML и преобразованием в конвейере?

Текущий рабочий процесс: получение XML файлов из папки, перетаскивание на сетевые диски, массовая вставка XML в промежуточную строку, разбирать XML на различные SQL таблицы для анализа.

Пример:

<HEADER>
<SurveyID> 1234 </SURVEYID>
  <RESPONSES>
      <VAR>Question1</VAR>
      <VALUE>Answer1</VALUE>
  </RESPONSES>
  <RESPONSES>
      <VAR>Question2</VAR>
      <VALUE>Answer2</VALUE>
  </RESPONSES>
<SurveyID> 1234 </SURVEYID>
 <RESPONSES>
      <VAR>Question1</VAR>
      <VALUE>DifferentAnswer</VALUE>
  </RESPONSES>
</HEADER>

Примечание: мне не нужно знать, как анализировать XML, что сделано. Я также знаю, что вы можете выполнить SSIS в ADF. Я смотрю на альтернативы общему процессу.

1 Ответ

3 голосов
/ 27 января 2020

Я не уверен, почему этот вопрос был отвергнут - у меня была похожая потребность несколько месяцев go. Ситуация усугубилась тем фактом, что XML, который мы получаем, плохо отформатирован и даже не будет правильно анализироваться. Чтобы решить эту проблему, я написал консольное приложение. NET и развернул его в Azure Batch. Он читает XML из хранилища BLOB-объектов, исправляет ошибки форматирования, затем анализирует XML и выводит его в файл JSON обратно в хранилище BLOB-объектов. ADF поддерживает Azure Пакетное выполнение действия «Custom», и это подключается прямо к нашему конвейеру. В зависимости от вашей структуры данных вы можете вывести ее в CSV, если это более уместно.

Хитрые биты использования Azure Пакет из АПД заключаются в передаче и обработке данных параметров. В конфигурации ADF они перечислены в разделе «Расширенные свойства»: enter image description here

Эти свойства доступны пакетному заданию во время выполнения в файле JSON с именем «action». json ": в консольном приложении вам потребуется доступ к файлу JSON для чтения расширенных свойств:

var activity_json = File.ReadAllText("activity.json");
dynamic activity = JsonConvert.DeserializeObject(activity_json);

parameters.Add("alertId", activity.typeProperties.extendedProperties.AlertId.ToString());
parameters.Add("hashKey", activity.typeProperties.extendedProperties.HashKey.ToString());
parameters.Add("startTime", activity.typeProperties.extendedProperties.StartTime.ToString());
parameters.Add("endTime", activity.typeProperties.extendedProperties.EndTime.ToString());

Имена свойств чувствительны к регистру. {Обратите внимание, что в этом примере я записываю их в словарь «параметров» - я делаю это, чтобы я мог запускать консольное приложение либо локально, либо в Azure Batch.] Есть несколько других «интересных» аспектов использования Azure Пакетно, но это самое большое препятствие на мой взгляд.

...