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