简体   繁体   English

如何使用 map 一个嵌套的 JSON 对象到 SQL 服务器表使用 Z3A580F1420s88886 数据管道

[英]How to map a nested JSON objects to a SQL Server table using Azure Data Factory pipelines

I called a REST API and retrieved the result and placed it in Azure blob storage as a JSON file (all this using Copy data activity from Azure Data Factory). I called a REST API and retrieved the result and placed it in Azure blob storage as a JSON file (all this using Copy data activity from Azure Data Factory).

{"success": "True",
 "timestamp": "1618498386",
 "base": "EUR",
 "date": "2021-04-15",
 "rates": {
  "AED": 4.395136,
  "AFN": 92.798516,
  "ALL": 123.01053,
  "AMD": 623.68381,
  "UAH": 33.449108,
  "UGX": 4330.311325,
  "USD": 1.196623}}

Now I would like to use the same pipeline to connect to a table in SQL Server with the following format.现在我想使用相同的管道连接到 SQL Server 中的表,格式如下。

base根据 date日期 CURR_KEY CURR_KEY CURR_VALUE CURR_VALUE
EUR欧元 2021-04-15 2021-04-15 AED自动体外除颤器 4.395136 4.395136
EUR欧元 2021-04-15 2021-04-15 AFN AFN 92.798516 92.798516
EUR欧元 2021-04-15 2021-04-15 ALL全部 123.01053 123.01053
EUR欧元 2021-04-15 2021-04-15 AMD AMD 623.68381 623.68381
EUR欧元 2021-04-15 2021-04-15 UAH UAH 33.449108 33.449108
EUR欧元 2021-04-15 2021-04-15 UGX UGX 4330.311325 4330.311325
EUR欧元 2021-04-15 2021-04-15 USD美元 1.196623 1.196623

The challenge here is to parse the nested JSON object "rates" and place it in the table as shown above through ADF pipeline.这里的挑战是解析嵌套的 JSON object “rates”,并通过 ADF 管道将其放置在如上所示的表中。 Any ideas on how to solve this?关于如何解决这个问题的任何想法?

Update: I have posted a question recently asking how to parse the above JSON using a SQL query.更新:最近发布了一个问题,询问如何使用 SQL 查询解析上述 JSON。 The reason I posted this one is to look for answers which solve the aforementioned problem only by using ADF GUI instead of creating a stored procedure.我发布这篇文章的原因是寻找仅通过使用 ADF GUI 而不是创建存储过程来解决上述问题的答案。

First, create a Stored procedure in SQL Server.首先,在 SQL 服务器中创建一个存储过程。 Then use Lookup activity in ADF to get the data of JSON file.然后使用 ADF 中的 Lookup 活动来获取 JSON 文件的数据。 Finally, create a Stored procedure activity and pass the Lookup activity's output as parameter.最后,创建一个存储过程活动并将 Lookup 活动的 output 作为参数传递。

Details:细节:

在此处输入图像描述

在此处输入图像描述

Expression in Stored procedure activity: @{activity('Lookup1').output.value[0]}存储过程活动中的表达式: @{activity('Lookup1').output.value[0]}

Stored procedure code(use the answer from your previous question):存储过程代码(使用上一个问题的答案):

CREATE PROCEDURE [dbo].[uspTest] @json NVARCHAR(MAX)
AS  

 

BEGIN TRY 
        INSERT INTO dbo.dvalue(base,date,CURR_KEY,CURR_VALUE)
               SELECT
                    j.base,
                    j.date,
                    CAST(rates.[key] AS char(3)) as CURR_KEY,
                    CAST(rates.value AS decimal(15,6)) as CURR_VALUE
                FROM OPENJSON(@json)
                     WITH ([base] char(3),
                           [date] date,
                           rates nvarchar(MAX) AS JSON) j
                     CROSS APPLY OPENJSON(j.Rates) rates;
END TRY  
BEGIN CATCH 
    PRINT ERROR_MESSAGE ( )   
END CATCH
;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Azure 数据工厂复制嵌套的 JSON 到 SQL 表 - Azure Data Factory copy nested JSON to SQL table 使用数据工厂将嵌套对象从 SQL Server 复制到 Azure CosmosDB - Copy nested objects from SQL Server to Azure CosmosDB using a Data Factory Azure 数据工厂 - 如何将 SQL 查询结果映射到 JSON 字符串? - Azure Data Factory - How to map SQL query results to a JSON string? 如何使用数据工厂将 JSON 数据从 REST API 映射到 Azure SQL - How to Map JSON data from a REST API to Azure SQL using Data Factory Azure 数据工厂 - SQL 到嵌套的 JSON - Azure Data Factory - SQL to nested JSON 如何使用PowerShell为Azure Data Factory V2数据集/管道获取有效的JSON? - How can you get valid JSON for Azure Data Factory V2 Datasets/Pipelines using PowerShell? 使用 Azure 数据工厂将嵌套的 JSON 复制到 Azure sql - Copy nested JSON to Azure sql with Azure Data Factory Map 嵌套在 Azure 数据工厂中的 JSON 到原始 ZA8CFDE6331BD59EB2AC96F8911ZCB4 - Map nested JSON in Azure Data Factory to raw object 使用 Azure 数据工厂将数据从 API 复制到 Azure SQL 时,我只得到表中的第一行。 API 响应是嵌套的 JSON - While copying data from API using Azure Data Factory to Azure SQL, I'm only getting first row in table. The API response is Nested JSON 使用 Azure 数据工厂将 JSON 对象数组中的值存储在 SQL DB 中 - Store values from an array of JSON objects in SQL DB using Azure Data Factory
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM