我需要将数据从DocumentDB复制到Azure SQL数据库。
Json文件是这样的:
{
“DeviceID”:“D1”,
“时间”:“2017-07-27T20:00:00”,
“温度”:25,
“Humedity”:50
}
目标SQL数据库表结构是(DeviceID | SensorID | Value | Time) 所以数据是这样的:
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子句将数据再次从它复制到我的表。
有助于实现正确/最佳实施吗?
答案 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并定义它的结构。
我建议您使用门户中的复制向导来熟悉数据工厂的工作原理。
然后,您可以使用TabularTranslator
映射列