[英]How to POST a batch of objects from a whole JSON file to REST API using Azure Data Factory
[英]How to Map JSON data from a REST API to Azure SQL using Data Factory
我在 azure 数据工厂中有一条新管道。 我创建了数据集,一个来自其余 api(公共的): https : //www.alphavantage.co/query?function=TIME_SERIES_DAILY&symbol=MSFT&apikey=demo
然后我创建了一个 azure sql 表,其中的列显示在屏幕截图中
问题是我不知道如何进行映射,因为这是一个复杂的 JSON 对象,我对 Mapping Designer 的限制:
我如何映射日期?
我倾向于对这些使用 ELT 方法,通过 Web 任务调用 REST API 并将 JSON 存储在 SQL 表中,然后使用 SQL 函数(如OPENJSON )分解 JSON。
示例管道:
使这种方法起作用的关键是存储过程参数上的表达式。 这会从 Web 任务中获取整个 JSON 输出并将其传递给 proc。 这是一个简单的日志记录过程,它将记录插入到日志记录表中:
@string(activity('Web1').output)
我登录到一个表,然后粉碎 JSON 或者你可以直接在存储的 proc 参数上使用OPENJSON
,例如
--INSERT INTO ...
SELECT
CAST( [key] AS DATE ) AS timeSeriesDate,
JSON_VALUE ( x.[value], '$."1. open"' ) AS [open],
JSON_VALUE ( x.[value], '$."2. high"' ) AS [high],
JSON_VALUE ( x.[value], '$."3. low"' ) AS [low],
JSON_VALUE ( x.[value], '$."4. close"' ) AS [close],
JSON_VALUE ( x.[value], '$."5. volume"' ) AS [volume]
FROM dbo.myLog
CROSS APPLY OPENJSON(logDetails , '$."Time Series (Daily)"' ) x
--WHERE logId = 23333;
我的结果:
数据有结构吗? 如果是这样,您可以生成一个虚拟文件,将其放入接收器并进行一次映射。 如果没有,您可以查找文件,遍历 For Each 循环容器中的内容并将详细信息插入 SQL 表。
例如
insert <<your table>>
select '@item().name', '@item().address.city', @item().value
要记住的重要一点是迭代正确的数组。 如果不清楚,请告诉我。 现在不在系统前,所以无法添加屏幕截图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.