[英]Azure Data Factory - How to map SQL query results to a JSON string?
我有一个名为 FileGroups 的 SQL 表。 我将查询某些列,例如 Id、Name 和 Version。 在我的 Azure 数据工厂管道中,我想将 SQL 查询结果中的列名和行值映射到 JSON 字符串的键值对。 我还需要在 JSON 字符串中包含几个管道参数。 然后,我将把这个 JSON 字符串作为输入传递给管道末端的存储过程。
生成的 JSON 字符串将如下所示:
{
"id": "guid1",
"name": "fileGroup1",
"version": 1.0,
"pipeline_param_1": "value1",
"pipeline_param_2": "value2"
},
{
"id": "guid2",
"name": "fileGroup2",
"version": 2.0,
"pipeline_param_1": "value1",
"pipeline_param_2": "value2"
}
如何在我的 ADF 管道中查询 SQL 表并构造这个 JSON 字符串? 我需要哪些活动或数据流转换来实现这一目标?
实现它的最简单方法是使用“复制活动”
这是我创建的一个快速演示,我想将 SQL 数据转换为 Json,我从 sql 示例数据中复制了 SalesLT.Customer数据
在这里,您可以选择您需要的列并像我一样向数据添加一个新列,添加一个新列“ pipId ”并使用管道参数。
您可以在此处阅读有关复制活动和管道参数的信息,链接:
https://docs.microsoft.com/en-us/azure/data-factory/control-flow-system-variables
https://docs.microsoft.com/en-us/azure/data-factory/copy-activity-overview
如果您的源数据库是 Microsoft SQL 数据库,如 Azure SQL DB、Sql Server、托管实例、Azure Synapse Analytics 等,那么它非常有能力处理 JSON。 FOR JSON
子句构造有效的 JSON,您可以使用WITHOUT_ARRAY_WRAPPER
等选项来生成干净的输出。
一个简单的例子:
DROP TABLE IF EXISTS #tmp;
CREATE TABLE #tmp (
id VARCHAR(10) NOT NULL,
[name] VARCHAR(20) NOT NULL,
[version] VARCHAR(5) NOT NULL,
pipeline_param_1 VARCHAR(20) NOT NULL,
pipeline_param_2 VARCHAR(20) NOT NULL
);
INSERT INTO #tmp VALUES
( 'guid1', 'fileGroup1', '1.0', 'value1.1', 'value1.2' ),
( 'guid2', 'fileGroup2', '2.0', 'value2.1', 'value2.2' )
SELECT *
FROM #tmp
FOR JSON PATH, WITHOUT_ARRAY_WRAPPER;
样本输出:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.