我有带有嵌套元素的复杂 XML 文件。我构建了一个使用 SSIS 和 T-SQL 进行处理的流程。我们利用 Azure 数据工厂,我想探索将 XML 文件转换为 JSON 或 CSV,因为 ADF 支持这些文件,而 XML 不支持。
看来逻辑应用程序是一种选择。还有人在获取 XML 并在管道中进行转换方面有其他运气吗?
当前工作流程:
从文件夹中提取 XML 文件,放到网络驱动器上,将 XML 批量插入临时行,将 XML 解析为各种 SQL 表进行分析。
Sample:
<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,这已经完成了。我还知道您可以在 ADF 中执行 SSIS。我正在寻找整个过程的替代方案。
我不知道为什么这个问题被否决了——几个月前我也有类似的需求。我们收到的 XML 格式很差,甚至无法正确解析,这一事实使情况更加恶化。为了解决这个问题,我编写了一个 .NET 控制台应用程序并将其部署到 Azure Batch。它从 Blob 存储读取 XML,更正格式错误,然后解析 XML 并将其输出到 Blob 存储中的 JSON 文件。 ADF 通过“自定义”活动支持 Azure Batch,因此它可以直接插入我们的管道。根据您的数据结构,如果更合适,您可以将其输出为 CSV。
The tricky bits of using Azure Batch from ADF are in passing and processing parameter data. In the ADF configuration, these are listed under "Extended properties":
![enter image description here](https://i.stack.imgur.com/8mTPl.png)
这些属性可在运行时在名为“activity.json”的 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 Batch 还有一些其他“有趣”的方面,但是我认为这是最大的障碍。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)