如何使用Azure数据工厂将json文档解压缩到SQL数据库

时间:2017-07-27 18:30:35

标签: json business-intelligence azure-cosmosdb azure-data-factory azure-sql-database

我需要将数据从DocumentDB复制到Azure SQL数据库。

Json文件是这样的:

{

“DeviceID”:“D1”,

“时间”:“2017-07-27T20:00:00”,

“温度”:25,

“Humedity”:50

}

目标SQL数据库表结构是(DeviceID | SensorID | Value | Time) 所以数据是这样的:

DeviceID | SensorID |价值|时间

D1      |  Temperature   |      25     | 2017-07-27 20:00:00 
D1      |  Humedity      |      50     | 2017-07-27 20:00:00 

现在该如何实现?

我想改变Json文档结构以获得SensorID和Values的列表,它可能是一个糟糕的设计,但Data Factory拒绝了它,因为不支持列表列

我现在想创建一个这样的结构化表(DeviceID | Temperature | Humedity | Time)并使用ADF将数据复制到它,然后使用SQL的UNPIVOT子句将数据再次从它复制到我的表。

有助于实现正确/最佳实施吗?

2 个答案:

答案 0 :(得分:1)

在SQL Azure和SQL Server的引擎中: 您可以使用OPENJSON将其转换为关系形式。然后,您可以使用SQL PIVOT运算符将行转换为列:

https://docs.microsoft.com/en-us/sql/t-sql/functions/openjson-transact-sql https://technet.microsoft.com/en-us/library/ms177410(v=sql.105).aspx

因此,您可以在SQL中登陆JSON然后转换它。

ADF中可能还有其他路径可以正常工作。

答案 1 :(得分:0)

第一眼看到的数据工厂文档并没有明显表明它可以映射内置的列。

数据工厂对Json有本机支持,通过将数据集的类型指定为json并定义它的结构。

https://docs.microsoft.com/en-us/azure/data-factory/data-factory-supported-file-and-compression-formats#json-format

我建议您使用门户中的复制向导来熟悉数据工厂的工作原理。

然后,您可以使用TabularTranslator

映射列